|
|
@ -1127,6 +1127,12 @@ namespace BBWYB.Server.Business |
|
|
|
public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"SetHistoryPurchaseOrder {JsonConvert.SerializeObject(request)}"); |
|
|
|
|
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
if (historyPurchaseOrder == 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(); |
|
|
@ -1137,12 +1143,6 @@ namespace BBWYB.Server.Business |
|
|
|
var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M; |
|
|
|
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M); |
|
|
|
|
|
|
|
|
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
if (historyPurchaseOrder == null) |
|
|
|
throw new BusinessException("未查询到采购单"); |
|
|
|
|
|
|
|
#region 找出失效的快递单
|
|
|
|
List<string> deleteWaybillNoList = new List<string>(); |
|
|
|
|
|
|
@ -1161,7 +1161,6 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
orderPurchaseInfoList.Remove(historyPurchaseOrder); |
|
|
|
dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); |
|
|
|
|
|
|
@ -1194,6 +1193,81 @@ namespace BBWYB.Server.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
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 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 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); |
|
|
|
|
|
|
|
|
|
|
|
#region 找出失效的快递单
|
|
|
|
List<string> deleteWaybillNoList = new List<string>(); |
|
|
|
|
|
|
|
//查询该采购单所使用的快递单号
|
|
|
|
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 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); |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Delete<OrderPurchaseInfo>(deletePurchaseOrder.Id).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<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.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改采购快递单
|
|
|
|
/// </summary>
|
|
|
|