|
|
@ -1097,17 +1097,49 @@ namespace BBWYB.Server.Business |
|
|
|
#region 匹配采购单所使用到的采购方案
|
|
|
|
var assocationOrderCostDetailList = new List<AssocationOrderCostDetailResponse>(); |
|
|
|
var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); |
|
|
|
var totalPurchaseCount = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); |
|
|
|
var cargoParamList = new List<CargoParamRequest>(); |
|
|
|
foreach (var schemeGroup in purchaseSchemeGroups) |
|
|
|
{ |
|
|
|
var schemePurchaseSkuList = schemeGroup.ToList(); |
|
|
|
if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) |
|
|
|
continue; |
|
|
|
cargoParamList.AddRange(schemePurchaseSkuList.Select(x => new CargoParamRequest() |
|
|
|
{ |
|
|
|
BelongSkuId = x.SkuId, |
|
|
|
ProductId = x.PurchaseProductId, |
|
|
|
SkuId = x.PurchaseSkuId, |
|
|
|
Quantity = dbOrderSkuList.FirstOrDefault(s => s.SkuId == x.SkuId)?.ItemTotal ?? 1, |
|
|
|
SchemeId = x.SkuPurchaseSchemeId, |
|
|
|
SpecId = x.PurchaseSkuSpecId |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
var orderPurchaseSkuOfCurrentSchemeList = purchaseOrderSimpleInfo.ItemList.Where(psku => schemePurchaseSkuList.Count(x => x.PurchaseSkuId == psku.SkuId) > 0); |
|
|
|
var belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId); |
|
|
|
var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity); |
|
|
|
foreach (var belongSkuGroup in belongSkuGroups) |
|
|
|
{ |
|
|
|
var skuId = belongSkuGroup.Key; |
|
|
|
var currentOrderSkuCargoParamList = cargoParamList.Where(p => p.BelongSkuId == skuId); //找当前skuId的采购skuId
|
|
|
|
|
|
|
|
var currentSkuAmount = 0M; //采购成本
|
|
|
|
var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和
|
|
|
|
var currentPurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * |
|
|
|
(1.0M * currentSkuTotalPurchaseQuantity / purchaseSkuTotalQuantity); //采购运费
|
|
|
|
|
|
|
|
foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) |
|
|
|
{ |
|
|
|
var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) |
|
|
|
.Sum(p => p.ProductAmount); |
|
|
|
//var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
|
|
|
|
// .Sum(p => p.Quantity);
|
|
|
|
|
|
|
|
var currentPurchaseSkuTotalQuantity = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) |
|
|
|
.Sum(p => p.Quantity); |
|
|
|
|
|
|
|
currentSkuAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / currentPurchaseSkuTotalQuantity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var skuId = schemePurchaseSkuList.FirstOrDefault().SkuId; |
|
|
|
var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); |
|
|
|
var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() |
|
|
|
{ |
|
|
@ -1115,9 +1147,9 @@ namespace BBWYB.Server.Business |
|
|
|
Title = orderSku.Title, |
|
|
|
SkuId = skuId, |
|
|
|
OrderId = orderSku.OrderId, |
|
|
|
SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), |
|
|
|
SkuAmount = currentSkuAmount, |
|
|
|
PurchaseQuantity = orderSku.ItemTotal.Value, |
|
|
|
PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (1.0M * orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) |
|
|
|
PurchaseFreight = currentPurchaseFreight |
|
|
|
}; |
|
|
|
assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; |
|
|
|
assocationOrderCostDetailList.Add(assocationOrderCostDetail); |
|
|
|