From 8f926e3d408380e14c06bf0dbd4adc965421935a Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 16:11:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=90=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5aca507..e5d1ebb 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -329,7 +329,8 @@ namespace BBWYB.Server.Business PurchaserId = cargoParamGroup.PurchaserId, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, - BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)) + BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), + IsEnabled = true }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion From 72fb615f581467631c8b2dac59a503ef2acc8edd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 25 May 2023 23:56:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=B9=E4=BB=B7=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 85 +++++++++++++------ .../Db/Order/OrderCostDetail.cs | 6 -- 2 files changed, 60 insertions(+), 31 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index e5d1ebb..7db44d9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -307,6 +307,7 @@ namespace BBWYB.Server.Business PurchaseFreight = currentOrderSkuFreightAmount, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, SkuAmount = currentOrderSkuProductAmount, + TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount, SkuId = belongSkuId, StorageAmount = 0, IsEnabled = true @@ -514,7 +515,6 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, - PurchaseAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight }; @@ -899,26 +899,36 @@ namespace BBWYB.Server.Business { var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); if (orderPurchaseInfo == null) - throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); if (purchaseAccount == null) - throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); - var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice }); + var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); var dbOrderCost = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); if (dbOrderCost == null) - throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); + + var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); + if (dbOrderCostDetails.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); + + var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => x.OrderId == dbOrder.Id).ToList(); + if (dbOrderPurchaseRelationInfos.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); + + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); + if (dbOrderPurchaseInfoList.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); + + List> updateOrderCostDetailList = new List>(); + IUpdate updateOrderCost = null; - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId).ToList(opi => new - { - opi.PurchaseOrderId, - opi.PurchaseAccountId - }); var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseAmount = 0M; - foreach (var opi in orderPurchaseInfoList) + foreach (var opi in dbOrderPurchaseInfoList) { var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -928,25 +938,50 @@ namespace BBWYB.Server.Business OrderId = opi.PurchaseOrderId }); totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; - } + var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); - //var oldTotalAmount = dbOrderCost.PurchaseAmount; - //var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount); - //var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight); + var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); + foreach (var belongSkuGroup in belongSkuGroups) + { + var belongSkuId = belongSkuGroup.Key; + var currentOrderSkuProductAmount = 0M; //采购成本 + var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId - dbOrderCost.PurchaseAmount = totalPurchaseAmount; - dbOrderCost.Profit = dbOrder.OrderTotalPrice - - dbOrderCost.PurchaseAmount - - dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) + { + var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.ProductAmount); + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.Quantity); + currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / purchaseSkuTotalQuantity); + } - fsql.Transaction(() => - { - fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) - .Set(oc => oc.Profit, dbOrderCost.Profit) - .ExecuteAffrows(); - }); + var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) + + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId); + dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; + dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; + dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + } + + dbOrderCost.PurchaseAmount = totalPurchaseAmount; + dbOrderCost.Profit = dbOrder.OrderTotalPrice - + dbOrderCost.PurchaseAmount - + dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); + + //fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) + // .Set(oc => oc.Profit, dbOrderCost.Profit) + // .ExecuteAffrows(); + }); + } } catch (Exception ex) { diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs index 3ba1064..6f4b31f 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs @@ -109,12 +109,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? StorageAmount { get; set; } = 0.00M; - /// - /// 采购成本(不含发货运费) - /// - [Column(DbType = "decimal(20,2)")] - public decimal? PurchaseAmount { get; set; } = 0.00M; - /// /// 成本总计 ///