/// <summary> /// 获得实体 /// </summary> /// <returns></returns> private QuotedPrice EntityGet() { QuotedPrice entity = new QuotedPrice(); entity.ID = HTDataID; return(entity); }
/// <summary> /// 删除 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int Delete(BaseEntity p_Entity) { try { QuotedPrice MasterEntity = (QuotedPrice)p_Entity; if (MasterEntity.ID == 0) { return(0); } //删除主表数据 string Sql = ""; Sql = "DELETE FROM Sale_QuotedPrice WHERE " + "ID=" + SysString.ToDBString(MasterEntity.ID); //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(Sql); } else { AffectedRows = sqlTrans.ExecuteNonQuery(Sql); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBDelete), E); } }
/// <summary> /// 删除 /// </summary> public override void EntityDelete() { QuotedPriceRule rule = new QuotedPriceRule(); QuotedPrice entity = EntityGet(); rule.RDelete(entity); }
/// <summary> /// 保存(传入事务处理) /// </summary> /// <param name="p_Entity"></param> /// <param name="p_BE"></param> /// <param name="sqlTrans"></param> public void RSave(QuotedPrice p_Entity, BaseEntity[] p_BE, IDBTransAccess sqlTrans) { try { string sql = "DELETE FROM Sale_QuotedPriceDts WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(p_BE)); sqlTrans.ExecuteNonQuery(sql);//删除原单据里应该删除的明细数据,即数据库里有但是UI里已经删除的数据 for (int i = 0; i < p_BE.Length; i++) { QuotedPriceDts entitydts = (QuotedPriceDts)p_BE[i]; if (entitydts.ID != 0)//ID不为0说明数据库中已经存在 { this.RUpdate(entitydts, sqlTrans); } else { entitydts.MainID = p_Entity.ID; this.RAdd(entitydts, sqlTrans); } } } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 新增(传入事务处理) /// </summary> /// <param name="p_BE">要新增的实体</param> /// <param name="sqlTrans">事务类</param> public void RAdd(BaseEntity p_BE, IDBTransAccess sqlTrans) { try { this.CheckCorrect(p_BE); QuotedPrice entity = (QuotedPrice)p_BE; string sql = "SELECT FormNo FROM Sale_QuotedPrice WHERE FormNo=" + SysString.ToDBString(entity.FormNo); DataTable dt = sqlTrans.Fill(sql); if (dt.Rows.Count > 0) { throw new BaseException("报价单号已存在,请重新生成"); } QuotedPriceCtl control = new QuotedPriceCtl(sqlTrans); entity.ID = (int)EntityIDTable.GetID((long)SysEntity.Sale_QuotedPrice, sqlTrans); control.AddNew(entity); FormNoControlRule rule = new FormNoControlRule(); rule.RAddSort((int)FormNoControlEnum.报价单号, sqlTrans); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 检验字段值是否已存在 /// </summary> /// <param name="p_TableName">表名</param> /// <param name="p_FieldName">字段名</param> /// <param name="p_FieldValue">字段值</param> /// <param name="p_KeyField">主键(只考虑主键为ID的情况)</param> /// <param name="p_KeyValue">主键值</param> /// <param name="p_sqlTrans"></param> /// <returns></returns> private bool CheckFieldValueIsExist(BaseEntity p_BE, string p_FieldName, string p_FieldValue, IDBTransAccess p_sqlTrans) { QuotedPrice entity = (QuotedPrice)p_BE; bool ret = false; string sql = string.Format(" SELECT {0} FROM {1} WHERE 1=1 AND {0}={2} AND {3}<>{4}", p_FieldName, QuotedPrice.TableName, SysString.ToDBString(p_FieldValue), "ID", entity.ID); DataTable dt = p_sqlTrans.Fill(sql); if (dt.Rows.Count != 0) { ret = true; } return(ret); }
/// <summary> /// 修改 /// </summary> /// <param name="p_BE">要修改的实体</param> /// <param name="sqlTrans">事务类</param> public void RUpdate(BaseEntity p_BE, IDBTransAccess sqlTrans) { try { this.CheckCorrect(p_BE); QuotedPrice entity = (QuotedPrice)p_BE; QuotedPriceCtl control = new QuotedPriceCtl(sqlTrans); control.Update(entity); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 删除 /// </summary> /// <param name="p_BE">要删除的实体</param> /// <param name="sqlTrans">事务类</param> public void RDelete(BaseEntity p_BE, IDBTransAccess sqlTrans) { try { this.CheckCorrect(p_BE); QuotedPrice entity = (QuotedPrice)p_BE; QuotedPriceCtl control = new QuotedPriceCtl(sqlTrans); string sql = "DELETE FROM Sale_QuotedPriceDts WHERE MainID=" + entity.ID.ToString(); sqlTrans.ExecuteNonQuery(sql);//删除原单据明细数据 control.Delete(entity); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, System.Text.StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); long relatedCustomerID = 0; #region Adidas if (podsResponse.Result.First().CustomerID == 1) { relatedCustomerID = 1; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.BoxNumber / 12; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = new QuotedPrice(); QuotedPrice tempPrice; tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.EndCityName.Trim() && q.EndCityName.Trim() == gPod.StartCityName.Trim() && q.PodTypeName.Trim() == "出货运单" && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统报价,出货运单也无报价,请先配置报价."); continue; } price.Price = tempPrice.Price; price.Price *= (decimal)0.9; } else { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); continue; } } else { price.Price = tempPrice.Price; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)cube; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.BoxNumber / gPod.BoxNumber), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } } } #endregion if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
public void SettledPodForReceive(IEnumerable <long> PodIDs, string Creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var forSettledPodsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!forSettledPodsResponse.IsSuccess) { throw forSettledPodsResponse.Exception; } var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 0 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); var BAF = ApplicationConfigHelper.GetBAFPrice(ProjectID); string settledNumber = Guid.NewGuid().ToString(); var SXshipper = from q in podsResponse.Result where q.ShipperName == "山晓物流" || q.ShipperName == "陆久物流" group q by new { q.ActualDeliveryDate, q.ShipperID, q.StartCityName, q.EndCityName }//q.ShipperID into r select new { ActualDeliveryDate = r.Key.ActualDeliveryDate.DateTimeToString(), StartCityName = r.Key.StartCityName, EndCityName = r.Key.EndCityName, ShipperID = r.Key.ShipperID, Volume = r.Sum(a => a.Volume) }; var newpodsResponse = from q in podsResponse.Result where q.ShipperName != "山晓物流" && q.ShipperName != "陆久物流" group q by new { q.ActualDeliveryDate, q.EndCityName }//q.ShipperID into r select new { ActualDeliveryDate = r.Key.ActualDeliveryDate.DateTimeToString(), StartCityName = "广州", EndCityName = r.Key.EndCityName, // ShipperID = r.Key.ShipperID, Volume = r.Sum(a => a.Volume) }; IList <SettledPod> settledPods = new List <SettledPod>(); foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { //燃油附加费 decimal BAFPrice = 0; //立方数 double cube = gPod.Volume; //if( gPod.EndCityName=="苏州"){ // switch (gPod.StartCityName) // { // case "大连": // break; // case "青岛": // break; // case "丹东": // break; // case "番禺": // break; // case "清远": // break; // case "云浮": // break; // default: // gPod.StartCityName = "广州"; // break; // } //}else // if(gPod.EndCityName == "天津") { //switch (gPod.StartCityName) //{ // case "大连": // break; // case "青岛": // break; // case "丹东": // break; // case "番禺": // break; // default: // gPod.StartCityName = "广州"; // break; //} //} if (gPod.StartCityName == "大连" || gPod.StartCityName == "丹东") { foreach (var item in SXshipper) { if (item.ActualDeliveryDate.ToString() == gPod.ActualDeliveryDate && gPod.StartCityName == item.StartCityName && item.EndCityName == gPod.EndCityName) { cube = Convert.ToDouble(item.Volume); } } } else { foreach (var item in newpodsResponse) { if (item.ActualDeliveryDate.ToString() == gPod.ActualDeliveryDate && item.EndCityName == gPod.EndCityName) { cube = Convert.ToDouble(item.Volume); } } } var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); //得到长途运输费的报价 QuotedPrice price = quotedPrice.FirstOrDefault(q =>// q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == 13 && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); QueryBAFPrice BAFPrices = BAF.FirstOrDefault(q => q.ProjectID == ProjectID && q.BAFStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && q.BAFEndTime > gPod.ActualDeliveryDate.ObjectToDateTime()); if (BAFPrices != null) { BAFPrice = BAFPrices.BAFPrice; } if (price == null) { var forSettledPodsTemp = forSettledPodsResponse.Result.Where(p => gPod.PodIDs.Split('|').Contains(p.ID.ToString())); if (forSettledPodsTemp != null) { forSettledPodsTemp.Each((k, g) => { Message.Append("运单:").Append(g.CustomerOrderNumber).Append(",对应客户为:").Append(g.CustomerName).Append(",起运城市为:") .Append(g.StartCityName).Append(",目的城市为:").Append(g.EndCityName).Append(",运输类型为:").Append(g.ShipperTypeName) .Append(",运单类型为:").Append(g.PODTypeName).Append(",整车/零担为:").Append(g.TtlOrTplName).Append(" 无系统对应报价,请先配置报价.").Append("*"); }); } continue; } if (Message.Length > 0) { continue; } decimal shipAmt = 0; foreach (var id in innerPodIDs) { //提货费 // decimal del = 0; var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); //是否是长途运输 // if (originalPod.Str5 == "Y") // { // QuotedPrice delivery = quotedPrice.FirstOrDefault(q => // q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == gPod.TargetID && q.StartCityName.Trim() == originalPod.Str3 && q.EndCityName.Trim() == originalPod.Str3 // && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube // && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); // if (delivery != null) // { // del = delivery.Price; // } // } shipAmt = price.Price >= 100 ? price.Price * (decimal)originalPod.Volume : price.Price * (decimal)originalPod.BoxNumber; SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 0, CustomerOrShipperID = originalPod.CustomerID.Value, CustomerOrShipperName = originalPod.CustomerName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt, //燃油附加费=长途运费*费率(浮动率) BAFAmt = shipAmt * BAFPrice,// BAFPrice * shipAmt * (decimal)(originalPod.Str40.ObjectToDouble() / cube), PointAmt = 0, //其他费=卸货费(箱数*0.45)+提货费(是工厂直发才有提货费) OtherAmt = 0,//(decimal)originalPod.BoxNumber * (decimal)0.45 + del * (decimal)originalPod.Volume, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = Creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } } if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt - p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 0 }); } }
/// <summary> /// 结算方法 /// </summary> /// <param name="settledNumber"></param> /// <param name="ProjectID"></param> /// <param name="Message"></param> /// <param name="cube">合并后的立方</param> /// <param name="boxnumner">合并后的箱数</param> /// <param name="Temporary">合并后运单的集合</param> /// <param name="settledPods">结算结果集合</param> /// <param name="quotedPrices">报价</param> private void Settlement(string settledNumber, long ProjectID, StringBuilder Message, double cube, double boxnumner, IList <Pod> Temporary, IList <SettledPod> settledPods, IEnumerable <QuotedPrice> quotedPrices) { decimal shipAmt = 0; string n = Temporary[0].EndCityName.Trim().Substring(0, 2) == "太仓" ? Temporary[0].EndCityName.Trim().Substring(0, 2) : Temporary[0].EndCityName.Trim(); QuotedPrice price = quotedPrices.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == Temporary[0].CustomerID && q.StartCityName.Trim() == (Temporary[0].StartCityName.Trim().Substring(0, 2) == "太仓" ? Temporary[0].StartCityName.Trim().Substring(0, 2) : Temporary[0].StartCityName.Trim()) && q.EndCityName.Trim() == (Temporary[0].EndCityName.Trim().Substring(0, 2) == "太仓" ? Temporary[0].EndCityName.Trim().Substring(0, 2) : Temporary[0].EndCityName.Trim()) && q.PodTypeName.Trim() == Temporary[0].PODTypeName.Trim() && q.ShipperTypeName.Trim() == Temporary[0].ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == Temporary[0].TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= Temporary[0].ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= Temporary[0].ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { this.GenErrorMessage(Temporary[0], Message, " 无系统对应报价,请先配置报价."); } if (Message.Length > 0) { return; } shipAmt = price.Price * (decimal)cube; foreach (var pod in Temporary) { SettledPod settledPod = new SettledPod() { ProjectID = pod.ProjectID, CustomerOrderNumber = pod.CustomerOrderNumber, SystemNumber = pod.SystemNumber, PodID = pod.ID, SettledNumber = settledNumber, SettledType = 0, CustomerOrShipperID = pod.CustomerID.Value, CustomerOrShipperName = pod.CustomerName, StartCityID = pod.StartCityID.Value, StartCityName = pod.StartCityName, EndCityID = pod.EndCityID.Value, EndCityName = pod.EndCityName, ShipperTypeID = pod.ShipperTypeID.Value, ShipperTypeName = pod.ShipperTypeName, PODTypeID = pod.PODTypeID.Value, PODTypeName = pod.PODTypeName, TtlOrTplID = pod.TtlOrTplID.Value, TtlOrTplName = pod.TtlOrTplName, ActualDeliveryDate = pod.ActualDeliveryDate.Value, BoxNumber = pod.BoxNumber, Weight = pod.Weight, Volume = pod.Volume, GoodsNumber = pod.GoodsNumber, ShipAmt = shipAmt * (decimal)(pod.BoxNumber / boxnumner), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = pod.Creator, InvoiceID = 0, RelatedCustomerID = pod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, System.Text.StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); long relatedCustomerID = 0; #region akzo if (podsResponse.Result.First().CustomerID == 7) { relatedCustomerID = 7; #region 天同城 foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double weight = gPod.Weight; if (weight < 300) { weight = 300; } var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = new QuotedPrice(); QuotedPrice tempPrice; tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal <= weight && q.EndVal > weight && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); continue; } else { price.Price = tempPrice.Price; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)weight; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); if (originalPod.Weight == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "请先设置货物的重量"); continue; } SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.Weight / gPod.Weight), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } #region 判断同天同城同客户的运费是否小于80 var groupedCustomerPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = innerPodIDs, SettledType = 1, IsID = 1 }); if (!groupedCustomerPodsResponse.IsSuccess) { throw groupedCustomerPodsResponse.Exception; } foreach (var gcPod in groupedCustomerPodsResponse.Result.GroupedPods) { var innerCustomerPodIDs = gcPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); decimal sumshipAmt = 0; IList <SettledPod> settledCustomerPodPods = new List <SettledPod>(); foreach (var id in innerCustomerPodIDs) { var originalCustomerPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); foreach (var settledPod in settledPods) { if (originalCustomerPod.CustomerOrderNumber == settledPod.CustomerOrderNumber) { sumshipAmt += (decimal)settledPod.ShipAmt; settledCustomerPodPods.Add(settledPod); } } } if (sumshipAmt < 80) { foreach (var settledCustomerPodPod in settledCustomerPodPods) { settledCustomerPodPod.OtherAmt += (80 - sumshipAmt) * (decimal)(settledCustomerPodPod.Weight / gcPod.Weight); } } } #endregion } #endregion } #endregion #region Nike if (podsResponse.Result.First().CustomerID == 8) { //起运城市是太仓CLC、太仓CRW、上海的按同城结算(大仓和工厂直发[上海]) var podsResponses = podsResponse.Result.Where(s => s.PODTypeName == "大仓出货" || s.PODTypeName == "工厂直发").GroupBy(x => new { x.ActualDeliveryDate, x.EndCityName, }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsResponses) { double boxnumner = 0; double cube = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } cube = boxnumner / 11; Settlement(settledNumber, ProjectID, Message, cube, boxnumner, pods.pods, settledPods, quotedPrice); } //到货城市是太仓CLC、太仓CRW、上海的按同城结算(退货运单) var podsReturnResponses = podsResponse.Result.Where(s => s.PODTypeName == "退货运单").GroupBy(x => new { x.ActualDeliveryDate, x.StartCityName, }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsReturnResponses) { double boxnumner = 0; double cube = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } cube = boxnumner / 11; Settlement(settledNumber, ProjectID, Message, cube, boxnumner, pods.pods, settledPods, quotedPrice); } //门店调拨(按正常的同天同城结算,但报价是按箱并不与承运商做关联结算,) var podsTransfersResponses = podsResponse.Result.Where(s => s.PODTypeName == "门店调拨").GroupBy(x => new { x.ActualDeliveryDate, x.StartCityName, x.EndCityName }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsTransfersResponses) { double boxnumner = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } Settlement(settledNumber, ProjectID, Message, 0, boxnumner, pods.pods, settledPods, quotedPrice); } //只有大仓出货按照11箱/方*10计算支出补贴 var prs = podsResponse.Result.Where(p => p.PODTypeName == "大仓出货"); prs.Each((i, e) => { settledPods.Each((m, n) => { if (n.PodID == e.ID) { n.OtherAmt = (decimal)(n.BoxNumber / 11) * 10; } }); }); } #endregion #region AdidasPurchase if (podsResponse.Result.First().CustomerID == 13) { var newpodsResponse = from q in podsResponse.Result //where q.StartCityName != "天津" && q.StartCityName != "苏州" group q by new { q.ActualDeliveryDate, q.EndCityName, q.ShipperID } into r select new { ActualDeliveryDate = r.Key.ActualDeliveryDate.DateTimeToString(), EndCityName = r.Key.EndCityName, ShipperID = r.Key.ShipperID, Volume = r.Sum(a => a.Volume), BoxNumber = r.Sum(a => a.BoxNumber) }; relatedCustomerID = 13; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.Volume; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); //gPod.StartCityName = "广东"; foreach (var item in newpodsResponse) { if (item.ActualDeliveryDate.ToString() == gPod.ActualDeliveryDate && item.EndCityName == gPod.EndCityName) { cube = Convert.ToDouble(item.Volume); } } QuotedPrice price; price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price; decimal delivery = 0; foreach (var id in innerPodIDs) { //提货费 同天同城收一票 //if (cube < 40) //{ // var a = innerPodIDs.First(); // if (innerPodIDs.First().ToString() == id.ToString()) // { // switch (gPod.EndCityName) // { // case "广州": // delivery = 15; // break; // case "清远": // delivery = 25; // break; // case "云浮": // delivery = 25; // break; // case "东莞": // delivery = 25; // break; // case "中山": // delivery = 25; // break; // case "佛山": // delivery = 25; // break; // case "惠州": // delivery = 25; // break; // case "河源": // delivery = 25; // break; // default: // delivery = 0; // break; // } // } //} var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); //卸货费 //decimal unload = 0; //if (gPod.EndCityName == "苏州") //{ // unload = (decimal)4.2; //} //else if (gPod.EndCityName == "广州") //{ // unload = cube< 150 ? (decimal)5.5 : (decimal)5; //} SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)originalPod.Volume, BAFAmt = 0, PointAmt = 0, OtherAmt = 0,//unload * (decimal)originalPod.Volume + delivery * (decimal)originalPod.Volume, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = "其他费用=提货费+卸货费", DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } //var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.ID into g select new { g.Key, Pods = g }); //if (temp != null) //{ // temp.Each((i, k) => // { // var innPodIDs = k.Pods.Select(p => p.ID); // if (1 == 1) // { // settledPods.First(s => s.PodID == innPodIDs.First()).OtherAmt = 4.2*k.Pods.Select(a=>a.Volume); // settledPods.First(s => s.PodID == innPodIDs.First()).Remark += "成耀出货,同天同城同客户点费135"; // } // }); //} } } #endregion if (Message.Length > 0) { return; } //OtherAmt 其他费用=保底费 else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, System.Text.StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); long relatedCustomerID = 0; #region akzo if (podsResponse.Result.First().CustomerID == 7) { relatedCustomerID = 7; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double weight = gPod.Weight; if (weight < 300) { weight = 300; } var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = new QuotedPrice(); QuotedPrice tempPrice; tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal <= weight && q.EndVal > weight && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); continue; } else { price.Price = tempPrice.Price; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)weight; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); if (originalPod.Weight == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "请先设置货物的重量"); continue; } SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.Weight / gPod.Weight), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } } } #endregion #region Nike if (podsResponse.Result.First().CustomerID == 8) { //起运城市是太仓CLC、太仓CRW、上海的按同城结算(大仓和工厂直发[上海]) var podsResponses = podsResponse.Result.Where(s => s.PODTypeName == "大仓出货" || s.PODTypeName == "工厂直发").GroupBy(x => new { x.ActualDeliveryDate, x.EndCityName, }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsResponses) { double boxnumner = 0; double cube = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } cube = boxnumner / 12; Settlement(settledNumber, ProjectID, Message, cube, boxnumner, pods.pods, settledPods, quotedPrice); } //到货城市是太仓CLC、太仓CRW、上海的按同城结算(退货运单) var podsReturnResponses = podsResponse.Result.Where(s => s.PODTypeName == "退货运单").GroupBy(x => new { x.ActualDeliveryDate, x.StartCityName, }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsReturnResponses) { double boxnumner = 0; double cube = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } cube = boxnumner / 12; Settlement(settledNumber, ProjectID, Message, cube, boxnumner, pods.pods, settledPods, quotedPrice); } //门店调拨(按正常的同天同城结算,但报价是按箱并不与承运商做关联结算,) var podsTransfersResponses = podsResponse.Result.Where(s => s.PODTypeName == "门店调拨").GroupBy(x => new { x.ActualDeliveryDate, x.StartCityName, x.EndCityName }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsTransfersResponses) { double boxnumner = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } Settlement(settledNumber, ProjectID, Message, 0, boxnumner, pods.pods, settledPods, quotedPrice); } //只有大仓出货按照12箱/方*10计算支出补贴 var prs = podsResponse.Result.Where(p => p.PODTypeName == "大仓出货"); prs.Each((i, e) => { settledPods.Each((m, n) => { if (n.PodID == e.ID) { n.OtherAmt = (decimal)(n.BoxNumber / 12) * 10; } }); }); } #endregion if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
/// <summary> /// 新增 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int AddNew(BaseEntity p_Entity) { try { QuotedPrice MasterEntity = (QuotedPrice)p_Entity; if (MasterEntity.ID == 0) { return(0); } //新增主表数据 StringBuilder MasterField = new StringBuilder(); StringBuilder MasterValue = new StringBuilder(); MasterField.Append("INSERT INTO Sale_QuotedPrice("); MasterValue.Append(" VALUES("); MasterField.Append("ID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.ID) + ","); MasterField.Append("FormNo" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.FormNo) + ","); MasterField.Append("MakeOPID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.MakeOPID) + ","); MasterField.Append("MakeOPName" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.MakeOPName) + ","); MasterField.Append("MakeDate" + ","); if (MasterEntity.MakeDate != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.MakeDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("CheckOPID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.CheckOPID) + ","); MasterField.Append("CheckDate" + ","); if (MasterEntity.CheckDate != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.CheckDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("SubmitFlag" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.SubmitFlag) + ","); MasterField.Append("DelFlag" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.DelFlag) + ","); MasterField.Append("FormDate" + ","); if (MasterEntity.FormDate != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.FormDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("VendorID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VendorID) + ","); MasterField.Append("SaleOPID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.SaleOPID) + ","); MasterField.Append("Remark" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.Remark) + ","); MasterField.Append("VendorOPName" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VendorOPName) + ","); MasterField.Append("EffDate" + ","); if (MasterEntity.EffDate != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.EffDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("PriceContext" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.PriceContext) + ","); MasterField.Append("TradeType" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.TradeType) + ","); MasterField.Append("AddPer" + ","); if (MasterEntity.AddPer != 0) { MasterValue.Append(SysString.ToDBString(MasterEntity.AddPer) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("EffTime" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.EffTime) + ","); MasterField.Append("HL" + ","); if (MasterEntity.HL != 0) { MasterValue.Append(SysString.ToDBString(MasterEntity.HL) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("TradeWay" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.TradeWay) + ","); MasterField.Append("PayMethodFlag" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.PayMethodFlag) + ","); MasterField.Append("TransportWay" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.TransportWay) + ","); MasterField.Append("SelvageReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.SelvageReq) + ","); MasterField.Append("DyeReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.DyeReq) + ","); MasterField.Append("ArrangeReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.ArrangeReq) + ","); MasterField.Append("PackReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.PackReq) + ","); MasterField.Append("QualityReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.QualityReq) + ","); MasterField.Append("DeliveryReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.DeliveryReq) + ","); MasterField.Append("OtherReq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.OtherReq) + ","); MasterField.Append("VAddress" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VAddress) + ","); MasterField.Append("VTelephone" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VTelephone) + ","); MasterField.Append("VFax" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VFax) + ","); MasterField.Append("VEmail" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.VEmail) + ","); MasterField.Append("JiaoQi" + ","); if (MasterEntity.JiaoQi != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.JiaoQi.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("YongJing" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.YongJing) + ","); MasterField.Append("GangKou" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.GangKou) + ","); MasterField.Append("KHType" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.KHType) + ","); MasterField.Append("ZZMarket" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.ZZMarket) + ","); MasterField.Append("AuditTime" + ","); if (MasterEntity.AuditTime != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.AuditTime.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("BJSaleOPID" + ")"); MasterValue.Append(SysString.ToDBString(MasterEntity.BJSaleOPID) + ")"); //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(MasterField.Append(MasterValue.ToString()).ToString()); } else { AffectedRows = sqlTrans.ExecuteNonQuery(MasterField.Append(MasterValue.ToString()).ToString()); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBInsert), E); } }
public void SettledPodForReceive(IEnumerable <long> PodIDs, string Creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); //forSettledPodsResponse 待结算运单列表 var forSettledPodsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!forSettledPodsResponse.IsSuccess) { throw forSettledPodsResponse.Exception; } //同天同城合并,取得合并运单列表 groupedPodsResponse var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 0 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } //取得报价 var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); var BAF = ApplicationConfigHelper.GetBAFPrice(ProjectID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { decimal BAFPrice = 0; double cube = 0; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); var tempOriginalPods = podsResponse.Result.Where(p => innerPodIDs.Contains(p.ID)); tempOriginalPods.Each((i, p) => { int tempInt = 0; double tempCube = 0; if (string.Equals(p.PODTypeName, "出货运单", StringComparison.OrdinalIgnoreCase)) { if (p.CustomerOrderNumber.Substring(0, 2) == "SP" || int.TryParse(p.CustomerOrderNumber.Substring(0, 1), out tempInt)) { tempCube = p.BoxNumber.Value / specialDivisor;//11.4 } else { tempCube = p.BoxNumber.Value / commonDivisor;//11 } } else { tempCube = p.BoxNumber.Value / commonDivisor; } cube += tempCube; podsResponse.Result.First(c => c.ID == p.ID).Str40 = tempCube.ToString(); }); QuotedPrice price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == gPod.TargetID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); QueryBAFPrice BAFPrices = BAF.FirstOrDefault(q => q.ProjectID == ProjectID && q.BAFStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && q.BAFEndTime > gPod.ActualDeliveryDate.ObjectToDateTime()); if (BAFPrices == null) { BAFPrice = 0; } else { BAFPrice = BAFPrices.BAFPrice; } if (price == null) { var forSettledPodsTemp = forSettledPodsResponse.Result.Where(p => gPod.PodIDs.Split('|').Contains(p.ID.ToString())); if (forSettledPodsTemp != null) { forSettledPodsTemp.Each((k, g) => { Message.Append("运单:").Append(g.CustomerOrderNumber).Append(",对应客户为:").Append(g.CustomerName).Append(",起运城市为:") .Append(g.StartCityName).Append(",目的城市为:").Append(g.EndCityName).Append(",运输类型为:").Append(g.ShipperTypeName) .Append(",运单类型为:").Append(g.PODTypeName).Append(",整车/零担为:").Append(g.TtlOrTplName).Append(" 无系统对应报价,请先配置报价.").Append("*"); }); } continue; } if (Message.Length > 0) { continue; } decimal shipAmt = 0; shipAmt = price.Price * (decimal)cube; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 0, CustomerOrShipperID = originalPod.CustomerID.Value, CustomerOrShipperName = originalPod.CustomerName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.Str40.ObjectToDouble() / cube), BAFAmt = BAFPrice * shipAmt * (decimal)(originalPod.Str40.ObjectToDouble() / cube), PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = Creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } if (string.Equals(gPod.PODTypeName.Trim(), "调拨运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.Str6 into g select new { g.Key, Pods = g }); if (temp != null) { temp.Each((i, k) => { var innPodIDs = k.Pods.Select(p => p.ID); if (k.Pods.First().CustomerOrderNumber.Substring(0, 2) == "BR" && (k.Pods.First().StartCityName.Trim() == "苏州" || k.Pods.First().EndCityName.Trim() == "苏州")) { //settledPods.Each((i1, k1) => //{ // if (innPodIDs.Contains(k1.PodID)) // { settledPods.Each((i1, k1) => { if (innerPodIDs.Contains(k1.PodID)) { k1.PointAmt = 0; } }); settledPods.First(c => c.PodID == k.Pods.First().ID).PointAmt = point_from_suzhou; settledPods.First(c => c.PodID == k.Pods.First().ID).Remark += "Adidas调拨运单,BR开头的按照苏州至全国,全国至苏州,按照同天同城同客户合并后每票100计算点费"; //k1.PointAmt = point_from_suzhou;//(decimal)(k1.BoxNumber / commonDivisor) * point_from_suzhou //k1.Remark = "Adidas调拨运单,发货城市苏州,按照方*100计算点费"; // } //}); } else if (k.Pods.First().CustomerOrderNumber.Substring(0, 2) == "SP" && (k.Pods.First().StartCityName.Trim() == "上海" || k.Pods.First().EndCityName.Trim() == "上海")) { settledPods.Each((i1, k1) => { if (innerPodIDs.Contains(k1.PodID)) { k1.PointAmt = 0; } }); settledPods.First(c => c.PodID == k.Pods.First().ID).PointAmt = point_from_shanghai; settledPods.First(c => c.PodID == k.Pods.First().ID).Remark += "Adidas调拨运单,SP开头的按照上海至全国,全国至上海,按照同天同城同客户合并后每票100计算点费"; } else if (k.Pods.First().CustomerOrderNumber.Substring(0, 3) == "TRS" || k.Pods.First().CustomerOrderNumber.Substring(0, 3) == "TRN") { settledPods.Each((i1, k1) => { if (innPodIDs.Contains(k1.PodID)) { k1.PointAmt = (decimal)(k1.BoxNumber / commonDivisor) * point100; k1.Remark = "Adidas调拨运单,TRS开头和TRN开头,按照方*100计算点费"; } }); } else if (k.Pods.First().CustomerOrderNumber.Substring(0, 3) == "SPOW") { settledPods.Each((i1, k1) => { if (innPodIDs.Contains(k1.PodID)) { k1.PointAmt = (decimal)(k1.BoxNumber / commonDivisor) * point80; k1.Remark = "Adidas调拨运单,SPOW开头,按照方*100计算点费"; } }); } //else if ((k.Pods.First().StartCityName.Trim() == "东莞" && k.Pods.First().EndCityName == "深圳") // || (k.Pods.First().StartCityName.Trim() == "深圳" && k.Pods.First().EndCityName == "东莞") // || (k.Pods.First().StartCityName.Trim() == "东莞" && k.Pods.First().EndCityName == "广州") // || (k.Pods.First().StartCityName.Trim() == "珠海" && k.Pods.First().EndCityName == "东莞") // ) //{ // settledPods.Each((i1, k1) => // { // if (innPodIDs.Contains(k1.PodID)) // { // k1.PointAmt = (decimal)(k1.BoxNumber / commonDivisor) * 84; // k1.Remark = "Adidas调拨运单,发货城市" + k1.StartCityName + ",收货城市" + k1.EndCityName + ",按照方*84计算点费"; // } // }); //} else { settledPods.Each((i1, k1) => { if (innPodIDs.Contains(k1.PodID)) { k1.PointAmt = (decimal)(k1.BoxNumber / commonDivisor) * point80; k1.Remark = "Adidas调拨运单,如无特殊,按照方*80计算点费"; } }); } }); } } //同城同天同一家客户经销商点费为100元、自营店(客户简称为中文)原则上无点费 if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID) && k.Str10 == "经销商" || (k.Str10 == "自营店" && k.Str7 == "淘宝" && k.Str7 == "北区卫星舱")) group p by p.Str2 into g select new { g.Key, Pods = g }); if (temp != null) { temp.Each((i, k) => { var innPodIDs = k.Pods.Select(p => p.ID); settledPods.Each((i1, k1) => { if (innerPodIDs.Contains(k1.PodID)) { k1.PointAmt = 0; } }); settledPods.First(c => c.PodID == k.Pods.First().ID).PointAmt = point100; settledPods.First(c => c.PodID == k.Pods.First().ID).Remark += "Adidas退货,同天同城,点费100元。"; }); } } //出货 自营店(客户简称为中文)按方收取点费 if (string.Equals(gPod.PODTypeName.Trim(), "出货运单", StringComparison.OrdinalIgnoreCase)) { var temp = podsResponse.Result.Where(p => innerPodIDs.Contains(p.ID) && p.Str10 == "自营店" && Regex.IsMatch(p.Str7.Substring(0, 1), @"^[\u4e00-\u9fa5]+$") && p.Str7 != "淘宝" && p.Str7 != "北区卫星舱" && (p.CustomerOrderNumber.Substring(0, 3) != "RBO" && p.CustomerOrderNumber.Substring(0, 2) != "OW" && p.CustomerOrderNumber.Substring(0, 2) != "ZD" && p.CustomerOrderNumber.Substring(0, 2) != "SC" && p.CustomerOrderNumber.Substring(0, 2) != "OB")); if (temp != null) { temp.Each((i, k) => { int tInt; double cbm; if (int.TryParse(k.CustomerOrderNumber.Substring(0, 1), out tInt)) { cbm = k.BoxNumber.Value / specialDivisor; } else { cbm = k.BoxNumber.Value / commonDivisor; } settledPods.First(c => c.PodID == k.ID).PointAmt = point80 * (decimal)cbm; settledPods.First(c => c.PodID == k.ID).Remark = "Adidas出货,自营店按方*80 收取点费"; }); } } } if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt - p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 0 }); } }
public void SettledPodForReceive(IEnumerable <long> PodIDs, string Creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); foreach (var pod in podsResponse.Result) { if (string.IsNullOrEmpty(pod.Str9)) { this.GenErrorMessage(pod, Message, "毛重没有录入,请重新编辑运单"); continue; } double weight = 0; try { weight = pod.Str9.ObjectToDouble(); } catch { this.GenErrorMessage(pod, Message, "毛重数据不是数字类型,请重新编辑运单"); continue; } int carType = 0; if (pod.TtlOrTplID == 27) { if (string.IsNullOrEmpty(pod.Str29)) { this.GenErrorMessage(pod, Message, "无整车吨位信息,请重新编辑运单"); continue; } try { carType = pod.Str29.ObjectToInt32(); } catch { this.GenErrorMessage(pod, Message, "整车吨位信息有误(2|5|10|15|20),,请重新编辑运单"); continue; } } SettledPod settledPod = new SettledPod() { ProjectID = pod.ProjectID, CustomerOrderNumber = pod.CustomerOrderNumber, SystemNumber = pod.SystemNumber, PodID = pod.ID, SettledNumber = settledNumber, SettledType = 0, CustomerOrShipperID = pod.CustomerID.Value, CustomerOrShipperName = pod.CustomerName, StartCityID = pod.StartCityID.Value, StartCityName = pod.StartCityName, EndCityID = pod.EndCityID.Value, EndCityName = pod.EndCityName, ShipperTypeID = pod.ShipperTypeID.Value, ShipperTypeName = pod.ShipperTypeName, PODTypeID = pod.PODTypeID.Value, PODTypeName = pod.PODTypeName, TtlOrTplID = pod.TtlOrTplID.Value, TtlOrTplName = pod.TtlOrTplName, ActualDeliveryDate = pod.ActualDeliveryDate.Value, BoxNumber = pod.BoxNumber, Weight = weight, Volume = pod.Volume, GoodsNumber = pod.GoodsNumber, BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = string.Empty, Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = Creator, InvoiceID = 0, RelatedCustomerID = pod.CustomerID, IsAudit = true }; IEnumerable <QuotedPrice> prices = quotedPrice.Where(q => q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == pod.CustomerID && q.StartCityName == pod.StartCityName && q.EndCityName == pod.EndCityName && q.PodTypeName == pod.PODTypeName && q.ShipperTypeName == pod.ShipperTypeName && q.TplOrTtlName == pod.TtlOrTplName && q.EffectiveStartTime <= pod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= pod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (prices == null || !prices.Any()) { this.GenErrorMessage(pod, Message, " 无对应报价,请先配置"); continue; } QuotedPrice price; QuotedPrice miniPrice = prices.FirstOrDefault(p => p.StartVal == 20 && p.EndVal == 50); if (miniPrice == null) { this.GenErrorMessage(pod, Message, " 系统报价有问题!"); continue; } if (pod.TtlOrTplID == 26)//零担 { price = prices.FirstOrDefault(p => p.StartVal < weight && p.EndVal >= weight); if (price == null) { this.GenErrorMessage(pod, Message, " 根据运单毛重,未找到对应报价"); continue; } var region = ApplicationConfigHelper.GetRegions().FirstOrDefault(r => r.ID == pod.EndCityID); if ((pod.StartCityID == 10 && pod.EndCityID == 10) || (pod.StartCityID == 10 && region.SupperID == 10)) { settledPod.ShipAmt = price.Price; } else { if (weight <= this._settledByItem) { settledPod.ShipAmt = price.Price; } else { settledPod.ShipAmt = price.Price * (decimal)weight; if (settledPod.ShipAmt < miniPrice.Price) { settledPod.ShipAmt = miniPrice.Price; } } } } else { price = prices.First(); if (price == null || string.IsNullOrEmpty(price.Remark)) { this.GenErrorMessage(pod, Message, "报价录入有误"); continue; } var holeCarPrices = price.Remark.Split(';'); decimal holeCarPrice = 0; try { holeCarPrice = holeCarPrices.FirstOrDefault(p => p.Split(':')[0].ObjectToInt32() == carType).Split(':')[1].ObjectToDecimal(); } catch { this.GenErrorMessage(pod, Message, "报价录入有误"); continue; } if (holeCarPrice == 0) { this.GenErrorMessage(pod, Message, "无对应报价,请录入报价"); continue; } settledPod.ShipAmt = holeCarPrice; } if (pod.Str22 == "1") { if (string.Equals(pod.Str30.Trim(), "支票")) { settledPod.ShipAmt += this._receiveForCheck; } else { settledPod.ShipAmt += this._receiveForCache; } } settledPods.Add(settledPod); } if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 0 }); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, System.Text.StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); long relatedCustomerID = 0; #region Adidas if (podsResponse.Result.First().CustomerID == 1) { relatedCustomerID = 1; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.BoxNumber / 12; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price; price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { price = new QuotedPrice(); price.Price = 100; } else { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); continue; } } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)cube; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.BoxNumber / gPod.BoxNumber), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } if (string.Equals(gPod.PODTypeName.Trim(), "出货运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID) && k.PODTypeName.Trim() == "出货运单") group p by p.Str7 into g select new { g.Key, Pods = g }); if (temp != null) { temp.Each((i, k) => { var innPodIDs = k.Pods.Select(p => p.ID); settledPods.First(s => s.PodID == innPodIDs.First()).PointAmt = 165; settledPods.First(s => s.PodID == innPodIDs.First()).Remark += "亚华出货,同天同城同客户点费165"; }); } } if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID) && k.PODTypeName.Trim() == "退货运单") group p by p.Str7 into g select new { g.Key, Pods = g }); if (temp != null) { temp.Each((i, k) => { var innPodIDs = k.Pods.Select(p => p.ID); settledPods.First(s => s.PodID == innPodIDs.First()).PointAmt = 200; settledPods.First(s => s.PodID == innPodIDs.First()).Remark += "亚华退货,同天同城同客户100点费+100提货费。"; }); } } } } #endregion #region AdidasPurchase if (podsResponse.Result.First().CustomerID == 13) { var newpodsResponse = from q in podsResponse.Result //where q.StartCityName != "天津" && q.StartCityName != "苏州" group q by new { q.ActualDeliveryDate, q.EndCityName, q.ShipperID } into r select new { ActualDeliveryDate = r.Key.ActualDeliveryDate.DateTimeToString(), EndCityName = r.Key.EndCityName, ShipperID = r.Key.ShipperID, Volume = r.Sum(a => a.Volume), BoxNumber = r.Sum(a => a.BoxNumber) }; relatedCustomerID = 13; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.Volume; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); //gPod.StartCityName = "广东"; foreach (var item in newpodsResponse) { if (item.ActualDeliveryDate.ToString() == gPod.ActualDeliveryDate && item.EndCityName == gPod.EndCityName) { cube = Convert.ToDouble(item.Volume); } } QuotedPrice price; price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price; decimal delivery = 0; foreach (var id in innerPodIDs) { //提货费 同天同城收一票 //if (cube < 40) //{ // var a = innerPodIDs.First(); // if (innerPodIDs.First().ToString() == id.ToString()) // { // switch (gPod.EndCityName) // { // case "广州": // delivery = 15; // break; // case "清远": // delivery = 25; // break; // case "云浮": // delivery = 25; // break; // case "东莞": // delivery = 25; // break; // case "中山": // delivery = 25; // break; // case "佛山": // delivery = 25; // break; // case "惠州": // delivery = 25; // break; // case "河源": // delivery = 25; // break; // default: // delivery = 0; // break; // } // } //} var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); //卸货费 //decimal unload = 0; //if (gPod.EndCityName == "苏州") //{ // unload = (decimal)4.2; //} //else if (gPod.EndCityName == "广州") //{ // unload = cube< 150 ? (decimal)5.5 : (decimal)5; //} SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)originalPod.Volume, BAFAmt = 0, PointAmt = 0, OtherAmt = 0,//unload * (decimal)originalPod.Volume + delivery * (decimal)originalPod.Volume, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = "其他费用=提货费+卸货费", DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } //var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.ID into g select new { g.Key, Pods = g }); //if (temp != null) //{ // temp.Each((i, k) => // { // var innPodIDs = k.Pods.Select(p => p.ID); // if (1 == 1) // { // settledPods.First(s => s.PodID == innPodIDs.First()).OtherAmt = 4.2*k.Pods.Select(a=>a.Volume); // settledPods.First(s => s.PodID == innPodIDs.First()).Remark += "成耀出货,同天同城同客户点费135"; // } // }); //} } } #endregion if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
/// <summary> /// 修改 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int Update(BaseEntity p_Entity) { try { QuotedPrice MasterEntity = (QuotedPrice)p_Entity; if (MasterEntity.ID == 0) { return(0); } //更新主表数据 StringBuilder UpdateBuilder = new StringBuilder(); UpdateBuilder.Append("UPDATE Sale_QuotedPrice SET "); UpdateBuilder.Append(" ID=" + SysString.ToDBString(MasterEntity.ID) + ","); UpdateBuilder.Append(" FormNo=" + SysString.ToDBString(MasterEntity.FormNo) + ","); UpdateBuilder.Append(" MakeOPID=" + SysString.ToDBString(MasterEntity.MakeOPID) + ","); UpdateBuilder.Append(" MakeOPName=" + SysString.ToDBString(MasterEntity.MakeOPName) + ","); if (MasterEntity.MakeDate != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" MakeDate=" + SysString.ToDBString(MasterEntity.MakeDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" MakeDate=null,"); } UpdateBuilder.Append(" CheckOPID=" + SysString.ToDBString(MasterEntity.CheckOPID) + ","); if (MasterEntity.CheckDate != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" CheckDate=" + SysString.ToDBString(MasterEntity.CheckDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" CheckDate=null,"); } UpdateBuilder.Append(" SubmitFlag=" + SysString.ToDBString(MasterEntity.SubmitFlag) + ","); UpdateBuilder.Append(" DelFlag=" + SysString.ToDBString(MasterEntity.DelFlag) + ","); if (MasterEntity.FormDate != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" FormDate=" + SysString.ToDBString(MasterEntity.FormDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" FormDate=null,"); } UpdateBuilder.Append(" VendorID=" + SysString.ToDBString(MasterEntity.VendorID) + ","); UpdateBuilder.Append(" SaleOPID=" + SysString.ToDBString(MasterEntity.SaleOPID) + ","); UpdateBuilder.Append(" Remark=" + SysString.ToDBString(MasterEntity.Remark) + ","); UpdateBuilder.Append(" VendorOPName=" + SysString.ToDBString(MasterEntity.VendorOPName) + ","); if (MasterEntity.EffDate != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" EffDate=" + SysString.ToDBString(MasterEntity.EffDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" EffDate=null,"); } UpdateBuilder.Append(" PriceContext=" + SysString.ToDBString(MasterEntity.PriceContext) + ","); UpdateBuilder.Append(" TradeType=" + SysString.ToDBString(MasterEntity.TradeType) + ","); if (MasterEntity.AddPer != 0) { UpdateBuilder.Append(" AddPer=" + SysString.ToDBString(MasterEntity.AddPer) + ","); } else { UpdateBuilder.Append(" AddPer=null,"); } UpdateBuilder.Append(" EffTime=" + SysString.ToDBString(MasterEntity.EffTime) + ","); if (MasterEntity.HL != 0) { UpdateBuilder.Append(" HL=" + SysString.ToDBString(MasterEntity.HL) + ","); } else { UpdateBuilder.Append(" HL=null,"); } UpdateBuilder.Append(" TradeWay=" + SysString.ToDBString(MasterEntity.TradeWay) + ","); UpdateBuilder.Append(" PayMethodFlag=" + SysString.ToDBString(MasterEntity.PayMethodFlag) + ","); UpdateBuilder.Append(" TransportWay=" + SysString.ToDBString(MasterEntity.TransportWay) + ","); UpdateBuilder.Append(" SelvageReq=" + SysString.ToDBString(MasterEntity.SelvageReq) + ","); UpdateBuilder.Append(" DyeReq=" + SysString.ToDBString(MasterEntity.DyeReq) + ","); UpdateBuilder.Append(" ArrangeReq=" + SysString.ToDBString(MasterEntity.ArrangeReq) + ","); UpdateBuilder.Append(" PackReq=" + SysString.ToDBString(MasterEntity.PackReq) + ","); UpdateBuilder.Append(" QualityReq=" + SysString.ToDBString(MasterEntity.QualityReq) + ","); UpdateBuilder.Append(" DeliveryReq=" + SysString.ToDBString(MasterEntity.DeliveryReq) + ","); UpdateBuilder.Append(" OtherReq=" + SysString.ToDBString(MasterEntity.OtherReq) + ","); UpdateBuilder.Append(" VAddress=" + SysString.ToDBString(MasterEntity.VAddress) + ","); UpdateBuilder.Append(" VTelephone=" + SysString.ToDBString(MasterEntity.VTelephone) + ","); UpdateBuilder.Append(" VFax=" + SysString.ToDBString(MasterEntity.VFax) + ","); UpdateBuilder.Append(" VEmail=" + SysString.ToDBString(MasterEntity.VEmail) + ","); if (MasterEntity.JiaoQi != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" JiaoQi=" + SysString.ToDBString(MasterEntity.JiaoQi.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" JiaoQi=null,"); } UpdateBuilder.Append(" YongJing=" + SysString.ToDBString(MasterEntity.YongJing) + ","); UpdateBuilder.Append(" GangKou=" + SysString.ToDBString(MasterEntity.GangKou) + ","); UpdateBuilder.Append(" KHType=" + SysString.ToDBString(MasterEntity.KHType) + ","); UpdateBuilder.Append(" ZZMarket=" + SysString.ToDBString(MasterEntity.ZZMarket) + ","); if (MasterEntity.AuditTime != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" AuditTime=" + SysString.ToDBString(MasterEntity.AuditTime.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" AuditTime=null,"); } UpdateBuilder.Append(" BJSaleOPID=" + SysString.ToDBString(MasterEntity.BJSaleOPID)); UpdateBuilder.Append(" WHERE " + "ID=" + SysString.ToDBString(MasterEntity.ID)); //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(UpdateBuilder.ToString()); } else { AffectedRows = sqlTrans.ExecuteNonQuery(UpdateBuilder.ToString()); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBUpdate), E); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, System.Text.StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); long relatedCustomerID = 0; #region Adidas if (podsResponse.Result.First().CustomerID == 1) { relatedCustomerID = 1; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.BoxNumber / 12; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = new QuotedPrice(); QuotedPrice tempPrice; tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.EndCityName.Trim() && q.EndCityName.Trim() == gPod.StartCityName.Trim() && q.PodTypeName.Trim() == "出货运单" && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (tempPrice == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统报价,出货运单也无报价,请先配置报价."); continue; } price.Price = tempPrice.Price; price.Price *= (decimal)0.9; } else { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); continue; } } else { price.Price = tempPrice.Price; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)cube; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.BoxNumber / gPod.BoxNumber), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } } } #endregion #region Akzo if (podsResponse.Result.First().CustomerID == 7) { relatedCustomerID = 7; //var groupedModels = podsResponse.Result.GroupBy(s => new { s.ActualDeliveryDate,s.Str17}).Select(g => new { models = g.Key, Pods = g.Select(k => { return k; }) }); var groupedModels = podsResponse.Result.GroupBy(s => new { s.ActualDeliveryDate, s.Str17 }).Select(g => new { models = g.Key, count = g.Count() }); IList <Pod> settelModelspods = new List <Pod>(); foreach (var groupedModel in groupedModels) { DateTime time = (DateTime)groupedModel.models.ActualDeliveryDate; string CarModels = groupedModel.models.Str17; int placeCount = 0; decimal shipAmt = 0; double Models = 0; double weight = 0; string price = ""; foreach (var item in podsResponse.Result) { if (item.ActualDeliveryDate == time && item.Str17 == CarModels) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == item.ID); settelModelspods.Add(originalPod); } } foreach (var settelModelspod in settelModelspods) { weight += (double)settelModelspod.Weight; } if (settelModelspods[0].Str17 == "小面包车" || settelModelspods[0].Str17 == "金杯车") { placeCount = settelModelspods.GroupBy(s => new { s.Str3 }).Select(g => new { str3 = g.Key }).Count(); shipAmt = 260 + (placeCount - 1) * 30; price = "按车结算"; } else { Models = string.IsNullOrEmpty(settelModelspods[0].Str17) ? 0 : Convert.ToDouble(settelModelspods[0].Str17); if (Models == 0) { this.GenErrorMessage_ByPod(podsResponse.Result.FirstOrDefault(p => p.ID == settelModelspods[0].ID), Message, "请设置车型"); continue; } if (Models <= 5.5) { placeCount = settelModelspods.GroupBy(s => new { s.Str3 }).Select(g => new { str3 = g.Key, count = g.Count() }).Count(); shipAmt = 260 + (placeCount - 1) * 50; price = "按车结算"; } if (Models >= 6.2) { if (weight < 10000) { weight = 10000; } shipAmt = (decimal)weight / 1000 * 70; price = (0.07).ToString(); } } foreach (var settelModelspod in settelModelspods) { SettledPod settledPod = new SettledPod() { ProjectID = settelModelspod.ProjectID, CustomerOrderNumber = settelModelspod.CustomerOrderNumber, SystemNumber = settelModelspod.SystemNumber, PodID = settelModelspod.ID, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = settelModelspod.ShipperID.Value, CustomerOrShipperName = settelModelspod.ShipperName, StartCityID = settelModelspod.StartCityID.Value, StartCityName = settelModelspod.StartCityName, EndCityID = settelModelspod.EndCityID.Value, EndCityName = settelModelspod.EndCityName, ShipperTypeID = settelModelspod.ShipperTypeID.Value, ShipperTypeName = settelModelspod.ShipperTypeName, PODTypeID = settelModelspod.PODTypeID.Value, PODTypeName = settelModelspod.PODTypeName, TtlOrTplID = settelModelspod.TtlOrTplID.Value, TtlOrTplName = settelModelspod.TtlOrTplName, ActualDeliveryDate = settelModelspod.ActualDeliveryDate.Value, BoxNumber = settelModelspod.BoxNumber, Weight = settelModelspod.Weight, Volume = settelModelspod.Volume, GoodsNumber = settelModelspod.GoodsNumber, ShipAmt = shipAmt * (decimal)(settelModelspod.Weight / weight), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price, Str5 = string.Empty, Remark = time.ToString() + "|" + CarModels, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = settelModelspod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } settelModelspods.Clear(); } } #endregion #region Nike if (podsResponse.Result.First().CustomerID == 8) { //门店调拨(按正常的同天同城结算,但报价是按箱并不与承运商做关联结算,) var podsTransfersResponses = podsResponse.Result.Where(s => s.PODTypeName == "门店调拨").GroupBy(x => new { x.ActualDeliveryDate, x.StartCityName, x.EndCityName }) .Select(g => new { Peo = g.Key, count = g.Count(), pods = g.Select(k => { return(k); }) }); foreach (var pods in podsTransfersResponses) { double boxnumner = 0; foreach (var pod in pods.pods) { if (string.IsNullOrEmpty(pod.BoxNumber.ToString())) { this.GenErrorMessage_ByPod(pod, Message, " 请设置该运单的箱数"); continue; } boxnumner += (double)pod.BoxNumber; } Settlement(settledNumber, ProjectID, Message, 0, boxnumner, pods.pods, settledPods, quotedPrice); } } #endregion #region AdidasPurchase if (podsResponse.Result.First().CustomerID == 13) { var newpodsResponse = from q in podsResponse.Result //where q.StartCityName != "天津" && q.StartCityName != "苏州" group q by new { q.ActualDeliveryDate, q.EndCityName, q.ShipperID } into r select new { ActualDeliveryDate = r.Key.ActualDeliveryDate.DateTimeToString(), EndCityName = r.Key.EndCityName, ShipperID = r.Key.ShipperID, Volume = r.Sum(a => a.Volume), BoxNumber = r.Sum(a => a.BoxNumber) }; relatedCustomerID = 13; foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.Volume; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); //gPod.StartCityName = "广东"; foreach (var item in newpodsResponse) { if (item.ActualDeliveryDate.ToString() == gPod.ActualDeliveryDate && item.EndCityName == gPod.EndCityName) { cube = Convert.ToDouble(item.Volume); } } QuotedPrice price; price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价,请先配置报价."); } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price; decimal delivery = 0; foreach (var id in innerPodIDs) { //提货费 同天同城收一票 //if (cube < 40) //{ // var a = innerPodIDs.First(); // if (innerPodIDs.First().ToString() == id.ToString()) // { // switch (gPod.EndCityName) // { // case "广州": // delivery = 15; // break; // case "清远": // delivery = 25; // break; // case "云浮": // delivery = 25; // break; // case "东莞": // delivery = 25; // break; // case "中山": // delivery = 25; // break; // case "佛山": // delivery = 25; // break; // case "惠州": // delivery = 25; // break; // case "河源": // delivery = 25; // break; // default: // delivery = 0; // break; // } // } //} var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); //卸货费 //decimal unload = 0; //if (gPod.EndCityName == "苏州") //{ // unload = (decimal)4.2; //} //else if (gPod.EndCityName == "广州") //{ // unload = cube< 150 ? (decimal)5.5 : (decimal)5; //} SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)originalPod.Volume, BAFAmt = 0, PointAmt = 0, OtherAmt = 0,//unload * (decimal)originalPod.Volume + delivery * (decimal)originalPod.Volume, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = "其他费用=提货费+卸货费", DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } //var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.ID into g select new { g.Key, Pods = g }); //if (temp != null) //{ // temp.Each((i, k) => // { // var innPodIDs = k.Pods.Select(p => p.ID); // if (1 == 1) // { // settledPods.First(s => s.PodID == innPodIDs.First()).OtherAmt = 4.2*k.Pods.Select(a=>a.Volume); // settledPods.First(s => s.PodID == innPodIDs.First()).Remark += "成耀出货,同天同城同客户点费135"; // } // }); //} } } #endregion if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
/// <summary> /// 检查将要操作的数据是否符合业务规则 /// </summary> /// <param name="p_BE"></param> private void CheckCorrect(BaseEntity p_BE) { QuotedPrice entity = (QuotedPrice)p_BE; }
public void SettledPodForPay(IEnumerable <long> PodIDs, string Creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); string settledNumber = Guid.NewGuid().ToString(); IList <SettledPod> settledPods = new List <SettledPod>(); foreach (var pod in podsResponse.Result) { //For Hilti if (pod.CustomerID == 2) { if (string.IsNullOrEmpty(pod.Str24)) { this.GenErrorMessage(pod, Message, " 无净重,请先编辑运单毛重"); continue; } double weight = 0; try { weight = pod.Str24.ObjectToDouble(); } catch { this.GenErrorMessage(pod, Message, "净重数据不是数字类型,请重新编辑运单"); continue; } IEnumerable <QuotedPrice> prices = quotedPrice.Where(q => q.ProjectID == ProjectID && q.Target == 0 && q.TargetID == pod.CustomerID && q.StartCityName == pod.StartCityName && q.EndCityName == pod.EndCityName && q.PodTypeName == pod.PODTypeName && q.ShipperTypeName == pod.ShipperTypeName && q.TplOrTtlName == pod.TtlOrTplName && q.EffectiveStartTime <= pod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= pod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (prices == null || !prices.Any()) { this.GenErrorMessage(pod, Message, " 无对应报价,请先配置"); continue; } SettledPod settledPod = new SettledPod() { ProjectID = pod.ProjectID, CustomerOrderNumber = pod.CustomerOrderNumber, SystemNumber = pod.SystemNumber, PodID = pod.ID, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = pod.ShipperID.Value, CustomerOrShipperName = pod.ShipperName, StartCityID = pod.StartCityID.Value, StartCityName = pod.StartCityName, EndCityID = pod.EndCityID.Value, EndCityName = pod.EndCityName, ShipperTypeID = pod.ShipperTypeID.Value, ShipperTypeName = pod.ShipperTypeName, PODTypeID = pod.PODTypeID.Value, PODTypeName = pod.PODTypeName, TtlOrTplID = pod.TtlOrTplID.Value, TtlOrTplName = pod.TtlOrTplName, ActualDeliveryDate = pod.ActualDeliveryDate.Value, BoxNumber = pod.BoxNumber, Weight = weight, Volume = pod.Volume, GoodsNumber = pod.GoodsNumber, BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = string.Empty, Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = Creator, InvoiceID = 0, RelatedCustomerID = pod.CustomerID, IsAudit = true }; QuotedPrice price; QuotedPrice minPrice = prices.FirstOrDefault(p => p.StartVal == 0 && p.EndVal == 50); if (minPrice == null) { this.GenErrorMessage(pod, Message, " 系统报价有问题!"); continue; } price = prices.FirstOrDefault(p => p.StartVal < weight && p.EndVal >= weight); if (price == null) { this.GenErrorMessage(pod, Message, " 根据运单净重,未找到对应报价"); continue; } if (weight <= this._settledByItem) { settledPod.ShipAmt = minPrice.Price; } else { settledPod.ShipAmt = price.Price * (decimal)weight; if (settledPod.ShipAmt < minPrice.Price) { settledPod.ShipAmt = minPrice.Price; } } if (pod.Str22 == "1") { if (string.Equals(pod.Str30.Trim(), "现金")) { if (string.IsNullOrEmpty(pod.Str14)) { this.GenErrorMessage(pod, Message, " 代收款方式为现金,但未提供代收款金额,无法结算代收现金手续费,请编辑运单代收款金额"); continue; } decimal tempAmt = 0; try { tempAmt = pod.Str14.ObjectToDecimal(); } catch { this.GenErrorMessage(pod, Message, " 代收款方式为现金,但代收款金额输入有误,无法结算代收现金手续费,请编辑运单代收款金额"); continue; } decimal tempAmt1 = tempAmt * this._rate; if (tempAmt1 < this._minFee) { tempAmt1 = this._minFee; } settledPod.ShipAmt += tempAmt1; } } if (pod.Str31 == "1") { settledPod.ShipAmt += this._caoGanAmt; } settledPods.Add(settledPod); } } if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }
public void SettledPodForPay(IEnumerable <long> PodIDs, string creator, long ProjectID, int Target, long CustomerOrShipperID, long RelatedCustomerID, StringBuilder Message) { if (Message.Length > 0) { return; } PodService service = new PodService(); IList <SettledPod> settledPods = new List <SettledPod>(); //podsResponse 待结算运单列表 var podsResponse = service.QueryPodByPodIDs(new QueryPodByIDsRequest() { PodIDs = PodIDs }); if (!podsResponse.IsSuccess) { throw podsResponse.Exception; } //取得报价 var quotedPrice = ApplicationConfigHelper.GetProjectQuotedPrice(ProjectID, Target, CustomerOrShipperID, RelatedCustomerID); //生成结算序列号 string settledNumber = Guid.NewGuid().ToString(); long relatedCustomerID = 0; #region Adidas if (podsResponse.Result.First().CustomerID == 1) { relatedCustomerID = 1; var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = PodIDs, SettledType = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } foreach (var gPod in groupedPodsResponse.Result.GroupedPods) { double cube = gPod.BoxNumber / 11; var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal < cube && q.EndVal >= cube && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); if (price == null) { this.GenErrorMessage_ByGroupedPod(gPod, Message, "无系统对应报价, 请先配置报价."); continue; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price * (decimal)cube; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = shipAmt * (decimal)(originalPod.BoxNumber / gPod.BoxNumber), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } if (Message.Length > 0) { continue; } //同天同城,出货运单,第一个客户不算点费,之后30元一个 if (string.Equals(gPod.PODTypeName.Trim(), "出货运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.Str7 into g select new { g.Key, Pods = g }); if (temp != null) { temp.Each((i, k) => { if (i > 0) { var innPodIDs = k.Pods.Select(p => p.ID); settledPods.First(s => s.PodID == innPodIDs.First()).PointAmt = 30; settledPods.First(s => s.PodID == innPodIDs.First()).Remark = "佳勤出货,同天同城同客户30元点费"; } }); } } //同天同城,退货运单,客户类型为经销商,无论去几个地方30元,自营店无 if (string.Equals(gPod.PODTypeName.Trim(), "退货运单", StringComparison.OrdinalIgnoreCase)) { var temp = (from p in podsResponse.Result.Where(k => innerPodIDs.Contains(k.ID)) group p by p.Str10 into g select new { g.Key, Pods = g }); if (temp != null) { foreach (var k in temp) { if (k.Key == "经销商") { var innPodIDs = k.Pods.Select(p => p.ID); settledPods.First(s => innPodIDs.Contains(s.PodID)).PointAmt = 30; settledPods.First(s => innPodIDs.Contains(s.PodID)).Remark = "佳勤退货,同天同城经销商30元点费"; break; } } } } } } #endregion Adidas #region akzo if (podsResponse.Result.First().CustomerID == 7) { relatedCustomerID = 7; #region 目的地是四川但不是成都的 为转仓运单 var regins = ApplicationConfigHelper.GetRegions().Where(r => r.SupperID == 29 && r.Name != "成都"); IList <string> cityNames = new List <string>(); regins.Each((i, r) => { cityNames.Add(r.Name); ApplicationConfigHelper.GetRegions().Where(g => g.SupperID == r.ID || g.SupperID == 256).Each((j, k) => cityNames.Add(k.Name)); }); IList <Pod> Normal = new List <Pod>(); //存放转仓运单的 IList <Pod> Special = new List <Pod>(); podsResponse.Result.Each((i, p) => { if (cityNames.Contains(p.EndCityName)) { Special.Add(p); } else { Normal.Add(p); } }); IEnumerable <long> podIDC = Normal.Select(p => p.ID); var groupedSprcial = Special.GroupBy(s => s.ActualDeliveryDate).Select(g => new { Date = g.Key.Value, Pods = g.Select(k => { return(k); }) }); IList <Pod> DatePods = new List <Pod>(); double SpecialWeight = 0; decimal SpecialPrice = 0; decimal SpecialShipAmt = 0; foreach (var item in groupedSprcial) { DateTime dt = item.Date; foreach (var pod in Special) { if (pod.ActualDeliveryDate == dt) { SpecialWeight += (double)pod.Weight; DatePods.Add(pod); } } if (SpecialWeight >= 30000) { SpecialPrice = (decimal)668 / 1000; } else if (SpecialWeight >= 20000) { SpecialPrice = (decimal)670 / 1000; } else if (SpecialWeight >= 10000) { SpecialPrice = (decimal)675 / 1000; } else if (SpecialWeight >= 3000) { SpecialPrice = (decimal)685 / 1000; } else { SpecialPrice = (decimal)690 / 1000; } SpecialShipAmt = (decimal)SpecialWeight * SpecialPrice; if (SpecialWeight > 0) { foreach (var special in DatePods) { if (special.Weight == null) { this.GenErrorMessage_ByPod(special, Message, "请先设置货物的重量"); continue; } SettledPod settledPod = new SettledPod() { ProjectID = special.ProjectID, CustomerOrderNumber = special.CustomerOrderNumber, SystemNumber = special.SystemNumber, PodID = special.ID, SettledNumber = special.CustomerOrderNumber, SettledType = 1, CustomerOrShipperID = special.ShipperID.Value, CustomerOrShipperName = special.ShipperName, StartCityID = special.StartCityID.Value, StartCityName = special.StartCityName, EndCityID = special.EndCityID.Value, EndCityName = special.EndCityName, ShipperTypeID = special.ShipperTypeID.Value, ShipperTypeName = special.ShipperTypeName, PODTypeID = special.PODTypeID.Value, PODTypeName = special.PODTypeName, TtlOrTplID = special.TtlOrTplID.Value, TtlOrTplName = special.TtlOrTplName, ActualDeliveryDate = special.ActualDeliveryDate.Value, BoxNumber = special.BoxNumber, Weight = special.Weight, Volume = special.Volume, GoodsNumber = special.GoodsNumber, ShipAmt = SpecialShipAmt * (decimal)(special.Weight / SpecialWeight), BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = SpecialPrice.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = special.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } } SpecialWeight = 0; SpecialPrice = 0; SpecialShipAmt = 0; DatePods.Clear(); } var groupedPodsResponse = service.SettledPodSearch(new SettledPodRequest() { IDs = podIDC, SettledType = 1, IsID = 1 }); if (!groupedPodsResponse.IsSuccess) { throw groupedPodsResponse.Exception; } #endregion #region 目的地是成都 、重庆、西藏下面的市 就要按照同天同城同客户获取报价 var podsResponses = from q in podsResponse.Result group q by new { q.Str2, q.StartCityName, q.ActualDeliveryDate, q.EndCityName } into g let ids = g.Select(b => b.ID.ToString()).ToArray() select new { ActualDeliveryDate = g.Max(a => a.ActualDeliveryDate), ShipperTypeName = g.Max(a => a.ShipperTypeName), BoxNumber = g.Sum(a => a.BoxNumber), Volume = g.Sum(a => a.Volume), Weight = g.Sum(a => a.Weight), TargetID = g.Max(a => a.ShipperID), ShipperName = g.Max(a => a.ShipperName), ShipperTypeID = g.Max(a => a.ShipperTypeID), PODTypeID = g.Max(a => a.PODTypeID), PODTypeName = g.Max(a => a.PODTypeName), TtlOrTplID = g.Max(a => a.TtlOrTplID), TtlOrTplName = g.Max(a => a.TtlOrTplName), StartCityID = g.Max(a => a.StartCityID), StartCityName = g.Max(a => a.StartCityName), GoodsNumber = g.Max(a => a.GoodsNumber), EndCityName = g.Max(a => a.EndCityName), PodIDs = string.Join("|", ids), //sd=g.Max(a=>a.), }; foreach (var gPod in podsResponses) { List <string> endcityname = new List <string> { "成都", "重庆", "长寿", "达州", "涪陵", "广安", "华蓥", "江津", "万源", "万州", "永川", "昌都", "噶尔", "拉萨", "林芝", "那曲", " 乃东", "日喀则" }; if (endcityname.Contains(gPod.EndCityName)) { double weight = (double)gPod.Weight; double weights = 0; if (weight < 50) { weights = 50; } else { weights = weight; } var innerPodIDs = gPod.PodIDs.Split('|').Select(i => i.ObjectToInt64()); QuotedPrice price = new QuotedPrice(); QuotedPrice tempPrice; //tempPrice = quotedPrice.FirstOrDefault(q => //q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() //&& q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal <= weight && q.EndVal > weight //&& q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); tempPrice = quotedPrice.FirstOrDefault(q => q.ProjectID == ProjectID && q.Target == 1 && q.TargetID == gPod.TargetID && q.RelatedCustomerID == relatedCustomerID && q.StartCityName.Trim() == gPod.StartCityName.Trim() && q.EndCityName.Trim() == gPod.EndCityName.Trim() && q.PodTypeName.Trim() == gPod.PODTypeName.Trim() && q.ShipperTypeName.Trim() == gPod.ShipperTypeName.Trim() && q.TplOrTtlName.Trim() == gPod.TtlOrTplName.Trim() && q.StartVal <= weights && q.EndVal > weight && q.EffectiveStartTime <= gPod.ActualDeliveryDate.ObjectToDateTime() && (q.EffectiveEndTime >= gPod.ActualDeliveryDate.ObjectToDateTime() || q.EffectiveEndTime == null)); GroupedPods gPods = new GroupedPods(); gPods.PodIDs = gPod.PodIDs; gPods.TargetName = gPod.ShipperName; gPods.StartCityName = gPod.StartCityName; gPods.EndCityName = gPod.EndCityName; gPods.ShipperTypeName = gPod.ShipperTypeName; gPods.PODTypeName = gPod.PODTypeName; gPods.TtlOrTplName = gPod.TtlOrTplName; if (tempPrice == null) { this.GenErrorMessage_ByGroupedPod(gPods, Message, "无系统对应报价,请先配置报价."); continue; } else { price.Price = tempPrice.Price; } if (Message.Length > 0) { continue; } decimal shipAmt = price.Price; foreach (var id in innerPodIDs) { var originalPod = podsResponse.Result.FirstOrDefault(p => p.ID == id); if (originalPod.Weight == null) { this.GenErrorMessage_ByGroupedPod(gPods, Message, "请先设置货物的重量"); continue; } SettledPod settledPod = new SettledPod() { ProjectID = originalPod.ProjectID, CustomerOrderNumber = originalPod.CustomerOrderNumber, SystemNumber = originalPod.SystemNumber, PodID = id, SettledNumber = settledNumber, SettledType = 1, CustomerOrShipperID = originalPod.ShipperID.Value, CustomerOrShipperName = originalPod.ShipperName, StartCityID = originalPod.StartCityID.Value, StartCityName = originalPod.StartCityName, EndCityID = originalPod.EndCityID.Value, EndCityName = originalPod.EndCityName, ShipperTypeID = originalPod.ShipperTypeID.Value, ShipperTypeName = originalPod.ShipperTypeName, PODTypeID = originalPod.PODTypeID.Value, PODTypeName = originalPod.PODTypeName, TtlOrTplID = originalPod.TtlOrTplID.Value, TtlOrTplName = originalPod.TtlOrTplName, ActualDeliveryDate = originalPod.ActualDeliveryDate.Value, BoxNumber = originalPod.BoxNumber, Weight = originalPod.Weight, Volume = originalPod.Volume, GoodsNumber = originalPod.GoodsNumber, ShipAmt = weight < 50 ? shipAmt * (decimal)(originalPod.Weight / weight) * 50 : shipAmt * (decimal)originalPod.Weight, BAFAmt = 0, PointAmt = 0, OtherAmt = 0, Amt1 = 0, Amt2 = 0, Amt3 = 0, Amt4 = 0, Amt5 = 0, Str1 = string.Empty, Str2 = string.Empty, Str3 = string.Empty, Str4 = price.Price.ToString(), Str5 = string.Empty, Remark = string.Empty, DateTime1 = null, DateTime2 = null, CreateTime = DateTime.Now, Creator = creator, InvoiceID = 0, RelatedCustomerID = originalPod.CustomerID, IsAudit = true }; settledPods.Add(settledPod); } } } #endregion } #endregion if (Message.Length > 0) { return; } else { settledPods.Each((i, p) => { p.TotalAmt = p.ShipAmt + p.PointAmt + p.BAFAmt + p.OtherAmt + p.Amt1 + p.Amt2 + p.Amt3 + p.Amt4 + p.Amt5; }); new SettledService().SettlePods(new SettlePodsRequest() { SettledPods = settledPods, SettledType = 1 }); } }