Ctrl K

PCE TW GUI MODULE — 銷項(AR)功能規格與分期藍圖

狀態:Phase 1 已交付(主檔、開立 Suitelet、發票本管理、開立取配號);Phase 2+ 仍規劃中
對象:產品/顧問/開發
前提:進項(AP)功能已完成,銷項依進項架構平行擴充
相關:實作進度(一頁式) · SuiteApp 使用說明(§5.5 開立取號) · Phase 1 測試清單 · 取號流程與邏輯 · 取號測試指南 · 開立銷項發票 Prototype · MIG 4.1 欄位對照
文件日期:2026-09-13

1. 現況盤點

項目狀態
Center Category custcentercategory_pce_ar(標籤:銷項)已有;連結 PCE 銷項資料、開立銷項發票
營業人系統設定 custrecord_pce_bizsys_ar_feature(銷項功能)已接:未啟用不可開立;交易表身可自動勾「是否開立發票/折讓單」
Customer 主檔 custentity_pce_cust_*(統編/抬頭/地址)已有
共用統編函式庫 common/PCE_LIB_TaxId.js已有(進銷項共用)
通關註記/零稅率註記對照表種子語意偏銷項/外銷,進項暫不輸入
銷項憑證 Custom Record/CS/UE已有主檔+商品明細、開立 Suitelet、驗證腳本;Phase 4–7 為加購,不計入核心完成度
憑證格式/字軌種子(31–36)格式代碼種子已寫入(31/32/35 各兩筆;37–38 暫不種子);發票本管理與開立取配號已接上
FileCabinet/.../ar/已有

結論:Phase 1 開立與發票本取配號已交付;折讓開立依當期/非當期與有無銷項主檔控管可折餘額(非當期無主檔可開立但提示自管)。不做進項 Vendor Bill 那種「交易上 PCE 憑證 1:N 子列表」。核心範圍為 Phase 0–3(Phase 2 Customer Deposit 轉開、Phase 3 強化/加值中心)。Phase 4–7 為加購,不計入整體完成度:Phase 4 對帳報表、Phase 5 憑證 PDF 下載、Phase 6 外部憑證寫入 NS、Phase 7 自動/批次開立(背景開立已實作)。

2. 目標與原則

2.1 產品目標

支援台灣營業稅銷項憑證在 NetSuite 的登錄、檢核、批次匯入與(後續)外部介接;並提供與加值中心/電子發票流程對齊的「開立銷項發票」作業入口(以現有 prototype 為 UX 起點)。

2.2 設計原則

  1. 鏡像進項:目錄、腳本 ID、驗證鏈、CSV → Write、呼叫紀錄與 AP 同構,降低維護成本。
  2. 共用優先:營業人資料、統編檢查、課稅別、字軌/格式對照、通關/零稅率表盡量共用;銷項專屬邏輯放 ar/。
  3. Feature flag:寫入/開立前檢查 custrecord_pce_bizsys_ar_feature(對應該營業人/子公司)。
  4. 分期交付:先獨立銷項紀錄與開立 UI,再掛交易、再 CSV/API。

3. 建議物件命名(對照進項)

層級進項(現有)銷項(建議)
Center Categorycustcentercategory_pce_apcustcentercategory_pce_ar(已存在)
憑證紀錄customrecord_pce_ap_invoicecustomrecord_pce_ar_invoice(顯示名:PCE 銷項資料)
商品明細進項子列表/子記錄(對照)customrecord_pce_ar_invoice_line(掛 PCE 銷項主檔;§9.2 A;非交易 AP 式 1:N 子列表)
發票本—customrecord_pce_ar_invoice_book+管理頁
欄位前綴custrecord_pce_ap_*custrecord_pce_ar_*
呼叫紀錄customrecord_pce_ap_write_logcustomrecord_pce_ar_write_log
交易 Subtabcusttab_pce_trx_einvoice(進項 1:N 子列表)custtab_pce_trx_ar_einvoice(銷項:表身欄位+自訂商品明細;非 AP 式多筆 PCE 主檔子列表)
Client / UE / RL / SLcustomscript_pce__ap_customscript_pce__ar_
File Cabinet…/ap/…/ar/
開立作業 Suitelet—customscript_pce_sl_ar_issue(開立銷項發票)
發票本管理 Suitelet—customscript_pce_sl_ar_invoice_book

腳本 ID 範例:

  • customscript_pce_cs_ar_invoice / customscript_pce_cs_trans_ar_body
  • customscript_pce_ue_arinv_default
  • customscript_pce_rl_ar_write
  • customscript_pce_sl_ar_csv_import
  • customscript_pce_sl_ar_issue

4. 功能範圍總覽(之後實作時)

flowchart TB
  subgraph nav [PCE_GUI_銷項]
    List[PCE銷項資料清單]
    Issue[開立銷項發票Suitelet]
    Csv[銷項CSV匯入]
  end
  subgraph core [核心]
    Rec[customrecord_pce_ar_invoice]
    Val[PCE_LIB_AR_Validate]
    Flag[bizsys_ar_feature]
  end
  subgraph trx [交易表身與開立_非AP式1N子列表]
    Inv[Invoice]
    CM[CreditMemo]
    CS[CashSale]
  end
  subgraph api [介接_後期]
    RL[AR_Write_RESTlet]
    Log[ar_write_log]
  end
  List --> Rec
  Issue --> Rec
  Csv --> RL
  RL --> Rec
  RL --> Log
  Rec --> Val
  Val --> Flag
  Inv --> Rec
  CM --> Rec
  CS --> Rec

流程圖原文

5. 分期藍圖

Phase 0 — 規格與對齊(本文件,進行中)

  • [x] 盤點現況與命名
  • [x] 銷項憑證欄位清單(MIG 4.1 表頭/表身;見欄位對照)
  • [x] 確認第一批交易類型:僅 Invoice + Credit Memo(§6)
  • [x] 開立銷項發票與「PCE 銷項資料」:一張開立=一筆主檔+N 筆商品子明細(§9.2 A)
  • [x] 格式代碼 31–36 種子已加入安裝腳本(31/32/35 各兩筆;37–38 暫不種子);發票本管理與開立取配號已交付

產出:本藍圖 +(建議)欄位對照表 Excel/Markdown 附錄。

Phase 1 — 主檔與開立作業(MVP)

目標:使用者可在 PCE GUI → 銷項 維護銷項資料,並用「開立銷項發票」畫面建立一筆銷項。

工作項說明
Custom Recordcustomrecord_pce_ar_invoice+…_line(§9.2 A);欄位見 MIG 4.1 對照
發票本customrecord_pce_ar_invoice_book+發票本管理(模組設定);開立時依 §9.5 取配號
導覽中心標籤「銷項」只留 PCE 銷項資料。開立、背景開立、作廢在 Portal → 銷項;上傳監控與錯誤在 Portal → 加值中心;發票本管理在 Portal → 模組設定
開立銷項發票 Suiteletprototype 作版面起點;查詢 Invoice/Credit Memo 後以「單張/合併開立」建立主檔;清單僅顯示 issue_invoice=T、發票/折讓單狀態空白、未鎖定、發票號碼空白;賣方/買方規則見 §9.3/§9.4
Client/UE檢核、連動、feature flag;賣方依子公司 mapping 不可覆寫
Lookup/字軌格式代碼 31–36 種子已入安裝腳本(31/32/35 各兩筆);開立取配號已整合(PCE_LIB_AR_BookAllocate.js)
文件SuiteApp 使用說明 §5.5/§5.6、本藍圖 §9.5
SuiteApp與進項同一 app:com.netsuite.pceguitw

本階段不做:交易子列表、CSV、外部 API。

Prototype:僅作 UX/版面參考;正式欄位以「完整對齊加值中心」為準(§9.1)。

Phase 2 — 銷項交易延伸

已定案不做:在 Invoice/Credit Memo 上複製進項 「PCE 進項資料」1:N 子列表(一筆交易掛多筆 customrecord_pce_ar_invoice)。銷項維持 PCE 銷項主檔 CR +開立 Suitelet;交易頁僅 表身 PCE 欄位、自訂商品明細、檢視頁開立(Phase 1 已部分交付,見使用說明 §3.5)。

Phase 2 規劃主項:

範圍NetSuite 類型備註
Phase 2(本階段)Customer Deposit轉開發票(見下表)
現行/維護Invoice、Credit Memo表身 CS/UE、開立按鈕;不做 AP 式 1:N 子列表
暫不做Cash Sale門市/現金流程另議
暫不做Cash Refund同上

Customer Deposit → 銷項發票(規劃)

Customer Deposit 在 NS 無稅碼、無商品明細;開立電子發票時需特別處理:

面向方向
金額基礎以原 Customer Deposit 總額為含稅金額,依適用稅率(由客戶設定之發票明細/課稅別推定)反推未稅金額與稅額;明細加總須與含稅總額一致(尾差規則待訂)
發票明細提供客戶可自行設定之 Customer Deposit 預設發票商品明細(品名、數量、單價邏輯、課稅別等;儲存位置待訂:模組設定 CR 或子公司/客戶層級)
開立入口自 Customer Deposit 檢視/開立 Suitelet 選定訂金 → 帶入或覆寫明細 → 建立 PCE 銷項主檔並取配號
文件/測試使用說明 §5、含稅反推與多列明細之單元測試(待建)

Invoice/Credit Memo(現行,非 Phase 2 新建):custtab_pce_trx_ar_einvoice 為表身與自訂商品明細;開立仍走 開立銷項發票 Suitelet,來源交易帶入商品列(§9.2 A 寫入 PCE 主檔+line CR)。

Phase 3 — 強化與合規

實作規格(TXT+sFTP、開立/作廢兩管線):加值中心上傳
帳上:2026-10-07 連線、三支 GUID、正式區路徑、排程、開立上傳→ACK 已通過。作廢上傳→ACK 見該頁 Checklist。
工作項說明
發票本/期別進階控管(多本、鎖定、盤點)
加值中心上傳流程銜接(TXT 中介檔+sFTP;連線在模組通用設定;開立上傳→ACK 已通過)
零稅率開立已實作。課稅別為零稅率時,通關方式註記與零稅率原因必填,寫入主檔並帶入上傳 TXT。零稅率銷售額合計已有。清單 PDF 仍屬加購 Phase 5
權限與回歸權限收斂、冒煙測試 Suitelet、Browser/API 回歸清單
欄位精簡依實務刪減「完整對齊」後確認不需要的欄位(呼應 §9.1)

Phase 4–7 為加購,不計入 銷項進度 的整體完成度。

Phase 4 — 每期申報對帳報表(加購)

目標:提供客戶每一申報期別(營業稅雙月期)申報前所需的對帳報表——自 NetSuite/PCE 銷項資料彙整,供會計與顧問勾稽帳載、發票本、加值中心(若已上傳)是否一致。

規劃範圍(待細化規格):

面向方向
期別/主體依統一編號、申報期別(ROC 雙月)、子公司篩選
資料來源PCE 銷項主檔/明細、關聯 Invoice/Credit Memo、發票本狀態、上傳狀態欄(Phase 3 若已接加值中心)
報表類型開立/作廢/折讓明細、格式與稅額小計、與 NS 交易金額差異、缺號/重複號警示(規則待訂)
交付Suitelet 查詢+匯出(CSV 為 MVP;PDF/Excel 視需求);可選 Saved Search/Workbook 範本
文件對帳邏輯說明、顧問操作步驟(併入使用說明 §5 或獨立對帳手冊)

優先序:高於 Phase 6(外部憑證寫入);申報週期性剛性需求,宜在加值中心銜接(Phase 3)就緒或並行規劃。

Phase 5 — 憑證 PDF 下載(加購)

目標:提供使用者下載已開立銷項憑證與申報/加值中心作業所需之 PDF(必要時再擴充 ZIP 批次下載)。

規劃範圍(待細化規格):

文件類型方向
B2B 發票 PDF已開立之 B2B 電子發票(如格式 35 等);內容對齊 MIG/加值中心版面(範本待訂)
折讓單 PDF已開立折讓證明(格式 33/34)
零稅率清單 PDF依期別/統編彙整零稅率銷項之清單 PDF(申報或內部覆核用)
其他依加值中心、申報或客戶合約所需之附表、證明或匯出(類型清單待與顧問確認後增列)
面向方向
入口Suitelet 查詢+下載;可選 PCE 銷項主檔/來源交易頁連結
資料來源customrecord_pce_ar_invoice+明細、關聯 NS 交易、發票號碼/狀態
文件使用說明 §5、PDF 欄位與範本對照(待建)

Phase 6 — CSV 與 Write API(加購)

目標:讓已在 NetSuite 以外開立的銷項憑證(含對應交易資料)寫入 NS——批次匯入與外部系統介接,技術面比照 AP Write。

優先序:低於 Phase 1–5。主路徑是 NS 內開立/Suitelet;Phase 6 給「外部先開票、後補登 NS」或異質系統匯入,非多數客戶上線必備。

與 Phase 1 發票本 CSV 區隔:發票本 CSV 是字軌/配號主檔維護(Phase 1 已交付);Phase 6 是銷項憑證/Write API,不是發票本匯入。

元件建議
Suiteletcustomscript_pce_sl_ar_csv_import(範本/欄位說明/validateOnly)
RESTletcustomscript_pce_rl_ar_write
ActionsarInvoiceOnly/transactionOnly/transactionWithArInvoices(命名對齊 AP)
Logcustomrecord_pce_ar_write_log
Auth沿用 OAuth 2.0 Bearer
文件/PostmanPCE_GUI_MODULE_ar-write-api-*.md + collection

Phase 7 — 開立自動化(加購;背景開立已交付)

目標:在 Phase 1 互動式開立穩定後,支援自動/批次開立銷項發票與銷項折讓(折讓證明),降低大量重複人工操作。

已交付 MVP(2026-10):背景自動開立發票(多筆 Invoice 佇列、35-07 加值中心上傳、進度 Suitelet)。操作見 使用說明 §5.8;技術見 銷項背景自動開立發票(Phase 7)、AR status。

規劃範圍(待細化規格):

面向方向
觸發方式Saved Search+排程 Map/Reduce、Workflow Action、條件式 User Event,或 Suitelet 批次選取(待選型)
批次開立發票來源為已勾選開立、表身就緒之 Invoice 等;重用既有開立/取配號 lib;需 idempotency、失敗重試與部分成功策略
批次開立折讓來源 Credit Memo/可折餘額規則與現行 Suitelet 一致;非當期無主檔等邊界與 Phase 1 相同
治理與可觀測治理額度分批、批次/逐筆 log、失敗清單與通知(email 或 Center 待辦,待訂)
與 Phase 6 區隔Phase 6=外部已開立憑證寫入 NS;Phase 7=NS 內待開立交易自動/批次開立
文件自動化觸發條件、顧問設定步驟、與手動 Suitelet 差異說明(待建)

優先序:Saved Search 排程批次、折讓背景開立等仍低於 Phase 2–5;MVP 背景開立已上線,其餘待規格細化。

營業稅申報

目標:依 PCE 營業人 合併該營業人之 進項(PCE 進項資料等)與 銷項(PCE 銷項主檔/明細),產出申報營業稅所需之 TXT 與 T02 檔案。

面向方向
期別/主體依統一編號、申報期別(ROC 雙月)、營業人
進項來源customrecord_pce_ap_invoice、交易子列表關聯進項等
銷項來源customrecord_pce_ar_invoice+明細
產出申報 TXT、T02(對齊 Documentation/ 報稅 TXT Mapping 與組字範例)
空白字軌/空白發票依發票本(格式、字軌、期別)列印空白發票;未使用字軌/號碼彙整與申報檔銜接
入口Suitelet 或 Center(規劃中)
與 Phase 4 區隔Phase 4 為申報前對帳報表;本項為正式申報檔產生
與 Phase 5 區隔Phase 5 為已開立憑證 PDF;本項為媒體申報檔

優先序:與 Phase 3 加值中心、Phase 4 對帳可並行規劃;SuiteTax 實作排在申報檔能力之後(見 SuiteTax 規劃)。

6. 交易類型 — 已定案

Phase 2 主項:Customer Deposit 轉開發票。Invoice/Credit Memo:表身+Suitelet 開立(不做 AP 式 1:N 子列表)。

NetSuite 類型Phase 2對照進項
Invoice表身/開立(現行)非 VB 式 1:N 子列表
Credit Memo表身/開立(現行)非 VC 式 1:N 子列表
Customer Deposit做(轉開發票)—
Cash Sale不做—
Cash Refund不做—

Cash Sale/Cash Refund 若日後有門市/現金流程需求,另開 Phase 2.1。

7. 憑證格式與字軌

面向進項(已有)銷項
格式代碼21–29(21/25 各拆 2 筆;進項共 11 筆)31–36(31/32/35 各 2 筆;37–38 暫不種子);種子見 PCE_SL_InstallLookupData.js;以 進銷項別 過濾下拉
MOF/字軌本進項字軌種子發票本 Custom Record+管理頁;開立時配號(§9.5)
通關/零稅率表已有、進項暫不用Phase 3 必做:開立時啟用並驗證(通關方式、零稅率原因),寫入主檔與上傳 TXT

7.1 憑證格式代碼一覽

進項 21(拆 2 筆)

代碼Name(種子)發票類別代號
2121-三聯式統一發票01
2121-電子計算機統一發票05

AP Write/CSV 傳 docFormatCode: "21" 或 "25" 時須加 invCatCode 或 docFormatName。

進項 25(拆 2 筆)

代碼Name(種子)發票類別代號
2525-進項三聯式收銀機統一發票(稅額500元以下可按月彙總登錄)06
2525-進項一般稅額計算之電子發票(稅額500元以下可按月彙總登錄)07

銷項 31–36

代碼Name(種子)
3131-銷項三聯式
3131-銷項電子計算機統一發票
3232-銷項二聯式
3232-銷項二聯式收銀機統一發票
3333-三聯式/電子計算機/三聯式收銀機統一發票及一般稅額計算電子發票之銷貨退回或折讓證明單(逐筆登錄)
3434-二聯式/二聯式收銀機統一發票及銷項免用統一發票之銷貨退回或折讓證明單(逐筆登錄)
3535-銷項一般稅額計算之電子發票
3535-銷項三聯式收銀機統一發票
3636-銷項免用統一發票

custrecord_pce_docfmt_code_value 為 31/32/35 等;開立一般稅額電子發票實務選 35-銷項一般稅額計算之電子發票。特種稅額 37/38 暫不加入種子。

下拉過濾:custrecord_pce_docfmt_io_type(進項/銷項,customlist_pce_doc_io_type)。進項欄位 custrecord_pce_ap_doc_format_code 已過濾僅進項;銷項主檔欄位於 Phase 1 以同樣方式過濾僅銷項。

8. 與進項的共用/拆分

共用銷項專屬
customrecord_pce_business_info + sys settingcustomrecord_pce_ar_invoice+商品子明細(§9.2 A)
PCE_LIB_TaxIdPCE_LIB_AR_Validate、PCE_AR_Fields
customrecord_pce_tax_type開立銷項發票 Suitelet、發票本
doc_format_code(已含銷項 31–36 種子;37–38 暫無)AR Write/CSV/Log
Customer custentity_pce_cust_*交易表身 CS/UE(custtab_pce_trx_ar_einvoice)

9. 決策清單(進入 Phase 1 前)

9.1 銷項欄位定稿 — 已定案

先完整對齊;來源為 MIG 4.1 中介文字檔:

  • 主檔 ← 發票表頭+折讓單表頭
  • 子明細 ← 發票表身+折讓單表身

欄位清單見 PCE 銷項欄位對照 — MIG 4.1 中介文字檔。 prototypes/einvoice-issue.html 僅作版面參考;之後再依實務刪減欄位。

9.2 商品明細儲存 — 已定案

A:主檔 + 商品子明細。1 張 customrecord_pce_ar_invoice 底下 N 筆 customrecord_pce_ar_invoice_line。不在 NS 交易上掛多筆主檔(不做進項 AP 式 1:N 子列表)。

開立畫面的 NS 交易商品/自定義商品僅決定來源;按「開立發票」後一律寫入主檔+子明細,供查詢、報表、作廢/折讓對應。

9.3 賣方帶入 — 已定案

依 Customer 的子公司 對應 PCE 營業人(子公司) 帶入賣方;不可覆寫。

9.4 買方帶入 — 已定案

由 Customer custentity_pce_cust_* 帶入;B2C 統編固定 0000000000(10 個 0)。

9.5 字軌 — 已定案並已實作

開立時即處理發票號碼(實作:PCE_LIB_AR_BookAllocate.js)。發票本為獨立主檔 customrecord_pce_ar_invoice_book,銷項主檔不連結發票本欄位。發票開立格式不含 33/34;開立折讓單僅 33/34;發票本管理不含 33/34/36。

格式與上傳號碼發票本
36系統產生 SEUI+時間戳後 10 碼(共 14 字),不可手填;Name 與發票號碼相同不找、不回寫
35+加值中心上傳系統自動取號(字軌 2+流水 8)依條件找本並回寫 last_no/last_issue_dt/狀態
35 不上傳,或紙本(31/32 等)必填手填號碼反查本;只驗已用;不要求接續 last_no
33/34必填手填折讓證明單號碼不找本

自動取號搜尋硬條件:未停用、賣方統編、發票日期→民國年月→雙月期別、格式、狀態 0/1、已勾選 custrecord_pce_ar_book_ns_platform(是否透過 NS傳至加值中心)。

配號篩選:部門、類別、自定義配號須與發票本完全相同。空白只對空白。例如開立選部門 A、類別 B、配號空白,只用部門 A、類別 B、配號空白的本。表單空白時不沿用交易部門/類別(mapping 完全選填)。帳號仍須啟用 NetSuite Departments/Classes feature(manifest.xml 硬需求),與是否使用配號 mapping 無關。

多本:只取 internal id 最小者。該本最後驗證未過(日期、餘號、樂觀鎖)直接回錯(訊息含發票本 id),不改試其他本。同一本遇號碼衝突可重試。

手填:解析字軌+流水 → 起訖範圍涵蓋;多本涵蓋=BOOK_AMBIGUOUS。已用檢查:銷項 custrecord_pce_ar_invoice_no/custrecord_pce_ar_allowance_no 與 Invoice/CM custbody_pce_ar_invoice_no/custbody_pce_ar_allowance_no。成功後 last_no=max(既有, 本次),last_issue_dt=本次日期。

9.6 與進項同一 SuiteApp — 已定案

銷項與進項同一 SuiteApp:com.netsuite.pceguitw。

決策摘要(2026-09-09)

#主題決議
9-1欄位先完整對齊 MIG 4.1 表頭/表身(發票+折讓);見欄位對照
9-2商品明細儲存A:主檔 + 商品子明細
9-3賣方Customer 子公司 ↔ PCE 營業人;不可覆寫
9-4買方custentity_pce_cust_*;B2C=0000000000
9-5字軌開立即處理號碼:36 不取號;35+上傳自動取最小 id 本;其餘手填反查。發票本獨立主檔+管理頁
9-6邊界與進項同一 SuiteApp

10. 建議下一步

Phase 1 開立與取配號已交付。後續建議:

  1. Phase 3:零稅率開立(通關方式、零稅率原因必填,寫入主檔與上傳 TXT)已實作。其餘條件必填(捐贈、PrintMark、混合稅明細)仍待排。
  2. Phase 2 Customer Deposit 轉開(含稅反推、明細範本設定)。
  3. Phase 3 作廢/折讓回沖、加值中心、發票本進階控管(鎖定、盤點);空白字軌/空白發票併入 營業稅申報(§5)。
  4. 加購 Phase 4 每期申報對帳報表(規格與 Suitelet 匯出)。
  5. 加購 Phase 5 憑證 PDF 下載(B2B 發票、折讓、零稅率清單等)。
  6. 加購 Phase 6 銷項 CSV/Write API(外部已開立發票寫入 NS,優先序低)。
  7. 加購 Phase 7 自動/批次開立銷項發票與折讓(背景開立已實作;排程 Search 仍規劃)。

11. 參考路徑