支持 direct/warehouse 分轨、代发进度与库位排序、国内单号检索及到仓关联订单;扩展 SKU/店铺代发与库存绑定扣减能力。 Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
namespace Oms.Domain.OrdersAggregate.Consts;
|
||
|
||
/// <summary>
|
||
/// 代发订单客户可见进度(由绑定状态 + 包裹生命周期聚合)。
|
||
/// </summary>
|
||
public static class FulfillmentProgressCodes
|
||
{
|
||
/// <summary>待绑定包裹/库存。</summary>
|
||
public const string PendingBind = "pendingBind";
|
||
|
||
/// <summary>国内快递在途,未到仓。</summary>
|
||
public const string DomesticInTransit = "domesticInTransit";
|
||
|
||
/// <summary>已到仓(或库存已就绪),待仓库拣货。</summary>
|
||
public const string ArrivedPendingPick = "arrivedPendingPick";
|
||
|
||
/// <summary>已确认拣货扣减(出库完成)。</summary>
|
||
public const string OutboundDone = "outboundDone";
|
||
|
||
public static readonly HashSet<string> All = new(StringComparer.OrdinalIgnoreCase)
|
||
{
|
||
PendingBind,
|
||
DomesticInTransit,
|
||
ArrivedPendingPick,
|
||
OutboundDone
|
||
};
|
||
|
||
/// <summary>
|
||
/// 非仓内代发返回 null;否则按绑定与包裹状态合成进度码。
|
||
/// </summary>
|
||
public static string? Resolve(bool isWarehouseFulfill, string? bindStatus, int lineCount, bool hasInTransitParcel)
|
||
{
|
||
if (!isWarehouseFulfill)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
var status = bindStatus?.Trim() ?? "none";
|
||
if (lineCount <= 0 || string.Equals(status, "none", StringComparison.OrdinalIgnoreCase))
|
||
{
|
||
return PendingBind;
|
||
}
|
||
|
||
if (string.Equals(status, OrderStockBindStatusCodes.Deducted, StringComparison.OrdinalIgnoreCase))
|
||
{
|
||
return OutboundDone;
|
||
}
|
||
|
||
if (hasInTransitParcel)
|
||
{
|
||
return DomesticInTransit;
|
||
}
|
||
|
||
return ArrivedPendingPick;
|
||
}
|
||
}
|