namespace Oms.Domain.OrdersAggregate.Consts; /// /// 代发订单客户可见进度(由绑定状态 + 包裹生命周期聚合)。 /// public static class FulfillmentProgressCodes { /// 待绑定包裹/库存。 public const string PendingBind = "pendingBind"; /// 国内快递在途,未到仓。 public const string DomesticInTransit = "domesticInTransit"; /// 已到仓(或库存已就绪),待仓库拣货。 public const string ArrivedPendingPick = "arrivedPendingPick"; /// 已确认拣货扣减(出库完成)。 public const string OutboundDone = "outboundDone"; public static readonly HashSet All = new(StringComparer.OrdinalIgnoreCase) { PendingBind, DomesticInTransit, ArrivedPendingPick, OutboundDone }; /// /// 非仓内代发返回 null;否则按绑定与包裹状态合成进度码。 /// 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; } }