using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using JD.Dto; namespace BBWYB.Server.Business { public static class OrderStateExtension { /// /// 计算订单状态 /// /// /// /// /// public static void CalculationOrderState(this Order order, IFreeSql fsql, IList orderSkuList = null, IList orderPurchaseInfoList = null) { if (order.OrderState == Enums.OrderState.已取消 || order.OrderState == Enums.OrderState.已完成 || order.OrderState == Enums.OrderState.待付款) return; if (orderSkuList == null) orderSkuList = fsql.Select().Where(osku => osku.OrderId == order.Id).ToList(); if (orderPurchaseInfoList == null) orderPurchaseInfoList = fsql.Select().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 } /// /// 计算采购单状态 /// /// /// /// /// /// public static void CalculationOrderState(this OrderPurchaseInfo orderPurchaseInfo, Enums.IntoStoreType intoStoreType, IFreeSql fsql, IList orderPurchaseSkuList = null, IList 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().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 } } }