PurchaseReceiptWritebackCalculator.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Receipt;
  2. /// <summary>C6 采购收货回写对账结果(前值→delta→后值 + 未收余量 + 完成状态)。</summary>
  3. public sealed class PurchaseReceiptWritebackResult
  4. {
  5. public decimal QtyOrdered { get; set; }
  6. public decimal ReturnedQty { get; set; }
  7. public decimal BeforeReceivedQty { get; set; }
  8. public decimal AcceptedQty { get; set; }
  9. public decimal AfterReceivedQty { get; set; }
  10. public decimal BeforeOutstandingQty { get; set; }
  11. public decimal AfterOutstandingQty { get; set; }
  12. /// <summary>明细完成(LIVE PurOrdMaster 关闭判据:(RctQty-QtyReturned)&gt;=QtyOrded)。</summary>
  13. public bool DetailCompleted { get; set; }
  14. }
  15. /// <summary>
  16. /// C6 采购收货回写量变纯计算(无 DB,可全量单测)。据 pr_WMS_UpdatePurOrdRctTransactionProcessing2 LIVE:
  17. /// 正常收货 PurOrdDetail.RctQty += QtyReceived(L147);关闭判据 (RctQty-QtyReturned)&gt;=QtyOrded(L223)。
  18. /// 未收余量 = QtyOrded - (RctQty - QtyReturned)。
  19. /// </summary>
  20. public static class PurchaseReceiptWritebackCalculator
  21. {
  22. public static PurchaseReceiptWritebackResult Compute(decimal orderedQty, decimal beforeReceivedQty, decimal returnedQty, decimal acceptedQty)
  23. {
  24. var afterReceived = beforeReceivedQty + acceptedQty;
  25. var effectiveBefore = beforeReceivedQty - returnedQty;
  26. var effectiveAfter = afterReceived - returnedQty;
  27. return new PurchaseReceiptWritebackResult
  28. {
  29. QtyOrdered = orderedQty,
  30. ReturnedQty = returnedQty,
  31. BeforeReceivedQty = beforeReceivedQty,
  32. AcceptedQty = acceptedQty,
  33. AfterReceivedQty = afterReceived,
  34. BeforeOutstandingQty = orderedQty - effectiveBefore,
  35. AfterOutstandingQty = orderedQty - effectiveAfter,
  36. DetailCompleted = effectiveAfter >= orderedQty,
  37. };
  38. }
  39. }