跳轉到

程式資訊

  • 程式 IDRPFZERO
  • 所屬子系統:Other
  • 狀態:stable

收付款沖帳

功能簡介

「收付款沖帳」是付款單/收款單沖帳的專用畫面(程式類別 RPFZEROPAYMENTRPFZEROCOLLECTION,視窗標題「收付款沖帳畫面」)。它不是主選單上獨立點選的功能,而是從付款單/收款單沖帳 工具列鈕(其他1ExtendedFunction1)時跳出的彈窗。

它的工作流程是:拿一張已建立的收款單/付款單(含現金、票據、電匯三種付款方式),抓出該客戶/廠商所有未沖完的應收應付帳款,讓會計人員把這張款項逐筆(或自動)沖抵到帳款上,系統同時:

  1. 算出每一筆帳款的匯兌損益(沖帳當下匯率 vs. 立帳匯率的差)。
  2. 按沖帳結果產生一張平衡的傳票分錄(沖帳分錄)。
  3. 把沖帳結果與分錄寫回 rpsht 系列財務單。

沖帳完成並關閉視窗後,付款單/收款單該筆主檔會被標記沖帳備註,並可進一步轉傳票到總帳。

兩種型態共用同一畫面

付款沖帳(RpfZeroSheetType.Payment)與收款沖帳(RpfZeroSheetType.Collection)是同一支程式,依開啟來源決定型態:付款單帶 廠商,收款單帶 客戶;借貸方向、預收/預付科目、買入/賣出匯率取法都會跟著切換。本頁兩者一併說明。

前置需求

  • 權限:對應的付款單/收款單程式(RPFZEROPAYMENT 付款沖帳/RPFZEROCOLLECTION 收款沖帳)的新增權限。沖帳是在來源單據的權限下進行,沒有獨立選單項目。
  • 必須先有一張收/付款單:本畫面是針對單一張收/付款單(RPSheetNo)作業,付款單/收款單尚未建立就不會有東西可沖。
  • 基礎資料:沖帳分錄與匯兌計算依賴下列維護狀況——
資料 影響什麼
財務科目對照(rpdef 財務參數) 應收/應付票據科目、電子付款、預收/預付、暫收/暫付、進項/銷項稅額、匯兌收益/損失科目全取自此表;缺設會帶成 XXXX 而擋存檔
匯率資料(vwseek_fxrate 右上「成本匯率」清單、沖帳匯率預設值、各幣別分錄換算(付款取賣出、收款取買入
客戶/廠商主檔 帶出客戶/廠商簡稱、批次電匯客戶判斷
銀行帳戶(vwseek_bank 票據是否直接轉現金科目(參數 2040=Y 時取帳戶的銀行科目)
費用群組科目(grpm/科目對照) 直接費用付款(請款 83)展開明細時帶出科目/摘要

操作步驟

開啟沖帳畫面

  1. 付款單/收款單查到要沖帳的那張單,選取主檔列。
  2. 按工具列 沖帳 鈕。系統會先檢查:
    • 該筆已轉傳票(有沖帳傳票號)→ 擋下,不可再沖。
    • 該筆已有沖帳備註(代表先前已沖過)→ 以唯讀查詢模式開啟(僅供檢視,下方自動沖帳區會被禁用)。
  3. 沖帳畫面以彈窗(ContentWindow)開啟,分兩個頁籤:沖帳(主作業)與 鎖定資料(NG 清單,見鎖定資料頁)。

沖帳頁作業

  1. 確認上方表頭:客戶/廠商沖帳日期幣別沖帳匯率收付款原幣(這張款項的金額)已自動帶入。
  2. 上方「成本匯率」清單顯示各幣別匯率,供換算參考。
  3. 中段帳款主檔格線列出該客戶/廠商所有未沖完的應收應付帳款。逐筆沖帳有三種方式:
    • 單筆沖帳鈕:在某列按 沖帳 欄按鈕 → 該列「本次沖帳原幣金額」自動填滿剩餘餘額(餘額=原幣應收付-已沖帳原幣);再按一次歸零。
    • 右鍵沖帳(沖帳方式 R1 時):在 沖帳 鈕上按右鍵,依差額智慧帶入金額(見欄位連動)。
    • 手動輸入:直接在「本次沖帳原幣金額」欄打數字。
  4. 視需要使用左下角區塊:輸入預收/預付貨款幣別+金額後按 計算、或輸入手續費幣別+金額後按 計算,再按 自動沖帳 讓系統把差額分配到各帳款列。
  5. 沖帳分錄 鈕產生傳票分錄,下方「沖帳分錄格線」會帶出借貸科目;確認本幣借方=本幣貸方(差額為 0)。
  6. 需要重來時按 取消沖帳,系統清掉分錄、還原帳款、解除沖帳匯率鎖定。
  7. 按工具列 儲存 寫回;存檔前系統會做一連串檢核(見常見問題)。

小技巧

自動沖帳 會先把所有負數方向(沖回/折讓)的帳款全額沖掉,再用剩餘款項(差額)由上而下分配到正數帳款,能整單沖到差額為 0 時最省事。

欄位說明

表頭(沖帳頁上方)

欄位 必填 說明/格式/預設
客戶 / 廠商 唯讀;付款沖帳顯示廠商、收款沖帳顯示客戶,代號+簡稱由主檔帶出
沖帳日期 唯讀,取自收/付款單的收付款日期;空白會擋存檔
幣別 唯讀,這張款項的幣別
沖帳匯率 預設取該幣別匯率(付款=賣出、收款=買入);本幣時為 1。產生沖帳分錄後會鎖成唯讀
收付款原幣 唯讀,這張收/付款單的原幣金額
沖帳原幣 唯讀,目前已分配出去的沖帳原幣合計
差額 唯讀,=收付款原幣 - 沖帳原幣;沖到 0 表示款項全部分配完畢
成本匯率(清單) 幣別/買/賣/中/起始日期;供換算參考,唯讀

帳款主檔格線(中段)

欄位 可編輯 說明
財務類別/財務單號/交易日期/帳款期別 帳款的來源辨識資訊
倉單號/發票號碼/單號/報單號碼/L/C號碼 來源單據關聯欄
加減別 +-,決定這筆帳款對款項是「用掉」還是「加回」;依單據分類與沖帳型態自動判定
原幣應收付/沖帳原幣/原幣餘額 餘額=原幣應收付 - 沖帳原幣
沖帳匯率 該列帳款的沖帳匯率(依幣別帶入)
本次沖帳原幣金額 本次要沖掉的原幣金額(這次作業唯一可手動編輯的金額欄);> 0 時該列被標記為選取
本次沖帳本幣金額/匯兌損益 由本次沖帳原幣金額連動計算
本幣應收付/沖帳本幣/本次沖帳本幣金額 本幣口徑唯讀

沖帳分錄格線(下段,可編輯)

欄位 可編輯 說明
序號 自動編號(依借方在前排序)
科目代號/科目名稱 科目代號可用 Seek 選;名稱由科目帶出(唯讀)
摘要 分錄摘要
幣別/匯率 幣別下拉同時帶出匯率;本幣借貸由原幣×匯率算出
原幣借方/原幣貸方 手動或由產生分錄帶入
本幣借方/本幣貸方 唯讀,=原幣×匯率
客廠代號/部門/員工/分類索引1~4/專案代號 分錄附帶的維度欄
單別1~3/單號1~3/到期日/財務單Id 系統關聯欄,唯讀

鎖定資料頁

區塊 欄位 說明
收付款鎖定來源 收付款日期/收付款單號 因被其他作業鎖定而無法沖帳的收/付款單
帳款鎖定來源 財務單號/財務類別/帳款期別/單號/客廠部/金額/傳票號碼/發票… 被鎖定、無法納入沖帳的帳款明細;頁籤標題會顯示鎖定筆數

欄位連動與附加功能

這一節把「輸入某欄位/按某鈕後系統會做什麼」逐條列出,全部來自實際程式碼。

開窗時的初始化

  • 開窗會呼叫 SpecialAdeQueryRpfZeroTransfer.Transfer,以儲存程序 DARB_TUR_RPFZERO 撈出:該款項的票據/電匯明細、未沖帳款主檔與明細、匯率表、費用群組科目,並組出帳款主檔列1000 列空白沖帳分錄待填。
  • 若撈到鎖定資料(收付款被鎖或帳款被鎖):系統判定為 NG,不允許沖帳,畫面自動切到 鎖定資料 頁,並停用自動沖帳區。請先解除鎖定再來。
  • 沖帳匯率預設:第一次載入時,依幣別自動帶入匯率(付款取賣出、收款取買入;本幣為 1)。
  • 當你已沖過(帶 IsOnlyQuery)開窗時,系統執行取消編輯、停用自動沖帳區,僅供查詢。

帳款列:本次沖帳原幣金額(最核心的連動)

  • 改「本次沖帳原幣金額」會即時觸發 CalculateExchangeGainLoss,重算該列本次沖帳本幣金額匯兌損益,並把表頭沖帳原幣/差額一起更新。
  • 匯兌損益算法(RpfZeroHelper):
    • 若沖帳後原幣剛好沖滿(原幣應收付=沖帳原幣+本次沖帳原幣金額),原始本幣金額=本幣餘額;否則=本次沖帳原幣金額×立帳匯率。
    • 匯兌損益=原始本幣金額 - 本次沖帳原幣金額×沖帳匯率;單據為應付加/應付×/應收減時取正向,否則反向。
  • 本次沖帳原幣金額 > 0 時該列自動標記為「選取」,套用選取底色。

帳款列:單筆沖帳鈕 / 右鍵沖帳

  • 左鍵 沖帳 欄按鈕StrikeExecute):金額為 0 → 填滿餘額(原幣應收付 - 沖帳原幣);已有金額 → 歸零。屬「全沖/取消」開關。
  • 右鍵沖帳RightStrikeExecute,僅沖帳方式 R1):
    • 財務類別為 2122(票據類)→ 跟左鍵一樣切換全沖/歸零。
    • 其他類別且差額 > 0 且單據為應收加(ARPlus)→ 系統用差額智慧帶值:若帳款餘額大於「差額+已沖金額」就只沖到該差額,否則沖滿餘額。
    • 之後同樣重算匯兌損益與表頭差額。

自動沖帳鈕

按表頭 自動沖帳AutoStrikeExecute):

  1. 先把所有加減別為 -(沖回方向)的帳款全額沖掉並算匯兌損益。
  2. 取目前差額,先找「餘額剛好等於差額」的單筆一次沖平;找不到就由上而下逐列分配,直到差額為 0。
  3. 略過 NoSliy 的列(需要傳票但尚無傳票號的紅色列,見下)。

紅色/粉紅列的意義(列底色)

  • 粉紅底(HaveNotes:該帳款有關聯聯絡單(聯絡單id > 0)。
  • 紅底且停用(NoSliy:該帳款標記「需要傳票」(NeedSliy=Y)但尚無傳票號碼,代表上游尚未轉傳票,不可沖帳,自動沖帳與產生分錄都會排除這些列。

預收/預付、手續費

左下角區塊依沖帳型態顯示預付貨款(付款)或預收貨款(收款):

  • 輸入幣別+金額後按該列 計算AdvancedReceiveExecuteCalculateFeeExecute):系統先產生分錄試算,把多收/多付(或手續費)換算回該幣別金額帶回欄位,再重載畫面。
  • 幣別空白卻填了金額 → 跳訊息要求補幣別(付款提示「預付幣別」、收款提示「預收幣別」)。
  • 金額為負 → 在產生分錄時擋下(預收付/溢收付/手續費不可小於 0)。

沖帳分錄鈕 / 取消沖帳鈕

  • 沖帳分錄StrikeEntriesExecute):
    • 先驗預收付/手續費幣別、金額不可為負。
    • 驗直接付款請款(財務類別 83 且進銷分類為直接費用/直接費用攤提)必須全額沖帳,否則擋下。
    • 逐列驗「本次沖帳原幣金額不得大於原幣餘額」。
    • 通過後 GenerateGLEntries 產生借貸分錄、重算合計、重載畫面,並把沖帳匯率鎖成唯讀
  • 取消沖帳CancelEntriesExecute):呼叫 RpfZeroTransfer.CancelStrike 還原帳款與分錄、解除沖帳匯率鎖定。
    • 批次電匯客戶(BatchTTCustomer)且備註不含該客戶碼時,此鈕會被停用。

分錄合計與借貸平衡

  • 改分錄「本借方/本貸方」會觸發 SumBlance,即時更新下方原幣借方/原幣貸方/本幣借方/本幣貸方/差額合計(匯兌收益/損失科目不計入原幣合計)。

儲存時的檢核(AllowSave

儲存 時,依序檢查:

  1. 沖帳日期不可空白。
  2. 沖帳分錄至少要有兩列有科目,否則提示「請按產生分錄鈕」。
  3. 有金額的分錄列必須有幣別與匯率(> 0)
  4. 預收沒發票(29NEW)的分錄,摘要前 7 碼必須是合法帳款期別YYYY/MM)。
  5. 本幣借方=本幣貸方(借貸需平衡),且不可同時為 0。
  6. 通過後組 Twork_arp_vw_rpsht_m/d1/d2/d 寫回(沖帳備註自動記下使用者、日期、「沖帳」字樣)。

聯絡單(提示用,未提供操作入口)

  • 有關聯聯絡單的帳款列(聯絡單id > 0)會以粉紅底標示,純粹提醒會計人員該筆帳款另有聯絡單在處理,本沖帳畫面內沒有直接開啟聯絡單的按鈕。

常見問題

按了沖帳鈕,畫面卻直接跳到「鎖定資料」頁、無法沖帳?

代表這張款項的收/付款單或要沖的帳款被其他作業鎖定(NG)。鎖定資料 頁會列出被鎖的單號與帳款,頁籤標題也會顯示鎖定筆數。請先處理/解鎖那些資料,再重新開啟沖帳。

存檔時跳「請按產生分錄鈕」?

沖帳分錄區有科目的列不足兩列。請先在帳款列填好「本次沖帳原幣金額」,再按 沖帳分錄 讓系統產生借貸分錄,借貸平衡後才能存。

存檔時跳「借貸不平衡」或「借貸不可為 0」?

下方分錄本幣借方合計 ≠ 本幣貸方合計,或兩者皆為 0。常見原因是改了匯率或金額後沒重新產生分錄、或有匯兌損益未帶到分錄。請按 取消沖帳 後重新 沖帳分錄,並確認差額欄為 0。

某些帳款列是紅色而且點不動?

紅底代表該帳款「需要傳票卻還沒有傳票號碼」(NoSliy),表示上游單據尚未轉傳票。這些列不能沖帳,自動沖帳與產生分錄都會略過它們。請先把上游單據轉傳票,傳票號補上後才會解除。

匯兌損益一直是 0?

匯兌損益=沖帳當下匯率與立帳匯率的差。本幣帳款、或沖帳匯率與原匯率相同時本來就是 0。若是外幣卻仍為 0,請確認沖帳匯率有正確帶入(沖帳匯率欄、成本匯率清單),且匯兌收益/損失科目(財務參數 A3A4)已維護,否則會帶成 XXXX 而無法入帳。

改了沖帳匯率卻不能再改?

產生 沖帳分錄 後,沖帳匯率會被鎖成唯讀以保持分錄一致。要調整匯率請先按 取消沖帳 解除鎖定,改完再重新產生分錄。

相關功能


需補截圖清單

以下截圖待 runtime 驗收後補拍(放 docs/Other/images/):

  1. rpfzero-step1.png — 從付款單/收款單按「沖帳」開啟的入口
  2. rpfzero-step2.png — 沖帳頁全貌(表頭+帳款主檔格線+沖帳分錄格線)
  3. rpfzero-step3.png — 自動沖帳/預收付/手續費區與沖帳分錄、取消沖帳鈕
  4. rpfzero-step4.png — 鎖定資料頁(NG 清單,含鎖定筆數)