程式資訊
- 程式 ID:
Paymnt - 所屬子系統:I.帳款管理
- 狀態:stable
應付帳款(立帳)¶
功能簡介¶
「應付帳款」是 AR/AP 模組中建立應付立帳單的核心交易表單,由帳務/採購會計使用。它記錄「我們欠廠商多少錢」——可以手動建立一張應付(例如費用、退貨應付、損害賠償),也可以由 進貨單 透過 進貨轉入 把驗收完成的進貨直接帶成應付。每一張應付立帳之後,會接到下游三個動作:
表單上半部是主檔(廠商、日期、發票、金額、付款條件),下半部格線是明細(品號、數量、單價、各種未稅/含稅金額)。主檔金額(原幣應收付/本幣應收付)由系統依明細與稅額算出,不直接輸入。
與付款單的差別
本表單是「立帳」——產生一筆未沖的應付。實際付錢、沖掉這筆應付是在 付款單 做的。本頁的沖帳原幣/沖帳本幣/未沖金額只是把付款單沖帳的結果顯示出來,不能在這裡直接付款。
前置需求¶
- 權限:I.AR/AP →
I-010 應付帳款對應的新增/修改/刪除/列印權限;轉傳票、進貨轉入、暫估轉AP、特殊修改另有各自的延伸功能權限(對應 VFP 的「可其他 1~6」)。 - 基礎資料:欄位帶值與金額計算依賴下列主檔,缺資料會造成欄位空白或金額為 0——
| 資料 | 影響什麼 |
|---|---|
| 廠商資料(廠商主檔) | 輸入付款廠商後自動帶幣別/帳款起始日/關係人/統一編號/付款條件/付款方式;查無代號會跳「查無此廠商代號」 |
| 付款條件(PAYTERM) | 帶入後依帳款起始日/交易日期/發票日期推算收付款日與到期日 |
| 稅別(TAXTYPE) | 提供稅率,存檔時明細稅額重算靠它 |
| 幣別與匯率 | 非本位幣時 TsCurrency 控件依交易日期自動帶當日賣出匯率;匯率錯誤會擋存檔 |
| 品號主檔(INVENTTL) | 明細輸入品號後帶品名/單位/科目代號,並判定交易別碼 |
| 財務單據別(RPDEF) | 財務類別(單據別前置碼,如退貨應付、折讓)控制檢核與自動算稅的開關 |
操作步驟¶
新增一張應付立帳¶
- 按工具列
新增。系統帶出一張新主檔,預設值見欄位說明:幣別=本位幣、匯率=1、帳款期別=本年月、進銷分類=1.內採、立帳日期/交易日期=今天。 - 選財務類別(必填,限應付類單據別,前置碼
P)。 - 輸入付款廠商代號(必填)。輸入後系統自動帶幣別、帳款起始日、關係人、統一編號、付款條件、付款方式,並把同代號補進廠商資料欄。詳見欄位連動與附加功能。
- 視需要調整立帳日期/交易日期(兩者連動帳款期別)。
- 填發票號碼/發票日期/統一編號/稅別/發票金額/稅額。發票小計=發票金額+稅額,由系統即時顯示(稅額需自行輸入,主檔不會自動算稅;明細存檔時才依稅別重算)。
- 在下方明細格線逐列輸入品號/數量/單價/代工單價/其他金額,系統即時算出該列原幣未稅/本幣未稅。
- 確認主檔原幣應收付/本幣應收付正確後,按
儲存。存檔檢核見常見問題。
修改¶
- 定位到要改的單據,按
修改。 - 改完按
儲存。 - 下列情形系統會擋修改(對應 VFP
allowedit):轉入備註含「舊資料」、已沖帳(沖帳原幣≠0)、已轉傳票(有傳票號碼)、財務類別為55(成本分攤/進貨費用,須改去刪來源進貨單)、由別處轉入(轉入備註有值)。
刪除¶
- 定位到要刪的單據,按
刪除,確認後送出。 - 刪除同樣受上述「擋修改」規則限制(已沖帳、已轉傳票、轉入資料不可刪)。
列印¶
- 定位到單據後按
列印,開啟 應付帳款列印 條件頁。 - 系統會把目前單據的財務單號帶為列印起訖、帳款期別帶入、日期預設為當月月初到今天、廠商起訖為全部。可再調整條件後輸出。
進貨轉入(由進貨單帶成應付)¶
- 按工具列
進貨轉入,開啟「進貨轉 AP」視窗(PAYPDT)。 - 設定條件、勾選要轉的進貨/加工驗收資料並執行轉入。
- 視窗關閉後若成功產生應付,本表單會自動定位到新建的那張單。
暫估轉AP(暫估沖回轉應付)¶
- 按工具列
暫估轉AP,開啟暫估轉 AP 視窗(PAYPDT2,預設查詢近 30 天)。 - 選取暫估資料轉成正式應付,完成後同樣自動定位到新單。
轉傳票¶
- 定位到要過帳的應付,按
轉傳票,開啟「轉總帳」視窗。 - 系統以本單財務單號建立應付轉傳票的依據(含回沖 / 反轉判斷),執行後到 總帳傳票 產生傳票並回填傳票號碼。
- 完成後本表單自動重新整理。
小技巧
已轉傳票的單據,傳票號碼欄是可點的連結(VFP 雙擊傳票號碼可跳到對應傳票)。要修改已轉傳票的應付,必須先在總帳端反轉該傳票。
特殊修改¶
- 按
特殊修改(對應 VFPelse4click,VMExtendedFunction4→AdeViewModel.SpecialEdit)進入特殊修改模式,可在不重新整單的情況下修改部分平常鎖定的主檔欄位(標記CanSpecialEdit的欄位,如付款廠商、帳款期別、發票號碼、發票日期、付款日、到期日、備註)。 - 此模式下系統會把
NeedUpdateCustVendCode關掉,避免改廠商時又覆蓋客廠部代號。明細格線的金額欄仍為唯讀(ForceReadOnly),特殊修改不會解鎖。
欄位說明¶
主檔(左區:單據與廠商)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 財務單號 | 系統 | 唯一鍵,存檔後由系統編號(新增時顯示 +++),唯讀 |
| 財務類別 | ✔ | 應付單據別,前置碼固定 P;空白擋存檔 |
| 進銷分類 | — | 1.內採/2.外採/3.預付費用,新增預設 1.內採 |
| 付款廠商 | ✔ | 收付對象廠商代號;空白擋存檔。輸入後帶一連串廠商資訊(見下節) |
| 廠商資料 | — | 立帳對象廠商(客廠部代號);通常與付款廠商相同 |
| 立帳日期 | ✔ | 預設今天;連動帳款期別 |
| 交易日期 | — | 預設今天;TsCurrency 以此日期查匯率;連動帳款期別 |
| 帳款期別 | ✔ | YYYY/MM,預設本年月;空白擋存檔 |
| 帳款起始日 | — | 計算到期日用的「起算日」(日),由廠商帶入 |
| 幣別 | — | 新增預設本位幣;改幣別會自動帶匯率並連動明細 |
| 匯率 | — | 新增預設 1;非本位幣由 TsCurrency 自動帶;≤0 擋存檔 |
| 進貨單號 | — | 來源進貨/相關單號 |
| 參考單號 | — | 自由輸入參考單號 |
| 關係人 | — | 是/否,由廠商帶入(影響關係人交易揭露) |
主檔(右區:發票、付款條件與金額)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 發票號碼 | — | 最長 20 碼,套用 APInvoiceValidate 發票格式驗證 |
| 發票日期 | — | 發票開立日 |
| 統一編號 | — | 由廠商帶入,可改 |
| 稅別 | 視單別 | 存檔時明細算稅用的稅率來源;財務類別非 5B/66/67 時空白擋存檔 |
| 發票金額 | — | 發票金額,直接輸入(主檔不自動算稅額) |
| 稅額 | — | 直接輸入;存檔時部分單別會被重算或回寫 |
| 發票小計 | 系統 | =發票金額+稅額,唯讀計算欄 |
| 付款方式碼 | — | 由廠商帶入,可改 |
| 付款日 | — | 由付款條件推算 |
| 付款條件 | — | 由廠商帶入;帶入後推算收付款日與到期日 |
| 到期日 | — | 由付款條件+起始日/日期推算 |
| 備註 | — | 多行,最長 999 字 |
| 轉入備註 | 系統 | 由轉入功能寫入,唯讀(系統色) |
| 原幣應收付/本幣應收付 | 系統 | 應付金額,由明細/稅額算出,唯讀(系統色) |
| 沖帳原幣/沖帳本幣 | 系統 | 已被付款單沖掉的金額,唯讀(系統色) |
| 未沖金額 | 系統 | =本幣應收付-沖帳本幣,唯讀(系統色) |
明細格線¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| 序號 | — | 自動行號 |
| 倉單號 / 單號 / 交易別碼 / 單號pkid | — | 來源單據資訊,唯讀 |
| 品號 | ✔ | 帶品名/單位/科目代號/交易別碼 |
| 摘要(品名) | — | 由品號帶,唯讀 |
| 廠商品號 | ✔ | 客廠品號 |
| 單位 | ✔(新增) | 僅新增/修改時可改 |
| 數量/單價/代工單價/其他金額 | ✔ | 任一變動即重算未稅金額 |
| 原幣未稅/本幣未稅/原幣含稅/本幣含稅 | — | 系統算出,恆唯讀(ForceReadOnly,特殊修改不解鎖) |
| 微調本幣含稅 | — | 尾差微調後的本幣含稅,唯讀 |
| 摘要 | ✔ | 明細摘要文字 |
欄位連動與附加功能¶
這一節列出「輸入某欄位/按某按鈕後系統會做什麼」,全部來自實際程式碼(C# 與 VFP paymnt)。
新增時的預設值¶
當你按 新增,系統(AfterAddNew + Source 建構式)會:
- 把幣別設成本位幣、匯率設成
1(對應 VFPaddagain:幣別=指定幣別、匯率=1)。 - 把帳款期別設成「本年/本月」(
YYYY/MM)。 - 把進銷分類設成
1.內採(若空白)。 - 把財務單號顯示為
+++、立帳日期/交易日期設成今天、發票金額/稅額歸 0。
輸入「付款廠商」後(最重要的連動)¶
當你在付款廠商輸入代號並離開欄位,系統執行 SetTransactionCustVendDept:
- 以代號查廠商主檔,帶出廠商簡稱填到旁邊唯讀欄。
- 自動帶入廠商的統一編號、帳款起始日、關係人、付款條件、付款方式碼。
- 廠商有設幣別時帶入幣別(
TsCurrency控件偵測到幣別變更會自動依交易日期帶當日匯率);廠商沒設幣別則維持目前的本位幣。 - 帶付款條件時刻意排在帳款起始日之後設定,
SetDueDate才會用新的起始日推算收付款日/到期日。 - 若廠商資料(客廠部代號)為空,會把付款廠商代號一併補進去(對應 VFP
sqlnm_sp1.代號.LostFocus:收付客廠號空白時補成客廠部代號)。
查無廠商
VFP 原版在查無廠商代號時會跳「查無此廠商代號」並清掉幣別與付款條件。新版以廠商主檔查詢為準,查不到就不帶值。
立帳日期 / 交易日期 → 帳款期別¶
- 輸入立帳日期或交易日期且長度足夠時,系統把帳款期別設為日期的前 7 碼(
YYYY/MM),對應 VFP立帳日期.LostFocus。 - 交易日期 同時是
TsCurrency查匯率的基準日。
幣別 / 匯率 → 明細連動¶
- 改幣別:透過 listener,主檔幣別變更會把每一列明細的幣別同步成主檔幣別(VFP
幣別.LostFocus重帶匯率,新版交給TsCurrency)。 - 改匯率:每一列明細呼叫
CalculateAmount(主檔幣別, 主檔匯率),依新匯率重算該列本幣金額。
發票金額 / 稅額 / 發票小計¶
- 發票金額 與 稅額 都是主檔可直接輸入的欄位;新版主檔不會在離開發票金額欄時自動算稅額(與 VFP
發票金額.LostFocus不同),需自行填入稅額。 - 發票小計 是唯讀計算欄,永遠=發票金額+稅額,隨兩者即時更新。
- 退貨應付/DM 折讓/損害賠償(財務類別
5B/66/67)與59:存檔時會把發票金額+稅額回寫原幣應收付/本幣應收付(PaymntSave.HandleDataBeforeEndEdit,對應 VFP稅額.Valid與allowsave)。 - 一般單別的稅額分攤則在存檔時由
TaxCalculator依明細與稅別重算(見存檔時的處理)。
付款條件 → 收付款日 / 到期日¶
- 帶入或改付款條件後,
SetDueDate依帳款起始日、交易日期、發票日期用付款條件公式(PayTermDate)算出到期日與收付款日(對應 VFP收付條件.代號.LostFocus的U_PAYTERMDATE)。
明細:品號 → 帶值¶
當你在明細輸入品號:
- 帶品名/單位/科目代號(對應 VFP
sql_mno1.Valid由SK_INVENTTL帶)。 - 依品號的庫存管制設定決定交易別碼(管制品
RA,非管制品為RA-)。
明細:數量 / 單價 / 代工單價 / 其他金額 → 重算金額¶
- 上述任一欄變動,呼叫
TaxCalculator.SetDetail,即時重算該列原幣未稅/本幣未稅(對應 VFP 各欄LostFocus呼叫計算未稅:原幣未稅=數量×(單價+代工單價)+其他金額,本幣=原幣×匯率)。
存檔時的處理(allowsave)¶
按 儲存 時,系統(對應 VFP allowsave,實作於 PaymntSave)會:
- 檢核必填:財務類別/交易日期/立帳日期/帳款期別/廠商資料(客廠部代號)/幣別任一空白即擋;稅別必填(財務類別非
5B/66/67時);匯率>0。 - 修改既有單據時,財務類別不可改成與單號前置碼不符的別(會擋)。
- 程式類別 設為
P;收付客廠號 空白時補成客廠部代號。 - 若轉入備註空白且財務類別非
5B/59/66/67,依明細自動重算稅額並把含稅金額分攤回主檔(TaxCalculator,不會跳「是否計算」確認框)。 - 財務類別
5B/66/67(退貨應付/DM 折讓/損害賠償)與59:原幣應收付/本幣應收付直接由發票金額+稅額帶出。 - 把明細中「原幣未稅=0 且 數量=0」的列標記刪除。
- 透過
SetDueAmount把本幣應收付重算成原幣應收付×匯率。
工具列延伸功能對照¶
| 按鈕 | 程式對應 | 行為 |
|---|---|---|
進貨轉入 |
ExtendedFunction1 → PaypdtViewModel | 開「進貨轉 AP」視窗,把進貨/加工驗收轉成應付,成功後定位新單 |
暫估轉AP |
ExtendedFunction2 → Paypdt2ViewModel | 開暫估轉 AP 視窗(預設近 30 天),把暫估轉正式應付 |
轉傳票 |
ExtendedFunction3 → ApToGl / ToGeneralLedger | 把本單轉總帳傳票(支援回沖判斷),回填傳票號碼 |
特殊修改 |
ExtendedFunction4 → SpecialEdit | 解鎖部分平常鎖定的主檔欄位(標 CanSpecialEdit 者);明細金額欄仍唯讀 |
尚未提供的延伸功能
VFP 原版工具列另有「發票統計」(else5click,叫 RP_S 報表)與「更新進出貨發票號碼、日期」(else6click,叫 _CHANGENO)。新版 ExtendedFunction5(單筆直接轉傳票)目前在程式中被註解保留、尚未啟用,請改用 轉傳票。這些功能規劃中,畫面上若未出現屬正常。
常見問題¶
輸入付款廠商後,幣別/到期日沒有自動帶?
這些值來自廠商主檔。若廠商沒設幣別,系統會保留目前的本位幣不動;到期日要等付款條件帶入(也來自廠商)後才會由 SetDueDate 推算。請先確認該廠商在廠商主檔有維護幣別與收付條件。
稅額一直是 0?
本表單主檔的稅額是手動輸入欄,不會在輸入發票金額時自動帶出,請直接填入正確稅額。明細層的稅額(原幣/本幣含稅)則在存檔時由系統依稅別重算,請確認該稅別在稅別主檔有設稅率。
原幣應收付/本幣應收付是 0 或不對?
主檔金額由明細與稅額算出,不是手動輸入。存檔時系統會依明細自動重算(財務類別非 5B/59/66/67 且轉入備註空白時);請確認明細有正確的數量、單價與稅別。本幣金額=原幣×匯率,匯率錯誤也會讓本幣不對。退貨應付/DM 折讓/損害賠償(5B/66/67)的金額則直接取發票金額+稅額。
為什麼這張單不能修改或刪除?
符合下列任一情形就會被擋(對應 VFP allowedit):已沖帳(沖帳原幣≠0)、已轉傳票(有傳票號碼)、轉入備註含「舊資料」、財務類別為 55(成本分攤/進貨費用,要去刪對應的來源進貨單)、或由別處轉入(轉入備註有值)。已轉傳票者要先在總帳反轉傳票。
明細的原幣未稅/本幣含稅欄改不動?
這些金額欄是系統計算欄,永遠唯讀,無法手動編輯(含 特殊修改 模式)。要改金額請修改數量/單價/代工單價/其他金額,系統會即時重算未稅,存檔時再連動含稅與主檔合計。
匯率為什麼擋我存檔?
存檔檢核要求匯率>0。新增本位幣單據時匯率預設 1;換成外幣時若 TsCurrency 沒帶到匯率(例如該幣別當日無匯率資料),請手動補一個正確匯率再存。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/I-ARAP/images/):
paymnt-step1.png— 新增應付的主檔上半部(廠商、日期、發票、付款條件)paymnt-step2.png— 明細格線(品號、數量、單價、未稅/含稅金額)paymnt-step3.png—進貨轉入視窗(PAYPDT)paymnt-step4.png—轉傳票轉總帳視窗