銷項背景自動開立發票(Phase 7)
現行:專用 Suitelet 可一次勾選多筆 Invoice(最多 25 筆);按「下一步(背景開立)」後立即更新交易
custbody_pce_ar_inv_status=背景自動開立發票、custbody_pce_ar_locked=是,並寫入 customrecord_pce_ar_auto_issue_queue,由 PCE_MR_AR_IssueBackground 逐筆開立。固定 35-07 且 透過加值中心上傳。行為
| 項目 | 說明 |
|---|---|
| 入口 | PCE GUI Portal → 銷項 → 背景自動開立(customscript_pce_sl_ar_background_issue);Bootstrap 分頁 提交背景開立/進度與結果(一般開立確認頁不提供背景開立) |
| 提交成功 | 成功排入佇列後 redirect 至 進度與結果分頁(內部帶批次篩選);畫面顯示 已提交…→立即查看進度與結果;不向使用者顯示批次 ID、MR 工作編號。部分筆數失敗時另顯示「另有 N 筆未成功:…」 |
| 開立失敗 | 來源 Invoice 解鎖、custbody_pce_ar_inv_status 清空,失敗原因寫入 發票錯誤訊息(custbody_pce_ar_error_msg,前綴「背景自動開立失敗:」);再次排入或開立成功時清空 |
| 發票日期 | 未指定時以各 Invoice 交易日期 為憑證日期;可能因發票本期間不符而失敗。清單頁可填 指定開立日期(套用到已勾選發票) |
| 發票本配號 | 清單頁(勾選區)或確認頁可指定 發票部門/發票分類/自定義發票本配號(選填。三欄須與發票本完全相同;留空只對到該欄也空白的發票本。不沿用交易部門/類別) |
| 格式/上傳 | 伺服器固定 docFormat=35-07、vacUpload=true |
| 零稅率 | 清單與確認頁都不收集通關方式、零稅率原因、出口報單或證明文件。零稅率發票請改走一般開立 |
| 開立核心 | MR 自佇列呼叫 issueFromSources(backgroundQueueIssue gate;略過重複鎖定) |
| 明細過多 | 仍由 PCE_MR_AR_IssueLines 背景建明細 |
| 結果 | 佇列 CR customrecord_pce_ar_auto_issue_queue;MR customscript_pce_mr_ar_issue_background |
| 進度畫面 | 同一 Suitelet 進度與結果分頁(或舊部署 customscript_pce_sl_ar_autoiss_mon 輕量書籤);進入時不自動查詢,須按 查詢;條件含 建立日期(UTC+8,未填則查詢時預設當天)/NetSuite 發票編號/狀態(無批次 ID 輸入欄);明細 發票號碼 連結 PCE 銷項主檔;發票日期=主檔 custrecord_pce_ar_doc_date;有待處理時約 45 秒自動重新整理 |
| Portal UI | 唯一採 workbench 單卡 + card-header-tabs + embedded「查詢條件」的銷項入口;與開立/作廢/發票本版面尚未統一,見 PCE GUI Portal — 銷項內頁 UI(查詢條件/workbench) |
程式
| 元件 | Script / 檔案 |
|---|---|
| LIB | PCE_LIB_AR_AutoIssue.js、PCE_LIB_AR_AutoIssueQueue.js |
| 進度查詢(輕量) | PCE_LIB_AR_AutoIssueQueueMonitor.js、PCE_LIB_AR_AutoIssueMonitorRequest.js(進度部署 不載入 PCE_LIB_AR_Issue) |
| 分頁/路由 | PCE_LIB_AR_AutoIssueTabShell.js、PCE_LIB_AR_AutoIssueWorkbench.js → PCE_SL_AR_AutoIssueWorkbench.js |
| 曆日 | PCE_LIB_TaiwanDate.js(UTC+8 原生 Date;進度頁建立日篩選) |
| 佇列 CR | customrecord_pce_ar_auto_issue_queue |
| 佇列狀態 | customlist_pce_ar_auto_issue_qstat |
| 交易狀態 | customlist_pce_ar_inv_status → val_pce_ar_invstat_bg_auto |
| MR | customscript_pce_mr_ar_issue_background → PCE_MR_AR_IssueBackground.js |
| Suitelet(主) | customscript_pce_sl_ar_background_issue → PCE_SL_AR_AutoIssueWorkbench.js;提交邏輯 PCE_LIB_AR_IssueSuitelet.js |
| Suitelet(進度書籤) | customscript_pce_sl_ar_autoiss_mon → PCE_SL_AR_AutoIssueMonitor.js(僅 MonitorRequest);HTML PCE_LIB_AR_AutoIssueMonitorHtml.js |
本機測試
npm run test:ar-auto-issue npm run test:ar-auto-issue-monitor npm run test:taiwan-date
未含(後續)
- Saved Search 排程批次、Credit Memo、合併/淨額、Email 通知