程式資訊
- 程式 ID:
RPFZERO - 所屬子系統:Other
- 狀態:stable
收付款沖帳¶
功能簡介¶
「收付款沖帳」是付款單/收款單沖帳的專用畫面(程式類別 RPFZEROPAYMENT/RPFZEROCOLLECTION,視窗標題「收付款沖帳畫面」)。它不是主選單上獨立點選的功能,而是從付款單/收款單按 沖帳 工具列鈕(其他1/ExtendedFunction1)時跳出的彈窗。
它的工作流程是:拿一張已建立的收款單/付款單(含現金、票據、電匯三種付款方式),抓出該客戶/廠商所有未沖完的應收應付帳款,讓會計人員把這張款項逐筆(或自動)沖抵到帳款上,系統同時:
- 算出每一筆帳款的匯兌損益(沖帳當下匯率 vs. 立帳匯率的差)。
- 按沖帳結果產生一張平衡的傳票分錄(沖帳分錄)。
- 把沖帳結果與分錄寫回
rpsht系列財務單。
沖帳完成並關閉視窗後,付款單/收款單該筆主檔會被標記沖帳備註,並可進一步轉傳票到總帳。
兩種型態共用同一畫面
付款沖帳(RpfZeroSheetType.Payment)與收款沖帳(RpfZeroSheetType.Collection)是同一支程式,依開啟來源決定型態:付款單帶 廠商,收款單帶 客戶;借貸方向、預收/預付科目、買入/賣出匯率取法都會跟著切換。本頁兩者一併說明。
前置需求¶
- 權限:對應的付款單/收款單程式(
RPFZEROPAYMENT付款沖帳/RPFZEROCOLLECTION收款沖帳)的新增權限。沖帳是在來源單據的權限下進行,沒有獨立選單項目。 - 必須先有一張收/付款單:本畫面是針對單一張收/付款單(
RPSheetNo)作業,付款單/收款單尚未建立就不會有東西可沖。 - 基礎資料:沖帳分錄與匯兌計算依賴下列維護狀況——
| 資料 | 影響什麼 |
|---|---|
財務科目對照(rpdef 財務參數) |
應收/應付票據科目、電子付款、預收/預付、暫收/暫付、進項/銷項稅額、匯兌收益/損失科目全取自此表;缺設會帶成 XXXX 而擋存檔 |
匯率資料(vwseek_fxrate) |
右上「成本匯率」清單、沖帳匯率預設值、各幣別分錄換算(付款取賣出、收款取買入) |
| 客戶/廠商主檔 | 帶出客戶/廠商簡稱、批次電匯客戶判斷 |
銀行帳戶(vwseek_bank) |
票據是否直接轉現金科目(參數 2040=Y 時取帳戶的銀行科目) |
費用群組科目(grpm/科目對照) |
直接費用付款(請款 83)展開明細時帶出科目/摘要 |
操作步驟¶
開啟沖帳畫面¶
- 在付款單/收款單查到要沖帳的那張單,選取主檔列。
- 按工具列
沖帳鈕。系統會先檢查:- 該筆已轉傳票(有沖帳傳票號)→ 擋下,不可再沖。
- 該筆已有沖帳備註(代表先前已沖過)→ 以唯讀查詢模式開啟(僅供檢視,下方自動沖帳區會被禁用)。
- 沖帳畫面以彈窗(ContentWindow)開啟,分兩個頁籤:
沖帳(主作業)與鎖定資料(NG 清單,見鎖定資料頁)。
沖帳頁作業¶
- 確認上方表頭:客戶/廠商、沖帳日期、幣別、沖帳匯率、收付款原幣(這張款項的金額)已自動帶入。
- 上方「成本匯率」清單顯示各幣別匯率,供換算參考。
- 中段帳款主檔格線列出該客戶/廠商所有未沖完的應收應付帳款。逐筆沖帳有三種方式:
- 單筆沖帳鈕:在某列按
沖帳欄按鈕 → 該列「本次沖帳原幣金額」自動填滿剩餘餘額(餘額=原幣應收付-已沖帳原幣);再按一次歸零。 - 右鍵沖帳(沖帳方式
R1時):在沖帳鈕上按右鍵,依差額智慧帶入金額(見欄位連動)。 - 手動輸入:直接在「本次沖帳原幣金額」欄打數字。
- 單筆沖帳鈕:在某列按
- 視需要使用左下角區塊:輸入預收/預付貨款幣別+金額後按
計算、或輸入手續費幣別+金額後按計算,再按自動沖帳讓系統把差額分配到各帳款列。 - 按
沖帳分錄鈕產生傳票分錄,下方「沖帳分錄格線」會帶出借貸科目;確認本幣借方=本幣貸方(差額為 0)。 - 需要重來時按
取消沖帳,系統清掉分錄、還原帳款、解除沖帳匯率鎖定。 - 按工具列
儲存寫回;存檔前系統會做一連串檢核(見常見問題)。
小技巧
自動沖帳 會先把所有負數方向(沖回/折讓)的帳款全額沖掉,再用剩餘款項(差額)由上而下分配到正數帳款,能整單沖到差額為 0 時最省事。
欄位說明¶
表頭(沖帳頁上方)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 客戶 / 廠商 | — | 唯讀;付款沖帳顯示廠商、收款沖帳顯示客戶,代號+簡稱由主檔帶出 |
| 沖帳日期 | ✔ | 唯讀,取自收/付款單的收付款日期;空白會擋存檔 |
| 幣別 | — | 唯讀,這張款項的幣別 |
| 沖帳匯率 | — | 預設取該幣別匯率(付款=賣出、收款=買入);本幣時為 1。產生沖帳分錄後會鎖成唯讀 |
| 收付款原幣 | — | 唯讀,這張收/付款單的原幣金額 |
| 沖帳原幣 | — | 唯讀,目前已分配出去的沖帳原幣合計 |
| 差額 | — | 唯讀,=收付款原幣 - 沖帳原幣;沖到 0 表示款項全部分配完畢 |
| 成本匯率(清單) | — | 幣別/買/賣/中/起始日期;供換算參考,唯讀 |
帳款主檔格線(中段)¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| 財務類別/財務單號/交易日期/帳款期別 | — | 帳款的來源辨識資訊 |
| 倉單號/發票號碼/單號/報單號碼/L/C號碼 | — | 來源單據關聯欄 |
| 加減別 | — | +/-,決定這筆帳款對款項是「用掉」還是「加回」;依單據分類與沖帳型態自動判定 |
| 原幣應收付/沖帳原幣/原幣餘額 | — | 餘額=原幣應收付 - 沖帳原幣 |
| 沖帳匯率 | — | 該列帳款的沖帳匯率(依幣別帶入) |
| 本次沖帳原幣金額 | ✔ | 本次要沖掉的原幣金額(這次作業唯一可手動編輯的金額欄);> 0 時該列被標記為選取 |
| 本次沖帳本幣金額/匯兌損益 | — | 由本次沖帳原幣金額連動計算 |
| 本幣應收付/沖帳本幣/本次沖帳本幣金額 | — | 本幣口徑唯讀 |
沖帳分錄格線(下段,可編輯)¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| 序號 | — | 自動編號(依借方在前排序) |
| 科目代號/科目名稱 | ✔ | 科目代號可用 Seek 選;名稱由科目帶出(唯讀) |
| 摘要 | ✔ | 分錄摘要 |
| 幣別/匯率 | ✔ | 幣別下拉同時帶出匯率;本幣借貸由原幣×匯率算出 |
| 原幣借方/原幣貸方 | ✔ | 手動或由產生分錄帶入 |
| 本幣借方/本幣貸方 | — | 唯讀,=原幣×匯率 |
| 客廠代號/部門/員工/分類索引1~4/專案代號 | ✔ | 分錄附帶的維度欄 |
| 單別1~3/單號1~3/到期日/財務單Id | — | 系統關聯欄,唯讀 |
鎖定資料頁¶
| 區塊 | 欄位 | 說明 |
|---|---|---|
| 收付款鎖定來源 | 收付款日期/收付款單號 | 因被其他作業鎖定而無法沖帳的收/付款單 |
| 帳款鎖定來源 | 財務單號/財務類別/帳款期別/單號/客廠部/金額/傳票號碼/發票… | 被鎖定、無法納入沖帳的帳款明細;頁籤標題會顯示鎖定筆數 |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某鈕後系統會做什麼」逐條列出,全部來自實際程式碼。
開窗時的初始化¶
- 開窗會呼叫
SpecialAdeQuery→RpfZeroTransfer.Transfer,以儲存程序DARB_TUR_RPFZERO撈出:該款項的票據/電匯明細、未沖帳款主檔與明細、匯率表、費用群組科目,並組出帳款主檔列與1000 列空白沖帳分錄待填。 - 若撈到鎖定資料(收付款被鎖或帳款被鎖):系統判定為 NG,不允許沖帳,畫面自動切到
鎖定資料頁,並停用自動沖帳區。請先解除鎖定再來。 - 沖帳匯率預設:第一次載入時,依幣別自動帶入匯率(付款取賣出、收款取買入;本幣為 1)。
- 當你已沖過(帶
IsOnlyQuery)開窗時,系統執行取消編輯、停用自動沖帳區,僅供查詢。
帳款列:本次沖帳原幣金額(最核心的連動)¶
- 改「本次沖帳原幣金額」會即時觸發
CalculateExchangeGainLoss,重算該列本次沖帳本幣金額與匯兌損益,並把表頭沖帳原幣/差額一起更新。 - 匯兌損益算法(
RpfZeroHelper):- 若沖帳後原幣剛好沖滿(原幣應收付=沖帳原幣+本次沖帳原幣金額),原始本幣金額=本幣餘額;否則=本次沖帳原幣金額×立帳匯率。
- 匯兌損益=原始本幣金額 - 本次沖帳原幣金額×沖帳匯率;單據為應付加/應付×/應收減時取正向,否則反向。
本次沖帳原幣金額 > 0時該列自動標記為「選取」,套用選取底色。
帳款列:單筆沖帳鈕 / 右鍵沖帳¶
- 左鍵
沖帳欄按鈕(StrikeExecute):金額為 0 → 填滿餘額(原幣應收付 - 沖帳原幣);已有金額 → 歸零。屬「全沖/取消」開關。 - 右鍵沖帳(
RightStrikeExecute,僅沖帳方式R1):- 財務類別為
21/22(票據類)→ 跟左鍵一樣切換全沖/歸零。 - 其他類別且差額 > 0 且單據為應收加(ARPlus)→ 系統用差額智慧帶值:若帳款餘額大於「差額+已沖金額」就只沖到該差額,否則沖滿餘額。
- 之後同樣重算匯兌損益與表頭差額。
- 財務類別為
自動沖帳鈕¶
按表頭 自動沖帳(AutoStrikeExecute):
- 先把所有加減別為
-(沖回方向)的帳款全額沖掉並算匯兌損益。 - 取目前差額,先找「餘額剛好等於差額」的單筆一次沖平;找不到就由上而下逐列分配,直到差額為 0。
- 略過
NoSliy的列(需要傳票但尚無傳票號的紅色列,見下)。
紅色/粉紅列的意義(列底色)¶
- 粉紅底(
HaveNotes):該帳款有關聯聯絡單(聯絡單id > 0)。 - 紅底且停用(
NoSliy):該帳款標記「需要傳票」(NeedSliy=Y)但尚無傳票號碼,代表上游尚未轉傳票,不可沖帳,自動沖帳與產生分錄都會排除這些列。
預收/預付、手續費¶
左下角區塊依沖帳型態顯示預付貨款(付款)或預收貨款(收款):
- 輸入幣別+金額後按該列
計算(AdvancedReceiveExecute/CalculateFeeExecute):系統先產生分錄試算,把多收/多付(或手續費)換算回該幣別金額帶回欄位,再重載畫面。 - 幣別空白卻填了金額 → 跳訊息要求補幣別(付款提示「預付幣別」、收款提示「預收幣別」)。
- 金額為負 → 在產生分錄時擋下(預收付/溢收付/手續費不可小於 0)。
沖帳分錄鈕 / 取消沖帳鈕¶
沖帳分錄(StrikeEntriesExecute):- 先驗預收付/手續費幣別、金額不可為負。
- 驗直接付款請款(財務類別
83且進銷分類為直接費用/直接費用攤提)必須全額沖帳,否則擋下。 - 逐列驗「本次沖帳原幣金額不得大於原幣餘額」。
- 通過後
GenerateGLEntries產生借貸分錄、重算合計、重載畫面,並把沖帳匯率鎖成唯讀。
取消沖帳(CancelEntriesExecute):呼叫RpfZeroTransfer.CancelStrike還原帳款與分錄、解除沖帳匯率鎖定。- 批次電匯客戶(
BatchTTCustomer)且備註不含該客戶碼時,此鈕會被停用。
- 批次電匯客戶(
分錄合計與借貸平衡¶
- 改分錄「本借方/本貸方」會觸發
SumBlance,即時更新下方原幣借方/原幣貸方/本幣借方/本幣貸方/差額合計(匯兌收益/損失科目不計入原幣合計)。
儲存時的檢核(AllowSave)¶
按 儲存 時,依序檢查:
- 沖帳日期不可空白。
- 沖帳分錄至少要有兩列有科目,否則提示「請按產生分錄鈕」。
- 有金額的分錄列必須有幣別與匯率(> 0)。
- 預收沒發票(
29/NEW)的分錄,摘要前 7 碼必須是合法帳款期別(YYYY/MM)。 - 本幣借方=本幣貸方(借貸需平衡),且不可同時為 0。
- 通過後組
Twork_arp_vw_rpsht_m/d1/d2/d寫回(沖帳備註自動記下使用者、日期、「沖帳」字樣)。
聯絡單(提示用,未提供操作入口)¶
- 有關聯聯絡單的帳款列(
聯絡單id > 0)會以粉紅底標示,純粹提醒會計人員該筆帳款另有聯絡單在處理,本沖帳畫面內沒有直接開啟聯絡單的按鈕。
常見問題¶
按了沖帳鈕,畫面卻直接跳到「鎖定資料」頁、無法沖帳?
代表這張款項的收/付款單或要沖的帳款被其他作業鎖定(NG)。鎖定資料 頁會列出被鎖的單號與帳款,頁籤標題也會顯示鎖定筆數。請先處理/解鎖那些資料,再重新開啟沖帳。
存檔時跳「請按產生分錄鈕」?
沖帳分錄區有科目的列不足兩列。請先在帳款列填好「本次沖帳原幣金額」,再按 沖帳分錄 讓系統產生借貸分錄,借貸平衡後才能存。
存檔時跳「借貸不平衡」或「借貸不可為 0」?
下方分錄本幣借方合計 ≠ 本幣貸方合計,或兩者皆為 0。常見原因是改了匯率或金額後沒重新產生分錄、或有匯兌損益未帶到分錄。請按 取消沖帳 後重新 沖帳分錄,並確認差額欄為 0。
某些帳款列是紅色而且點不動?
紅底代表該帳款「需要傳票卻還沒有傳票號碼」(NoSliy),表示上游單據尚未轉傳票。這些列不能沖帳,自動沖帳與產生分錄都會略過它們。請先把上游單據轉傳票,傳票號補上後才會解除。
匯兌損益一直是 0?
匯兌損益=沖帳當下匯率與立帳匯率的差。本幣帳款、或沖帳匯率與原匯率相同時本來就是 0。若是外幣卻仍為 0,請確認沖帳匯率有正確帶入(沖帳匯率欄、成本匯率清單),且匯兌收益/損失科目(財務參數 A3/A4)已維護,否則會帶成 XXXX 而無法入帳。
改了沖帳匯率卻不能再改?
產生 沖帳分錄 後,沖帳匯率會被鎖成唯讀以保持分錄一致。要調整匯率請先按 取消沖帳 解除鎖定,改完再重新產生分錄。
相關功能¶
- 付款單/收款單 — 本沖帳畫面的開啟來源
- 轉傳票(沖帳傳票) — 沖帳後將沖帳分錄拋轉總帳
- 聯絡單 — 處理帳款列關聯的聯絡單
- 應收應付管理 — 帳款主檔與相關作業
- 總帳傳票 — 沖帳分錄入帳後的傳票
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/Other/images/):
rpfzero-step1.png— 從付款單/收款單按「沖帳」開啟的入口rpfzero-step2.png— 沖帳頁全貌(表頭+帳款主檔格線+沖帳分錄格線)rpfzero-step3.png— 自動沖帳/預收付/手續費區與沖帳分錄、取消沖帳鈕rpfzero-step4.png— 鎖定資料頁(NG 清單,含鎖定筆數)