程式資訊
- 程式 ID:
Receive - 所屬子系統:I.帳款管理
- 狀態:stable
收款 / 應收立帳¶
功能簡介¶
「收款 / 應收立帳」是應收帳款(AR)的立帳單據:把對客戶的各種應收款項(出貨、訂金、折讓、退貨、暫收、稅金調整等)登錄成一張張財務單,作為後續收款單沖帳、帳齡分析與轉傳票的來源。它是 付款 / 應付立帳 的收款側對應表單,兩者共用同一組 rp_m / rp_d 主明細結構。
每張單據以財務類別(出貨 12、退貨 21、折讓 22、暫收 25…)決定金額計算與檢核規則。會計或業務人員在出貨、退貨後於此建立應收,待客戶實際付款時再以收款單沖帳。
財務類別決定單據行為
本表單以財務類別驅動:不同類別的金額算法、必填欄位、可否修改都不同。財務類別的代碼與名稱維護在財務單據定義。常見類別:12 出貨、21 銷貨退回、22 折讓、25 暫收、15 稅金、19 應收調整(原幣)、26 折扣、23 待抵、31 非應收發票、14 雜項、11 訂金。
前置需求¶
- 權限:I.AR/AP →
I-020 收款/應收立帳的瀏覽、新增、修改、刪除、列印權限。轉傳票、修改客戶、特殊修改另有獨立權限旗標。 - 基礎資料:下列主檔/參數會直接影響本表單可帶出的預設值與檢核——
| 資料 | 影響什麼 |
|---|---|
| 客戶主檔 | 輸入收款客戶時自動帶出幣別/帳款起始日/關係人/統一編號/收付條件號/付款方式;查無客戶代號則擋下 |
| 財務單據定義 (RPDEF) | 財務類別清單(R 開頭)與各類別的金額計算規則 |
| 稅別資料 | 稅別的稅率;輸入發票金額時據以反算稅額、明細自動算稅 |
| 收付條件 | 收付條件號據以推算收款日/到期日 |
| 幣別/匯率資料 | 幣別改變時由匯率表帶出當日匯率,連動換算本幣金額 |
系統參數 2029(暫收客戶代號) |
修改客戶 功能判斷暫收單是否要連動產生收款單流程 |
操作步驟¶
新增一張應收單¶
- 按工具列
新增。系統自動帶入預設值(見欄位說明):本月的帳款期別、預設進銷分類、本位幣別+匯率 1。 - 選擇財務類別(例如
12 出貨)。 - 輸入收款客戶代號:系統自動帶出該客戶的幣別、帳款起始日、關係人、統一編號、收付條件號等(詳見欄位連動與附加功能)。
- 確認/輸入交易日期:系統會以交易日期前 7 碼自動填入帳款期別。
- 視單據需要填入發票號碼/發票日期/發票金額/稅別。稅額可直接輸入,或於儲存時依財務類別由系統重算(見儲存時的檢核與金額重算)。
- 在下方明細格輸入品號、數量、單價、其他金額等;輸入後系統自動計算明細的原幣未稅/本幣未稅並彙總到主檔金額。
- 按
儲存。儲存前系統依財務類別執行檢核與金額重算(見欄位連動與附加功能)。
倉庫欄位
財務類別為 12 出貨(且非由他處轉入)時,倉庫為必填,儲存時會寫入單號欄;其餘類別(自增、折讓)若需要也可手動輸入。
修改 / 刪除¶
- 移動到要處理的單據,按
修改或刪除。 - 系統會檢查是否允許異動。下列情況會被擋下(見常見問題):
- 轉入備註含「舊資料」。
- 已沖帳(沖帳原幣 ≠ 0)。
- 已轉傳票(傳票號碼有值)。
- 暫收單(財務類別 25) 不得一般修改/刪除。
- 由他處轉入(轉入備註有值)的單據不得修改。
列印¶
按 列印 開啟應收列印視窗,系統自動帶入目前單據的財務單號(起訖同一張)、進銷分類與帳款期別作為列印條件。詳見應收帳款列印。
查詢¶
使用工具列的查詢/搜尋面板,依財務單號、客戶、日期等條件定位單據(查詢僅限程式類別為 R 的應收資料)。
欄位說明¶
主檔(單頭)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 財務單號 | 系統產生 | 唯讀,存檔後由系統依財務類別編號 |
| 財務類別 | ✔ | R 開頭的應收類別(出貨 12、退貨 21、折讓 22…),決定金額算法與檢核 |
| 收款客戶 | ✔ | 收付客廠號;輸入後自動帶幣別/帳款起始日/關係人等 |
| 出貨客戶 | — | 客廠部代號;空白存檔時補成收款客戶 |
| 進銷分類 | — | 新增時預設帶入系統第一筆銷貨分類 |
| 交易日期 | ✔ | 連動填入帳款期別(前 7 碼) |
| 立帳日期 | ✔ | 預設今天;連動填入帳款期別 |
| 帳款期別 | ✔(暫收除外) | 格式 YYYY/MM,預設當月;暫收(25)可免 |
| 倉庫 | 視類別 | 出貨類(12)必填,存檔寫入單號;瀏覽時自動帶單號前 6 碼 |
| 訂單編號 | — | 對應銷售訂單編號 |
| 倉單號 / 參考單號 | 系統 | 唯讀,由轉入來源帶入 |
| 幣別 | ✔ | 新增預設本位幣;輸入客戶時改帶客戶幣別 |
| 匯率 | ✔ | 預設 1,需 > 0;幣別變更時由匯率表帶當日匯率 |
| 發票號碼 / 發票日期 / 統一編號 / 發票抬頭 | — | 開立發票資訊 |
| 稅別 | ✔(部分類別除外) | 暫收 25、待抵 23、折扣 26、退貨 21 可免稅別 |
| 發票金額 | — | 開立發票的金額;供 22 折讓 / 19 應收調整 / 26 折扣等類別於儲存時算應收付 |
| 稅額 | — | 可直接輸入;儲存時若為自動算稅類別(11/12/21/31/14)會由明細稅額彙總覆寫 |
| 收付條件號 | — | 帶客戶條件;連動算收款日/到期日 |
| 收款日 / 到期日 | — | 由收付條件+帳款起始日推算 |
| 專案代號 | — | 帶出專案簡稱 |
| 原幣應收付 / 本幣應收付 | 系統 | 唯讀,由明細彙總與類別規則算出 |
| 沖帳原幣 / 沖帳本幣 / 未沖金額 | 系統 | 唯讀,由收款單沖帳回填 |
| 轉入備註 | 系統 | 唯讀,標示由他處轉入;有值通常不得修改 |
| 備註 | — | 自由文字 |
明細(單身)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 序號 | 系統 | 列序 |
| 品號 | — | 帶出品名/單位 |
| 品名 / 單位 / 客廠品號 | — | 品號帶出,可改 |
| 數量 / 單價 / 其他金額 | — | 輸入後自動算未稅金額 |
| 原幣未稅 / 本幣未稅 / 原幣含稅 / 本幣含稅 | 系統 | 唯讀,由數量×單價+其他金額×匯率算出 |
| 沖帳原幣 / 沖帳本幣 | 系統 | 唯讀,沖帳回填 |
| 科目代號 / 摘要 | — | 修改模式下可編輯 |
| 其他憑證 | 系統 | 有值代表已產生沖帳憑證,該列鎖定不可編輯 |
欄位連動與附加功能¶
這一節說明「輸入某欄位 / 按某按鈕後,系統會做什麼」,全部來自實際程式碼(C# ViewModel / Source 與 VFP 原版欄位事件)。
新增時的預設值(AfterAddNew)¶
當你按 新增,系統會自動:
- 帳款期別 設為「當年/當月」(格式
YYYY/MM)。 - 進銷分類 帶入系統的第一筆應收銷貨分類。
- 幣別 在空白時帶入本位幣,匯率由 base 給 1。
輸入「收款客戶」後(最重要的連動)¶
當你在收款客戶輸入客戶代號(離開欄位時),系統呼叫 SetTransactionCustVendDept:
- 以代號查客戶主檔,帶出客廠簡稱/受款人。
- 帶入客戶的統一編號、帳款起始日、關係人、付款方式碼。
- 客戶若有設定幣別,改帶客戶幣別(
TsCurrency控件偵測到幣別變更會自動帶當日匯率);客戶無幣別則維持原本的本位幣。 - 帶入客戶的收付條件號,並接著呼叫
SetDueDate推算收款日/到期日(此步驟刻意排在帳款起始日之後,才會用到正確的起始日)。 - 出貨客戶(客廠部代號)若有輸入而收款客戶仍空白,會反向把收款客戶補成出貨客戶。
查無客戶代號
VFP 原版在查無客戶代號時會跳「查無此客戶代號」並清空幣別/收付條件。新版以客戶主檔查詢為準,查不到就不帶值。
日期欄位連動帳款期別¶
- 輸入交易日期:自動把帳款期別設為交易日期的前 7 碼(
YYYY/MM);SetDate同時同步立帳日期。對應 VFP交易日期.Valid。 - 輸入立帳日期:同樣連動帶帳款期別前 7 碼。
發票金額 / 稅額怎麼來¶
- 稅額在新版可直接於欄位輸入。它另外會在儲存時被系統重算:自動算稅類別(11/12/21/31/14)會把明細稅額彙總覆寫到主檔稅額;折讓(22)/應收調整(19)/折扣(26)/稅金(15)等類別則用
發票金額 + 稅額等公式回算應收付(見下方「儲存時的檢核與金額重算」)。 - 發票金額本身只是記錄欄位,輸入時不會即時連動稅額;它在儲存時供上述折讓/調整類別計算應收付之用。
VFP 的『輸入發票金額即時反算稅額』未移植
VFP 原版有 發票金額.LostFocus:離開發票金額欄時依稅別稅率即時算出稅額(並對「鈞寶電子(蘇州)」採含稅特例)。新版 C# Twork_arp_vw_rp_mSource 的發票金額/稅額為一般欄位,沒有這個即時連動;稅額改由手動輸入或儲存時的金額重算決定。請勿期待輸入發票金額後稅額會自動跳動。
「收付條件號」連動收款日 / 到期日¶
- 輸入收付條件號:呼叫
SetDueDate,以收付條件+帳款起始日/交易日期/發票日期推算並回填收款日與到期日,同時帶出條件說明。對應 VFP收付條件.代號.LostFocus。 - 稅別會在儲存時參與自動算稅(見下方「儲存時的檢核與金額重算」)。
幣別 / 匯率連動明細金額¶
主檔的幣別或匯率變動時(編輯狀態下):
- 改幣別:所有明細列的幣別同步成主檔幣別。
- 改匯率:每一明細列呼叫
CalculateAmount,以新幣別/匯率重算本幣金額。
對應 VFP 的 幣別.LostFocus(由匯率表帶買入匯率)與明細金額重算。
明細輸入後自動算未稅(計算未稅)¶
在明細格輸入數量/單價/其他金額並離開該欄時,對應的 數量Binding / 單價Binding / 其他金額Binding 屬性會呼叫 TaxCalculator.SetDetail,重算該列的:
- 原幣未稅 =
數量 × (單價 + 代工單價) + 其他金額(本表單無代工單價欄,等同數量 × 單價 + 其他金額,依幣別小數位數四捨五入)。 - 本幣未稅 =
原幣未稅 × 匯率(依本位幣小數位數四捨五入)。 - 連同原幣含稅/本幣含稅也一併由稅率算出。
對應 VFP txt數量.LostFocus / txt單價.LostFocus / txt其他金額.LostFocus → 計算未稅。輸入品號(品號Binding)會帶出品名/單位並依品號的庫存管制屬性設定交易別碼;VFP 版本則在 sql_mno1.LostFocus 補品名與單位。
儲存時的檢核與金額重算(AllowSave)¶
按 儲存 時,系統依序檢核並按財務類別重算金額:
- 必填檢核:財務類別、交易日期、立帳日期、客戶代號必填;帳款期別在非暫收(25)時必填;稅別在非 25/23/26/21 類別且為新增/複製/修改時必填;幣別必填、匯率須 > 0。
- 財務類別一致性:除新增外,財務單號需以財務類別開頭,否則擋存(不可變更財務類別)。
- 出貨(12)專屬:倉庫必填並寫入單號;明細至少要有一列「原幣未稅 ≠ 0」,否則提示「明細請輸入金額」。
- 本幣換算(非暫收 25):幣別等於本位幣時匯率設 1、本幣應收付=原幣應收付;否則本幣應收付=原幣應收付×匯率,並把程式類別設為
R。 - 自動算稅:僅在「11 訂金 / 12 出貨 / 21 退貨 / 31 非應收發票 / 14 雜項」且非轉入單時,呼叫
TaxCalculator自動算稅。 - 各類別金額公式:
15 稅金:應收付 = 稅額。19 應收調整 / 26 折扣:應收付 = 發票金額 + 稅額(本幣再乘匯率)。22 折讓:應收付 = 發票金額 + 稅額。
- 清理空額明細:原幣未稅為 0 的明細,在 19/22/26 類別會標記刪除。
- 沖帳保護:本幣應收付不得小於沖帳本幣,否則提示「金額小於沖帳金額」。
工具列延伸功能¶
| 動作 | 按鈕 | 做什麼 |
|---|---|---|
| 銷貨轉入 | ExtendedFunction1 | 開啟「銷貨轉入應收 (RECEPDT)」視窗,挑選出貨資料轉成應收明細,完成後定位到產生的單據 |
| 暫估轉 AR | ExtendedFunction2 | 開啟「暫估轉應收 (RECEPDT2)」視窗,把暫估應收轉成正式應收,完成後定位到該單 |
| 轉傳票 | ExtendedFunction3 | 開啟轉總帳傳票視窗(ArToGl),將目前應收單轉成總帳傳票;可回沖 |
| 特殊修改 | ExtendedFunction4 | 進入特殊修改模式(暫收 25 不適用),放寬部分欄位(如科目代號、單位、摘要、原幣應收付)以供調整 |
| 修改客戶 | ExtendedFunction5 | 對暫收單(25)改客戶代號(走「改號」繞過一般修改限制);若原客戶為系統參數 2029 的暫收客戶,會連動到收款單流程改號並重新審核 |
| 列印 | IPrintViewModel | 以目前單據條件呼叫應收列印 |
VFP 有、新版尚未提供的延伸功能
VFP 原版工具列另有 批改客戶(_CHANGENO_1)、轉入折讓(RECEPDT_DISC)、發票統計(RP_S)等按鈕。新版 C# ReceiveViewModel 目前未接這幾支(FromCostco 等亦為保留/註解狀態),請勿描述為可用。VFP 的「查詢收款單鈕」(列出本應收已被哪些收款單沖帳)在新版亦尚未提供。
常見問題¶
按「修改」卻跳出不得修改的訊息?
應收單在下列任一情況都不允許修改:轉入備註含「舊資料」、已沖帳(沖帳原幣 ≠ 0)、已轉傳票(傳票號碼有值)、財務類別為暫收(25)、或由他處轉入(轉入備註有值)。暫收單若要改客戶,請改用工具列的 修改客戶。
輸入了客戶卻沒帶出幣別 / 收付條件 / 帳款起始日?
這些值來自客戶主檔。請確認該客戶在客戶主檔已維護幣別、收付條件號、帳款起始日;客戶若沒設幣別,系統會保留目前的本位幣而不覆蓋。詳見輸入「收款客戶」後。
新增的單為什麼預設是本位幣、匯率 1?
這是設計:新增時若幣別空白即帶本位幣、匯率帶 1。等你輸入外幣客戶或手動改幣別後,匯率才會由匯率表帶當日值。對應 AfterAddNew 與 base 預設。
出貨單(財務類別 12)存不了,說「明細請輸入金額」或「請先輸入倉庫」?
出貨類在非轉入情況下要求:倉庫必填、且明細至少一列「原幣未稅 ≠ 0」。請補上倉庫代號並確認明細數量×單價有金額。
明細金額 / 稅額一直是 0?
原幣未稅由「數量 × 單價 + 其他金額」即時計算,請確認這三欄有值。稅額不會在輸入發票金額時即時跳動(VFP 的即時反算未移植):自動算稅類別(11/12/21/31/14 且非轉入單)會在儲存時由明細稅額彙總出主檔稅額,請確認稅別正確且明細有金額;其餘類別的稅額需手動輸入。
改了幣別或匯率,本幣金額沒更新?
幣別/匯率連動只在編輯狀態下重算明細;若仍未更新,重新進入修改、調整匯率欄即可觸發明細 CalculateAmount。儲存時系統也會再依本位幣口徑統一換算一次。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/I-ARAP/images/):
receive-step1.png— 新增單據的主檔輸入畫面(含財務類別、收款客戶、日期、幣別匯率區)receive-step2.png— 明細格輸入與自動算出的原幣/本幣未稅receive-step3.png— 工具列延伸功能(銷貨轉入 / 暫估轉 AR / 轉傳票 / 特殊修改 / 修改客戶)receive-step4.png— 應收列印條件視窗