From e6080ac8ad345f8cd7378c7cfa5f0f70f80e3926 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期一, 18 五月 2026 16:59:58 +0800
Subject: [PATCH] 增加保养部件和附件

---
 src/pages/inventoryManagement/scanOut/scanOut.logic.ts |   51 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 42 insertions(+), 9 deletions(-)

diff --git a/src/pages/inventoryManagement/scanOut/scanOut.logic.ts b/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
index 05213fa..bf65c46 100644
--- a/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
+++ b/src/pages/inventoryManagement/scanOut/scanOut.logic.ts
@@ -13,16 +13,23 @@
 }
 
 export function parseRemainingQuantity(row: AnyRow): number | null {
-  const remRaw =
-    row?.remainingQuantity ??
-    row?.remaining_quantity ??
-    row?.remainQuantity ??
-    row?.remain_quantity;
+  const remRaw = row?.remainingQuantity;
   return parseOptionalNumber(remRaw);
 }
 
-export function defaultStockedQuantityFromRow(row: AnyRow): string {
-  const rem = parseRemainingQuantity(row);
+export function parseRemainingShippedQuantity(row: AnyRow): number | null {
+  const remRaw = row?.remainingShippedQuantity;
+  return parseOptionalNumber(remRaw);
+}
+
+export function defaultStockedQuantityFromRow(
+  row: AnyRow,
+  scene: "inbound" | "outbound" = "inbound"
+): string {
+  const rem =
+    scene === "outbound"
+      ? parseRemainingShippedQuantity(row) ?? parseRemainingQuantity(row)
+      : parseRemainingQuantity(row) ?? parseRemainingShippedQuantity(row);
   if (rem !== null) return String(Math.max(0, rem));
 
   const avail = parseOptionalNumber(row?.availableQuality ?? row?.availableQuantity);
@@ -65,9 +72,35 @@
 
 export function buildSalesLedgerProductList(recordList: AnyRow[]): AnyRow[] {
   return recordList.map((item: AnyRow) => {
-    const n = parseOptionalNumber(item.stockedQuantity);
+    const n = parseOptionalNumber(item.operateQuantity);
     const qty = n !== null && !Number.isNaN(n) ? Math.max(0, n) : 0;
-    const { stockedQuantity: _sq, ...rest } = item;
+    const { operateQuantity: _oq, ...rest } = item;
+    return { ...rest, stockedQuantity: qty };
+  });
+}
+
+/**
+ * 鎵爜鏁村崟鍙戣揣锛氭瘡琛屽緟鍙戞暟閲忕敱鍙拌处瀛楁绠楀嚭锛屼笌鐢ㄦ埛杈撳叆鏃犲叧锛堜笌 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 };
   });
 }

--
Gitblit v1.9.3