From 99e140f5142bb5cedc6f531dc9135b4fcd9c5d01 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 28 May 2023 12:16:39 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=92=E9=99=A4=E5=8E=86=E5=8F=B2=E9=87=87=E8=B4=AD=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/PurchaseOrderController.cs | 2 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 56829c6..6b7d7fa 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { - [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class PurchaseOrderController : BaseApiController { private PurchaseOrderBusiness purchaseOrderBusiness; diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index a303c5d..4a2b0fb 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -382,11 +382,15 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - //deleteOrderCostDetail.ExecuteAffrows(); if (updatePurchaseOrderIdList.Count() > 0) fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); if (updateOrderCostDetailIdList.Count() > 0) fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); + }); + + fsql.Transaction(() => + { + //deleteOrderCostDetail.ExecuteAffrows(); fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); @@ -470,6 +474,9 @@ namespace BBWYB.Server.Business var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); + if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId))) + throw new BusinessException("关联采购单时不能包含历史采购单"); + var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); From f3430509891ffe3cdc26498fd71eccb62c937801 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 28 May 2023 12:45:45 +0800 Subject: [PATCH 2/6] 1 --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 1 + .../Dto/Request/PurchaseOrder/CargoParamRequest.cs | 5 +++++ .../Dto/Request/PurchaseOrder/CreateOrderRequest.cs | 3 +++ 3 files changed, 9 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 4a2b0fb..01073a2 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -528,6 +528,7 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, + SkuAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight, PurchaseOrderId = purchaseOrder.PurchaserOrderId diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs index 4cc5ad2..f87cc75 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs @@ -44,6 +44,11 @@ public Enums.Platform PurchasePlatform { get; set; } + /// + /// 备注 + /// + public string Remark { get; set; } + /// /// 采购商品列表 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs index 830d491..9867925 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs @@ -7,6 +7,9 @@ /// public string Extensions { get; set; } + /// + /// 采购备注, 即将弃用, 目前保留给WPF版使用 + /// public string Remark { get; set; } /// From 795a6681ccbfb757ab8b49f175e4500f36910b3d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 28 May 2023 13:09:03 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E4=B8=80=E4=B8=AAsku=E6=8B=A5=E6=9C=89?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E6=9C=89=E6=95=88=E9=87=87=E8=B4=AD=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 54 +++++++++++++------ .../Db/Order/OrderPurchaseInfo.cs | 6 +++ .../AssociationPurchaseOrderRequest.cs | 2 +- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 01073a2..f8f825e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -235,12 +235,10 @@ namespace BBWYB.Server.Business Platform = (AdapterEnums.PlatformType)purchaseAccount.PurchasePlatformId, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, Extensions = extJson.Value("OrderTradeTypeCode"), - Remark = request.Remark, + Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark, OrderProductParamList = orderProductParamList }); - - var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { AppKey = purchaseAccount.AppKey, @@ -331,7 +329,8 @@ namespace BBWYB.Server.Business PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), - IsEnabled = true + IsEnabled = true, + Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion @@ -474,7 +473,7 @@ namespace BBWYB.Server.Business var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); - if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId))) + if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) throw new BusinessException("关联采购单时不能包含历史采购单"); var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); @@ -491,11 +490,11 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { - if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaserOrderId)) + if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) continue; var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); - var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId); + var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId); if (dbPurchaserOrder == null) { dbPurchaserOrder = new OrderPurchaseInfo() @@ -508,7 +507,7 @@ namespace BBWYB.Server.Business BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), CreateTime = DateTime.Now, PurchaseMethod = Enums.PurchaseMethod.关联外部单, - PurchaseOrderId = purchaseOrder.PurchaserOrderId, + PurchaseOrderId = purchaseOrder.PurchaseOrderId, PurchasePlatform = purchaseOrder.PurchasePlatform, PurchaserId = purchaseOrder.PurchaserId, PurchaserName = purchaseOrder.PurchaserName, @@ -531,7 +530,7 @@ namespace BBWYB.Server.Business SkuAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight, - PurchaseOrderId = purchaseOrder.PurchaserOrderId + PurchaseOrderId = purchaseOrder.PurchaseOrderId }; insertOrderCostDetailList.Add(orderCostDetail); } @@ -548,17 +547,40 @@ namespace BBWYB.Server.Business foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { - var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId); - dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; - dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; - dbOrderCostDetail.PurchaseFreight = avgFreight; - dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; - updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); + var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId && + ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId); + if (dbOrderCostDetail == null) + { + var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); + dbOrderCostDetail = new OrderCostDetail() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + DeductionQuantity = assOrderCostDetail.PurchaseQuantity, + IsEnabled = true, + OrderId = request.OrderId, + ProductId = dbOrderSku.ProductId, + SkuId = assOrderCostDetail.SkuId, + SkuAmount = assOrderCostDetail.SkuAmount, + PurchaseFreight = avgFreight, + TotalCost = assOrderCostDetail.SkuAmount + avgFreight, + PurchaseOrderId = purchaseOrder.PurchaseOrderId + }; + insertOrderCostDetailList.Add(dbOrderCostDetail); + } + else + { + dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; + dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; + dbOrderCostDetail.PurchaseFreight = avgFreight; + dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); + } } } } - var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId)) + var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId)) .Sum(p => p.PurchaseAmount + p.PurchaseFreight); var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index a45ec29..7c6be1e 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -94,6 +94,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "bit")] public bool IsEnabled { get; set; } = true; + + /// + /// ɹע + /// + [Column(StringLength = 500)] + public string Remark { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs index 5076f39..a20a837 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs @@ -10,7 +10,7 @@ /// /// 采购单号 /// - public string PurchaserOrderId { get; set; } + public string PurchaseOrderId { get; set; } public Enums.Platform PurchasePlatform { get; set; } From cf697fca81cceda5929a8e5df3d362ebfdb2b61b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 28 May 2023 16:54:03 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A5=E9=87=87=E8=B4=AD=E5=95=86=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=E8=BF=94=E5=9B=9E=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 17 ++++++++- .../AssociationPurchaseOrderResponse.cs | 2 +- .../PurchaseOrder/PreviewOrderResponse.cs | 38 +++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index f8f825e..b09ed1d 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -96,6 +96,8 @@ namespace BBWYB.Server.Business var productAmount = 0M; var totalAmount = 0M; + var previewAmountGroupByPurchaserList = new List(); + foreach (var cargoParamGroup in request.CargoParamGroupList) { var purchaseAccount = request.PurchaseAccountList.FirstOrDefault(pa => pa.PurchasePlatformId == cargoParamGroup.PurchasePlatform); @@ -133,6 +135,16 @@ namespace BBWYB.Server.Business freightAmount += response.FreightAmount; productAmount += response.ProductAmount; totalAmount += response.TotalAmount; + + previewAmountGroupByPurchaserList.Add(new PreviewAmountGroupByPurchaser() + { + FreightAmount = response.FreightAmount, + ProductAmount = response.ProductAmount, + TotalAmount = response.TotalAmount, + PurchasePlatform = cargoParamGroup.PurchasePlatform, + PurchaserId = cargoParamGroup.PurchaserId, + PurchaserName = cargoParamGroup.PurchaserName + }); } catch (Exception ex) { @@ -147,7 +159,8 @@ namespace BBWYB.Server.Business Extensions = JsonConvert.SerializeObject(extJArray), FreightAmount = freightAmount, ProductAmount = productAmount, - TotalAmount = totalAmount + TotalAmount = totalAmount, + PreviewAmountGroupByPurchaserList = previewAmountGroupByPurchaserList }; } @@ -428,7 +441,7 @@ namespace BBWYB.Server.Business PurchasePlatform = purchaseOrder.PurchasePlatform.Value, PurchaserId = purchaseOrder.PurchaserId, PurchaserName = purchaseOrder.PurchaserName, - PurchaserOrderId = purchaseOrder.PurchaseOrderId, + PurchaseOrderId = purchaseOrder.PurchaseOrderId, IsEnabled = purchaseOrder.IsEnabled, PurchaseMethod = purchaseOrder.PurchaseMethod.Value }; diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs index 6291511..6feb646 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs @@ -10,7 +10,7 @@ /// /// 采购单号 /// - public string PurchaserOrderId { get; set; } + public string PurchaseOrderId { get; set; } public Enums.Platform PurchasePlatform { get; set; } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/PreviewOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/PreviewOrderResponse.cs index 913196f..a1a1d4f 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/PreviewOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/PreviewOrderResponse.cs @@ -21,5 +21,43 @@ /// 扩展数据 下单需要 /// public string Extensions { get; set; } + + /// + /// 以采购商分组的报价金额列表 + /// + public List PreviewAmountGroupByPurchaserList { get; set; } + } + + /// + /// 以采购商分组的报价金额 + /// + public class PreviewAmountGroupByPurchaser + { + /// + /// 采购商Id + /// + public string PurchaserId { get; set; } + + /// + /// 采购商名称 + /// + public string PurchaserName { get; set; } + + public Enums.Platform PurchasePlatform { get; set; } + + /// + /// 总金额 + /// + public decimal TotalAmount { get; set; } + + /// + /// 货款 + /// + public decimal ProductAmount { get; set; } + + /// + /// 运费 + /// + public decimal FreightAmount { get; set; } } } From 3b6a181ebb8872df1c0cbda1ba335c6dacf530b8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 29 May 2023 13:45:23 +0800 Subject: [PATCH 5/6] =?UTF-8?q?1=EF=BC=89=E8=AE=A2=E5=8D=95sku=E5=B1=82?= =?UTF-8?q?=E7=BA=A7=E4=BF=9D=E5=AD=98=E4=B9=B0=E5=AE=B6=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E8=BF=90=E8=B4=B9=E5=92=8C=E6=94=B6=E5=85=A5=E6=89=93=E5=8C=85?= =?UTF-8?q?=E8=B4=B9=202=EF=BC=89=E5=AE=9E=E6=94=B6=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E6=98=8E=E7=BB=86=203=EF=BC=89=E5=88=9B=E5=BB=BA=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=8D=95=EF=BC=8C=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=BB=B7=20=20=E4=BB=A5SKU=E4=BB=B6=E6=95=B0?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E8=AE=A1=E7=AE=97=E8=BF=90=E8=B4=B9=204)=20?= =?UTF-8?q?=20SKU=E7=BA=A7=E5=88=AB=E5=A4=87=E6=B3=A8=205=EF=BC=89?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AE=A2=E5=8D=95=E6=88=90=E6=9C=AC=E8=A1=A8?= =?UTF-8?q?=E5=92=8C=E8=AE=A2=E5=8D=95=E6=88=90=E6=9C=AC=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 10 + .../Extensions/OrderAmountExtension.cs | 61 +++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 9 + .../PurchaseOrder/PurchaseOrderBusiness.cs | 209 ++++++++++-------- .../Sync/OrderSyncBusiness.cs | 7 +- BBWYB.Server.Model/Db/Order/Order.cs | 10 +- BBWYB.Server.Model/Db/Order/OrderCost.cs | 21 ++ .../Db/Order/OrderCostDetail.cs | 96 ++++---- BBWYB.Server.Model/Db/Order/OrderSku.cs | 19 +- .../Order/EditOrderSkuRemarkRequest.cs | 11 + .../Dto/Response/Order/OrderResponse.cs | 5 + .../QuanTan_Supplier_OrderProductResponse.cs | 10 + .../QuanTan_Supplier_QueryOrderResponse.cs | 5 + .../Client/Impl/OP_QuanTanClient.cs | 4 +- .../Order/OP_OrderProductSkuResponse.cs | 5 + .../Models/Response/Order/OP_OrderResponse.cs | 5 + 16 files changed, 350 insertions(+), 137 deletions(-) create mode 100644 BBWYB.Server.Business/Extensions/OrderAmountExtension.cs create mode 100644 BBWYB.Server.Model/Dto/Request/Order/EditOrderSkuRemarkRequest.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index 3f6e849..cb78d09 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -72,5 +72,15 @@ namespace BBWYB.Server.API.Controllers { orderBusiness.EditVenderRemark(request); } + + /// + /// 修改订单SKU备注 + /// + /// + [HttpPost] + public void EditOrderSkuRemark([FromBody] EditOrderSkuRemarkRequest request) + { + orderBusiness.EditOrderSkuRemark(request); + } } } diff --git a/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs b/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs new file mode 100644 index 0000000..b5becfd --- /dev/null +++ b/BBWYB.Server.Business/Extensions/OrderAmountExtension.cs @@ -0,0 +1,61 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Business.Extensions +{ + public static class OrderAmountExtension + { + /// + /// 计算订单sku明细的成本和利润 + /// + /// 订单SKU明细成本对象 + /// sku商品金额(收入) + /// sku买家支付运费(收入) + /// sku实收打包费(收入) + /// sku采购货款(支出) + /// sku采购运费(支出) + /// sku支出打包费(支出) + /// sku发货运费(支出) + public static void CalculationOrderCostDetailCostAndProfit(this OrderCostDetail ocd, + decimal skuProductAmount, + decimal skuBuyerPayFreight, + decimal skuInPackAmount, + decimal skuPurchaseProductAmount, + decimal skuPurchaseFreight, + decimal skuOutPackAmount, + decimal skuDeliveryExpressFreight) + { + ocd.SkuAmount = skuPurchaseProductAmount; + ocd.PurchaseFreight = skuPurchaseFreight; + ocd.OutPackAmount = skuOutPackAmount; + ocd.DeliveryExpressFreight = skuDeliveryExpressFreight; + ocd.TotalCost = ocd.SkuAmount + ocd.PurchaseFreight + ocd.OutPackAmount + ocd.DeliveryExpressFreight; //采购货款+采购运费+支出打包费+发货运费 + ocd.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - ocd.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本 + } + + /// + /// 计算订单的成本和利润 + /// + /// + /// 订单金额(包含买家支付运费和收入打包费) + /// 采购货款 + /// 采购运费 + /// 支出打包费 + /// 发货运费 + public static void CalculationOrderCostCostAndProfit(this OrderCost oc, + decimal orderAmount, + decimal purchaseProductAmount, + decimal purchaseFreight, + decimal outPackAmount, + decimal deliveryExpressFreight) + { + oc.PurchaseAmount = purchaseProductAmount + purchaseFreight; //兼容以前 + + oc.SkuAmount = purchaseProductAmount; + oc.PurchaseFreight = purchaseFreight; + oc.OutPackAmount = outPackAmount; + oc.DeliveryExpressFreight = deliveryExpressFreight; + oc.TotalCost = oc.SkuAmount + oc.PurchaseFreight + oc.OutPackAmount + oc.DeliveryExpressFreight; + oc.Profit = orderAmount - oc.TotalCost; + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 74791a5..c058f66 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -97,6 +97,7 @@ namespace BBWYB.Server.Business //ExpressName = o.ExpressName, IsPurchased = o.IsPurchased, BuyerAccount = o.BuyerAccount, + InPackAmount = o.InPackAmount, ContactName = ocs.ContactName, Address = ocs.Address, @@ -322,5 +323,13 @@ namespace BBWYB.Server.Business { fsql.Update(request.OrderId).Set(o => o.VenderRemark, request.VenderRemark).ExecuteAffrows(); } + + public void EditOrderSkuRemark(EditOrderSkuRemarkRequest request) + { + fsql.Update().Set(osku => osku.Remark, request.Remark) + .Where(osku => osku.OrderId == request.OrderId) + .Where(osku => osku.SkuId == request.SkuId) + .ExecuteAffrows(); + } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index b09ed1d..07e253d 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -12,9 +12,9 @@ using SDKAdapter; using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; -using System.Net; using System.Text; using Yitter.IdGenerator; +using BBWYB.Server.Business.Extensions; namespace BBWYB.Server.Business { @@ -189,13 +189,11 @@ namespace BBWYB.Server.Business if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0) throw new BusinessException("缺少下单商品参数"); - //var deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id); var isRepurchase = fsql.Select(dbOrder.Id).Any(); var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); var extJArray = JsonConvert.DeserializeObject(request.Extensions); - //IList purchaseOrderSimpleInfoList = new List(); List insertOrderCostDetails = new List(); List insertOrderPurchaseInfos = new List(); @@ -214,7 +212,8 @@ namespace BBWYB.Server.Business IInsert insertOrderCost = null; IUpdate updateOrderCost = null; - var totalPurchaseAmount = 0M; + var totalPurchaseProductAmount = 0M; + var totalPurchaseFreight = 0M; foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -260,6 +259,9 @@ namespace BBWYB.Server.Business OrderId = createOrderResponse.OrderId }); + totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; + totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + foreach (var cargoParam in cargoParamGroup.CargoParamList) { var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); @@ -280,49 +282,50 @@ namespace BBWYB.Server.Business } - totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; - + //采购单总件数,由于1688运费只存在订单层,sku层没有运费,所以需要以订单总件数为基础等比计算采购运费 + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId); foreach (var belongSkuGroup in belongSkuGroups) { var belongSkuId = belongSkuGroup.Key; - var currentOrderSkuProductAmount = 0M; //采购成本 var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId + var currentSkuAmount = 0M; //采购成本 + var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 + var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * + (1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费 + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) { - var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.ProductAmount); - var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) + var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.Quantity); - currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); - } - var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) + currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); + //currentPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); + } #region 成本明细 var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); var orderCostDetail = new OrderCostDetail() { Id = idGenerator.NewLong(), - ConsumableAmount = 0, CreateTime = DateTime.Now, DeductionQuantity = orderSku.ItemTotal.Value, - DeliveryExpressFreight = 0, - FirstFreight = 0, - //OperationAmount = 0, - InStorageAmount = 0, - OutStorageAmount = 0, OrderId = request.OrderId, ProductId = orderSku.ProductId, - PurchaseFreight = currentOrderSkuFreightAmount, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, - SkuAmount = currentOrderSkuProductAmount, - TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount, SkuId = belongSkuId, - StorageAmount = 0, IsEnabled = true }; + orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, + orderSku.BuyerPayFreight ?? 0M, + orderSku.InPackAmount ?? 0M, + currentSkuAmount, + currentPurchaseFreight, + 0M, + 0M); insertOrderCostDetails.Add(orderCostDetail); #endregion } @@ -371,17 +374,14 @@ namespace BBWYB.Server.Business { OrderId = request.OrderId, CreateTime = DateTime.Now, - DeliveryExpressFreight = 0, - IsManualEdited = false, - PlatformCommissionRatio = 0, - PreferentialAmount = 0, - PurchaseAmount = totalPurchaseAmount, - TotalCost = totalPurchaseAmount + IsManualEdited = false }; - //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; - orderCost.Profit = dbOrder.OrderTotalPrice - - orderCost.PurchaseAmount - - orderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + orderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, + totalPurchaseProductAmount, + totalPurchaseFreight, + 0M, + 0M); + if (!isRepurchase) { insertOrderCost = fsql.Insert(orderCost); @@ -402,8 +402,6 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - //deleteOrderCostDetail.ExecuteAffrows(); - fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); @@ -506,7 +504,9 @@ namespace BBWYB.Server.Business if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId)) continue; - var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); + var totalQuantity = purchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseQuantity); + + var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId); if (dbPurchaserOrder == null) { @@ -531,6 +531,7 @@ namespace BBWYB.Server.Business foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); + var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); var orderCostDetail = new OrderCostDetail() { Id = idGenerator.NewLong(), @@ -540,11 +541,15 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, - SkuAmount = assOrderCostDetail.SkuAmount, - PurchaseFreight = avgFreight, - TotalCost = assOrderCostDetail.SkuAmount + avgFreight, PurchaseOrderId = purchaseOrder.PurchaseOrderId }; + orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, + dbOrderSku.BuyerPayFreight ?? 0M, + dbOrderSku.InPackAmount ?? 0M, + assOrderCostDetail.SkuAmount, + purchaseFreight, + 0M, + 0M); insertOrderCostDetailList.Add(orderCostDetail); } } @@ -560,12 +565,17 @@ namespace BBWYB.Server.Business foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) { - var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId && + var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); + + var orderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId && ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId); - if (dbOrderCostDetail == null) + + var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); + + + if (orderCostDetail == null) { - var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); - dbOrderCostDetail = new OrderCostDetail() + orderCostDetail = new OrderCostDetail() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, @@ -574,54 +584,53 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, - SkuAmount = assOrderCostDetail.SkuAmount, - PurchaseFreight = avgFreight, - TotalCost = assOrderCostDetail.SkuAmount + avgFreight, PurchaseOrderId = purchaseOrder.PurchaseOrderId }; - insertOrderCostDetailList.Add(dbOrderCostDetail); } + orderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; + orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, + dbOrderSku.BuyerPayFreight ?? 0M, + dbOrderSku.InPackAmount ?? 0M, + assOrderCostDetail.SkuAmount, + purchaseFreight, + orderCostDetail.OutPackAmount ?? 0M, + orderCostDetail.DeliveryExpressFreight ?? 0M); + + if (orderCostDetail == null) + insertOrderCostDetailList.Add(orderCostDetail); else - { - dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; - dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; - dbOrderCostDetail.PurchaseFreight = avgFreight; - dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; - updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); - } + updateOrderCostDetailList.Add(fsql.Update().SetSource(orderCostDetail)); } } } - var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId)) - .Sum(p => p.PurchaseAmount + p.PurchaseFreight); - var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount + //var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId)) + // .Sum(p => p.PurchaseAmount + p.PurchaseFreight); + //var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount if (dbOrderCost == null) { dbOrderCost = new OrderCost() { OrderId = request.OrderId, - DeliveryExpressFreight = 0, IsManualEdited = false, - PlatformCommissionAmount = 0, - PlatformCommissionRatio = 0, - PreferentialAmount = 0, CreateTime = DateTime.Now, - PurchaseAmount = totalPurchaseAmount, - TotalCost = totalPurchaseAmount, - Profit = profit }; - insertOrderCost = fsql.Insert(dbOrderCost); } + + var totalPurchaseProductAmount = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseAmount); + var totalPurchaseFreight = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseFreight); + var totalOutPackAmount = dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount); + dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, + totalPurchaseProductAmount, + totalPurchaseFreight, + totalOutPackAmount ?? 0M, + 0M); + + if (dbOrderCost == null) + insertOrderCost = fsql.Insert(dbOrderCost); else - { - dbOrderCost.PurchaseAmount = totalPurchaseAmount; - dbOrderCost.Profit = profit; - updateOrderCost = fsql.Update(request.OrderId).Set(oc => oc.PurchaseAmount, totalPurchaseAmount) - .Set(oc => oc.TotalCost, totalPurchaseAmount) - .Set(oc => oc.Profit, profit); - } + updateOrderCost = fsql.Update().SetSource(dbOrderCost); fsql.Transaction(() => { @@ -1010,12 +1019,15 @@ namespace BBWYB.Server.Business if (dbOrderPurchaseRelationInfos.Count() == 0) throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); + var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); + List> updateOrderCostDetailList = new List>(); IUpdate updateOrderCost = null; var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); - var totalPurchaseAmount = 0M; + var totalPurchaseProductAmount = 0M; + var totalPurchaseFreight = 0M; foreach (var opi in dbOrderPurchaseInfoList) { var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() @@ -1025,43 +1037,60 @@ namespace BBWYB.Server.Business AppToken = purchaseAccount.AppToken, OrderId = opi.PurchaseOrderId }); - totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; + totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; + totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); 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 + var currentOrderSkuProductAmount = 0M; //采购成本 + var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和 + var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * + (1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费 foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) { - var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) .Sum(p => p.ProductAmount); - var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) .Sum(p => p.Quantity); - currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / purchaseSkuTotalQuantity); + currentOrderSkuProductAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / currentPurchaseSkuTotalQuantity); } - 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; + var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + //dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; + //dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; + //dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; + + dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, + orderSku.BuyerPayFreight ?? 0M, + orderSku.InPackAmount ?? 0M, + currentOrderSkuProductAmount, + currentPurchaseFreight ?? 0M, + dbOrderSkuDetail.OutPackAmount ?? 0M, + dbOrderSkuDetail.DeductionQuantity ?? 0M); updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); } - dbOrderCost.TotalCost = dbOrderCost.PurchaseAmount = totalPurchaseAmount; - dbOrderCost.Profit = dbOrder.OrderTotalPrice - - dbOrderCost.PurchaseAmount - - dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount - updateOrderCost = fsql.Update(dbOrderCost.OrderId) - .Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) - .Set(oc => oc.TotalCost, dbOrderCost.TotalCost) - .Set(oc => oc.Profit, dbOrderCost.Profit); + //dbOrderCost.TotalCost = dbOrderCost.PurchaseAmount = totalPurchaseAmount; + //dbOrderCost.Profit = dbOrder.OrderTotalPrice - + // dbOrderCost.PurchaseAmount - + // dbOrderCost.DeliveryExpressFreight; + + + dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, + totalPurchaseProductAmount, + totalPurchaseFreight, + dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), + dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); + updateOrderCost = fsql.Update().SetSource(dbOrderCost); fsql.Transaction(() => { diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index b968e70..7f11983 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -111,7 +111,8 @@ namespace BBWYB.Server.Business.Sync //WaybillNo = qtOrder.DeliveryResponse.WayBillNo, OrderState = orderState, ClientOrderId = qtOrder.ClientOrderId, - BuyerAccount = qtOrder.UserAccount + BuyerAccount = qtOrder.UserAccount, + InPackAmount = qtOrder.PackAmount }; JArray belongSkus = null; if (!string.IsNullOrEmpty(qtOrder.Extended)) @@ -150,7 +151,9 @@ namespace BBWYB.Server.Business.Sync Title = qtOrderSku.SkuTitle, ShopId = shopId, ProductId = qtOrderSku.ProductId, - BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value("SkuId") == qtOrderSku.SkuId)?.Value("BelongSkuId") ?? string.Empty + BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value("SkuId") == qtOrderSku.SkuId)?.Value("BelongSkuId") ?? string.Empty, + InPackAmount = qtOrderSku.PackAmount, + BuyerPayFreight = qtOrderSku.FreightAmount }); } diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 73f5b0f..2e2dfe8 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -56,6 +56,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? OrderSellerPrice { get; set; } = 0.00M; + /// + /// 实收打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? InPackAmount { get; set; } = 0.00M; + /// /// 订单状态 /// @@ -98,8 +104,6 @@ namespace BBWYB.Server.Model.Db public string PurchaseRemark { get; set; } - - /// /// 商家优惠金额(商家承担) /// @@ -227,6 +231,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "int(1)", MapType = typeof(int?))] public PackConfigState? PackConfigState { get; set; } -} + } } diff --git a/BBWYB.Server.Model/Db/Order/OrderCost.cs b/BBWYB.Server.Model/Db/Order/OrderCost.cs index 7f8e117..038f932 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCost.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCost.cs @@ -58,8 +58,29 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? PurchaseAmount { get; set; } = 0.00M; + /// + /// 总成本 + /// [Column(DbType = "decimal(20,2)")] public decimal? TotalCost { get; set; } = 0.00M; + + /// + /// 货款成本 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? SkuAmount { get; set; } = 0.00M; + + /// + /// 采购成本 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? PurchaseFreight { get; set; } = 0.00M; + + /// + /// 支出打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? OutPackAmount { get; set; } = 0.00M; } } diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs index 6f4b31f..51dbc04 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs @@ -12,11 +12,7 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "bigint(1)", IsPrimary = true)] public long Id { get; set; } - /// - /// 耗材费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? ConsumableAmount { get; set; } = 0.00M; + [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } @@ -33,35 +29,15 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? DeliveryExpressFreight { get; set; } = 0.00M; - /// - /// 头程运费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? FirstFreight { get; set; } = 0.00M; - - /// - /// 入库操作费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? InStorageAmount { get; set; } = 0.00M; - + public bool? IsEnabled { get; set; } = false; - /// - /// 操作费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? OperationAmount { get; set; } = 0.00M; [Column(StringLength = 50)] public string OrderId { get; set; } - /// - /// 出库操作费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? OutStorageAmount { get; set; } = 0.00M; + [Column(StringLength = 50)] public string ProductId { get; set; } @@ -84,8 +60,6 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 100)] public string PurchaseOrderId { get; set; } - - public long? ShopId { get; set; } /// @@ -94,20 +68,22 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? SkuAmount { get; set; } = 0.00M; - ///// - ///// sku毛利 - ///// - //[Column(DbType = "decimal(20,2)")] - //public decimal? SkuGrossProfit { get; set; } = 0.00M; - - [Column(StringLength = 50)] - public string SkuId { get; set; } + /// + /// 支出打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? OutPackAmount { get; set; } = 0.00M; /// - /// 仓储费 + /// SKU利润 /// [Column(DbType = "decimal(20,2)")] - public decimal? StorageAmount { get; set; } = 0.00M; + public decimal? Profit { get; set; } = 0.00M; + + + [Column(StringLength = 50)] + public string SkuId { get; set; } + /// /// 成本总计 @@ -115,12 +91,52 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? TotalCost { get; set; } = 0.00M; + + + /* + /// + /// 头程运费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? FirstFreight { get; set; } = 0.00M; + + /// + /// 耗材费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? ConsumableAmount { get; set; } = 0.00M; + + /// + /// 入库操作费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? InStorageAmount { get; set; } = 0.00M; + + /// + /// 出库操作费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? OutStorageAmount { get; set; } = 0.00M; + + /// + /// 操作费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? OperationAmount { get; set; } = 0.00M; + + /// + /// 仓储费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? StorageAmount { get; set; } = 0.00M; + + /// /// 单件采购成本(不含发货运费) /// [Column(DbType = "decimal(20,2)")] public decimal? UnitCost { get; set; } = 0.00M; - + */ } } diff --git a/BBWYB.Server.Model/Db/Order/OrderSku.cs b/BBWYB.Server.Model/Db/Order/OrderSku.cs index b11e856..cbab706 100644 --- a/BBWYB.Server.Model/Db/Order/OrderSku.cs +++ b/BBWYB.Server.Model/Db/Order/OrderSku.cs @@ -76,6 +76,23 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "int(1)", MapType = typeof(int?))] public Enums.PackConfigState? PackConfigState { get; set; } - } + /// + /// 买家支付运费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? BuyerPayFreight { get; set; } = 0.00M; + + /// + /// 实收打包费 + /// + [Column(DbType = "decimal(20,2)")] + public decimal? InPackAmount { get; set; } = 0.00M; + + /// + /// SKU备注 + /// + [Column(StringLength = 500)] + public string Remark { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/EditOrderSkuRemarkRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/EditOrderSkuRemarkRequest.cs new file mode 100644 index 0000000..b0fd3e0 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/EditOrderSkuRemarkRequest.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class EditOrderSkuRemarkRequest + { + public string OrderId { get; set; } + + public string SkuId { get; set; } + + public string Remark { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 0af21b8..5456bf6 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -109,6 +109,11 @@ /// public bool IsPurchased { get; set; } + /// + /// 实收打包费 + /// + public decimal InPackAmount { get; set; } + /// /// 收货人信息 /// diff --git a/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_OrderProductResponse.cs b/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_OrderProductResponse.cs index f7a1b76..310c21a 100644 --- a/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_OrderProductResponse.cs +++ b/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_OrderProductResponse.cs @@ -43,6 +43,16 @@ /// public decimal TotalPrice { get; set; } + /// + /// 打包费 + /// + public decimal PackingCharge { get; set; } + + /// + /// 单个sku打包费 + /// + public decimal PackingChargeSingle { get; set; } + public QuanTan_Supplier_OrderProductSkuResponse SkuInfo { get; set; } } diff --git a/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_QueryOrderResponse.cs b/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_QueryOrderResponse.cs index 8221d40..f507110 100644 --- a/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_QueryOrderResponse.cs +++ b/QuanTan.SDK/Models/Supplier/Response/Order/QuanTan_Supplier_QueryOrderResponse.cs @@ -32,6 +32,11 @@ /// public decimal TotalPostage { get; set; } + /// + /// 打包费 + /// + public decimal PackingCharge { get; set; } + /// /// 订单总额 /// diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index 43e9de9..132580e 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -142,6 +142,7 @@ namespace SDKAdapter.OperationPlatform.Client OrderSource = qto.Source, OrderTotalAmount = qto.TotalPrice, PaidInAmount = qto.TotalPrice, + PackAmount = qto.PackingCharge, PayType = 0, IsPay = qto.Paid == 1, PreferentialAmount = 0, @@ -157,7 +158,8 @@ namespace SDKAdapter.OperationPlatform.Client SkuPrice = qtosku.SkuInfo.Price, SkuTitle = qtosku.SkuInfo.Title, ProductAmount = qtosku.ProductPrice, - FreightAmount = qtosku.PostagePrice + FreightAmount = qtosku.PostagePrice, + PackAmount = qtosku.PackingCharge }).ToList(), DeliveryResponse = new OP_OrderDeliveryResponse() { diff --git a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderProductSkuResponse.cs b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderProductSkuResponse.cs index 1bab393..15306d4 100644 --- a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderProductSkuResponse.cs +++ b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderProductSkuResponse.cs @@ -35,5 +35,10 @@ public decimal ProductAmount { get; set; } public decimal FreightAmount { get; set; } + + /// + /// 打包费 + /// + public decimal PackAmount { get; set; } } } diff --git a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs index af788af..38aacd1 100644 --- a/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs +++ b/SDKAdapter/OperationPlatform/Models/Response/Order/OP_OrderResponse.cs @@ -89,6 +89,11 @@ /// public decimal FreightAmount { get; set; } + /// + /// 订单打包费 + /// + public decimal PackAmount { get; set; } + /// /// 买家备注 /// From b61f20f6786aa8477868bd16691204cea4ef572c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 29 May 2023 16:50:36 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E9=BD=90=E5=BA=93=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=89=93=E5=8C=85=E8=B4=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 10 ++++++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 5 ++++ .../Order/QiKuPublishPackAmountRequest.cs | 24 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 BBWYB.Server.Model/Dto/Request/Order/QiKuPublishPackAmountRequest.cs diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index cb78d09..56b969f 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -82,5 +82,15 @@ namespace BBWYB.Server.API.Controllers { orderBusiness.EditOrderSkuRemark(request); } + + /// + /// 齐库推送打包费 + /// + /// + [HttpPost] + public void QiKuPublishPackAmount([FromBody] QiKuPublishPackAmountRequest request) + { + orderBusiness.QiKuPublishPackAmount(request); + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index c058f66..ac289fc 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -331,5 +331,10 @@ namespace BBWYB.Server.Business .Where(osku => osku.SkuId == request.SkuId) .ExecuteAffrows(); } + + public void QiKuPublishPackAmount(QiKuPublishPackAmountRequest request) + { + + } } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/QiKuPublishPackAmountRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/QiKuPublishPackAmountRequest.cs new file mode 100644 index 0000000..8b2779a --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/QiKuPublishPackAmountRequest.cs @@ -0,0 +1,24 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QiKuPublishPackAmountRequest + { + /// + ///来源店铺 sku + /// + public string SkuId { get; set; } + /// + /// 拳探id + /// + public string OrderId { get; set; } + + /// + /// 打折后费用 + /// + public decimal? DiscountPrice { get; set; } + + /// + /// sku 打包数量 + /// + public int SkuCount { get; set; } + } +}