namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Receipt; /// C6 采购收货回写对账结果(前值→delta→后值 + 未收余量 + 完成状态)。 public sealed class PurchaseReceiptWritebackResult { public decimal QtyOrdered { get; set; } public decimal ReturnedQty { get; set; } public decimal BeforeReceivedQty { get; set; } public decimal AcceptedQty { get; set; } public decimal AfterReceivedQty { get; set; } public decimal BeforeOutstandingQty { get; set; } public decimal AfterOutstandingQty { get; set; } /// 明细完成(LIVE PurOrdMaster 关闭判据:(RctQty-QtyReturned)>=QtyOrded)。 public bool DetailCompleted { get; set; } } /// /// C6 采购收货回写量变纯计算(无 DB,可全量单测)。据 pr_WMS_UpdatePurOrdRctTransactionProcessing2 LIVE: /// 正常收货 PurOrdDetail.RctQty += QtyReceived(L147);关闭判据 (RctQty-QtyReturned)>=QtyOrded(L223)。 /// 未收余量 = QtyOrded - (RctQty - QtyReturned)。 /// public static class PurchaseReceiptWritebackCalculator { public static PurchaseReceiptWritebackResult Compute(decimal orderedQty, decimal beforeReceivedQty, decimal returnedQty, decimal acceptedQty) { var afterReceived = beforeReceivedQty + acceptedQty; var effectiveBefore = beforeReceivedQty - returnedQty; var effectiveAfter = afterReceived - returnedQty; return new PurchaseReceiptWritebackResult { QtyOrdered = orderedQty, ReturnedQty = returnedQty, BeforeReceivedQty = beforeReceivedQty, AcceptedQty = acceptedQty, AfterReceivedQty = afterReceived, BeforeOutstandingQty = orderedQty - effectiveBefore, AfterOutstandingQty = orderedQty - effectiveAfter, DetailCompleted = effectiveAfter >= orderedQty, }; } }