/// <summary> /// 为SettleItem的属性赋值 /// </summary> /// <param name="currentItem">Acclog</param> /// <param name="settleItem">SettleItem</param> //private static void SetItemValue(ConsginToAccLogEntity currentItem, CollectionPaymentItemMsg settleItem) private static void SetItemValue(ConsginToAccLogEntity currentItem, CollectionPaymentItem settleItem) { settleItem.ConsignQty = currentItem.Quantity; settleItem.ConsignToAccStatus = currentItem.Status; //@@ settleItem.CreateCost = currentItem.CreateCost; //@@ settleItem.CreateTime = DateTime.Now; settleItem.ConsignToAccLogInfo = new ConsignToAcctLogInfo { LogSysNo = currentItem.SysNo, CreateCost = currentItem.CreateCost, StockSysNo = currentItem.StockSysNo, ProductQuantity = currentItem.Quantity }; settleItem.FoldCost = currentItem.FoldCost; settleItem.MinCommission = currentItem.MinCommission; //@@ //settleItem.OnLineQty settleItem.POConsignToAccLogSysNo = currentItem.SysNo; settleItem.Point = currentItem.Point; settleItem.ProductID = currentItem.ProductID; settleItem.ProductName = currentItem.ProductName; settleItem.ProductSysNo = currentItem.ProductSysNo; settleItem.Quantity = currentItem.Quantity; //@@ settleItem.RetailPrice = currentItem.RetailPrice; //@@ settleItem.SettlePercentage = currentItem.SettlePercentage; //settleItem.SettleSysNo settleItem.SettleType = currentItem.SettleType; settleItem.StockName = currentItem.StockName; settleItem.StockSysNo = currentItem.StockSysNo; //@@ settleItem.VendorName = currentItem.VendorName; //@@ settleItem.VendorSysNo = currentItem.VendorSysNo; //@@ //计算结算金额 settleItem.Cost = CalculateCost(currentItem, settleItem); }
/// <summary> /// 计算结算金额 /// </summary> /// <param name="currentItem">Acclog</param> /// <param name="settleItem">代销结算Item</param> /// <returns>结算金额</returns> private static decimal CalculateCost(ConsginToAccLogEntity currentItem, CollectionPaymentItem settleItem) { Decimal cost; //计算结算金额 if (settleItem.SettleType.ToUpper() == "O") { //CRL20438 By Kilin //对于负数的单据不启用规则 //if (settleItem.Quantity > 0) if (settleItem.ConsignQty > 0) { //通过规则进行价格计算 decimal?ruleCost = CalculateRuleCost(settleItem); //规则应用成功 if (ruleCost.HasValue) { cost = ruleCost.Value; goto Lable_Result; } } //传统模式结算价统一用正常采购价格 //<!--CRL21118 Modify By Kilin 去除积分扣除 cost = currentItem.SettleCost;//- currentItem.Point / 10m; //--> } else if (settleItem.SettleType.ToUpper() == "P") { if (!currentItem.SettlePercentage.HasValue) { throw new InvalidOperationException("结算类型为P的AccLog必须有SettlePercentage"); } Decimal profit = currentItem.RetailPrice * currentItem.SettlePercentage.Value / 100m; if (profit >= currentItem.MinCommission) { //<!--CRL21118 Modify By Kilin 去除积分扣除 cost = currentItem.RetailPrice * (1 - currentItem.SettlePercentage.Value / 100m); // -currentItem.Point / 10m; //--> } else { cost = currentItem.RetailPrice - currentItem.MinCommission; } } else { throw new InvalidOperationException(string.Format("非法的SettleType:{0}", settleItem.SettleType)); } Lable_Result: return(Math.Round(cost, 2, MidpointRounding.AwayFromZero)); }
/// <summary> /// 为SettleItem的属性赋值 /// </summary> /// <param name="currentItem">Acclog</param> /// <param name="settleItem">SettleItem</param> //private static void SetItemValue(ConsginToAccLogEntity currentItem, SettleItemEntity settleItem) private static void SetItemValue(ConsginToAccLogEntity currentItem, ConsignSettlementItemInfo settleItem) { settleItem.Quantity = currentItem.Quantity; settleItem.ConsignToAccStatus = currentItem.Status; settleItem.CreateCost = currentItem.CreateCost; settleItem.CreateTime = DateTime.Now; settleItem.FoldCost = currentItem.FoldCost; settleItem.MinCommission = currentItem.MinCommission; //settleItem.OnLineQty settleItem.POConsignToAccLogSysNo = currentItem.SysNo; settleItem.Point = currentItem.Point; settleItem.ProductID = currentItem.ProductID; settleItem.ProductName = currentItem.ProductName; settleItem.ProductSysNo = currentItem.ProductSysNo; settleItem.Quantity = currentItem.Quantity; settleItem.RetailPrice = currentItem.RetailPrice; settleItem.SettlePercentage = currentItem.SettlePercentage; //settleItem.SettleSysNo settleItem.SettleType = currentItem.SettleType == "O" ? SettleType.O : SettleType.P; settleItem.StockName = currentItem.StockName; settleItem.StockSysNo = currentItem.StockSysNo; settleItem.VendorName = currentItem.VendorName; settleItem.VendorSysNo = currentItem.VendorSysNo; //计算结算金额 settleItem.Cost = CalculateCost(currentItem, settleItem); settleItem.ConsignToAccLogInfo = new ConsignToAcctLogInfo { LogSysNo = currentItem.SysNo, ProductQuantity = currentItem.Quantity }; #region 之前的版本 //settleItem.ConsignQty = currentItem.Quantity; //settleItem.ConsignToAccStatus = currentItem.Status; //settleItem.CreateCost = currentItem.CreateCost; //settleItem.CreateTime = DateTime.Now; //settleItem.FoldCost = currentItem.FoldCost; //settleItem.MinCommission = currentItem.MinCommission; ////settleItem.OnLineQty //settleItem.POConsignToAccLogSysNo = currentItem.SysNo; //settleItem.Point = currentItem.Point; //settleItem.ProductID = currentItem.ProductID; //settleItem.ProductName = currentItem.ProductName; //settleItem.ProductSysNo = currentItem.ProductSysNo; //settleItem.Quantity = currentItem.Quantity; //settleItem.RetailPrice = currentItem.RetailPrice; //settleItem.SettlePercentage = currentItem.SettlePercentage; ////settleItem.SettleSysNo //settleItem.SettleType = currentItem.SettleType; //settleItem.StockName = currentItem.StockName; //settleItem.StockSysNo = currentItem.StockSysNo; //settleItem.VendorName = currentItem.VendorName; //settleItem.VendorSysNo = currentItem.VendorSysNo; ////计算结算金额 //settleItem.Cost = CalculateCost(currentItem, settleItem); #endregion }
/// <summary> /// 计算结算金额 /// </summary> /// <param name="currentItem">Acclog</param> /// <param name="settleItem">代销结算Item</param> /// <returns>结算金额</returns> private static decimal CalculateCost(ConsginToAccLogEntity currentItem, ConsignSettlementItemInfo settleItem) { Decimal cost; //计算结算金额 if (settleItem.SettleType == SettleType.O) { cost = currentItem.CreateCost;//- currentItem.Point / 10m; //--> } else if (settleItem.SettleType == SettleType.P) { if (!currentItem.SettlePercentage.HasValue) { throw new InvalidOperationException("结算类型为P的AccLog必须有SettlePercentage"); } Decimal profit = currentItem.RetailPrice * currentItem.SettlePercentage.Value / 100m; if (profit >= currentItem.MinCommission) { //<!--CRL21118 Modify By Kilin 去除积分扣除 cost = currentItem.RetailPrice * (1 - currentItem.SettlePercentage.Value / 100m); // -currentItem.Point / 10m; //--> } else { cost = currentItem.RetailPrice - currentItem.MinCommission; } } else { throw new InvalidOperationException(string.Format("非法的SettleType:{0}", settleItem.SettleType)); } return(Math.Round(cost, 2, MidpointRounding.AwayFromZero)); }