Files
gitTry/src/modules/stock-count.ts
T
HIsheR fef87731bd feat(stock-count): 新增差異報表 CSV 匯出
F2 依賴前置功能分支 F1 的報表列型別
2026-10-16 15:57:17 +08:00

43 lines
1.2 KiB
TypeScript

/**
* 盤點差異模組(沙盤推演示意)
*/
/** 單一物料的盤點差異 */
export interface StockCountDiff {
/** 物料識別碼 */
materialId: string;
/** 帳面數量 */
bookQty: number;
/** 實盤數量 */
countedQty: number;
}
/**
* 計算盤點差異數量
* @param diff - 單一物料的盤點資料
* @returns 實盤減帳面的差異值
*/
export const diffQty = (diff: StockCountDiff): number => diff.countedQty - diff.bookQty;
/** 盤點差異報表列 */
export interface StockCountReportRow {
/** 物料識別碼 */
materialId: string;
/** 該物料的差異量 */
diff: number;
}
/**
* 依盤點資料彙整差異報表
* @param diffs - 盤點差異清單
* @returns 逐物料的差異報表列
*/
export const buildReport = (diffs: StockCountDiff[]): StockCountReportRow[] => diffs.map((diff) => ({ materialId: diff.materialId, diff: diffQty(diff) }));
/**
* 將差異報表列轉為 CSV 字串(依賴 F1 的報表列型別)
* @param rows - 差異報表列
* @returns 以換行分隔的 CSV 內容
*/
export const toCsv = (rows: StockCountReportRow[]): string => rows.map((row) => `${row.materialId},${row.diff}`).join("\n");