decimal quoteCompute(QuoteMain quoteMain, WaybillGoods goods) { decimal result = 0; List<QuoteExpression> lstQuoteExpression = FrequentlyUsedData.GetQuoteExpressionList(false).Where(obj => obj.SrcID == quoteMain.Guid).ToList(); if (goods.RealWeight != 0 && lstQuoteExpression.Count > 0) { result = CommonHelper.ComputeQuoteByExpression(goods.RealWeight, lstQuoteExpression); } return result; }
//计算费用 decimal ComputeFee(string feeType, WaybillGoods goods) { CoSite srcSite = FrequentlyUsedData.GetSiteList(false).FirstOrDefault(obj => obj.ID == Identity.CurrentEmployee.SiteID); CoDestination dest = (btneDestination.Tag as CoDestination); CoCustomers customers = (btneConsignor.Tag as CoCustomers); if (dest != null && customers != null) { //验证一下~~~~~~~~~~~ List<QuoteExpression> lstQuoteExpression = FrequentlyUsedData.GetQuoteExpressionList(false).ToList(); List<QuoteMainRelation> lstQuoteMainRelation = FrequentlyUsedData.GetQuoteMainRelationList(false).ToList(); //该站点相关站点 List<string> lstSite = CommonHelper.GetSiteRelation(srcSite.ID).ConvertAll(obj => obj.ID); List<string> lstQuoteMainSite = lstQuoteMainRelation.Where(obj => obj.Type == "寄件站点" && lstSite.Contains(obj.Code)).ToList().ConvertAll(obj => obj.SrcID); //目的地一致的报价单ID List<string> lstQuoteMainDest = lstQuoteMainRelation.Where(obj => obj.Type == "派件区域" && obj.Code == dest.ID.ToString()).ToList().ConvertAll(obj => obj.SrcID); //客户一致的报价单ID List<string> lstQuoteMainCustomers = lstQuoteMainRelation.Where(obj => obj.Type == "报价客户" && obj.Code == customers.ID.ToString()).ToList().ConvertAll(obj => obj.SrcID); //取出 订单类型、派送类别、费用类型 ,在该目的地内的报价单 List<QuoteMain> lstQuoteMain = FrequentlyUsedData.GetQuoteMainList(false). Where(obj => obj.FeeType == feeType && obj.LogisticsType == lueLogisticsType.EditValue.ToString() && obj.DispatchType == lueDispatchType.EditValue.ToString() && lstQuoteMainDest.Contains(obj.Guid)).ToList(); //如果有针对该客户的报价单、优先处理 if (lstQuoteMain.Count(obj => lstQuoteMainCustomers.Contains(obj.Guid) && lstQuoteMainSite.Contains(obj.Guid)) > 0) { //客户与站点对应的报价单交集 List<string> lstQuoteMainIntersect = lstQuoteMainSite.Intersect(lstQuoteMainCustomers).ToList(); foreach (string siteCode in lstSite) //按站点顺序从低到高 { QuoteMainRelation r = lstQuoteMainRelation.FirstOrDefault(obj => obj.Type == "寄件站点" && obj.Code == siteCode && lstQuoteMainIntersect.Contains(obj.SrcID)); if (r != null) { QuoteMain q = lstQuoteMain.FirstOrDefault(obj => obj.Guid == r.SrcID); //开始计算 return quoteCompute(q, goods); } } } //没有针对该客户的报价单,查找那些客户为空的报价单 else { foreach (string siteID in lstSite) //按站点顺序从低到高 { List<string> lstQuoteMainCurrentSite = lstQuoteMainRelation.Where(obj => obj.Type == "寄件站点" && obj.Code == siteID).ToList().ConvertAll(obj => obj.SrcID); foreach (string s in lstQuoteMainCurrentSite) { //当前报价单存在并且不含客户资料 QuoteMain q = lstQuoteMain.FirstOrDefault(obj => obj.Guid == s); if (q != null && lstQuoteMainRelation.Count(obj => obj.Type == "报价客户" && obj.SrcID == q.Guid) == 0) { //开始计算 return quoteCompute(q, goods); } } } } } return 0; }