//计算物流费用 private decimal GetFreight(int freightTemplateId, List <OrderItemInfo> orderItemList, int cityId) { IFreightTemplateService freightTemplateService = ServiceHelper.Create <IFreightTemplateService>(); decimal freight2 = 0; foreach (var orderItem in orderItemList) { FreightTemplateInfo freightTemplate = freightTemplateService.GetFreightTemplate(freightTemplateId); if (freightTemplate == null || freightTemplate.IsFree != FreightTemplateInfo.FreightTemplateType.SelfDefine) { continue; } FreightAreaContentInfo freightAreaContentInfo = ( from item in freightTemplate.ChemCloud_FreightAreaContent where item.AreaContent.Split(new char[] { ',' }).Contains <string>(cityId.ToString()) select item).FirstOrDefault() ?? freightTemplate.ChemCloud_FreightAreaContent.Where((FreightAreaContentInfo item) => { byte?isDefault = item.IsDefault; if (isDefault.GetValueOrDefault() != 1) { return(false); } return(isDefault.HasValue); }).FirstOrDefault(); if (freightTemplate.ValuationMethod == FreightTemplateInfo.ValuationMethodType.Weight) { int value = freightAreaContentInfo.FirstUnit.Value; decimal value1 = (decimal)freightAreaContentInfo.FirstUnitMonry.Value; int value2 = freightAreaContentInfo.AccumulationUnit.Value; float? accumulationUnitMoney = freightAreaContentInfo.AccumulationUnitMoney; freight2 = freight2 + GetFreight2(orderItem.Quantity, value, value1, value2, (decimal)accumulationUnitMoney.Value); } else if (freightTemplate.ValuationMethod != FreightTemplateInfo.ValuationMethodType.Bulk) { int num4 = Convert.ToInt32(orderItem.Quantity); decimal num5 = num4; int value3 = freightAreaContentInfo.FirstUnit.Value; decimal value4 = (decimal)freightAreaContentInfo.FirstUnitMonry.Value; int value5 = freightAreaContentInfo.AccumulationUnit.Value; float? nullable = freightAreaContentInfo.AccumulationUnitMoney; freight2 = freight2 + GetFreight2(num5, value3, value4, value5, (decimal)nullable.Value); } else { decimal num6 = Convert.ToInt32(orderItem.Quantity); int value6 = freightAreaContentInfo.FirstUnit.Value; decimal value7 = (decimal)freightAreaContentInfo.FirstUnitMonry.Value; int num7 = freightAreaContentInfo.AccumulationUnit.Value; float? accumulationUnitMoney1 = freightAreaContentInfo.AccumulationUnitMoney; freight2 = freight2 + GetFreight2(num6, value6, value7, num7, (decimal)accumulationUnitMoney1.Value); } } return(freight2); }
public void UpdateFreightTemplate(FreightTemplateInfo templateInfo) { FreightTemplateInfo name; if (templateInfo.Id == 0) { name = context.FreightTemplateInfo.Add(templateInfo); context.SaveChanges(); return; } name = ( from e in context.FreightTemplateInfo where e.Id == templateInfo.Id select e).FirstOrDefault(); name.Name = templateInfo.Name; name.IsFree = templateInfo.IsFree; name.ValuationMethod = templateInfo.ValuationMethod; name.ShopID = templateInfo.ShopID; name.SourceAddress = templateInfo.SourceAddress; name.SendTime = templateInfo.SendTime; using (TransactionScope transactionScope = new TransactionScope()) { context.FreightAreaContentInfo.RemoveRange( from e in context.FreightAreaContentInfo where e.FreightTemplateId == name.Id select e); context.SaveChanges(); if (name.IsFree == FreightTemplateInfo.FreightTemplateType.SelfDefine) { templateInfo.ChemCloud_FreightAreaContent.ToList().ForEach((FreightAreaContentInfo e) => { FreightAreaContentInfo freightAreaContentInfo = new FreightAreaContentInfo() { AreaContent = e.AreaContent, FirstUnit = e.FirstUnit, FirstUnitMonry = e.FirstUnitMonry, AccumulationUnit = e.AccumulationUnit, AccumulationUnitMoney = e.AccumulationUnitMoney, IsDefault = e.IsDefault, FreightTemplateId = name.Id }; context.FreightAreaContentInfo.Add(freightAreaContentInfo); }); } context.SaveChanges(); transactionScope.Complete(); } }