From 38d723b6de39a6882a537a691159e40bd4c0e837 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 12 五月 2026 09:25:27 +0800
Subject: [PATCH] 合格入库扫码发货

---
 src/pages/inventoryManagement/scanOut/scanOut.logic.ts |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/pages/inventoryManagement/scanOut/scanOut.logic.ts b/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
index bd30c63..bf65c46 100644
--- a/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
+++ b/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
@@ -79,6 +79,32 @@
   });
 }
 
+/**
+ * 鎵爜鏁村崟鍙戣揣锛氭瘡琛屽緟鍙戞暟閲忕敱鍙拌处瀛楁绠楀嚭锛屼笌鐢ㄦ埛杈撳叆鏃犲叧锛堜笌 defaultStockedQuantityFromRow 鍑哄簱鍙e緞涓�鑷达級銆�
+ */
+export function resolveScanShipLineQuantity(row: AnyRow): number {
+  const rem =
+    parseRemainingShippedQuantity(row) ?? parseRemainingQuantity(row);
+  if (rem !== null) return Math.max(0, rem);
+
+  const avail = parseOptionalNumber(row?.availableQuality ?? row?.availableQuantity);
+  if (avail !== null) return Math.max(0, avail);
+
+  const qty = parseOptionalNumber(row?.quantity);
+  const shipped = parseOptionalNumber(row?.shippedQuantity) ?? 0;
+  if (qty !== null) return Math.max(0, qty - shipped);
+
+  return 0;
+}
+
+export function buildScanShipProductList(recordList: AnyRow[]): AnyRow[] {
+  return recordList.map((item: AnyRow) => {
+    const qty = resolveScanShipLineQuantity(item);
+    const { operateQuantity: _oq, ...rest } = item;
+    return { ...rest, stockedQuantity: qty };
+  });
+}
+
 export function hasAnyPositiveStockedQty(salesLedgerProductList: AnyRow[]): boolean {
   return salesLedgerProductList.some((p: AnyRow) => Number(p.stockedQuantity) > 0);
 }

--
Gitblit v1.9.3