Browse Source

关联订单兼容一个sku拥有多个有效采购单

updatebug
shanji 2 years ago
parent
commit
795a6681cc
  1. 54
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 6
      BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs
  3. 2
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs

54
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -235,12 +235,10 @@ namespace BBWYB.Server.Business
Platform = (AdapterEnums.PlatformType)purchaseAccount.PurchasePlatformId, Platform = (AdapterEnums.PlatformType)purchaseAccount.PurchasePlatformId,
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
Extensions = extJson.Value<string>("OrderTradeTypeCode"), Extensions = extJson.Value<string>("OrderTradeTypeCode"),
Remark = request.Remark, Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark,
OrderProductParamList = orderProductParamList OrderProductParamList = orderProductParamList
}); });
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{ {
AppKey = purchaseAccount.AppKey, AppKey = purchaseAccount.AppKey,
@ -331,7 +329,8 @@ namespace BBWYB.Server.Business
PurchaserName = cargoParamGroup.PurchaserName, PurchaserName = cargoParamGroup.PurchaserName,
ShopId = request.ShopId, ShopId = request.ShopId,
BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)),
IsEnabled = true IsEnabled = true,
Remark = !string.IsNullOrEmpty(cargoParamGroup.Remark) ? cargoParamGroup.Remark : request.Remark
}; };
insertOrderPurchaseInfos.Add(orderPurchaserInfo); insertOrderPurchaseInfos.Add(orderPurchaserInfo);
#endregion #endregion
@ -474,7 +473,7 @@ namespace BBWYB.Server.Business
var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList();
var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).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("关联采购单时不能包含历史采购单"); throw new BusinessException("关联采购单时不能包含历史采购单");
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
@ -491,11 +490,11 @@ namespace BBWYB.Server.Business
foreach (var purchaseOrder in request.AssociationPurchaseOrderList) foreach (var purchaseOrder in request.AssociationPurchaseOrderList)
{ {
if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaserOrderId)) if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId))
continue; continue;
var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); 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) if (dbPurchaserOrder == null)
{ {
dbPurchaserOrder = new OrderPurchaseInfo() dbPurchaserOrder = new OrderPurchaseInfo()
@ -508,7 +507,7 @@ namespace BBWYB.Server.Business
BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)),
CreateTime = DateTime.Now, CreateTime = DateTime.Now,
PurchaseMethod = Enums.PurchaseMethod., PurchaseMethod = Enums.PurchaseMethod.,
PurchaseOrderId = purchaseOrder.PurchaserOrderId, PurchaseOrderId = purchaseOrder.PurchaseOrderId,
PurchasePlatform = purchaseOrder.PurchasePlatform, PurchasePlatform = purchaseOrder.PurchasePlatform,
PurchaserId = purchaseOrder.PurchaserId, PurchaserId = purchaseOrder.PurchaserId,
PurchaserName = purchaseOrder.PurchaserName, PurchaserName = purchaseOrder.PurchaserName,
@ -531,7 +530,7 @@ namespace BBWYB.Server.Business
SkuAmount = assOrderCostDetail.SkuAmount, SkuAmount = assOrderCostDetail.SkuAmount,
PurchaseFreight = avgFreight, PurchaseFreight = avgFreight,
TotalCost = assOrderCostDetail.SkuAmount + avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight,
PurchaseOrderId = purchaseOrder.PurchaserOrderId PurchaseOrderId = purchaseOrder.PurchaseOrderId
}; };
insertOrderCostDetailList.Add(orderCostDetail); insertOrderCostDetailList.Add(orderCostDetail);
} }
@ -548,17 +547,40 @@ namespace BBWYB.Server.Business
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList)
{ {
var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId); var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId &&
dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId);
dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; if (dbOrderCostDetail == null)
dbOrderCostDetail.PurchaseFreight = avgFreight; {
dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId);
updateOrderCostDetailList.Add(fsql.Update<OrderCostDetail>().SetSource(dbOrderCostDetail)); 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<OrderCostDetail>().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); .Sum(p => p.PurchaseAmount + p.PurchaseFreight);
var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount

6
BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs

@ -94,6 +94,12 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "bit")] [Column(DbType = "bit")]
public bool IsEnabled { get; set; } = true; public bool IsEnabled { get; set; } = true;
/// <summary>
/// 꽃뭔데구鬧
/// </summary>
[Column(StringLength = 500)]
public string Remark { get; set; }
} }
} }

2
BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs

@ -10,7 +10,7 @@
/// <summary> /// <summary>
/// 采购单号 /// 采购单号
/// </summary> /// </summary>
public string PurchaserOrderId { get; set; } public string PurchaseOrderId { get; set; }
public Enums.Platform PurchasePlatform { get; set; } public Enums.Platform PurchasePlatform { get; set; }

Loading…
Cancel
Save