|
|
@ -766,6 +766,8 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (dbPurchaserOrder.OrderId != request.OrderId) |
|
|
|
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}不属于订单{request.OrderId}"); |
|
|
|
dbPurchaserOrder.PurchaseAccountId = purchaseOrder.PurchaseAccountId; |
|
|
|
dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; |
|
|
|
//dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId));
|
|
|
@ -961,7 +963,7 @@ namespace BBWYB.Server.Business |
|
|
|
OrderId = orderSku.OrderId, |
|
|
|
SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), |
|
|
|
PurchaseQuantity = orderSku.ItemTotal.Value, |
|
|
|
PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) |
|
|
|
PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (1.0M * orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) |
|
|
|
}; |
|
|
|
assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight; |
|
|
|
assocationOrderCostDetailList.Add(assocationOrderCostDetail); |
|
|
@ -992,25 +994,38 @@ namespace BBWYB.Server.Business |
|
|
|
/// <param name="request"></param>
|
|
|
|
public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) |
|
|
|
{ |
|
|
|
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId).ToList(); |
|
|
|
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(); |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost); |
|
|
|
} |
|
|
|
catch |
|
|
|
{ |
|
|
|
dbOrderCost.PurchaseAmount = 0; |
|
|
|
} |
|
|
|
dbOrderCost.Profit = dbOrder.OrderTotalPrice - |
|
|
|
dbOrderCost.PurchaseAmount - |
|
|
|
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
|
|
|
|
//try
|
|
|
|
//{
|
|
|
|
// dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost);
|
|
|
|
//}
|
|
|
|
//catch
|
|
|
|
//{
|
|
|
|
// dbOrderCost.PurchaseAmount = 0;
|
|
|
|
//}
|
|
|
|
//dbOrderCost.Profit = dbOrder.OrderTotalPrice -
|
|
|
|
// dbOrderCost.PurchaseAmount -
|
|
|
|
// dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
|
|
|
|
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 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("未查询到采购单"); |
|
|
|
orderPurchaseInfoList.Remove(historyPurchaseOrder); |
|
|
|
dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList); |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<OrderPurchaseInfo>() |
|
|
|
fsql.Update<OrderPurchaseInfo>(historyPurchaseOrder.Id) |
|
|
|
.Set(opi => opi.IsEnabled, false) |
|
|
|
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.已取消) |
|
|
|
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) |
|
|
@ -1026,6 +1041,7 @@ namespace BBWYB.Server.Business |
|
|
|
fsql.Delete<PurchaseExpressOrder>().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); |
|
|
|
|
|
|
|
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -1035,6 +1051,7 @@ namespace BBWYB.Server.Business |
|
|
|
/// <param name="request"></param>
|
|
|
|
public void EditPurchaseExpressOrder(EditPurchaseExpressOrderRequest request) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}"); |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn }); |
|
|
|
if (dbOrder == null) |
|
|
|
throw new BusinessException($"订单号{request.OrderId}不存在"); |
|
|
@ -1103,6 +1120,10 @@ namespace BBWYB.Server.Business |
|
|
|
/// <param name="request"></param>
|
|
|
|
public void ManualDelivery(ManualDeliveryRequest request) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"ManualDelivery {JsonConvert.SerializeObject(request)}"); |
|
|
|
if (request.ExpressId == "zhuanxianwuliu" && string.IsNullOrEmpty(request.WaybillNo)) |
|
|
|
request.WaybillNo = $"wdh{idGenerator.NewLong()}"; |
|
|
|
|
|
|
|
#region 准备数据库更新对象
|
|
|
|
List<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); |
|
|
@ -1173,7 +1194,7 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
bool isSubscribeKD100 = false; |
|
|
|
if (!isExists) |
|
|
|
if (request.ExpressId != "zhuanxianwuliu" && !isExists) |
|
|
|
{ |
|
|
|
#region 订阅快递100
|
|
|
|
try |
|
|
@ -1201,7 +1222,6 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建快递单
|
|
|
@ -1552,21 +1572,24 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}"); |
|
|
|
|
|
|
|
#region 订阅失败发送钉钉通知
|
|
|
|
var dingdingMsg = new StringBuilder(); |
|
|
|
dingdingMsg.AppendLine($"错误:{ex.Message}"); |
|
|
|
dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}"); |
|
|
|
dingdingMsg.AppendLine($"拳探订单号:{orderId}"); |
|
|
|
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); |
|
|
|
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}"); |
|
|
|
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}"); |
|
|
|
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}"); |
|
|
|
dingdingMsg.AppendLine("触发环节:1688发货回调"); |
|
|
|
dingdingMsg.Append($"店铺名:{shop.ShopName}"); |
|
|
|
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); |
|
|
|
#endregion
|
|
|
|
if (!ex.Message.Contains("重复订阅")) |
|
|
|
{ |
|
|
|
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}"); |
|
|
|
|
|
|
|
#region 订阅失败发送钉钉通知
|
|
|
|
var dingdingMsg = new StringBuilder(); |
|
|
|
dingdingMsg.AppendLine($"错误:{ex.Message}"); |
|
|
|
dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}"); |
|
|
|
dingdingMsg.AppendLine($"拳探订单号:{orderId}"); |
|
|
|
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); |
|
|
|
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}"); |
|
|
|
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}"); |
|
|
|
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}"); |
|
|
|
dingdingMsg.AppendLine("触发环节:1688发货回调"); |
|
|
|
dingdingMsg.Append($"店铺名:{shop.ShopName}"); |
|
|
|
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|