Esempio n. 1
0
        /// <summary>
        /// 相关费用单价及数量编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gdCostInfo_AfterEdit(object sender, GridAfterEditEventArgs e)
        {
            Dictionary <int, Dictionary <string, object> > modifiedDict = gdCostInfo.GetModifiedDict();

            foreach (int rowIndex in modifiedDict.Keys)
            {
                //根据绑定列的记录编号,获取发货费用信息和费用项基本信息
                int rowID = Convert.ToInt32(gdCostInfo.DataKeys[rowIndex][0]);
                ContractOrderCostInfo objInfo = Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().GetEntity(rowID);
                //修改费用计价单价
                if (modifiedDict[rowIndex].Keys.Contains("PayPrice"))
                {
                    objInfo.PayPrice = Convert.ToDecimal(modifiedDict[rowIndex]["PayPrice"]);
                }
                //修改费用计价数量
                if (modifiedDict[rowIndex].Keys.Contains("OrderNumber"))
                {
                    objInfo.OrderNumber = Convert.ToDecimal(modifiedDict[rowIndex]["OrderNumber"]);
                }
                //计算费用金额
                objInfo.CostAmount = objInfo.PayPrice * objInfo.OrderNumber;
                //更新费用项信息
                Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(objInfo);
            }
            //重新加载订单费用信息
            BindCostsInfo();
        }
        /// <summary>
        /// 创建合同收货单相关费用信息
        /// </summary>
        /// <param name="orderNO">合同收货单号</param>
        private void CreateCostInfo(string orderNO)
        {
            IList <ICriterion> qryList = new List <ICriterion>();

            qryList.Add(Expression.Eq("IsUsed", "1"));
            qryList.Add(Expression.Eq("UsingType", 3));
            //获取收货相关费用项
            IList <RepairProjectInfo> costList = Core.Container.Instance.Resolve <IServiceRepairProjectInfo>().GetAllByKeys(qryList);

            //创建收货单相关费用项信息
            foreach (RepairProjectInfo costInfo in costList)
            {
                ContractOrderCostInfo orderCostInfo = new ContractOrderCostInfo();
                orderCostInfo.CostID      = costInfo.ID;
                orderCostInfo.CostName    = costInfo.ProjectName;
                orderCostInfo.CostType    = costInfo.ProjectType;
                orderCostInfo.InOutFlag   = 1;
                orderCostInfo.IsSettle    = 0;
                orderCostInfo.OrderNO     = orderNO;
                orderCostInfo.OrderNumber = costInfo.IsRegular > 0 ? 1 : 0;
                orderCostInfo.PayPrice    = costInfo.PayPrice;
                orderCostInfo.PayUnit     = costInfo.PayUnit;
                orderCostInfo.Remark      = "";
                orderCostInfo.CostAmount  = orderCostInfo.OrderNumber * orderCostInfo.PayPrice;
                //创建费用项
                Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Create(orderCostInfo);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 各类费用项费用计算
        /// </summary>
        /// <param name="costInfo">费用项信息</param>
        private void CalcCost(ContractOrderCostInfo costInfo)
        {
            //获取费用项信息
            RepairProjectInfo costProjectInfo = Core.Container.Instance.Resolve <IServiceRepairProjectInfo>().GetEntity(costInfo.CostID);
            //获取订单信息
            IList <ICriterion> qryList = new List <ICriterion>();

            qryList = new List <ICriterion>();
            qryList.Add(Expression.Eq("OrderNO", costInfo.OrderNO));
            ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList);

            //获取费用项单价
            costInfo.PayPrice = GetCostPayPrice(costProjectInfo, orderInfo);
            //获取费用项计价数量
            costInfo.OrderNumber = GetCostPayNumber(costProjectInfo, orderInfo);
            //计算费用金额,更新费用项信息
            costInfo.CostAmount = costInfo.PayPrice * costInfo.OrderNumber;
            Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(costInfo);
        }
        /// <summary>
        /// 相关费用单价及数量编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gdCostInfo_AfterEdit(object sender, GridAfterEditEventArgs e)
        {
            Dictionary <int, Dictionary <string, object> > modifiedDict = gdCostInfo.GetModifiedDict();

            foreach (int rowIndex in modifiedDict.Keys)
            {
                int rowID = Convert.ToInt32(gdCostInfo.DataKeys[rowIndex][0]);
                ContractOrderCostInfo objInfo = Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().GetEntity(rowID);

                if (modifiedDict[rowIndex].Keys.Contains("PayPrice"))
                {
                    objInfo.PayPrice = Convert.ToDecimal(modifiedDict[rowIndex]["PayPrice"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("OrderNumber"))
                {
                    objInfo.OrderNumber = Convert.ToDecimal(modifiedDict[rowIndex]["OrderNumber"]);
                }

                objInfo.CostAmount = objInfo.PayPrice * objInfo.OrderNumber;

                Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(objInfo);
            }
            BindCostsInfo();
        }
        /// <summary>
        /// 各类费用计算
        /// </summary>
        /// <param name="costInfo">费用项信息</param>
        private void CalcCost(ContractOrderCostInfo costInfo)
        {
            //获取费用项信息
            RepairProjectInfo costProjectInfo = Core.Container.Instance.Resolve <IServiceRepairProjectInfo>().GetEntity(costInfo.CostID);

            //获取费用项适用范围
            string[] ids = costProjectInfo.UsingGoods.Split(',');
            //获取订单信息
            IList <ICriterion> qryList = new List <ICriterion>();

            qryList = new List <ICriterion>();
            qryList.Add(Expression.Eq("OrderNO", OrderNO));
            ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList);

            #region 获取费用项单价

            costInfo.PayPrice = costProjectInfo.PayPrice;
            //如果费用单价是从合同获取,根据合同获取单价【费用价格获取类型  0:自定义  1:合同客户运费  2:合同司机运费  3:合同单价  4:合同维修单价】
            if (costProjectInfo.PriceSourceType > 0)
            {
                switch (costProjectInfo.PriceSourceType)
                {
                //合同客户运费(获取合同设定运费)
                case 1:
                    //costInfo.PayPrice = orderInfo.ContractInfo.CarCostPrice;
                    break;

                //合同司机运费(获取订单选择的车辆在合同中设定运费)
                case 2:
                    //获取合同车辆信息
                    qryList = new List <ICriterion>();
                    qryList.Add(Expression.Eq("CarID", orderInfo.CarID));
                    ContractCarPriceSetInfo carPriceSetInfo = Core.Container.Instance.Resolve <IServiceContractCarPriceSetInfo>().GetEntityByFields(qryList);
                    costInfo.PayPrice = carPriceSetInfo.TonPayPrice;
                    break;

                //合同单价(获取租赁物品在合同中设定的单价)
                case 3:
                    if (ids.Length > 0)
                    {
                        qryList = new List <ICriterion>();
                        //qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID));
                        qryList.Add(Expression.Eq("GoodsTypeID", ids[0]));
                        Order[] orderList = new Order[1];
                        Order   orderli   = new Order("ID", true);
                        orderList[0] = orderli;
                        //获取价格套系中物品设定信息
                        PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList);
                        //获取物品单价
                        costInfo.PayPrice = goodsInfo.UnitPrice;
                    }
                    break;

                //合同维修单价(获取租赁物品在合同中设定的维修价)
                case 4:
                    if (ids.Length > 0)
                    {
                        qryList = new List <ICriterion>();
                        //qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID));
                        qryList.Add(Expression.Eq("GoodsTypeID", ids[0]));
                        Order[] orderList = new Order[1];
                        Order   orderli   = new Order("ID", true);
                        orderList[0] = orderli;
                        //获取价格套系中物品设定信息
                        PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList);
                        //获取物品维修单价
                        costInfo.PayPrice = goodsInfo.FixPrice;
                    }
                    break;

                default:
                    break;
                }
            }

            #endregion 获取费用项单价

            #region 获取费用项计价数量

            string sql = string.Empty;
            //1:数量 2:计价单位 3:客户吨位 4:员工吨位 5:司机吨位 6:其他
            switch (costProjectInfo.PayUnit)
            {
            //收货出库数量,收货明细表:GoodsNumber
            case "1":
                //获取运送获取重量信息
                if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods))
                {
                    sql = string.Format(@"select sum(GoodsNumber) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(','));
                    DataSet ds = DbHelperSQL.Query(sql);
                    if (ds.Tables[0] != null)
                    {
                        costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString());
                    }
                }
                break;

            //收货计价单位,例如米,收货明细表:GoodCalcPriceNumber
            case "2":
                //获取运送获取重量信息
                if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods))
                {
                    sql = string.Format(@"select isnull(sum(GoodCalcPriceNumber),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(','));
                    DataSet ds = DbHelperSQL.Query(sql);
                    if (ds.Tables[0] != null)
                    {
                        costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString());
                    }
                }
                break;

            //客户吨位,收货明细表:GoodsCustomerWeight
            case "3":
                //获取运送获取重量信息
                if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods))
                {
                    sql = string.Format(@"select isnull(sum(GoodsCustomerWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(','));
                    DataSet ds = DbHelperSQL.Query(sql);
                    if (ds.Tables[0] != null)
                    {
                        costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString());
                    }
                }
                break;

            //员工吨位,收货明细表:GoodsStaffWeight
            case "4":
                //获取运送获取重量信息
                if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods))
                {
                    sql = string.Format(@"select isnull(sum(GoodsStaffWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(','));
                    DataSet ds = DbHelperSQL.Query(sql);
                    if (ds.Tables[0] != null)
                    {
                        costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString());
                    }
                }
                break;

            //司机吨位,收货明细表:GoodsDriverWeight
            case "5":
                //获取运送获取重量信息
                if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods))
                {
                    sql = string.Format(@"select isnull(sum(GoodsDriverWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(','));
                    DataSet ds = DbHelperSQL.Query(sql);
                    if (ds.Tables[0] != null)
                    {
                        costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString());
                    }
                }
                break;

            //其他,默认1
            case "6":
                costInfo.OrderNumber = 1;
                break;

            default:
                costInfo.OrderNumber = 1;
                break;
            }

            #endregion 获取费用项计价数量

            //更新费用项信息
            costInfo.CostAmount = costInfo.PayPrice * costInfo.OrderNumber;
            Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(costInfo);
        }