Example #1
0
        /// <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);
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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
        }
Example #4
0
        /// <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));
        }