diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
index 72cf85d..56829c6 100644
--- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
@@ -58,6 +58,16 @@ namespace BBWYB.Server.API.Controllers
purchaseOrderBusiness.AssociatePurchaseOrder(request);
}
+ ///
+ /// 设置历史采购单
+ ///
+ ///
+ [HttpPost]
+ public void SetHistoryPurchaseOrder([FromBody] SetHistoryPurchaseOrderRequest request)
+ {
+ purchaseOrderBusiness.SetHistoryPurchaseOrder(request);
+ }
+
///
/// 1688回调
///
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 7db44d9..5357d1d 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -466,7 +466,10 @@ namespace BBWYB.Server.Business
if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0)
throw new BusinessException("缺少采购单信息");
- var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
+
+ var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList();
+ var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList();
+
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();
@@ -481,6 +484,9 @@ namespace BBWYB.Server.Business
foreach (var purchaseOrder in request.AssociationPurchaseOrderList)
{
+ if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaserOrderId))
+ continue;
+
var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count();
var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId);
if (dbPurchaserOrder == null)
@@ -543,8 +549,8 @@ namespace BBWYB.Server.Business
}
}
-
- var totalPurchaseAmount = request.AssociationPurchaseOrderList.Sum(p => p.PurchaseAmount + p.PurchaseFreight);
+ var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId))
+ .Sum(p => p.PurchaseAmount + p.PurchaseFreight);
var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount
if (dbOrderCost == null)
@@ -594,6 +600,44 @@ namespace BBWYB.Server.Business
});
}
+ public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request)
+ {
+ var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId)
+ .ToList();
+ var dbOrderCost = fsql.Select(request.OrderId).ToOne();
+ var dbOrder = fsql.Select(request.OrderId).ToOne();
+
+ var invalidCost = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount + ocd.PurchaseFreight);
+
+ //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio;
+ try
+ {
+ dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost);
+ }
+ catch
+ {
+ dbOrderCost.PurchaseAmount = 0;
+ }
+ dbOrderCost.Profit = dbOrder.OrderTotalPrice -
+ dbOrderCost.PurchaseAmount -
+ dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
+
+ fsql.Transaction(() =>
+ {
+ fsql.Update()
+ .Set(opi => opi.IsEnabled, false)
+ .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId)
+ .ExecuteAffrows();
+
+ fsql.Update()
+ .Set(ocd => ocd.IsEnabled, false)
+ .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId)
+ .ExecuteAffrows();
+
+ fsql.Update().SetSource(dbOrderCost).ExecuteAffrows();
+ });
+ }
+
#region 1688CallBack
public void CallbackFrom1688(string jsonStr)
{
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs
new file mode 100644
index 0000000..72a02b9
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs
@@ -0,0 +1,15 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class SetHistoryPurchaseOrderRequest
+ {
+ ///
+ /// 订单Id
+ ///
+ public string OrderId { get; set; }
+
+ ///
+ /// 采购单Id
+ ///
+ public string PurchaseOrderId { get; set; }
+ }
+}