InventoryTransactionModels.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Inventory;
  2. /// <summary>库存事务类型(复刻 pr_SFM_InventoryTransactionProcessing2 的 TransType 常量)。</summary>
  3. public static class InventoryTransType
  4. {
  5. /// <summary>冻结(可用→冻结)。</summary>
  6. public const string InvFrz = "inv-frz";
  7. /// <summary>解冻。</summary>
  8. public const string InvUnFrz = "inv-unfrz";
  9. /// <summary>采购收货入库(→质检库存 Assay;ChangeQty&gt;0)。IQC 合格入库主路径。</summary>
  10. public const string RctPoIns = "rct-po-ins";
  11. /// <summary>质检转序/发出(从质检库存出;ChangeQty&lt;0 走 Assay 掩码)。</summary>
  12. public const string IssTrIns = "iss-tr-ins";
  13. /// <summary>销售出库(影响 QtyOnOrd)。</summary>
  14. public const string IssSo = "iss-so";
  15. /// <summary>IQC 合格收货(@IQCNbr≠'',Phase 6A 实核)。**C5 一般分支**:QtyOnHand+/Avail+/Assay=0。</summary>
  16. public const string RctPo = "rct-po";
  17. /// <summary>IQC 留样(Reason='iqc',ChangeQty 恒负)。**C5 一般分支**:QtyOnHand-/Avail-。</summary>
  18. public const string IssUnp = "iss-unp";
  19. }
  20. /// <summary>
  21. /// 标准化库存事务命令(C5 输入)。上游已完成 C1 判定 / 编排 / 取号,C5 只认此 DTO。
  22. /// 约定:ChangeQty&gt;0=入库,&lt;0=出库;LotSerial/Refs 空批落空串 ''(非 NULL)。
  23. /// </summary>
  24. public sealed class InventoryTransactionCommand
  25. {
  26. public long TenantId { get; set; }
  27. public string DomainCode { get; set; } = string.Empty;
  28. public long PostingId { get; set; }
  29. public long TransactionGroupId { get; set; }
  30. public int Seq { get; set; }
  31. public string ItemNum { get; set; } = string.Empty;
  32. public string Location { get; set; } = string.Empty;
  33. public string LotSerial { get; set; } = string.Empty;
  34. public string Refs { get; set; } = string.Empty;
  35. public string TransType { get; set; } = string.Empty;
  36. public decimal ChangeQty { get; set; }
  37. public decimal UmConversion { get; set; } = 1m;
  38. public decimal QtyPicked { get; set; }
  39. public string WorkOrd { get; set; }
  40. public string ShipperNum { get; set; }
  41. public string ShipType { get; set; }
  42. public string OrdNbr { get; set; }
  43. public string Curr { get; set; }
  44. public decimal Price { get; set; }
  45. public string Remark { get; set; }
  46. public string Reason { get; set; }
  47. public string Op { get; set; }
  48. public string Site { get; set; }
  49. public string User { get; set; }
  50. // 收货追溯(→ 流水 ado_inventory_transaction)
  51. public string Fbillno { get; set; }
  52. public string Receiver { get; set; }
  53. public string RctQcNbr { get; set; }
  54. }
  55. /// <summary>库存量快照(前值/后值通用)。</summary>
  56. public sealed class InventoryBalance
  57. {
  58. public decimal QtyOnHand { get; set; }
  59. public decimal AvailStatusQty { get; set; }
  60. public decimal Assay { get; set; }
  61. public decimal FreezeQty { get; set; }
  62. public decimal QtyOnOrd { get; set; }
  63. }
  64. /// <summary>单条命令的库存量增量(带符号;无 DB 副作用计算结果)。</summary>
  65. public sealed class InventoryDeltas
  66. {
  67. /// <summary>ChangeQty × 归一化 UMConversion。</summary>
  68. public decimal Conv { get; set; }
  69. public decimal DeltaQtyOnHand { get; set; }
  70. public decimal DeltaAvailStatusQty { get; set; }
  71. public decimal DeltaAssay { get; set; }
  72. public decimal DeltaFreezeQty { get; set; }
  73. public decimal DeltaQtyOnOrd { get; set; }
  74. }
  75. /// <summary>库存流水(InvTransHist 等价)字段值。</summary>
  76. public sealed class InventoryTransHistValues
  77. {
  78. /// <summary>变动前库位明细在手(由调用方传入 LocationDetail 变动前 QtyOnHand)。</summary>
  79. public decimal BeginBalance { get; set; }
  80. /// <summary>流水 QtyChange = conv(frz/unfrz 记 0)。</summary>
  81. public decimal QtyChange { get; set; }
  82. public decimal FreezeQty { get; set; }
  83. public decimal Assay { get; set; }
  84. /// <summary>金额 = conv × Price。</summary>
  85. public decimal Amt { get; set; }
  86. /// <summary>流水事务类型 = (Remark=='QcCheck' ? Reason : TransType)。</summary>
  87. public string TransType { get; set; }
  88. }