Browse Source

改价通知

updatebug
shanji 2 years ago
parent
commit
72fb615f58
  1. 85
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 6
      BBWYB.Server.Model/Db/Order/OrderCostDetail.cs

85
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -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)
{ {

6
BBWYB.Server.Model/Db/Order/OrderCostDetail.cs

@ -109,12 +109,6 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "decimal(20,2)")] [Column(DbType = "decimal(20,2)")]
public decimal? StorageAmount { get; set; } = 0.00M; public decimal? StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 采购成本(不含发货运费)
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? PurchaseAmount { get; set; } = 0.00M;
/// <summary> /// <summary>
/// 成本总计 /// 成本总计
/// </summary> /// </summary>

Loading…
Cancel
Save