|
@ -307,6 +307,7 @@ namespace BBWYB.Server.Business |
|
|
PurchaseFreight = currentOrderSkuFreightAmount, |
|
|
PurchaseFreight = currentOrderSkuFreightAmount, |
|
|
PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, |
|
|
PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, |
|
|
SkuAmount = currentOrderSkuProductAmount, |
|
|
SkuAmount = currentOrderSkuProductAmount, |
|
|
|
|
|
TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount, |
|
|
SkuId = belongSkuId, |
|
|
SkuId = belongSkuId, |
|
|
StorageAmount = 0, |
|
|
StorageAmount = 0, |
|
|
IsEnabled = true |
|
|
IsEnabled = true |
|
@ -514,7 +515,6 @@ namespace BBWYB.Server.Business |
|
|
OrderId = request.OrderId, |
|
|
OrderId = request.OrderId, |
|
|
ProductId = dbOrderSku.ProductId, |
|
|
ProductId = dbOrderSku.ProductId, |
|
|
SkuId = assOrderCostDetail.SkuId, |
|
|
SkuId = assOrderCostDetail.SkuId, |
|
|
PurchaseAmount = assOrderCostDetail.SkuAmount, |
|
|
|
|
|
PurchaseFreight = avgFreight, |
|
|
PurchaseFreight = avgFreight, |
|
|
TotalCost = assOrderCostDetail.SkuAmount + avgFreight |
|
|
TotalCost = assOrderCostDetail.SkuAmount + avgFreight |
|
|
}; |
|
|
}; |
|
@ -899,26 +899,36 @@ namespace BBWYB.Server.Business |
|
|
{ |
|
|
{ |
|
|
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); |
|
|
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); |
|
|
if (orderPurchaseInfo == null) |
|
|
if (orderPurchaseInfo == null) |
|
|
throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}"); |
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); |
|
|
|
|
|
|
|
|
var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); |
|
|
var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); |
|
|
if (purchaseAccount == null) |
|
|
if (purchaseAccount == null) |
|
|
throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); |
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); |
|
|
|
|
|
|
|
|
var dbOrder = fsql.Select<Order>(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice }); |
|
|
var dbOrder = fsql.Select<Order>(orderPurchaseInfo.OrderId).ToOne(); |
|
|
var dbOrderCost = fsql.Select<OrderCost>(orderPurchaseInfo.OrderId).ToOne(); |
|
|
var dbOrderCost = fsql.Select<OrderCost>(orderPurchaseInfo.OrderId).ToOne(); |
|
|
if (dbOrderCost == null) |
|
|
if (dbOrderCost == null) |
|
|
throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}"); |
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); |
|
|
|
|
|
|
|
|
|
|
|
var dbOrderCostDetails = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); |
|
|
|
|
|
if (dbOrderCostDetails.Count() == 0) |
|
|
|
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); |
|
|
|
|
|
|
|
|
|
|
|
var dbOrderPurchaseRelationInfos = fsql.Select<OrderPurchaseRelationInfo>().Where(x => x.OrderId == dbOrder.Id).ToList(); |
|
|
|
|
|
if (dbOrderPurchaseRelationInfos.Count() == 0) |
|
|
|
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); |
|
|
|
|
|
|
|
|
|
|
|
var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
|
|
if (dbOrderPurchaseInfoList.Count() == 0) |
|
|
|
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); |
|
|
|
|
|
|
|
|
|
|
|
List<IUpdate<OrderCostDetail>> updateOrderCostDetailList = new List<IUpdate<OrderCostDetail>>(); |
|
|
|
|
|
IUpdate<OrderCost> updateOrderCost = null; |
|
|
|
|
|
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId).ToList(opi => new |
|
|
|
|
|
{ |
|
|
|
|
|
opi.PurchaseOrderId, |
|
|
|
|
|
opi.PurchaseAccountId |
|
|
|
|
|
}); |
|
|
|
|
|
var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); |
|
|
var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); |
|
|
|
|
|
|
|
|
var totalPurchaseAmount = 0M; |
|
|
var totalPurchaseAmount = 0M; |
|
|
foreach (var opi in orderPurchaseInfoList) |
|
|
foreach (var opi in dbOrderPurchaseInfoList) |
|
|
{ |
|
|
{ |
|
|
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() |
|
|
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() |
|
|
{ |
|
|
{ |
|
@ -928,25 +938,50 @@ namespace BBWYB.Server.Business |
|
|
OrderId = opi.PurchaseOrderId |
|
|
OrderId = opi.PurchaseOrderId |
|
|
}); |
|
|
}); |
|
|
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; |
|
|
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); |
|
|
|
|
|
|
|
|
//var oldTotalAmount = dbOrderCost.PurchaseAmount;
|
|
|
var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); |
|
|
//var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount);
|
|
|
foreach (var belongSkuGroup in belongSkuGroups) |
|
|
//var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight);
|
|
|
{ |
|
|
|
|
|
var belongSkuId = belongSkuGroup.Key; |
|
|
|
|
|
var currentOrderSkuProductAmount = 0M; //采购成本
|
|
|
|
|
|
var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId
|
|
|
|
|
|
|
|
|
dbOrderCost.PurchaseAmount = totalPurchaseAmount; |
|
|
foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) |
|
|
dbOrderCost.Profit = dbOrder.OrderTotalPrice - |
|
|
{ |
|
|
dbOrderCost.PurchaseAmount - |
|
|
var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) |
|
|
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
|
|
|
.Sum(p => p.ProductAmount); |
|
|
|
|
|
var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) |
|
|
|
|
|
.Sum(p => p.Quantity); |
|
|
|
|
|
currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / purchaseSkuTotalQuantity); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分)
|
|
|
{ |
|
|
|
|
|
fsql.Update<OrderCost>(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) |
|
|
var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId); |
|
|
.Set(oc => oc.Profit, dbOrderCost.Profit) |
|
|
dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; |
|
|
.ExecuteAffrows(); |
|
|
dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; |
|
|
}); |
|
|
dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; |
|
|
|
|
|
updateOrderCostDetailList.Add(fsql.Update<OrderCostDetail>().SetSource(dbOrderSkuDetail)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dbOrderCost.PurchaseAmount = totalPurchaseAmount; |
|
|
|
|
|
dbOrderCost.Profit = dbOrder.OrderTotalPrice - |
|
|
|
|
|
dbOrderCost.PurchaseAmount - |
|
|
|
|
|
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
|
|
|
|
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var update in updateOrderCostDetailList) |
|
|
|
|
|
update.ExecuteAffrows(); |
|
|
|
|
|
updateOrderCost?.ExecuteAffrows(); |
|
|
|
|
|
|
|
|
|
|
|
//fsql.Update<OrderCost>(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount)
|
|
|
|
|
|
// .Set(oc => oc.Profit, dbOrderCost.Profit)
|
|
|
|
|
|
// .ExecuteAffrows();
|
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
catch (Exception ex) |
|
|
catch (Exception ex) |
|
|
{ |
|
|
{ |
|
|