|
@ -496,7 +496,7 @@ namespace BBWYB.Server.Business |
|
|
IList<string> purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? |
|
|
IList<string> purchaseAccountIdList = request.AssociationPurchaseOrderList.Select(x => string.IsNullOrEmpty(x.PurchaseAccountId) ? |
|
|
x.PurchaseAccountName : |
|
|
x.PurchaseAccountName : |
|
|
x.PurchaseAccountId).Distinct().ToList(); |
|
|
x.PurchaseAccountId).Distinct().ToList(); |
|
|
IList<PurchaseSchemeResponse> purchaseSchemeList = null; |
|
|
IList<PurchaseSchemeProductSku> purchaseSchemeSkuList = null; |
|
|
IList<Purchaseaccount> dbPurchaseAccountList = null; |
|
|
IList<Purchaseaccount> dbPurchaseAccountList = null; |
|
|
foreach (var purchaseOrder in request.AssociationPurchaseOrderList) |
|
|
foreach (var purchaseOrder in request.AssociationPurchaseOrderList) |
|
|
{ |
|
|
{ |
|
@ -508,11 +508,7 @@ namespace BBWYB.Server.Business |
|
|
} |
|
|
} |
|
|
if (schemeIdList.Count() > 0) |
|
|
if (schemeIdList.Count() > 0) |
|
|
{ |
|
|
{ |
|
|
purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() |
|
|
purchaseSchemeSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(pss => schemeIdList.Contains(pss.SkuPurchaseSchemeId)).ToList(); |
|
|
{ |
|
|
|
|
|
ShopId = request.ShopId, |
|
|
|
|
|
SchemeIdList = schemeIdList |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
if (purchaseAccountIdList.Count() > 0) |
|
|
if (purchaseAccountIdList.Count() > 0) |
|
|
{ |
|
|
{ |
|
@ -554,7 +550,7 @@ namespace BBWYB.Server.Business |
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少采购方案"); |
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少采购方案"); |
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 验证采购方案和订单详情是否完整
|
|
|
#region 补齐采购SKU
|
|
|
var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId || |
|
|
var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId || |
|
|
pa.AccountName == purchaseOrder.PurchaseAccountName); |
|
|
pa.AccountName == purchaseOrder.PurchaseAccountName); |
|
|
if (purchaseAccount == null) |
|
|
if (purchaseAccount == null) |
|
@ -569,31 +565,61 @@ namespace BBWYB.Server.Business |
|
|
OrderId = purchaseOrder.PurchaseOrderId |
|
|
OrderId = purchaseOrder.PurchaseOrderId |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList) |
|
|
|
|
|
{ |
|
|
|
|
|
var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo() |
|
|
|
|
|
{ |
|
|
|
|
|
Id = purchaseOrderSku.OrderSkuId, |
|
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
|
OrderId = request.OrderId, |
|
|
|
|
|
PurchaseOrderId = purchaseOrder.PurchaseOrderId, |
|
|
|
|
|
PurchaseProductId = purchaseOrderSku.ProductId, |
|
|
|
|
|
PurchaseSkuId = purchaseOrderSku.SkuId, |
|
|
|
|
|
ShopId = request.ShopId |
|
|
|
|
|
}; |
|
|
|
|
|
insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 补齐采购关系
|
|
|
|
|
|
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) |
|
|
|
|
|
{ |
|
|
|
|
|
var currentPurchaseSchemeSkuList = purchaseSchemeSkuList.Where(x => x.SkuId == assOrderCostDetail.SkuId).ToList(); |
|
|
|
|
|
if (currentPurchaseSchemeSkuList == null || currentPurchaseSchemeSkuList.Count() == 0) |
|
|
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} Sku{assOrderCostDetail.SkuId}缺少采购方案"); |
|
|
|
|
|
|
|
|
|
|
|
var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); |
|
|
|
|
|
foreach (var currentPurchaseSchemeSku in currentPurchaseSchemeSkuList) |
|
|
|
|
|
{ |
|
|
|
|
|
var purchaseSkuFromApi = purchaseOrderSimpleInfo.ItemList.FirstOrDefault(x => x.SkuId == currentPurchaseSchemeSku.PurchaseSkuId); |
|
|
|
|
|
if (purchaseSkuFromApi == null) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new BusinessException($"Sku{assOrderCostDetail.SkuId}使用了采购方案{currentPurchaseSchemeSku.SkuPurchaseSchemeId}下的采购Sku{currentPurchaseSchemeSku.PurchaseSkuId},而且在采购单{purchaseOrder.PurchaseOrderId}的商品明细中没有找到该采购sku"); |
|
|
|
|
|
} |
|
|
|
|
|
var orderPurchaseRelationInfo = new OrderPurchaseRelationInfo() |
|
|
|
|
|
{ |
|
|
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
|
|
BelongSkuId = assOrderCostDetail.SkuId, |
|
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
|
OrderId = assOrderCostDetail.OrderId, |
|
|
|
|
|
PurchaseOrderId = purchaseOrder.PurchaseOrderId, |
|
|
|
|
|
PurchaseSkuId = currentPurchaseSchemeSku.PurchaseSkuId, |
|
|
|
|
|
PurchaseProductId = currentPurchaseSchemeSku.PurchaseProductId, |
|
|
|
|
|
PurchaseSpecId = currentPurchaseSchemeSku.PurchaseSkuSpecId, |
|
|
|
|
|
SchemeId = currentPurchaseSchemeSku.SkuPurchaseSchemeId, |
|
|
|
|
|
Quantity = assOrderCostDetail.PurchaseQuantity, |
|
|
|
|
|
SourceSkuId = dbOrderSku.BelongSkuId |
|
|
|
|
|
}; |
|
|
|
|
|
insertOrderPurchaseRelationInfoList.Add(orderPurchaseRelationInfo); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
#endregion
|
|
|
#endregion
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
dbPurchaserOrder = new OrderPurchaseInfo() |
|
|
#region 订单成本明细
|
|
|
{ |
|
|
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
|
|
OrderId = request.OrderId, |
|
|
|
|
|
PurchaseAccountId = purchaseOrder.PurchaseAccountId, |
|
|
|
|
|
PurchaseAccountName = purchaseOrder.PurchaseAccountName, |
|
|
|
|
|
IsEnabled = true, |
|
|
|
|
|
BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), |
|
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
|
PurchaseMethod = Enums.PurchaseMethod.关联外部单, |
|
|
|
|
|
PurchaseOrderId = purchaseOrder.PurchaseOrderId, |
|
|
|
|
|
PurchasePlatform = purchaseOrder.PurchasePlatform, |
|
|
|
|
|
PurchaserId = purchaseOrder.PurchaserId, |
|
|
|
|
|
PurchaserName = purchaseOrder.PurchaserName, |
|
|
|
|
|
ShopId = request.ShopId |
|
|
|
|
|
}; |
|
|
|
|
|
insertOrderPurchaseInfoList.Add(dbPurchaserOrder); |
|
|
|
|
|
|
|
|
|
|
|
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) |
|
|
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) |
|
|
{ |
|
|
{ |
|
|
#region 订单成本
|
|
|
|
|
|
var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); |
|
|
var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); |
|
|
var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); |
|
|
var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); |
|
|
var orderCostDetail = new OrderCostDetail() |
|
|
var orderCostDetail = new OrderCostDetail() |
|
@ -615,8 +641,28 @@ namespace BBWYB.Server.Business |
|
|
0M, |
|
|
0M, |
|
|
0M); |
|
|
0M); |
|
|
insertOrderCostDetailList.Add(orderCostDetail); |
|
|
insertOrderCostDetailList.Add(orderCostDetail); |
|
|
#endregion
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 采购单
|
|
|
|
|
|
dbPurchaserOrder = new OrderPurchaseInfo() |
|
|
|
|
|
{ |
|
|
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
|
|
OrderId = request.OrderId, |
|
|
|
|
|
PurchaseAccountId = purchaseOrder.PurchaseAccountId, |
|
|
|
|
|
PurchaseAccountName = purchaseOrder.PurchaseAccountName, |
|
|
|
|
|
IsEnabled = true, |
|
|
|
|
|
BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), |
|
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
|
PurchaseMethod = Enums.PurchaseMethod.关联外部单, |
|
|
|
|
|
PurchaseOrderId = purchaseOrder.PurchaseOrderId, |
|
|
|
|
|
PurchasePlatform = purchaseOrder.PurchasePlatform, |
|
|
|
|
|
PurchaserId = purchaseOrder.PurchaserId, |
|
|
|
|
|
PurchaserName = purchaseOrder.PurchaserName, |
|
|
|
|
|
ShopId = request.ShopId |
|
|
|
|
|
}; |
|
|
|
|
|
insertOrderPurchaseInfoList.Add(dbPurchaserOrder); |
|
|
|
|
|
#endregion
|
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|