예제 #1
0
        /// <summary>
        /// 合同客户选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlContract_SelectedIndexChanged(object sender, EventArgs e)
        {
            IList <ICriterion> qryList = new List <ICriterion>();
            //获取合同信息
            ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue));

            //获取合同价格套系信息
            //PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID);
            //根据选择的客户合同更新买赔商品的价格
            qryList.Add(Expression.Eq("OrderNO", OrderNO));
            IList <ContractPayOrderDetail> orderGoodsList = Core.Container.Instance.Resolve <IServiceContractPayOrderDetail>().GetAllByKeys(qryList);
            //获取订单信息并更新订单合同信息
            ContractPayOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractPayOrderInfo>().GetEntityByFields(qryList);

            orderInfo.ContractInfo = contractInfo;
            Core.Container.Instance.Resolve <IServiceContractPayOrderInfo>().Update(orderInfo);
            //更新订单材料单价信息
            foreach (ContractPayOrderDetail goodsInfo in orderGoodsList)
            {
                //根据价格套系编号和商品ID获取合同商品价格信息
                qryList = new List <ICriterion>();
                //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID));
                qryList.Add(Expression.Eq("EquipmentID", goodsInfo.GoodTypeID));
                PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList);
                if (priceSetGoodsInfo != null)
                {
                    goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice;
                    goodsInfo.PayAmount      = goodsInfo.GoodsNumber * priceSetGoodsInfo.UnitPrice;
                    Core.Container.Instance.Resolve <IServiceContractPayOrderDetail>().Update(goodsInfo);
                }
            }
            //获取订单买赔材料各项明细
            BindMainGoodsInfo();
        }
        /// <summary>
        /// 合同客户选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlContract_SelectedIndexChanged(object sender, EventArgs e)
        {
            IList <ICriterion> qryList = new List <ICriterion>();
            //获取合同信息
            ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue));

            //获取合同价格套系信息
            // PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID);

            //根据选择的客户合同更新收货商品的价格
            qryList.Add(Expression.Eq("OrderNO", OrderNO));
            IList <ContractOrderDetail> orderGoodsList = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryList);

            foreach (ContractOrderDetail goodsInfo in orderGoodsList)
            {
                qryList = new List <ICriterion>();
                //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID));
                qryList.Add(Expression.Eq("EquipmentID", goodsInfo.GoodsID));
                PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList);
                if (priceSetGoodsInfo != null)
                {
                    goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.DailyRents;
                    Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Update(goodsInfo);
                }
            }
            //更新费用信息
            CalcCost();
            //更新显示收货信息
            BindGrid();
        }
        /// <summary>
        /// 合同客户选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlContract_SelectedIndexChanged(object sender, EventArgs e)
        {
            IList <ICriterion> qryList = new List <ICriterion>();
            //获取合同信息
            ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue));

            //获取合同价格套系信息
            //PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID);
            //根据选择的客户合同更新发货商品的价格
            qryList.Add(Expression.Eq("OrderNO", OrderNO));
            IList <ContractOrderDetail> orderGoodsList = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryList);
            //获取订单信息并更新订单合同信息
            ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList);

            orderInfo.ContractInfo = contractInfo;
            Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo);
            //更新订单材料单价信息
            foreach (ContractOrderDetail goodsInfo in orderGoodsList)
            {
                //根据价格套系编号和商品ID获取合同商品价格信息
                qryList = new List <ICriterion>();
                //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID));
                qryList.Add(Expression.Eq("EquipmentID", goodsInfo.GoodsID));
                PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList);
                if (priceSetGoodsInfo != null)
                {
                    goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.DailyRents;
                    //获取材料信息
                    EquipmentInfo equipmentInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(goodsInfo.GoodsID);
                    //判断物品费用是日租金还是现金买赔
                    //if (equipmentInfo.IsPayNow == 1)
                    //{
                    //    goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice;
                    //}
                    Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Update(goodsInfo);
                }
            }
            //绑定车辆价格套系
            BindCarInfo();
            ddlCar.SelectedValue = orderInfo.CarID.ToString();
            //更新费用信息
            new ContractOrderBase().CalcOrderCost(OrderNO);
            //更新显示发货信息
            BindOrderDetail();
        }
예제 #4
0
        protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e)
        {
            Dictionary <int, Dictionary <string, object> > modifiedDict = Grid1.GetModifiedDict();

            foreach (int rowIndex in modifiedDict.Keys)
            {
                int rowID = Convert.ToInt32(Grid1.DataKeys[rowIndex][0]);
                PriceSetGoodsInfo objInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntity(rowID);
                if (modifiedDict[rowIndex].Keys.Contains("DailyRents"))
                {
                    objInfo.DailyRents = Convert.ToDecimal(modifiedDict[rowIndex]["DailyRents"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("UnitPrice"))
                {
                    objInfo.UnitPrice = Convert.ToDecimal(modifiedDict[rowIndex]["UnitPrice"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("FixPrice"))
                {
                    objInfo.FixPrice = Convert.ToDecimal(modifiedDict[rowIndex]["FixPrice"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("MinRentingDays"))
                {
                    objInfo.MinRentingDays = Convert.ToInt32(modifiedDict[rowIndex]["MinRentingDays"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("CustomerUnit"))
                {
                    objInfo.CustomerUnit = Convert.ToDecimal(modifiedDict[rowIndex]["CustomerUnit"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("DriverUnit"))
                {
                    objInfo.DriverUnit = Convert.ToDecimal(modifiedDict[rowIndex]["DriverUnit"]);
                }
                if (modifiedDict[rowIndex].Keys.Contains("StaffUnit"))
                {
                    objInfo.StaffUnit = Convert.ToDecimal(modifiedDict[rowIndex]["StaffUnit"]);
                }

                Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().Update(objInfo);
            }

            BindGrid();
        }
예제 #5
0
        /// <summary>
        /// 创建买赔物品明细
        /// </summary>
        /// <param name="orderNO">合同买赔单号</param>
        private void CreatePayGoodsInfo(string orderNO)
        {
            ContractPayOrderDetail payOrderDetail = new ContractPayOrderDetail();
            //获取合同信息
            ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue));
            //获取合同价格套系信息
            // PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID);
            //获取合同发货主材类别信息
            string  sql = string.Format(@"select * from EquipmentTypeInfo where id in (select distinct(GoodTypeID) as GoodTypeID from ContractOrderDetail where OrderNO in (select OrderNO from ContractOrderInfo where ContractID ={0} and OrderType=1))", contractInfo.ID);
            DataSet ds  = DbHelperSQL.Query(sql);

            if (ds.Tables[0] != null)
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    payOrderDetail                = new ContractPayOrderDetail();
                    payOrderDetail.OrderNO        = OrderNO;
                    payOrderDetail.OrderDate      = DateTime.Now;
                    payOrderDetail.GoodTypeID     = int.Parse(row["ID"].ToString());
                    payOrderDetail.GoodsNumber    = 0;
                    payOrderDetail.GoodsUnit      = row["TypeUnit"].ToString();
                    payOrderDetail.GoodsUnitPrice = decimal.Parse(row["PayForPrice"].ToString());
                    /*-------------------获取合同价格-------------------*/
                    EquipmentTypeInfo  equipmentTypeInfo = Core.Container.Instance.Resolve <IServiceEquipmentTypeInfo>().GetEntity(payOrderDetail.GoodTypeID);
                    IList <ICriterion> qryList           = new List <ICriterion>();
                    //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID));
                    qryList.Add(Expression.Eq("EquipmentID", payOrderDetail.GoodTypeID));
                    PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList);
                    if (priceSetGoodsInfo != null)
                    {
                        payOrderDetail.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice;
                    }
                    payOrderDetail.PayAmount = payOrderDetail.GoodsNumber * payOrderDetail.GoodsUnitPrice;
                    //保存赔偿材料信息
                    Core.Container.Instance.Resolve <IServiceContractPayOrderDetail>().Create(payOrderDetail);
                }
            }
        }
예제 #6
0
        /// <summary>
        /// 根据费用项费用价格获取类型获取价格
        /// </summary>
        /// <param name="costProjectInfo">费用项信息</param>
        /// <param name="orderInfo">订单信息</param>
        /// <returns>价格</returns>
        private decimal GetCostPayPrice(RepairProjectInfo costProjectInfo, ContractOrderInfo orderInfo)
        {
            decimal            payPrice = costProjectInfo.PayPrice;
            IList <ICriterion> qryList  = new List <ICriterion>();

            //获取费用项适用范围
            string[] ids = costProjectInfo.UsingGoods.Split(',');
            //如果费用单价是从合同获取,根据合同获取单价【费用价格获取类型  0:自定义  1:合同客户运费  2:合同司机运费  3:合同单价  4:合同维修单价】
            if (costProjectInfo.PriceSourceType > 0)
            {
                switch (costProjectInfo.PriceSourceType)
                {
                //合同客户运费(获取合同设定运费)
                case 1:
                    //payPrice = orderInfo.ContractInfo.CarCostPrice;
                    break;

                //合同司机运费(获取订单选择的车辆在合同中设定运费)
                case 2:
                    //获取合同车辆信息
                    qryList = new List <ICriterion>();
                    qryList.Add(Expression.Eq("CarID", orderInfo.CarID));
                    qryList.Add(Expression.Eq("ContractID", orderInfo.ContractInfo.ID));
                    ContractCarPriceSetInfo carPriceSetInfo = Core.Container.Instance.Resolve <IServiceContractCarPriceSetInfo>().GetEntityByFields(qryList);
                    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);
                        //获取物品单价
                        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", int.Parse(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);
                        //获取物品维修单价
                        payPrice = goodsInfo.FixPrice;
                    }
                    break;

                default:
                    break;
                }
            }
            return(payPrice);
        }
예제 #7
0
        public bool CreateContractPriceSetInfo(ContractInfo curretnInfo)
        {
            //创建报价体系
            IList <ICriterion> qryList         = new List <ICriterion>();
            PriceSetInfo       newPriceSetInfo = new PriceSetInfo();

            newPriceSetInfo.ContractID = curretnInfo.ID;
            newPriceSetInfo.IsUsed     = "1";
            newPriceSetInfo.Remark     = "";
            newPriceSetInfo.SetDate    = DateTime.Now.ToString("yyyyMMdd");
            Core.Container.Instance.Resolve <IServicePriceSetInfo>().Create(newPriceSetInfo);
            //获取当前创建套系的ID
            qryList = new List <ICriterion>();
            qryList.Add(Expression.Eq("SetDate", newPriceSetInfo.SetDate));
            qryList.Add(Expression.Eq("ContractID", curretnInfo.ID));
            PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve <IServicePriceSetInfo>().GetEntityByFields(qryList);

            /*------------------创建物品价明细------------------------*/
            PriceSetGoodsInfo priceSetGoodsInfo = new PriceSetGoodsInfo();

            //获取物品类别,判断报价类型,不参与报价的不需要
            qryList = new List <ICriterion>();
            qryList.Add(Expression.Eq("IsUsed", "1"));
            Order[] orderList = new Order[1];
            Order   orderli   = new Order("ID", true);

            orderList[0] = orderli;
            IList <EquipmentTypeInfo> listEquipmentType = Core.Container.Instance.Resolve <IServiceEquipmentTypeInfo>().GetAllByKeys(qryList, orderList);

            foreach (EquipmentTypeInfo typeInfo in listEquipmentType)
            {
                ////报价类型 1:按类别统计报价
                //if (typeInfo.PriceSetType == 1)
                //{
                //    priceSetGoodsInfo = new PriceSetGoodsInfo();
                //    priceSetGoodsInfo.DailyRents = typeInfo.RentPrice;
                //    priceSetGoodsInfo.EquipmentID = typeInfo.ID;
                //    priceSetGoodsInfo.MinRentingDays = typeInfo.MinRentingDays;
                //    priceSetGoodsInfo.UnitPrice = typeInfo.PayForPrice;
                //    priceSetGoodsInfo.SetID = priceSetInfo.ID;
                //    priceSetGoodsInfo.SetDate = priceSetInfo.SetDate;
                //    priceSetGoodsInfo.FixPrice = typeInfo.FixPrice;
                //    priceSetGoodsInfo.GoodsTypeID = typeInfo.ID;
                //    priceSetGoodsInfo.CustomerUnit = typeInfo.CustomerUnit;
                //    priceSetGoodsInfo.DriverUnit = typeInfo.DriverUnit;
                //    priceSetGoodsInfo.StaffUnit = typeInfo.StaffUnit;
                //    priceSetGoodsInfo.IsGoodType = 1;
                //    Core.Container.Instance.Resolve<IServicePriceSetGoodsInfo>().Create(priceSetGoodsInfo);
                //}
                ////报价类型 2:按物品分别报价
                //if (typeInfo.PriceSetType == 2)
                //{
                //    qryList = new List<ICriterion>();
                //    qryList.Add(Expression.Eq("IsUsed", "1"));
                //    qryList.Add(Expression.Eq("EquipmentTypeID", typeInfo.ID));
                //    IList<EquipmentInfo> listEquipment = Core.Container.Instance.Resolve<IServiceEquipmentInfo>().GetAllByKeys(qryList, orderList);
                //    foreach (EquipmentInfo obj in listEquipment)
                //    {
                //        priceSetGoodsInfo = new PriceSetGoodsInfo();
                //        priceSetGoodsInfo.DailyRents = obj.DailyRents;
                //        priceSetGoodsInfo.EquipmentID = obj.ID;
                //        priceSetGoodsInfo.MinRentingDays = obj.MinRentingDays;
                //        priceSetGoodsInfo.UnitPrice = obj.UnitPrice;
                //        priceSetGoodsInfo.SetID = priceSetInfo.ID;
                //        priceSetGoodsInfo.SetDate = priceSetInfo.SetDate;
                //        priceSetGoodsInfo.FixPrice = obj.FixPrice;
                //        priceSetGoodsInfo.GoodsTypeID = obj.EquipmentTypeID;
                //        priceSetGoodsInfo.CustomerUnit = obj.CustomerUnit;
                //        priceSetGoodsInfo.DriverUnit = obj.DriverUnit;
                //        priceSetGoodsInfo.StaffUnit = obj.StaffUnit;
                //        priceSetGoodsInfo.IsGoodType = 2;
                //        Core.Container.Instance.Resolve<IServicePriceSetGoodsInfo>().Create(priceSetGoodsInfo);
                //    }
                //}
                ////报价类型 3:不参与合同报价
                //if (typeInfo.PriceSetType == 3)
                //{
                //    continue;
                //}
            }

            //更新合同价格套系信息
            //curretnInfo.PriceSetID = priceSetInfo.ID;
            Core.Container.Instance.Resolve <IServiceContractInfo>().Update(curretnInfo);

            return(true);
        }
        private void SaveItem()
        {
            // 从每个选中的行中获取ID(在Grid1中定义的DataKeyNames)
            List <int>          ids           = GetSelectedDataKeyIDs(Grid1);
            WHGoodsDetail       whGoodsEntity = new WHGoodsDetail();
            ContractOrderDetail dbEntity      = new ContractOrderDetail();
            IList <ICriterion>  qryList       = new List <ICriterion>();
            PriceSetInfo        priceSetInfo  = new PriceSetInfo();

            //获取合同信息
            ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(ContractID);

            // 执行数据库操作
            foreach (int ID in ids)
            {
                //获取物品信息
                whGoodsEntity = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntity(ID);
                if (whGoodsEntity != null)
                {
                    whGoodsEntity.GoodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(whGoodsEntity.GoodsID);
                    //判断是否已经添加改商品物品
                    if (whGoodsEntity.GoodsInfo != null && !IsExists(whGoodsEntity.GoodsID))
                    {
                        #region 主材

                        dbEntity                     = new ContractOrderDetail();
                        dbEntity.OrderNO             = OrderNO;
                        dbEntity.OrderDate           = DateTime.Now;
                        dbEntity.GoodsID             = whGoodsEntity.GoodsID;
                        dbEntity.GoodTypeID          = whGoodsEntity.GoodsTypeID;
                        dbEntity.GoodsNumber         = 1;
                        dbEntity.FormerlyGoodsNumber = 1;
                        dbEntity.FixGoodsNumber      = 0;
                        dbEntity.GoodsUnit           = whGoodsEntity.InventoryUnit;
                        //dbEntity.GoodsCalcUnit = whGoodsEntity.GoodsInfo.CalcPriceUnit;
                        //dbEntity.NotOffsetNumber = dbEntity.GoodsNumber;
                        //dbEntity.GoodCalcPriceNumber = dbEntity.GoodsNumber * whGoodsEntity.GoodsInfo.Standard;
                        //dbEntity.PayUnit = whGoodsEntity.GoodsInfo.PayUnit;
                        /*-------------------获取价格-------------------*/
                        //获取主材类别,根据类别的报价策略获取价格
                        EquipmentTypeInfo equipmentTypeInfo = Core.Container.Instance.Resolve <IServiceEquipmentTypeInfo>().GetEntity(whGoodsEntity.GoodsInfo.EquipmentTypeID);
                        //dbEntity.IsStockByRepaired = equipmentTypeInfo.IsStockByRepaired;

                        //priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID);
                        qryList = new List <ICriterion>();
                        qryList.Add(Expression.Eq("SetID", priceSetInfo.ID));
                        // 报价类型 1:按类别统计报价  2:按物品分别报价 3:不参与合同报价
                        //if (equipmentTypeInfo.PriceSetType == 1)
                        //{
                        //    qryList.Add(Expression.Eq("EquipmentID", whGoodsEntity.GoodsInfo.EquipmentTypeID));
                        //}
                        //if (equipmentTypeInfo.PriceSetType == 2)
                        //{
                        //    qryList.Add(Expression.Eq("EquipmentID", whGoodsEntity.GoodsID));
                        //}
                        PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList);
                        if (priceSetGoodsInfo != null)
                        {
                            dbEntity.GoodsUnitPrice = priceSetGoodsInfo.DailyRents;
                            //判断物品费用是日租金还是现金买赔
                            //if (whGoodsEntity.GoodsInfo.IsPayNow == 1)
                            //{
                            //    dbEntity.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice;
                            //}
                        }
                        else
                        {
                            // dbEntity.GoodsUnitPrice = whGoodsEntity.GoodsInfo.DailyRents;
                            //判断物品费用是日租金还是现金买赔
                            //if (whGoodsEntity.GoodsInfo.IsPayNow == 1)
                            //{
                            //    dbEntity.GoodsUnitPrice = whGoodsEntity.GoodsInfo.UnitPrice;
                            //}
                        }
                        dbEntity.NotOffsetNumber = 1;
                        dbEntity.WareHouseID     = int.Parse(ddlWH.SelectedValue);
                        //保存领用主材信息
                        Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Create(dbEntity);

                        #endregion 主材

                        //辅材列表
                        if (OrderType == 1)
                        {
                            //创建发货单辅材信息
                            CreateFHSecondaryDetail(dbEntity, priceSetInfo, whGoodsEntity);
                        }
                        else
                        {
                            //创建收货单辅材信息
                            CreateSHSecondaryDetail(dbEntity, priceSetInfo, whGoodsEntity);
                        }
                    }
                }
            }
        }
        /// <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);
        }