|
|
@ -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 订单成本
|
|
|
|