|
|
@ -827,8 +827,11 @@ namespace BBWYB.Server.Business |
|
|
|
/// 预览关联订单信息
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
public void PreviewAssocationPurchaseOrder(AssocationPurchaseOrderPreviewRequest request) |
|
|
|
public AssociationPurchaseOrderResponse PreviewAssocationPurchaseOrder(AssocationPurchaseOrderPreviewRequest request) |
|
|
|
{ |
|
|
|
if (request.PurchasePlatform != Enums.Platform.阿里巴巴) |
|
|
|
return null; |
|
|
|
|
|
|
|
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform); |
|
|
|
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() |
|
|
|
{ |
|
|
@ -852,13 +855,13 @@ namespace BBWYB.Server.Business |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询订单Sku
|
|
|
|
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
if (orderSkuList.Count() == 0) |
|
|
|
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
if (dbOrderSkuList.Count() == 0) |
|
|
|
throw new BusinessException("缺少订单sku信息"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 匹配采购方案
|
|
|
|
var skuIds = orderSkuList.Select(osku => osku.SkuId).ToList(); |
|
|
|
#region 查询订单sku所有采购方案
|
|
|
|
var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList(); |
|
|
|
var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>() |
|
|
|
.InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) |
|
|
|
.InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) |
|
|
@ -879,6 +882,43 @@ namespace BBWYB.Server.Business |
|
|
|
throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 匹配采购单所使用到的采购方案
|
|
|
|
var assocationOrderCostDetailList = new List<AssocationOrderCostDetailResponse>(); |
|
|
|
var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); |
|
|
|
var totalPurchaseCount = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); |
|
|
|
foreach (var schemeGroup in purchaseSchemeGroups) |
|
|
|
{ |
|
|
|
var schemePurchaseSkuList = schemeGroup.ToList(); |
|
|
|
if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) |
|
|
|
continue; |
|
|
|
|
|
|
|
var orderPurchaseSkuOfCurrentSchemeList = purchaseOrderSimpleInfo.ItemList.Where(psku => schemePurchaseSkuList.Count(x => x.PurchaseSkuId == psku.SkuId) > 0); |
|
|
|
|
|
|
|
|
|
|
|
var skuId = schemePurchaseSkuList.FirstOrDefault().SkuId; |
|
|
|
var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); |
|
|
|
var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() |
|
|
|
{ |
|
|
|
Logo = orderSku.Logo, |
|
|
|
Title = orderSku.Title, |
|
|
|
SkuId = skuId, |
|
|
|
OrderId = orderSku.OrderId, |
|
|
|
SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), |
|
|
|
PurchaseQuantity = orderSku.ItemTotal.Value, |
|
|
|
PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) |
|
|
|
}; |
|
|
|
assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight; |
|
|
|
assocationOrderCostDetailList.Add(assocationOrderCostDetail); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
if (assocationOrderCostDetailList.Count() == 0) |
|
|
|
throw new BusinessException("没有匹配到合适的采购方案"); |
|
|
|
|
|
|
|
return new AssociationPurchaseOrderResponse() |
|
|
|
{ |
|
|
|
|
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -998,8 +1038,6 @@ namespace BBWYB.Server.Business |
|
|
|
bool isSubscribeKD100 = false; |
|
|
|
if (!isExists) |
|
|
|
{ |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); |
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
try |
|
|
|
{ |
|
|
|