fef87731bd
F2 依賴前置功能分支 F1 的報表列型別
43 lines
1.2 KiB
TypeScript
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");
|