You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
9.3 KiB


using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using JD.Dto;
namespace BBWYB.Server.Business
{
public static class OrderStateExtension
{
/// <summary>
/// 计算订单状态
/// </summary>
/// <param name="order"></param>
/// <param name="fsql"></param>
/// <param name="orderSkuList"></param>
/// <param name="orderPurchaseInfoList"></param>
public static void CalculationOrderState(this Order order,
IFreeSql fsql,
IList<OrderSku> orderSkuList = null,
IList<OrderPurchaseInfo> orderPurchaseInfoList = null)
{
if (order.OrderState == Enums.OrderState. ||
2 years ago
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
return;
2 years ago
if (orderSkuList == null)
orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == order.Id).ToList();
2 years ago
if (orderPurchaseInfoList == null)
orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == order.Id && opi.IsEnabled == true).ToList();
#region 等待采购
if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分采购
foreach (var osku in orderSkuList)
{
if (!orderPurchaseInfoList.Any(opi => !string.IsNullOrEmpty(opi.BelongSkuIds) && opi.BelongSkuIds.Contains(osku.SkuId)))
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
#region 待发货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分发货
2 years ago
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.))
{
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
#region 待收货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分收货
2 years ago
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.))
{
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
2 years ago
#region 待验收/待核算/已完成
2 years ago
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
2 years ago
if (order.IntoStoreType == Enums.IntoStoreType.)
{
if (orderSkuList.Any(osku => osku.IsCheck != true))
order.OrderState = Enums.OrderState.;
else
order.OrderState = Enums.OrderState.;
}
else if (order.IntoStoreType == Enums.IntoStoreType.)
{
if (order.OrderState != Enums.OrderState.)
order.OrderState = Enums.OrderState.;
}
else if (order.IntoStoreType == Enums.IntoStoreType.)
order.OrderState = Enums.OrderState.;
return;
}
#endregion
}
2 years ago
/// <summary>
/// 计算采购单状态
/// </summary>
/// <param name="orderPurchaseInfo"></param>
/// <param name="intoStoreType"></param>
2 years ago
/// <param name="fsql"></param>
/// <param name="orderPurchaseSkuList"></param>
/// <param name="purchaseExpressOrderList"></param>
public static void CalculationOrderState(this OrderPurchaseInfo orderPurchaseInfo,
Enums.IntoStoreType intoStoreType,
2 years ago
IFreeSql fsql,
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null,
IList<PurchaseExpressOrder> purchaseExpressOrderList = null)
{
/*
= 0,
= 1,
= 10,
= 11,
= 20,
= 100
*/
2 years ago
if (orderPurchaseInfo.OrderState == Enums.PurchaseOrderState.)
return;
if (purchaseExpressOrderList == null)
return;
if (orderPurchaseInfo.PurchasePlatform == Enums.Platform. && intoStoreType != Enums.IntoStoreType.) //支持采购sku和关联信息
{
if (orderPurchaseSkuList == null)
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(ops => ops.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
2 years ago
#region 待发货
if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)))
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
2 years ago
#region 部分发货
if (orderPurchaseSkuList.Any(ops => string.IsNullOrEmpty(ops.WaybillNo)) &&
orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)) < orderPurchaseSkuList.Count())
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
}
else
2 years ago
{
//不支持采购sku和关联信息
#region 待发货
if (purchaseExpressOrderList.Count() == 0)
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
2 years ago
}
2 years ago
#region 待收货
if (purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == 0)
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
#region 部分收货
if (purchaseExpressOrderList.Any(exo => exo.ExpressState == "QianShou") &&
purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") < purchaseExpressOrderList.Count())
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
#region 已签收
if (purchaseExpressOrderList.Any(exo => exo.ExpressState == "QianShou") &&
purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == purchaseExpressOrderList.Count())
2 years ago
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
}
}
}