namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting;
/// IQC 检验结果映射的输入(对应 qms_qcp_inspbill 单行的判定与数量)。
public sealed class IqcResultMappingInput
{
/// 判定 pd:0=合格 / 1=不合格(qms_qcp_inspbill.pd)。
public int Pd { get; set; }
/// 不合格处理方式 clfs:null/'' / '0'退货 / '2'让步接收 / '3'挑选(qms_qcp_inspbill.clfs)。
public string Clfs { get; set; }
/// 检验数量 / 收货数(qms_qcp_inspbill.dhsl)—— QtyAcc 基数。
public decimal Dhsl { get; set; }
/// 不合格数量(qms_qcp_inspbill.bhgsl)—— QtyReject 基数。
public decimal Bhgsl { get; set; }
}
/// IQC → WMS 入库的路由类别(据 pr_WMS_SaveIQCResult LIVE 真定义)。
public enum IqcRoutingKind
{
/// 无匹配分支:旧入口 qms_WMS_SaveIQCResult 不动作。
Unmatched = 0,
/// 收货编排 + 库存过账(分支 ① 合格无处理 / ④ 让步接收):QtyAcc>0 且 PartRctFlag=0。
FullReceiptPosting = 1,
/// 挑选使用(分支 ② ⑤):PartRctFlag=1 → 生成 PurOrdRctByMRBChoose 移动任务,不过账。
MrbChooseMobileTask = 2,
/// 退货标记(分支 ③):QtyAcc=0,仅标 Status='R',不过账。
ReturnOnly = 3,
}
/// IQC 检验结果映射的输出(判定 / 数量 / 路由决策)。
public sealed class IqcResultMappingResult
{
/// 是否命中旧入口 5 分支之一。
public bool Matched { get; set; }
/// 命中分支号 1-5;0=无匹配。
public int BranchNo { get; set; }
/// 分支语义(中文)。
public string BranchSemantics { get; set; }
/// WMS 侧 QCStatus:"YES"/"NO";无匹配为 null。
public string QcStatus { get; set; }
/// MRB 状态:0 无 / 1 挑选 / 2 退货 / 3 让步接收。
public int MrbStatus { get; set; }
/// 合格品数量(经分支转换后传给 WMS 的 @QtyAcc)。
public decimal QtyAcc { get; set; }
/// 不合格品数量(经分支转换后传给 WMS 的 @QtyReject)。
public decimal QtyReject { get; set; }
/// 部分收货标志 PartRctFlag:0/1(有条码入参才会是 2,本入口路径恒非 2)。
public int PartRctFlag { get; set; }
/// 路由类别。
public IqcRoutingKind RoutingKind { get; set; }
///
/// 是否进入采购收货编排(RctPurOrdAndPurOrdByBarcode)——(pd,clfs) 可纯判定部分
/// = PartRctFlag==0 && QtyAcc>0。运行期数据门(IsRctTemp/RctDetails)另由 Service 层校验。
///
public bool EntersReceiptOrchestration { get; set; }
/// 是否进入库存过账(InventoryTransactionProcessing2)——与收货编排同门(L299 块内)。
public bool EntersInventoryPosting { get; set; }
}