|
|
|
|
|
|
|
|
|
|
|
using BBWYB.Server.Model;
|
|
|
|
using BBWYB.Server.Model.Db;
|
|
|
|
|
|
|
|
namespace BBWYB.Server.Business
|
|
|
|
{
|
|
|
|
public static class OrderStateExtension
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// 计算订单状态
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="order"></param>
|
|
|
|
/// <param name="orderSkuList"></param>
|
|
|
|
/// <param name="orderPurchaseInfoList"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
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.待付款 ||
|
|
|
|
order.OrderState == Enums.OrderState.待完结)
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (orderSkuList == null || orderSkuList.Count() == 0)
|
|
|
|
orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == order.Id).ToList();
|
|
|
|
if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
|
|
|
|
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 => 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.待收货) &&
|
|
|
|
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.已签收) &&
|
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|