跳轉到

程式資訊

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

折讓批次輸入

功能簡介

「折讓批次輸入」讓會計人員針對單一客戶一次輸入多筆折讓(Sales Allowance)金額,系統會自動撈出該客戶尚未沖完的應收帳款(Rp_m),由使用者勾選要沖抵的帳款並指定沖帳金額,再一鍵產生一張借貸平衡的折讓沖帳傳票明細,最後以財務沖帳單(程式類別 ARALLOWANCE)的方式上傳寫回資料庫。

簡單說,這支表單把「開折讓」與「拿折讓去沖既有應收」兩個動作合在同一張批次作業裡完成,適合月底結帳時集中處理同一家客戶的多筆折讓。

程式代號與本頁檔名

本頁的 doc 檔名與 XAML 檔名沿用早期 CommprBatch 命名,但實際載入並使用的是 ARBatchInput(ProgramClass ARBATCHINPUT)這支已完成的程式;舊版 CommprBatch.xaml(標題 Notes 的聯絡單畫面)並未接上 ViewModel,不是本功能。內容一律以 ARBatchInputViewModel / ARBatchInputBll 的程式行為為準。

前置需求

  • 權限:Other → ARBATCHINPUT 折讓批次輸入 的執行(新增)權限。
  • 基礎資料:沖帳結果是否正確取決於下列資料——
資料 影響什麼
客戶主檔 Customer 欄位的搜尋與帶值(沒有客戶就無法撈帳款)
該客戶的應收帳款(Rp_m,財務單未沖完者) 中間「待沖帳款」清單;沒有未沖帳款就無折讓可沖
財務定義(LCLRpdef,財務類別 22 折讓 產生傳票時自動帶入的折讓正值科目應收(負值)科目
幣別與小數位設定 匯率換算本幣借貸的位數;本幣金額四捨五入

注意

折讓沖帳傳票的會計科目來自財務定義中財務類別 22(折讓)的正/負值科目設定。若該設定為空,產生出來的傳票科目會是空白、無法存檔,請先在財務定義維護折讓科目。

操作步驟

整張作業分成「上方表頭 → 中段待沖帳款 → 下方傳票明細」三段,由上而下完成:

  1. 在表頭 Customer 欄位搜尋並選定要開折讓的客戶。
    • 一選定客戶,系統立即撈出該客戶所有「原幣應收付 ≠ 沖帳原幣」(尚未沖完)的應收帳款,填入中段的待沖帳款清單。詳見欄位連動與附加功能
  2. 確認或調整表頭的交易日期 / 立帳日期 / 帳款期別 / 幣別 / 匯率(皆有預設值,見欄位說明)。
  3. 在上方折讓明細格線逐列填入要開立的折讓:每列輸入發票金額發票號碼發票日期
    • 表單預先配置了 1000 筆空白列(行號=申請人流水號 001、002…),直接在需要的列上填數字即可;發票金額為 0 的列在存檔時會自動忽略(標記為刪除)。
  4. 在中段待沖帳款清單,對要沖抵的每一筆帳款按 Chosen(勾選)按鈕,系統自動算出該筆可沖的沖帳金額(StrikeAmount)。可重複按 Chosen 取消勾選。
  5. 按下方的 Strike(產生折讓沖帳傳票)按鈕,系統依「折讓明細」與「已勾選帳款」自動產生下方傳票明細並結出借貸合計。
  6. 檢視下方傳票明細格線與右下角的原幣借/貸、本幣借/貸合計;必要時可手動微調可編輯的明細列(自動帶入的折讓正值列不可改)。
  7. 透過工具列(SqlEditTurn)的儲存(Save)完成上傳,或按取消(Cancel)放棄並關閉視窗。

小技巧

勾選帳款或修改明細後若合計看起來不對,再按一次 Strike 即可重新依目前的折讓明細與勾選結果重算整張傳票,不必逐列手改。

欄位說明

表頭

欄位 必填 說明 / 預設
Customer(客戶) 折讓對象客戶;選定後即帶出待沖帳款清單
TransactionPostDate(立帳日期) 預設今天
TransactionDate(交易日期) 預設今天
StatementPeriod(帳款期別) 預設當月(YYYYMM)
Currency(幣別) 預設本位幣
ForeignExchangeRate(匯率) 預設 1,必須大於 0

折讓明細(上方格線,逐列輸入)

欄位 必填 說明 / 預設
Line No(申請人) 系統預配流水號 001~1000,唯讀
Invoice Amount(發票金額) 此筆折讓金額;為 0 的列存檔時自動忽略
Invoice No(發票號碼) 對應的發票號碼
Invoice Date(發票日期) 發票日期

待沖帳款(中段格線)

欄位 可編輯 說明
Chosen (按鈕) 勾選/取消此筆帳款是否納入沖帳
StrikeAmount(沖帳金額) 系統算 勾選時自動帶值,可微調
InvoiceNo / DueAmount / PaidAmount / Currency … 來自應收帳款(Rp_m)的明細,多為唯讀參考欄

傳票明細(下方格線,由 Strike 產生)

欄位 可編輯 說明
Line No(行號) 自動流水號 001、002…
GLAccount Code(會計科目) 自動帶折讓正/負值科目;可改,改後自動帶出科目說明
Description(摘要) 自動組成 Allowance,發票號,客戶,日期
Currency / Foreign Exchange Rate 預設本位幣、匯率 1
Currency Debits / Currency Credits(原幣借/貸) 借貸互斥,輸入一邊另一邊自動歸 0
Debits / Credits(本幣借/貸) 系統算 =原幣 × 匯率(四捨五入至幣別小數位)

欄位連動與附加功能

這一節把「輸入某欄位/按某按鈕後系統會做什麼」整理出來,是本功能最關鍵的部分。

選定客戶 → 自動帶出待沖帳款

當你在 Customer 欄位選定客戶,系統會以該客戶代號呼叫 DARB_GETDATA4 查詢應收帳款主檔(Rp_m),條件為收付客廠號=該客戶原幣應收付 ≠ 沖帳原幣(也就是還沒沖完的帳款),把結果填入中段的待沖帳款(BalanceRp_m)清單。換客戶會整批重撈,舊清單清空。

Chosen(勾選帳款)→ 自動計算可沖金額

當你對某一筆待沖帳款按 Chosen

  1. 系統把該筆的選擇狀態在 YN 之間切換。
  2. 取消(切回 N)時,該筆沖帳金額直接歸 0。
  3. 勾選(切到 Y)時,系統會算出該筆「還能沖多少」並自動帶入沖帳金額,邏輯是取下列兩者的較小值:
    • 該帳款剩餘可沖金額=本幣應收付 − 已沖帳本幣。
    • 同一張發票的折讓剩餘額度=該發票在折讓明細的發票金額合計 − 該發票已勾選帳款的沖帳金額合計。
  4. 若算出來的沖帳金額為 0(無折讓額度可沖),系統會自動把該筆改回未勾選(N),避免產生 0 元沖帳列。

備註

沖帳金額是用「發票號碼」把折讓明細與待沖帳款配對的。要讓帳款沖得到,折讓明細列的發票號碼要與該應收帳款的發票號碼一致。

Strike(產生折讓沖帳傳票)→ 自動展開借貸明細

Strike 後系統清空舊的傳票明細並重新產生:

  1. 從財務定義取出折讓(財務類別 22)的正值科目(折讓)與負值科目(應收),作為傳票兩邊的會計科目。
  2. 折讓借方:折讓明細中每筆發票金額 > 0 的列,各產生一列借方,科目=折讓正值科目、原幣借方=發票金額,並標記 Doc2No 開頭為 +++(系統自動列,使用者不可改)。
  3. 應收貸方:每一筆已勾選(Y)的待沖帳款,各產生一列貸方,科目=應收負值科目、原幣貸方=該筆沖帳金額,並帶入對應的財務單號做關聯。
  4. 全部明細依發票號碼排序、再依原幣借方遞減排序,重新編行號,並自動補三列空白列供手動加列。
  5. 同步結算右下角的原幣借方 / 原幣貸方 / 本幣借方 / 本幣貸方四個合計。

傳票明細格線內的欄位連動

  • 輸入原幣借方(Currency Debits):同列的原幣貸方自動歸 0,本幣借方自動=原幣借方 × 匯率(依幣別小數位四捨五入)。
  • 輸入原幣貸方(Currency Credits):同列原幣借方自動歸 0,本幣貸方自動重算。
  • 修改匯率(Foreign Exchange Rate):同列本幣借、貸方一起依新匯率重算。
  • 修改會計科目(GLAccount Code):透過科目搜尋欄帶出對應的科目說明(AccountDescription)
  • 不可編輯的折讓列Doc2No 開頭為 +++ 的折讓正值借方列是系統自動產生的,進入儲存格編輯會被擋下(CanEdit 回傳 false)。

儲存(SqlEditTurn 工具列)→ 存檔前檢核

按工具列儲存時,系統依序檢核(任一不過就擋存並提示):

  1. 客戶未填 → 擋。
  2. 交易日期 / 立帳日期 / 帳款期別 / 幣別任一空白 → 擋。
  3. 匯率 ≤ 0 → 擋。
  4. 借貸不平衡(傳票本幣借方合計 ≠ 本幣貸方合計)→ 擋,提示借貸不平衡不可存檔。
  5. 折讓總額 ≠ 沖帳餘額(折讓明細發票金額合計 ≠ 所有 +++ 折讓借方合計)→ 擋,提示折讓金額與餘額不符。

檢核通過後,系統把折讓明細回填客戶、日期、期別、幣別、匯率,並算出原幣應收付(發票金額+稅額)與本幣應收付,財務類別設為 22 折讓、程式類別設為應收(R),以財務沖帳(ARALLOWANCE)方式上傳;發票金額為 0 的折讓列與科目空白的傳票列會在存檔時自動標記刪除而不寫入。

其他按鈕

  • Strike(產生折讓沖帳傳票):依折讓明細與已勾選帳款重新展開下方傳票明細(詳見上文)。
  • 工具列儲存(Save):通過存檔檢核後以財務沖帳(ARALLOWANCE)方式上傳。
  • 工具列取消(Cancel):放棄本次作業並關閉視窗(本表單設定 CloseWindowAfterCancel = true,按取消即關閉)。

沒有列印鈕

本表單的工具列採 SqlEditTurn 預設樣式,只有「儲存 / 取消 / 離開」三顆鈕,且離開鈕已被隱藏(BtnExitVisibility="Collapsed"),因此實際可見的是儲存取消兩顆;並未掛上列印功能(要列印需改用 SqlEditTurnPrint 樣式,本表單未使用)。

常見問題

選好客戶卻撈不到任何待沖帳款?

待沖帳款只列出「原幣應收付 ≠ 沖帳原幣」(尚未沖完)且收付客廠號等於該客戶的應收帳款。若該客戶名下沒有未沖完的應收帳款,清單就會是空的——請先確認該客戶確實有未結清的應收帳。

按了 Chosen 但沖帳金額一直是 0、勾選又被取消?

沖帳金額取「帳款剩餘可沖額」與「同發票折讓剩餘額度」的較小值。若你還沒在折讓明細填該發票的金額,或該發票的折讓額度已被其他帳款用光,可沖金額就是 0,系統會自動取消勾選。請先在折讓明細填好對應發票號碼發票金額再勾。

傳票科目是空白、存不了檔?

折讓沖帳傳票的科目來自財務定義中財務類別 22 折讓 的正值科目(折讓)與負值科目(應收)。若這兩個科目沒設定,產生的傳票就會缺科目導致借貸對不上或無法上傳,請先維護折讓科目後再 Strike

存檔時被擋,說借貸不平衡或折讓金額與餘額不符?

這是兩道存檔檢核:傳票本幣借方合計必須等於本幣貸方合計;且折讓明細的發票金額合計必須等於所有自動產生的折讓(+++)借方合計。常見原因是手改了明細又沒重按 Strike,或勾選的沖帳金額與折讓額度不一致。先重按一次 Strike 讓系統重算,再檢查兩邊合計。

下方傳票明細裡有一列改不動?

Doc2No 開頭為 +++ 的列是系統依折讓明細自動產生的折讓借方列,刻意鎖定不可編輯,以確保折讓總額與沖帳餘額一致。要調整折讓金額請改上方的折讓明細再按 Strike

相關功能


需補截圖清單

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

  1. commprbatch-step1.png — 整體三段版面(表頭+折讓明細+待沖帳款+傳票明細)
  2. commprbatch-step2.png — 選定客戶後帶出的待沖帳款清單與 Chosen 勾選
  3. commprbatch-step3.png — 按 Strike 後產生的折讓沖帳傳票明細與借貸合計