|
|
|
|
|
|
|
|
|
|
|
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.已取消 ||
|
|
|
|
order.OrderState == Enums.OrderState.已完成 ||
|
|
|
|
order.OrderState == Enums.OrderState.待付款)
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (orderSkuList == null)
|
|
|
|
orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == order.Id).ToList();
|
|
|
|
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 部分发货
|
|
|
|
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 部分收货
|
|
|
|
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.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) &&
|
|
|
|
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) == orderPurchaseInfoList.Count())
|
|
|
|
{
|
|
|
|
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.待验收;
|
|
|
|
|
|
|
|
order.OrderState = Enums.OrderState.待核算;
|
|
|
|
}
|
|
|
|
else if (order.IntoStoreType == Enums.IntoStoreType.其他仓不包装)
|
|
|
|
order.OrderState = Enums.OrderState.待核算;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 计算采购单状态
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="orderPurchaseInfo"></param>
|
|
|
|
/// <param name="intoStoreType"></param>
|
|
|
|
/// <param name="fsql"></param>
|
|
|
|
/// <param name="orderPurchaseSkuList"></param>
|
|
|
|
/// <param name="purchaseExpressOrderList"></param>
|
|
|
|
public static void CalculationOrderState(this OrderPurchaseInfo orderPurchaseInfo,
|
|
|
|
Enums.IntoStoreType intoStoreType,
|
|
|
|
IFreeSql fsql,
|
|
|
|
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null,
|
|
|
|
IList<PurchaseExpressOrder> purchaseExpressOrderList = null)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
待发货 = 0,
|
|
|
|
部分发货 = 1,
|
|
|
|
待收货 = 10,
|
|
|
|
部分收货 = 11,
|
|
|
|
已签收 = 20,
|
|
|
|
已取消 = 100
|
|
|
|
*/
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
|
|
|
|
|
|
|
#region 待发货
|
|
|
|
if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)))
|
|
|
|
{
|
|
|
|
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待发货;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#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
|
|
|
|
{
|
|
|
|
//不支持采购sku和关联信息
|
|
|
|
#region 待发货
|
|
|
|
if (purchaseExpressOrderList.Count() == 0)
|
|
|
|
{
|
|
|
|
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待发货;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
#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())
|
|
|
|
{
|
|
|
|
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|