Browse Source

1

updatebug
shanji 2 years ago
parent
commit
3e91947270
  1. 89
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

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

@ -42,6 +42,29 @@ namespace BBWYB.Server.Business
this.expressCompanyNameConverter = expressCompanyNameConverter;
}
/// <summary>
/// 合并相同的采购Sku
/// </summary>
/// <param name="cargoParamList"></param>
/// <returns></returns>
private IList<PP_OrderProductParamRequest> CombineRepeatPurchaseSku(IList<CargoParamRequest> cargoParamList)
{
IList<PP_OrderProductParamRequest> orderProductParamList = new List<PP_OrderProductParamRequest>();
var samePurchaseSkuGroups = cargoParamList.GroupBy(p => p.SkuId).ToList();
foreach (var samePurchaseSkuGroup in samePurchaseSkuGroups)
{
var first = samePurchaseSkuGroup.First();
orderProductParamList.Add(new PP_OrderProductParamRequest()
{
ProductId = first.ProductId,
SkuId = first.SkuId,
SpecId = first.SpecId,
Quantity = samePurchaseSkuGroup.Sum(p => p.Quantity)
});
}
return orderProductParamList;
}
public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request)
{
nLogManager.Default().Info($"PreviewPurchaseOrder {JsonConvert.SerializeObject(request)}");
@ -67,6 +90,7 @@ namespace BBWYB.Server.Business
if (purchaseAccount == null)
throw new BusinessException($"缺少{cargoParamGroup.PurchasePlatform}采购平台账号,请在店铺配置中设置");
var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList);
try
{
var response = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform)
@ -88,13 +112,7 @@ namespace BBWYB.Server.Business
},
Platform = (AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform,
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
OrderProductParamList = cargoParamGroup.CargoParamList.Select(p => new PP_OrderProductParamRequest()
{
ProductId = p.ProductId,
Quantity = p.Quantity,
SkuId = p.SkuId,
SpecId = p.SpecId
}).ToList()
OrderProductParamList = orderProductParamList
});
if (cargoParamGroup.PurchasePlatform == Enums.Platform.)
@ -165,6 +183,8 @@ namespace BBWYB.Server.Business
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform);
var extJson = extJArray.FirstOrDefault(j => j.Value<string>("PurchaserId") == cargoParamGroup.PurchaserId);
var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList);
var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest()
{
AppKey = purchaseAccount.AppKey,
@ -185,13 +205,7 @@ namespace BBWYB.Server.Business
PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode,
Extensions = extJson.Value<string>("OrderTradeTypeCode"),
Remark = request.Remark,
OrderProductParamList = cargoParamGroup.CargoParamList.Select(p => new PP_OrderProductParamRequest()
{
ProductId = p.ProductId,
Quantity = p.Quantity,
SkuId = p.SkuId,
SpecId = p.SpecId
}).ToList()
OrderProductParamList = orderProductParamList
});
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
@ -203,7 +217,6 @@ namespace BBWYB.Server.Business
});
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount;
//purchaseOrderSimpleInfoList.Add(purchaseOrderSimpleInfo);
var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId);
foreach (var belongSkuGroup in belongSkuGroups)
@ -211,8 +224,16 @@ namespace BBWYB.Server.Business
var belongSkuId = belongSkuGroup.Key;
var currentOrderSkuProductAmount = 0M; //采购成本
var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId
currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => currentOrderSkuCargoParamList.Any(p1 => p1.SkuId == p.SkuId))
?.Sum(p => p.ProductAmount) ?? 0M;
foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList)
{
var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
.Sum(p => p.ProductAmount);
var purchaseSkuTotalQuantity = 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数均分)
#region 成本明细
@ -238,24 +259,24 @@ namespace BBWYB.Server.Business
};
insertOrderCostDetails.Add(orderCostDetail);
#endregion
#region 订单采购信息
var orderPurchaserInfo = new OrderPurchaseInfo()
{
Id = idGenerator.NewLong(),
OrderId = request.OrderId,
CreateTime = DateTime.Now,
PurchaseAccountId = purchaseAccount.Id,
PurchaseAccountName = purchaseAccount.AccountName,
PurchaseMethod = Enums.PurchaseMethod.线,
PurchaseOrderId = createOrderResponse.OrderId,
PurchasePlatform = cargoParamGroup.PurchasePlatform,
PurchaserName = cargoParamGroup.PurchaserName,
ShopId = request.ShopId
};
insertOrderPurchaseInfos.Add(orderPurchaserInfo);
#endregion
}
#region 订单采购信息
var orderPurchaserInfo = new OrderPurchaseInfo()
{
Id = idGenerator.NewLong(),
OrderId = request.OrderId,
CreateTime = DateTime.Now,
PurchaseAccountId = purchaseAccount.Id,
PurchaseAccountName = purchaseAccount.AccountName,
PurchaseMethod = Enums.PurchaseMethod.线,
PurchaseOrderId = createOrderResponse.OrderId,
PurchasePlatform = cargoParamGroup.PurchasePlatform,
PurchaserName = cargoParamGroup.PurchaserName,
ShopId = request.ShopId
};
insertOrderPurchaseInfos.Add(orderPurchaserInfo);
#endregion
}
#region 订单成本

Loading…
Cancel
Save