예제 #1
0
        private static decimal?CalculateRuleCost(ConsignSettlementItemInfo msg)
        {
            int sysNo = msg.POConsignToAccLogSysNo.Value;
            SettleRulesEntity entity = GetRuleByLogSysNo(sysNo);

            if (entity == null) //如果未能匹配到结算规则,则返回原价
            {
                return(null);
            }

            //如果匹配到的结算规则的结算数量未设置,则默认为无穷多
            //如果设置了结算数量,则按照结算数量进行匹配
            if (entity.SettleRuleQuantity.HasValue)
            {
                //计算剩余的结算数量
                int resultQuantity = entity.SettleRuleQuantity.Value - (entity.SettleedQuantity ?? 0);

                int quantity = msg.Quantity ?? 0;
                if (resultQuantity < Math.Abs(quantity))
                {
                    return(null);
                }
            }

            //修改规则中的已结算数量
            entity.SettleedQuantity = (entity.SettleedQuantity ?? 0) + Math.Abs(msg.Quantity ?? 0);
            //记录规则编号
            //??msg.ConsignSettleRuleSysNO = entity.SysNo;

            return(entity.NewSettlePrice);
        }
예제 #2
0
        //根据代销转财务记录SysNo查询满足的代销规则
        private static SettleRulesEntity GetRuleByLogSysNo(int sysNo)
        {
            SettleRulesEntity entity = dal.GetRuleByConsginToAccLogSysNo(sysNo);

            if (entity != null)
            {
                if (RuleDic.ContainsKey(entity.SysNo))
                {
                    return(RuleDic[entity.SysNo]);
                }
                else
                {
                    RuleDic.Add(entity.SysNo, entity);
                    return(entity);
                }
            }
            return(null);
        }