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,
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
Extensions = extJson.Value<string>("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<OrderPurchaseInfo>().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<OrderSku>().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<OrderCostDetail>().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<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);
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")]
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>
public string PurchaserOrderId { get; set; }
public string PurchaseOrderId { get; set; }
public Enums.Platform PurchasePlatform { get; set; }

Loading…
Cancel
Save