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); }
//根据代销转财务记录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); }