/// <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); } }
/// <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); }