跳轉到

程式資訊

  • 程式 IDPAYTERM
  • 所屬子系統:B.基本資料
  • 狀態:stable

收付條件

功能簡介

「收付條件」維護一套收付款日期與到期日的計算規則,每筆規則以一組 收付條件號 為主鍵。系統在開立進貨/銷貨、立帳、開立發票時,會依單據掛上的收付條件號,自動推算應收付款日期與到期日,並可記錄現金折扣(提早付款的折扣率與折扣天數)。

設定一次,後續所有帳款相關單據都共用:是廠商主檔、客戶主檔、進銷貨與帳務單據判斷「這筆錢哪天該收/該付、哪天到期」的源頭。會用到這支的,是負責設定付款政策的會計或採購主管。

本頁特色是內建一個 檢查項目 驗算面板:填入假設的日期就能立刻看到這組規則算出來的收付款日期與到期日,方便在儲存前確認規則設定正確。

前置需求

  • 權限:B.基礎資料 → B-050 收付條件 的瀏覽/列印權限。
  • 本表單為獨立主檔,不依賴其他主檔即可建立;但下列單據在掛上收付條件號後才會用到本規則:
資料 影響的結果
客戶主檔/廠商主檔的「收付條件號」 該客戶/廠商的帳款預設套用此規則
進貨/銷貨、立帳、發票單據 依單據日期 + 本規則推算收付款日期與到期日
帳款(AR/AP)相關作業 到期日決定帳齡、催收與付款排程

類別決定用在應收還是應付

每筆收付條件以 類別 區分用途(Customer 客戶/應收、Vendor 廠商/應付、Both 兩者通用)。建立規則時請先確認類別,避免把應收規則誤掛在廠商上。

操作步驟

新增一筆收付條件

  1. 開啟「收付條件」。
  2. 按工具列 新增,游標會停在 收付條件號 欄。
  3. 輸入 收付條件號(最長 10 碼,作為主鍵,例如 CCM030),並填入 說明(例如「月結 30 天」)。
  4. 選擇 類別CustomerVendorBoth)。
  5. 設定三組規則區塊(詳見欄位連動與附加功能):
    1. 現金折扣:折扣率與折扣天數。
    2. 付款日:收付款日期的計算基準與調整。
    3. 到期日:到期日的計算基準與調整。
  6. (建議)在右下方 檢查項目 面板輸入測試日期,按 檢查 驗算結果是否符合預期。
  7. 確認無誤後按工具列 儲存

修改/停用

  1. 用工具列查詢或上下筆移動,定位到要修改的收付條件號。
  2. 直接調整三組規則欄位。
  3. 若要停用而不刪除,把 是否停用 改為 ,再 儲存

已掛在單據上的規則建議停用而非刪除

收付條件號被客戶/廠商主檔或既有帳款單據引用時,請改用 是否停用 退場;直接刪除可能讓既有單據的收付條件號失去對應規則。

驗算(檢查項目面板)

  1. 帳款起始日 輸入每月帳款週期的起始日(1~31 的「日」,最長 2 碼)。
  2. 視規則需要填入 立帳日期進出貨日期發票日期(皆為日期格式)。
  3. 檢查
  4. 系統依目前畫面上正在編輯的這筆規則,回算唯讀的 收付款日期到期日

檢查用的是畫面上目前這筆規則

驗算直接套用畫面上正在編輯、尚未儲存的規則內容。改了基準或加減天數後,再按一次 檢查 即可看到新結果,不必先儲存。

列印

工具列 列印 提供報表 付款條件(報表編號 B050-1),輸出目前的收付條件設定。

欄位說明

主檔欄位

欄位 必填 說明/格式/預設
收付條件號 主鍵,最長 10 碼
是否停用 是/否;停用後不再供新單據選用
說明 規則說明文字,最長 80 字
類別 Customer(客戶/應收)/Vendor(廠商/應付)/Both(通用);下拉預設第一筆 Customer
現金折扣 折扣率,數值欄(精度 decimal(7,4)=最多 3 位整數 + 4 位小數),畫面 MaxLength=4
折扣天數 享折扣的天數,最長 2 碼
收付基準(付款日) 收付款日期的計算基準,見下方對照;數值欄預設 0(立帳日期)
加月數(付款日) 在基準日上加的月數,最長 2 碼,預設 0
加減天數(付款日) 在基準日上加/減的天數,最長 2 碼,預設 0
固定付款日(付款日) 指定每月固定第幾日付款;填 0/空白=不固定,沿用基準日的「日」
到期基準(到期日) 到期日的計算基準,見下方對照;數值欄預設 0(立帳日期)
加月數1(到期日) 在到期基準日上加的月數,預設 0
加減天數1(到期日) 在到期基準日上加/減的天數,預設 0
固定到期日(到期日,畫面標籤為「固定日期」) 指定每月固定第幾日到期;填 0/空白=不固定

檢查項目(驗算面板,不存檔)

欄位 必填 說明/格式/預設
帳款起始日 帳款週期起始「日」(1~31),最長 2 碼;對應計算中的 StatementCycleStartDate
立帳日期 日期;當收付/到期基準為「立帳日期」時採用
進出貨日期 日期;當基準為「交易日期」「帳款截止日」「帳款日次月初」時採用
發票日期 日期;當基準為「發票日」「發票日次月初」時採用
收付款日期 唯讀 檢查 後由系統算出
到期日 唯讀 檢查 後由系統算出

新增時驗算欄位都會清空

切換或新增記錄(AfterMoverRecord)時,系統會把檢查項目的 6 個欄位(帳款起始日、立帳日期、進出貨日期、發票日期、收付款日期、到期日)一律清空,避免沿用上一筆的測試值。

欄位連動與附加功能

這一節說明「設定某欄位 / 按某按鈕後系統會怎麼算」。所有計算來自 PayTermDate(收付款日期 GetPaymentDate + 到期日 GetDueDate)。

收付基準(付款日)決定「從哪個日期起算」

當你在 收付基準 選不同值,按 檢查 時系統會用不同的來源日期推算 收付款日期

  1. 立帳日期(0):以 立帳日期 為基準。
  2. 交易日期(1):以 進出貨日期 為基準。
  3. 發票日(2):以 發票日期 為基準。
  4. 帳款截止日(3):把 進出貨日期 換算到該帳款週期的截止日。截止日=帳款起始日 − 1(帳款起始日為 0 或 1 時,截止日視為當月 31)。若交易日已超過本月截止日,自動滾到下個月的截止日(跨年時年份進位)。
  5. 發票日次月初(4):以 發票日期 推到次月 1 日後,再做加月/加天調整。
  6. 帳款日次月初(5,預設情形):以 進出貨日期 判斷——當月「日」≤ 截止日者推到次月 1 日,超過者推到第三個月(隔月)1 日,再做加月/加天調整。

接著無論哪個基準,都會套用 加月數加減天數固定付款日 做最後調整:

  • 設定 固定付款日(非 0)時,結果日期的「日」直接取固定付款日(例如固定 25,結果就是某年某月 25 日)。
  • 未設固定付款日時,結果=基準日 + 加月數(月)+ 加減天數(天)。

到期基準(到期日)決定「到期日怎麼算」

檢查 時,系統先算出收付款日期,再用 到期基準到期日。到期基準比收付基準多兩個選項,可直接掛在「收付款日」之後:

  1. 立帳日期(0)/交易日期(1)/發票日(2)/帳款截止日(3)/發票日次月初(4)/帳款日次月初(5):與上面收付基準同樣的六種算法。
  2. 應收付款日(6):直接以剛算出的 收付款日期 為基準。
  3. 應收付款日次月初(7):以 收付款日期 推到次月 1 日。

同樣套用 加月數1加減天數1固定到期日 做調整(固定到期日非 0 時,到期日的「日」直接取該值)。

實例(取自內建測試)

規則「月結 30 天」設 收付基準=帳款日次月初、到期基準=帳款日次月初 且 加減天數1=45,帳款起始日=0: 交易日 2018/11/16 → 收付款日期 2018/12/01 → 到期日 2019/01/15(次月 1 日再加 45 天)。

帳款起始日(檢查面板)的作用

帳款起始日 不是日期而是「每月帳款週期的起始日(幾號)」。它只在基準為 帳款截止日帳款日次月初 時參與計算:截止日=帳款起始日 − 1(為 0 或 1 時視為 31)。例如帳款起始日 26,截止日就是 25,交易日的「日」是否超過 25 決定要滾到下一期。

檢查(CheckDateCommand)按鈕

檢查 時(CheckDateExecute):

  1. 取目前畫面正在編輯的這筆收付條件規則(MasterData.FirstItem)。
  2. 連同檢查面板的四個日期,呼叫 PayTermDate.GetPaytermDate
  3. 把回傳的收付款日期、到期日填回唯讀的 收付款日期到期日 欄。

因為取的是「畫面上這筆」,所以不需先儲存就能驗算當前設定。

現金折扣與折扣天數

現金折扣折扣天數 為「提前付款折讓」的設定值,隨收付條件一併儲存,供帳款/付款作業在判斷折扣資格時引用;本表單只負責維護這兩個值,不在 檢查 面板參與收付款日期/到期日的回算。

報表來源(IPrintSource)

GetReports 提供一張報表:付款條件(編號 B050-1、抬頭「付款條件」、A4、TW),列印 SQLite 來源 rpt_b050_payterm_report1

規則來源:SP 載入後快取

其他單據在算收付款日期時,會透過 DARB_GETPAYTERM 一次載入全部收付條件並快取於記憶體(dicPayterm),之後依收付條件號查表計算。本表單修改規則後,引用端通常需重新載入才會反映最新規則。

常見問題

按了「檢查」,收付款日期/到期日卻空白?

回算需要對應基準的來源日期。若收付基準是「發票日」卻沒填 發票日期,或基準是「交易日期」卻沒填 進出貨日期,對應分支就算不出日期而留空。請依所選基準補上對應的測試日期。新增記錄時這些欄位也會被清空,記得重填。

帳款起始日要填日期還是數字?

填「日」(1~31 的數字,最長 2 碼),代表每月帳款週期從幾號開始,不是完整日期。它只在基準為「帳款截止日」「帳款日次月初」時才會影響計算;其他基準可不填。

設了固定付款日,加減天數好像沒作用?

固定付款日(或 固定到期日)非 0 時,結果日期的「日」直接取固定值,會略過「加減天數」對日的微調(仍會套用加月數)。若要用加減天數調整,請把固定日設為 0 或留空。

類別、收付基準、到期基準的選項代碼各代表什麼?

類別:C Customer(應收)、S Vendor(應付)、B Both。收付基準(0~5)與到期基準(0~7)的完整對照與算法請見欄位連動與附加功能

改了收付條件,既有帳款單據的到期日沒跟著變?

收付條件是「開單當下」依規則算好寫入單據的,屬主檔設定變更不會回頭重算已開立的單據;且引用端會快取規則,需重新載入。本表單只維護規則本身。

相關功能


需補截圖清單

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

  1. payterm-step1.png — 主檔三組規則(現金折扣/付款日/到期日)全貌
  2. payterm-step2.png — 類別/收付基準/到期基準下拉選單展開
  3. payterm-step3.png — 檢查項目面板輸入測試日期並按「檢查」後的回算結果