Browse Source

改价通知

updatebug
shanji 2 years ago
parent
commit
a59010f1f9
  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,
PurchaseOrderId = purchaseOrderSimpleInfo.OrderId,
SkuAmount = currentOrderSkuProductAmount,
TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount,
SkuId = belongSkuId,
StorageAmount = 0,
IsEnabled = true
@ -514,7 +515,6 @@ namespace BBWYB.Server.Business
OrderId = request.OrderId,
ProductId = dbOrderSku.ProductId,
SkuId = assOrderCostDetail.SkuId,
PurchaseAmount = assOrderCostDetail.SkuAmount,
PurchaseFreight = avgFreight,
TotalCost = assOrderCostDetail.SkuAmount + avgFreight
};
@ -899,26 +899,36 @@ namespace BBWYB.Server.Business
{
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne();
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();
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();
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 totalPurchaseAmount = 0M;
foreach (var opi in orderPurchaseInfoList)
foreach (var opi in dbOrderPurchaseInfoList)
{
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{
@ -928,25 +938,50 @@ namespace BBWYB.Server.Business
OrderId = opi.PurchaseOrderId
});
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount;
}
var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList();
//var oldTotalAmount = dbOrderCost.PurchaseAmount;
//var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount);
//var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight);
var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId);
foreach (var belongSkuGroup in belongSkuGroups)
{
var belongSkuId = belongSkuGroup.Key;
var currentOrderSkuProductAmount = 0M; //采购成本
var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId
dbOrderCost.PurchaseAmount = totalPurchaseAmount;
dbOrderCost.Profit = dbOrder.OrderTotalPrice -
dbOrderCost.PurchaseAmount -
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList)
{
var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId)
.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(() =>
{
fsql.Update<OrderCost>(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount)
.Set(oc => oc.Profit, dbOrderCost.Profit)
.ExecuteAffrows();
});
var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分)
var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId);
dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount;
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)
{

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

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

Loading…
Cancel
Save