|
|
@ -264,6 +264,8 @@ namespace BBWYB.Server.Business |
|
|
|
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); |
|
|
|
var orderSkuCostList = fsql.Select<OrderSkuCost>().Where(osc => osc.OrderId == request.OrderId).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
foreach (var cargoParamGroup in request.CargoParamGroupList) |
|
|
|
{ |
|
|
@ -293,19 +295,10 @@ namespace BBWYB.Server.Business |
|
|
|
if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) |
|
|
|
notifyQikuPackSchemeParamList = new List<QiKuPackTaskSkuPurchaseSchemeIdRequest>(); |
|
|
|
|
|
|
|
//#region 待更新
|
|
|
|
//IList<long> updateOrderCostDetailIdList = fsql.Select<OrderCostDetail>()
|
|
|
|
// .Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true)
|
|
|
|
// .ToList(ocd => ocd.Id);
|
|
|
|
//IList<long> updatePurchaseOrderIdList = fsql.Select<OrderPurchaseInfo>()
|
|
|
|
// .Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true)
|
|
|
|
// .ToList(opi => opi.Id);
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
IInsert<OrderCost> insertOrderCost = null; |
|
|
|
IUpdate<OrderCost> updateOrderCost = null; |
|
|
|
//var totalPurchaseProductAmount = 0M;
|
|
|
|
//var totalPurchaseFreight = 0M;
|
|
|
|
List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>(); |
|
|
|
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>(); |
|
|
|
|
|
|
|
foreach (var cargoParamGroup in request.CargoParamGroupList) |
|
|
|
{ |
|
|
@ -414,10 +407,7 @@ namespace BBWYB.Server.Business |
|
|
|
SkuId = belongSkuId, |
|
|
|
IsEnabled = true |
|
|
|
}; |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, |
|
|
|
orderSku.BuyerPayFreight ?? 0M, |
|
|
|
orderSku.InPackAmount ?? 0M, |
|
|
|
currentSkuAmount, |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(currentSkuAmount, |
|
|
|
currentPurchaseFreight, |
|
|
|
0M, |
|
|
|
0M); |
|
|
@ -496,6 +486,32 @@ namespace BBWYB.Server.Business |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|
#region 订单Sku成本
|
|
|
|
var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); |
|
|
|
foreach (var orderSku in orderSkus) |
|
|
|
{ |
|
|
|
var orderSkuCost = orderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); |
|
|
|
if (orderSkuCost == null) |
|
|
|
{ |
|
|
|
orderSkuCost = new OrderSkuCost() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
OrderId = request.OrderId, |
|
|
|
SkuId = orderSku.SkuId |
|
|
|
}; |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); |
|
|
|
insertOrderSkuCostList.Add(orderSkuCost); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); |
|
|
|
var update = fsql.Update<OrderSkuCost>().SetSource(orderSkuCost); |
|
|
|
updateOrderSkuCostList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单成本
|
|
|
|
var orderCost = new OrderCost() |
|
|
|
{ |
|
|
@ -504,13 +520,15 @@ namespace BBWYB.Server.Business |
|
|
|
IsManualEdited = false |
|
|
|
}; |
|
|
|
|
|
|
|
var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount); |
|
|
|
var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight); |
|
|
|
orderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, |
|
|
|
totalPurchaseProductAmount ?? 0M, |
|
|
|
totalPurchaseFreight ?? 0M, |
|
|
|
0M, |
|
|
|
0M); |
|
|
|
//var totalPurchaseProductAmount = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.SkuAmount);
|
|
|
|
//var totalPurchaseFreight = orderCostDetailList.Union(insertOrderCostDetails).Sum(ocd => ocd.PurchaseFreight);
|
|
|
|
//orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value,
|
|
|
|
// totalPurchaseProductAmount ?? 0M,
|
|
|
|
// totalPurchaseFreight ?? 0M,
|
|
|
|
// 0M,
|
|
|
|
// 0M);
|
|
|
|
orderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, orderSkuCostList.Union(insertOrderSkuCostList).ToList()); |
|
|
|
|
|
|
|
|
|
|
|
if (!isRepurchase) |
|
|
|
{ |
|
|
@ -541,10 +559,6 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
//if (updatePurchaseOrderIdList.Count() > 0)
|
|
|
|
// fsql.Update<OrderPurchaseInfo>(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows();
|
|
|
|
//if (updateOrderCostDetailIdList.Count() > 0)
|
|
|
|
// fsql.Update<OrderCostDetail>(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows();
|
|
|
|
if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) |
|
|
|
{ |
|
|
|
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now) |
|
|
@ -555,11 +569,14 @@ namespace BBWYB.Server.Business |
|
|
|
.Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务) |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); |
|
|
|
fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); |
|
|
|
fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); |
|
|
|
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); |
|
|
|
if (insertOrderCostDetails.Count() > 0) |
|
|
|
fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); |
|
|
|
if (insertOrderPurchaseInfos.Count() > 0) |
|
|
|
fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); |
|
|
|
if (insertOrderPurchaseSkuInfos.Count() > 0) |
|
|
|
fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); |
|
|
|
if (insertOrderPurchaseRelationInfoList.Count() > 0) |
|
|
|
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); |
|
|
|
updateOrderCost?.ExecuteAffrows(); |
|
|
|
insertOrderCost?.ExecuteAffrows(); |
|
|
|
if (updatePurchaseTimeSchemeIdList.Count() > 0) |
|
|
@ -568,7 +585,13 @@ namespace BBWYB.Server.Business |
|
|
|
.SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) |
|
|
|
.Set(o => o.IsPurchased, true) |
|
|
|
.ExecuteAffrows(); |
|
|
|
//.Set(o => o.PackConfigState, Enums.PackConfigState.待配置)
|
|
|
|
if (insertOrderSkuCostList.Count() > 0) |
|
|
|
fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); |
|
|
|
if (updateOrderSkuCostList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderSkuCostList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -691,7 +714,7 @@ namespace BBWYB.Server.Business |
|
|
|
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); |
|
|
|
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne(); |
|
|
|
|
|
|
|
var dbOrderSkuCostList = fsql.Select<OrderSkuCost>().Where(osc => osc.OrderId == request.OrderId).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
List<OrderPurchaseInfo> insertOrderPurchaseInfoList = new List<OrderPurchaseInfo>(); |
|
|
@ -704,6 +727,9 @@ namespace BBWYB.Server.Business |
|
|
|
IInsert<OrderCost> insertOrderCost = null; |
|
|
|
IUpdate<OrderCost> updateOrderCost = null; |
|
|
|
|
|
|
|
List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>(); |
|
|
|
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>(); |
|
|
|
|
|
|
|
List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>(); |
|
|
|
List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = new List<QiKuPackTaskSkuPurchaseSchemeIdRequest>(); |
|
|
|
|
|
|
@ -841,10 +867,7 @@ namespace BBWYB.Server.Business |
|
|
|
SkuId = assOrderCostDetail.SkuId, |
|
|
|
PurchaseOrderId = purchaseOrder.PurchaseOrderId |
|
|
|
}; |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, |
|
|
|
dbOrderSku.BuyerPayFreight ?? 0M, |
|
|
|
dbOrderSku.InPackAmount ?? 0M, |
|
|
|
assOrderCostDetail.SkuAmount, |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(assOrderCostDetail.SkuAmount, |
|
|
|
purchaseFreight, |
|
|
|
0M, |
|
|
|
0M); |
|
|
@ -934,8 +957,8 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
var purchaseFreight = purchaseOrder.PurchaseFreight * (1.0M * assOrderCostDetail.PurchaseQuantity / totalQuantity); |
|
|
|
|
|
|
|
|
|
|
|
if (orderCostDetail == null) |
|
|
|
var isOcdEmpty = orderCostDetail == null; |
|
|
|
if (isOcdEmpty) |
|
|
|
{ |
|
|
|
orderCostDetail = new OrderCostDetail() |
|
|
|
{ |
|
|
@ -951,15 +974,12 @@ namespace BBWYB.Server.Business |
|
|
|
}; |
|
|
|
} |
|
|
|
orderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(dbOrderSku.Price.Value * dbOrderSku.ItemTotal.Value, |
|
|
|
dbOrderSku.BuyerPayFreight ?? 0M, |
|
|
|
dbOrderSku.InPackAmount ?? 0M, |
|
|
|
assOrderCostDetail.SkuAmount, |
|
|
|
purchaseFreight, |
|
|
|
orderCostDetail.OutPackAmount ?? 0M, |
|
|
|
orderCostDetail.DeliveryExpressFreight ?? 0M); |
|
|
|
|
|
|
|
if (orderCostDetail == null) |
|
|
|
orderCostDetail.CalculationOrderCostDetailCostAndProfit(assOrderCostDetail.SkuAmount, |
|
|
|
purchaseFreight, |
|
|
|
orderCostDetail.OutPackAmount ?? 0M, |
|
|
|
orderCostDetail.DeliveryExpressFreight ?? 0M); |
|
|
|
|
|
|
|
if (isOcdEmpty) |
|
|
|
insertOrderCostDetailList.Add(orderCostDetail); |
|
|
|
else |
|
|
|
updateOrderCostDetailList.Add(fsql.Update<OrderCostDetail>().SetSource(orderCostDetail)); |
|
|
@ -967,6 +987,33 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#region 订单Sku成本
|
|
|
|
var allOrderCostDetail = dbOrderCostDetailList.Union(insertOrderCostDetailList).ToList(); |
|
|
|
foreach (var orderSku in dbOrderSkuList) |
|
|
|
{ |
|
|
|
var orderSkuCost = dbOrderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); |
|
|
|
if (orderSkuCost == null) |
|
|
|
{ |
|
|
|
orderSkuCost = new OrderSkuCost() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
OrderId = request.OrderId, |
|
|
|
SkuId = orderSku.SkuId |
|
|
|
}; |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); |
|
|
|
insertOrderSkuCostList.Add(orderSkuCost); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, allOrderCostDetail); |
|
|
|
var update = fsql.Update<OrderSkuCost>().SetSource(orderSkuCost); |
|
|
|
updateOrderSkuCostList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单成本
|
|
|
|
var dbOrderCostIsEmpty = dbOrderCost == null; |
|
|
|
if (dbOrderCostIsEmpty) |
|
|
|
{ |
|
|
@ -977,20 +1024,21 @@ namespace BBWYB.Server.Business |
|
|
|
CreateTime = DateTime.Now |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
var totalPurchaseProductAmount = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseAmount); |
|
|
|
var totalPurchaseFreight = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseFreight); |
|
|
|
var totalOutPackAmount = dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount); |
|
|
|
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, |
|
|
|
totalPurchaseProductAmount, |
|
|
|
totalPurchaseFreight, |
|
|
|
totalOutPackAmount ?? 0M, |
|
|
|
0M); |
|
|
|
dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, dbOrderSkuCostList.Union(insertOrderSkuCostList).ToList()); |
|
|
|
//var totalPurchaseProductAmount = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseAmount);
|
|
|
|
//var totalPurchaseFreight = request.AssociationPurchaseOrderList.Sum(x => x.PurchaseFreight);
|
|
|
|
//var totalOutPackAmount = dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount);
|
|
|
|
//dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value,
|
|
|
|
// totalPurchaseProductAmount,
|
|
|
|
// totalPurchaseFreight,
|
|
|
|
// totalOutPackAmount ?? 0M,
|
|
|
|
// 0M);
|
|
|
|
|
|
|
|
if (dbOrderCostIsEmpty) |
|
|
|
insertOrderCost = fsql.Insert(dbOrderCost); |
|
|
|
else |
|
|
|
updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单状态
|
|
|
|
dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); |
|
|
@ -1045,6 +1093,14 @@ namespace BBWYB.Server.Business |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState) |
|
|
|
.Set(o => o.IsPurchased, true) |
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
|
|
if (insertOrderSkuCostList.Count() > 0) |
|
|
|
fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); |
|
|
|
if (updateOrderSkuCostList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderSkuCostList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -1200,15 +1256,26 @@ namespace BBWYB.Server.Business |
|
|
|
if (historyPurchaseOrder == null) |
|
|
|
throw new BusinessException("未查询到采购单"); |
|
|
|
|
|
|
|
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>(); |
|
|
|
|
|
|
|
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && |
|
|
|
ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); |
|
|
|
ocd.PurchaseOrderId != request.PurchaseOrderId && |
|
|
|
ocd.IsEnabled == true).ToList(); |
|
|
|
var dbOrderSkuCostList = fsql.Select<OrderSkuCost>().Where(osc => osc.OrderId == request.OrderId).ToList(); |
|
|
|
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne(); |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); |
|
|
|
var dbOrderSku = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
|
|
|
|
foreach (var orderSkuCost in dbOrderSkuCostList) |
|
|
|
{ |
|
|
|
var orderSku = dbOrderSku.FirstOrDefault(osku => osku.SkuId == orderSkuCost.SkuId); |
|
|
|
if (orderSku == null) |
|
|
|
continue; |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetailList); |
|
|
|
updateOrderSkuCostList.Add(fsql.Update<OrderSkuCost>().SetSource(orderSkuCost)); |
|
|
|
} |
|
|
|
|
|
|
|
var purchaseProductAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount) ?? 0M; |
|
|
|
var purchaseFreight = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight) ?? 0M; |
|
|
|
var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M; |
|
|
|
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); |
|
|
|
dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, dbOrderSkuCostList); |
|
|
|
|
|
|
|
#region 找出失效的快递单
|
|
|
|
List<string> deleteWaybillNoList = new List<string>(); |
|
|
@ -1233,12 +1300,19 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<OrderPurchaseInfo>(historyPurchaseOrder.Id) |
|
|
|
.Set(opi => opi.IsEnabled, false) |
|
|
|
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) |
|
|
|
.Set(opi => opi.HistorySettingTime, DateTime.Now) |
|
|
|
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) |
|
|
|
.ExecuteAffrows(); |
|
|
|
if (request.IsDelete == true) |
|
|
|
{ |
|
|
|
fsql.Delete<OrderPurchaseInfo>(historyPurchaseOrder.Id).ExecuteAffrows(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
fsql.Update<OrderPurchaseInfo>(historyPurchaseOrder.Id) |
|
|
|
.Set(opi => opi.IsEnabled, false) |
|
|
|
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) |
|
|
|
.Set(opi => opi.HistorySettingTime, DateTime.Now) |
|
|
|
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
fsql.Update<OrderCostDetail>() |
|
|
|
.Set(ocd => ocd.IsEnabled, false) |
|
|
@ -1257,83 +1331,88 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); |
|
|
|
if (updateOrderSkuCostList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderSkuCostList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public void DeletePurchaseOrder(DeletePurchaseOrderRequest request) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}"); |
|
|
|
//public void DeletePurchaseOrder(DeletePurchaseOrderRequest request)
|
|
|
|
//{
|
|
|
|
// nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}");
|
|
|
|
|
|
|
|
//var po = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne();
|
|
|
|
//if (po == null)
|
|
|
|
// throw new BusinessException("采购单不不存在");
|
|
|
|
//var orderId = po.OrderId;
|
|
|
|
// //var po = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne();
|
|
|
|
// //if (po == null)
|
|
|
|
// // throw new BusinessException("采购单不不存在");
|
|
|
|
// //var orderId = po.OrderId;
|
|
|
|
|
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList(); |
|
|
|
var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
if (deletePurchaseOrder == null) |
|
|
|
throw new BusinessException("采购单不不存在"); |
|
|
|
// var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList();
|
|
|
|
// var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
|
|
|
|
// if (deletePurchaseOrder == null)
|
|
|
|
// throw new BusinessException("采购单不不存在");
|
|
|
|
|
|
|
|
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && |
|
|
|
ocd.PurchaseOrderId != request.PurchaseOrderId).ToList(); |
|
|
|
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne(); |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); |
|
|
|
// var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId &&
|
|
|
|
// ocd.PurchaseOrderId != request.PurchaseOrderId).ToList();
|
|
|
|
// var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
|
|
|
|
// var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
|
|
|
|
|
|
|
|
var purchaseProductAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount) ?? 0M; |
|
|
|
var purchaseFreight = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight) ?? 0M; |
|
|
|
var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M; |
|
|
|
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); |
|
|
|
// var purchaseProductAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount) ?? 0M;
|
|
|
|
// var purchaseFreight = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight) ?? 0M;
|
|
|
|
// var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M;
|
|
|
|
// dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M);
|
|
|
|
|
|
|
|
|
|
|
|
#region 找出失效的快递单
|
|
|
|
List<string> deleteWaybillNoList = new List<string>(); |
|
|
|
// #region 找出失效的快递单
|
|
|
|
// List<string> deleteWaybillNoList = new List<string>();
|
|
|
|
|
|
|
|
//查询该采购单所使用的快递单号
|
|
|
|
var useWaybillNos = fsql.Select<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ToList(eori => eori.WayBillNo); |
|
|
|
// //查询该采购单所使用的快递单号
|
|
|
|
// var useWaybillNos = fsql.Select<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ToList(eori => eori.WayBillNo);
|
|
|
|
|
|
|
|
//查询使用上述快递单号的快递单关系
|
|
|
|
var expressOrderRelationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => useWaybillNos.Contains(eori.WayBillNo)).ToList(); |
|
|
|
// //查询使用上述快递单号的快递单关系
|
|
|
|
// var expressOrderRelationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => useWaybillNos.Contains(eori.WayBillNo)).ToList();
|
|
|
|
|
|
|
|
//以快递单号进行分组
|
|
|
|
var expressOrderRelationGroups = expressOrderRelationList.GroupBy(eori => eori.WayBillNo); |
|
|
|
foreach (var group in expressOrderRelationGroups) |
|
|
|
{ |
|
|
|
if (group.Count() == group.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) |
|
|
|
deleteWaybillNoList.Add(group.Key); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
// //以快递单号进行分组
|
|
|
|
// var expressOrderRelationGroups = expressOrderRelationList.GroupBy(eori => eori.WayBillNo);
|
|
|
|
// foreach (var group in expressOrderRelationGroups)
|
|
|
|
// {
|
|
|
|
// if (group.Count() == group.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId))
|
|
|
|
// deleteWaybillNoList.Add(group.Key);
|
|
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
orderPurchaseInfoList.Remove(deletePurchaseOrder); |
|
|
|
while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false)) |
|
|
|
{ |
|
|
|
var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false); |
|
|
|
orderPurchaseInfoList.Remove(historyPo); |
|
|
|
} |
|
|
|
dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); |
|
|
|
// orderPurchaseInfoList.Remove(deletePurchaseOrder);
|
|
|
|
// while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false))
|
|
|
|
// {
|
|
|
|
// var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false);
|
|
|
|
// orderPurchaseInfoList.Remove(historyPo);
|
|
|
|
// }
|
|
|
|
// dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList);
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Delete<OrderPurchaseInfo>(deletePurchaseOrder.Id).ExecuteAffrows(); |
|
|
|
// fsql.Transaction(() =>
|
|
|
|
// {
|
|
|
|
// fsql.Delete<OrderPurchaseInfo>(deletePurchaseOrder.Id).ExecuteAffrows();
|
|
|
|
|
|
|
|
fsql.Update<OrderCostDetail>() |
|
|
|
.Set(ocd => ocd.IsEnabled, false) |
|
|
|
.Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) |
|
|
|
.ExecuteAffrows(); |
|
|
|
// fsql.Update<OrderCostDetail>()
|
|
|
|
// .Set(ocd => ocd.IsEnabled, false)
|
|
|
|
// .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId)
|
|
|
|
// .ExecuteAffrows();
|
|
|
|
|
|
|
|
fsql.Delete<OrderPurchaseSkuInfo>().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); |
|
|
|
fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); |
|
|
|
// fsql.Delete<OrderPurchaseSkuInfo>().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
|
|
|
|
// fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
|
|
|
|
|
|
|
|
fsql.Delete<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); |
|
|
|
if (deleteWaybillNoList.Count() > 0) |
|
|
|
fsql.Delete<PurchaseExpressOrder>(deleteWaybillNoList).ExecuteAffrows(); |
|
|
|
// fsql.Delete<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
|
|
|
|
// if (deleteWaybillNoList.Count() > 0)
|
|
|
|
// fsql.Delete<PurchaseExpressOrder>(deleteWaybillNoList).ExecuteAffrows();
|
|
|
|
|
|
|
|
fsql.Delete<InStorePurchaseOrdeRrelationInfo>().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId) |
|
|
|
.ExecuteAffrows(); |
|
|
|
// fsql.Delete<InStorePurchaseOrdeRrelationInfo>().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId)
|
|
|
|
// .ExecuteAffrows();
|
|
|
|
|
|
|
|
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
// fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
|
|
|
|
// fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
|
|
|
|
// });
|
|
|
|
//}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改采购快递单
|
|
|
@ -2763,13 +2842,14 @@ namespace BBWYB.Server.Business |
|
|
|
if (dbOrderCostDetails.Count() == 0) |
|
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); |
|
|
|
|
|
|
|
|
|
|
|
var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList(); |
|
|
|
var dbOrderPurchaseRelationInfos = fsql.Select<OrderPurchaseRelationInfo>().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList(); |
|
|
|
if (dbOrderPurchaseRelationInfos.Count() == 0) |
|
|
|
throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细"); |
|
|
|
|
|
|
|
var dbOrderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList(); |
|
|
|
var dbOrderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == dbOrder.Id).ToList(); |
|
|
|
var dbOrderSkuCostList = fsql.Select<OrderSkuCost>().Where(osc => osc.OrderId == dbOrder.Id).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
List<IUpdate<OrderCostDetail>> updateOrderCostDetailList = new List<IUpdate<OrderCostDetail>>(); |
|
|
|
IUpdate<OrderCost> updateOrderCost = null; |
|
|
@ -2777,6 +2857,9 @@ namespace BBWYB.Server.Business |
|
|
|
IList<IUpdate<OrderSku>> updateOrderSkuList = new List<IUpdate<OrderSku>>(); |
|
|
|
IUpdate<Order> updateOrder = null; |
|
|
|
|
|
|
|
List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>(); |
|
|
|
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>(); |
|
|
|
|
|
|
|
IList<OP_EditPriceSkuRequest> op_EditPriceSkuRequests = new List<OP_EditPriceSkuRequest>(); |
|
|
|
|
|
|
|
var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); |
|
|
@ -2846,10 +2929,7 @@ namespace BBWYB.Server.Business |
|
|
|
#endregion
|
|
|
|
|
|
|
|
var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId); |
|
|
|
dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value, |
|
|
|
orderSku.BuyerPayFreight ?? 0M, |
|
|
|
orderSku.InPackAmount ?? 0M, |
|
|
|
currentOrderSkuProductAmount, |
|
|
|
dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(currentOrderSkuProductAmount, |
|
|
|
currentPurchaseFreight ?? 0M, |
|
|
|
dbOrderSkuDetail.OutPackAmount ?? 0M, |
|
|
|
dbOrderSkuDetail.DeliveryExpressFreight ?? 0M); |
|
|
@ -2866,12 +2946,40 @@ namespace BBWYB.Server.Business |
|
|
|
.Set(o => o.FreightPrice, dbOrder.FreightPrice); |
|
|
|
} |
|
|
|
|
|
|
|
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M, |
|
|
|
totalPurchaseProductAmount, |
|
|
|
totalPurchaseFreight, |
|
|
|
dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M), |
|
|
|
dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M)); |
|
|
|
#region 订单Sku成本
|
|
|
|
foreach (var orderSku in dbOrderSkus) |
|
|
|
{ |
|
|
|
var orderSkuCost = dbOrderSkuCostList.FirstOrDefault(osc => osc.SkuId == orderSku.SkuId); |
|
|
|
if (orderSkuCost == null) |
|
|
|
{ |
|
|
|
orderSkuCost = new OrderSkuCost() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
OrderId = dbOrder.Id, |
|
|
|
SkuId = orderSku.SkuId |
|
|
|
}; |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetails); |
|
|
|
insertOrderSkuCostList.Add(orderSkuCost); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit(orderSku, dbOrderCostDetails); |
|
|
|
var update = fsql.Update<OrderSkuCost>().SetSource(orderSkuCost); |
|
|
|
updateOrderSkuCostList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单成本
|
|
|
|
dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice.Value, dbOrderSkuCostList.Union(insertOrderSkuCostList).ToList()); |
|
|
|
//dbOrderCost.CalculationOrderCostAndProfit(dbOrder.OrderTotalPrice ?? 0M,
|
|
|
|
// totalPurchaseProductAmount,
|
|
|
|
// totalPurchaseFreight,
|
|
|
|
// dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M),
|
|
|
|
// dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M));
|
|
|
|
updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
@ -2881,6 +2989,13 @@ namespace BBWYB.Server.Business |
|
|
|
foreach (var update in updateOrderSkuList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
updateOrder?.ExecuteAffrows(); |
|
|
|
if (insertOrderSkuCostList.Count() > 0) |
|
|
|
fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); |
|
|
|
if (updateOrderSkuCostList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderSkuCostList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
if (isEditOrderPrice) |
|
|
|