程式資訊
- 程式 ID:
PAYAPPLY - 所屬子系統:I.帳款管理
- 狀態:stable
費用申請¶
功能簡介¶
「費用申請」是應收應付(I 模組)的費用立帳單據,供各部門申請日常費用、預付款、攤提與零用金的支付。一張費用申請單由主檔(廠商、幣別、金額、付款條件、申請人/部門)與明細(逐筆費用:費用歸屬部門、科目、費用群組、稅別、發票、金額)組成。送出後可走工作流程簽核、快速審核,並在確認後以 轉傳票 過帳到總帳傳票。它是費用類應付帳款進入帳務的起點,常見使用者為各部門申請人與會計人員。
主檔上方以進銷分類(費用支出/各項攤提/零用金 A/零用金 B/直接沖帳…)決定這張單的性質與驗證寬鬆度;金額相關的原幣應收付/本幣應收付/沖帳原幣/沖帳本幣/稅額全部由明細加總後系統自動算出,使用者不直接輸入。
與其他應收付單據的關係
費用申請與付款單 (PAYMNT)、收款單 (RECEIVE) 共用同一組 rp_m / rp_d 資料結構與 staging 表(各表單映射到自己的本機表,互不踩線)。差別在於本表以「費用申請」的欄位連動(申請日期帶使用期間、明細以摘要判刪列)為主。
前置需求¶
- 權限:I.應收應付 →
I-030 費用申請的瀏覽/修改權限。 - 基礎資料:下列主檔需先維護,否則欄位帶不出值或存檔被擋——
| 資料 | 影響什麼 |
|---|---|
| 廠商主檔(客廠資料) | 輸入廠商代號時自動帶統一編號/帳款起始日/幣別/付款條件號/付款方式/受款人 |
| 員工/人事主檔 | 申請人帶出申請人姓名/申請部門/部門簡稱 |
| 部門主檔 | 申請部門、明細費用歸屬(部門) 的簡稱 |
| 付款條件主檔 | 付款條件帶出到期日/付款日 |
| 稅別(稅率)主檔 | 明細稅別決定稅率,連動稅額/含稅金額計算 |
| 科目主檔(會計科目) | 明細科目代號帶科目名稱;轉傳票 過帳依此 |
| 費用群組主檔 | 明細費用群組帶群組說明 |
| 匯率資料 | 外幣單據的匯率由 幣別 控件依交易日期自動帶出 |
| 財務類別(RPDEF) | 財務類別必填,決定金額試算方式(含稅/未稅口徑) |
操作步驟¶
新增一張費用申請單¶
- 從主選單開啟 I.應收應付 → 費用申請。
- 點工具列
新增。系統自動帶出多個預設值(見欄位連動與附加功能):進銷分類沿用上一筆(無則「費用支出」)、申請人/申請部門帶目前登入者、申請日期/立帳日期為今天、使用日期/使用截止日為當月起訖、帳款期別為當月、月結廠商=Y、幣別為本位幣。 - 在主檔填寫:
- 財務類別(必填)。
- 廠商代號:輸入後自動帶統編、付款條件、幣別、受款人等。
- 視需要調整付款條件/付款日/到期日/幣別/匯率。
- 在下方明細格線逐列輸入費用:
- 費用歸屬(部門)、科目代號、費用群組、摘要(用途及摘要)。
- 稅別:自下拉選擇,決定稅率。
- 原幣未稅:輸入金額後系統即時算出原幣稅額/原幣含稅/本幣未稅/本幣含稅,並把主檔合計同步加總。
- 視需要填發票號碼/發票日期/統一編號/單據張數/廠商資料/採購單號/品號。
- 必要時按
計算稅額(依未稅算稅)或反推未稅(依含稅反推未稅)整批重算明細稅額。 -
點工具列
儲存。小技巧
可用 Ctrl+S 快速儲存。
修改/刪除¶
- 用工具列上一筆/下一筆或
查詢定位到要處理的單。 - 按
修改進入編輯,調整主檔或明細後儲存。 - 刪除整列明細:把該列摘要清空(本表以摘要是否空白判定刪列,見下節)。
列印¶
- 在要列印的單上按工具列
列印,開啟列印條件頁。 - 系統預設帶入目前這張單的起訖財務單號、部門/廠商全範圍、起日為當月 1 日、迄日為今天與帳款期別。可再調整範圍。
- 確認後輸出(對應報表程式
PAYAPPLY_P / SCX_ARPP)。
轉傳票(過帳到總帳)¶
- 在已確認的單上按工具列
轉傳票。 - 系統帶出該單的財務單號(沖銷單號)/廠商代號/立帳日期,開啟費用申請轉傳票視窗。
- 設定傳票過帳日期後按轉入,產生對應的總帳傳票;如需回退可在該視窗按復原(Undo),移除已轉入的傳票資料。
簽核與快速審核¶
- 按工具列
工作流程進入「費用申請單流程」簽核。 - 按
快速審核對單據做即時審核。
附件(CSV 上傳)規劃中
程式內保留了把費用明細「匯入 CSV 並轉成附件」的機制(山隆加油站對帳檔),但目前匯入按鈕與匯入解析在新版皆為停用狀態(程式碼整段註解),實務上尚未提供。請改用手動輸入明細。
欄位說明¶
主檔欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 財務單號 | — | 系統自動產生,唯讀 |
| 財務類別 | ✔ | 費用立帳的財務類別(RPDEF);空白會擋存檔 |
| 進銷分類 | ✔ | 0.預付設備/1.費用支出/2.代付款/3.各項攤提/4.零用金A/5.零用金B/6.直接沖帳;新增時沿用上一筆,無則「費用支出」 |
| 申請日期 | ✔ | yyyy/MM/dd;預設今天;空白會擋存檔 |
| 立帳日期 | — | yyyy/MM/dd;預設今天 |
| 申請人 | ✔ | 預設目前登入者;帶出申請人姓名 |
| 申請部門 | ✔ | 由申請人帶出,可改;空白會擋存檔 |
| 帳款期別 | — | yyyy/MM;由申請日期/立帳日期前 7 碼帶入,預設當月 |
| 使用日期~使用截止日 | — | 預設當月 1 日~當月底 |
| 廠商代號 | 視分類 | 零用金 A/B 以外的分類必填;帶出統編、條件、幣別、受款人等 |
| 統一編號 | — | 由廠商帶入,可改;存檔時依長度檢核(見下節) |
| 帳款起始日 | — | 由廠商帶入,供算到期日 |
| 受款人 | — | 由廠商簡稱帶入,可改 |
| 月結廠商 | — | 唯讀,預設 Y;存檔時空白補 Y |
| 付款方式 | — | 由廠商帶入(C203 代碼) |
| 付款條件 | — | 由廠商帶入;變更後重算到期日/付款日 |
| 付款日 | — | yyyy/MM/dd;由付款條件算出,可改;存檔時空白補到期日 |
| 到期日 | ✔ | yyyy/MM/dd;由付款條件算出;空白會擋存檔 |
| 幣別 | — | 預設本位幣;由廠商或手動指定 |
| 匯率 | ✔ | 由幣別+交易日期自動帶;必須大於 0,否則擋存檔 |
| 事由 / 備註 | — | 自由文字(備註亦作「預付費用名稱」) |
| 原幣應收付/本幣應收付/沖帳原幣/沖帳本幣/稅額 | — | 唯讀,由明細加總自動算出 |
明細欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | — | 系統產生,唯讀 |
| 費用歸屬(部門) | — | 該筆費用歸屬部門 |
| 分類索引1 | — | 依「索引別=1」查分類索引 |
| 科目代號 | — | 帶出科目名稱;供轉傳票 |
| 費用群組 | — | 帶出群組說明 |
| 摘要 | ✔(判刪列) | 用途及摘要;本表以摘要空白判定刪列 |
| 稅別 | — | 下拉選擇;決定稅率 |
| 單據張數 | 視稅別 | 稅別為 T251/T261/T271 時,財務類別 83 須輸入張數 |
| 統一編號 | — | 存檔時檢核(A 開頭豁免、8 碼驗檢查碼、10 碼放行) |
| 發票號碼/發票日期 | — | 財務類別 83 會檢核發票號碼格式 |
| 原幣未稅 | ✔(輸入金額) | 使用者輸入;連動算稅額、含稅與主檔合計 |
| 原幣稅額/原幣含稅/本幣未稅/本幣含稅 | — | 唯讀,由原幣未稅+稅別+匯率算出 |
| 廠商資料/廠商簡稱 | — | 該列對應廠商 |
| 採購單號 | — | 對應「缺件說明」欄 |
| 品號/品名 | — | 品號帶品名;MISC 時品名可手填 |
欄位連動與附加功能¶
本節整理「輸入某欄位或按某按鈕後系統做什麼」,全部來自實際程式碼(
Payapply_kcViewModel、Twork_arp_vw_rp_mSource、Twork_arp_vw_rp_dSource、PayapplySave及 VFPpayapply_kc)。
新增單據時的預設值(按 新增)¶
當你按 新增,系統會:
- 進銷分類沿用你「上一筆瀏覽到的單」的分類;若沒有上一筆,預設為「1.費用支出」(對應 VFP
addagain)。 - 申請人帶目前登入者,並帶出申請人姓名;同時由人事資料切出申請部門/部門簡稱。
- 申請日期=今天;交易日期同步設成申請日期(作為匯率查詢日與付款條件計算的基準日)。
- 使用日期=當月 1 日、使用截止日=當月最後一天、帳款期別=當月(
yyyy/MM)。 - 月結廠商=Y。
- 幣別若空白帶本位幣。
- 明細列的內部
pkid重新編號。
主檔欄位連動¶
當你輸入廠商代號(收付客廠號Binding → SetTransactionCustVendDept),系統會一次帶出:
- 受款人/客廠簡稱=廠商簡稱。
- 統一編號/帳款起始日/關係人=廠商主檔值。
- 幣別=廠商幣別(廠商無幣別則維持原本位幣);幣別一變,
幣別控件會依交易日期自動帶匯率。 - 付款條件號=廠商收付條件(設定在帳款起始日之後,確保用新起始日算到期日);連帶重算到期日/付款日。
- 付款方式碼=廠商付款方式。
當你輸入申請日期(申請日期Binding),系統會:
- 把交易日期同步成申請日期(VFP 中付款條件與匯率皆以申請日期為基準)。
- 重設帳款期別=申請日期前 7 碼;使用日期/使用截止日若為空,補成當月 1 日~當月底(
SetUsagePeriod)。
當你輸入立帳日期(立帳日期PayapplyBinding):同樣觸發 SetUsagePeriod,帶帳款期別與使用期間。
當你修改申請部門/申請人:申請人改變會重帶姓名與部門;部門以 DeptSearch 帶簡稱。
當你修改付款條件(收付條件號Binding → SetDueDate):依付款條件主檔重新計算到期日與付款日,並帶條件說明。
當你修改幣別:透過 WeakEvent 監聽,主檔幣別一變,所有明細列的幣別會同步成主檔幣別。
當你修改匯率:透過 WeakEvent 監聽,主檔匯率一變,每一列明細呼叫 CalculateTax 用新匯率重算本幣金額與稅額。
明細欄位連動¶
當你輸入明細「原幣未稅」(原幣未稅PayapplyBinding),系統會:
- 先把這列舊金額(原幣未稅/含稅/稅額/本幣未稅/本幣含稅/稅額)從主檔合計扣回。
- 寫入新的原幣未稅,呼叫
CalculateTax(幣別, 匯率):- 本幣未稅=原幣未稅 × 匯率(依本幣小數位四捨五入)。
- 稅率 > 0 時:稅額=本幣未稅 × 稅率;原幣稅額=稅額 ÷ 匯率;原幣含稅=原幣未稅+原幣稅額。
- 稅率=0 時:稅額=0、原幣含稅=原幣未稅。
- 本幣含稅=本幣未稅+稅額。
- 把這列新金額加回主檔的總原幣未稅/原幣應收付/原幣稅額/總本幣未稅/本幣應收付/稅額——所以主檔上方幾個金額欄都是即時加總、唯讀。
當你選擇明細「稅別」(TaxItem):自動把該列稅率設成稅別對應稅率(稅率 ÷ 100),供後續稅額計算。
當你輸入明細「品號」(品號PayapplyBinding):
- 自動帶品名(
SetISKU)。 - 品號為
MISC時,品名變成可編輯(讓你手填雜項名稱);其他品號品名唯讀。 - 若單位空白,補「個」。
逐列補值(接續輸入省力):在編輯狀態下逐列輸入時,系統記住上一列的發票號碼/發票日期/品號/稅別/日期/單位,新一列這些欄若留空,會自動沿用上一列的值(VM 的 GetRowData/SetRowData,於切換明細列時觸發)。
工具列按鈕與延伸功能¶
計算稅額按鈕:對全部明細以主檔幣別/匯率呼叫CalculateTax(依未稅算稅)。僅在新增/修改狀態可用。反推未稅按鈕:對全部明細呼叫反推未稅——把輸入值視為含稅,反推未稅與稅額(本幣含稅 ÷(1+稅率),對齊 VFP 含稅反推口徑)。僅在新增/修改狀態可用。轉傳票(延伸功能 1 / VFP CMDELSE3):帶出本單財務單號、廠商代號、立帳日期,開啟費用申請轉傳票視窗,設定過帳日期後產生總帳傳票;可在該視窗復原已轉入的傳票。轉完會重整導覽資料。特殊修改(延伸功能 2 / VFP CMDELSE4):進入SpecialEdit對已存檔資料做受控的特殊欄位修改。工作流程(VFP CMDELSE1):進入「費用申請單流程」簽核。快速審核(VFP CMDELSE2):對單據做即時審核。列印:開啟PayapplyPrintViewModel,預設帶本單財務單號、當月起訖日與帳款期別。
存檔時的檢核與自動處理(PayapplySave)¶
按 儲存 時,系統依序檢查(任一不過就擋存並提示):
- 財務類別不可空白。
- 申請日期不可空白。
- 申請部門不可空白。
- 到期日不可空白。
- 匯率必須大於 0。
- 進銷分類非零用金 A/B 時,廠商代號必填;是零用金 A/B 時,自動把客廠部代號設成收付客廠號。
- 主檔統一編號:非
00000000時——8 碼走統編檢查碼驗證、10 碼視為身分證放行、其餘長度視為錯誤。 - 明細統一編號:
A開頭(人事轉入)豁免、8 碼驗檢查碼、10 碼放行、其餘長度錯誤。 - 財務類別=83 且該明細有金額時:非台電/台水廠商會檢核發票號碼格式;稅別為 T251/T261/T271 時單據張數需大於 0,否則張數歸 0。
存檔前(HandleDataBeforeEndEdit)系統還會自動:
- 付款日空白補成到期日;月結廠商空白補 Y。
- 把「原幣未稅=0 且稅額=0 且摘要空白」的明細列標記為刪除。
- 財務類別=84 時走
TaxCalculator整批重算;其他類別則逐列重算本幣未稅/稅額並把主檔的原幣稅額/稅額/原幣應收付/本幣應收付/總原幣未稅/總本幣未稅同步成明細加總;發票金額為 0 時補成本幣應收付(84 補總本幣未稅)。 - 把客廠部代號設成收付客廠號。
Share/附件匯入目前停用
VM 內保留 ShareCommand(從外部來源帶費用明細)與 ImportCommand(CSV 匯入並上傳成附件)的程式骨架,但對應的 XAML 按鈕與 PayapplyBll.Import 解析皆為註解狀態,目前不可用。
常見問題¶
明細輸入金額後,主檔的「本幣應收付/稅額」沒變?
這些是由明細加總而來的唯讀欄。請確認金額是輸入在明細的原幣未稅欄(輸入它才會觸發稅額計算與主檔加總)。若改了匯率,主檔會逐列重算;若直接改了稅別卻沒重算,可按 計算稅額 整批重算。
金額算出來稅額是 0?
稅額取決於明細稅別對應的稅率。若稅別的稅率為 0(免稅/零稅率),稅額本來就是 0;原幣含稅會等於原幣未稅。請確認稅別主檔有設定正確稅率。
存檔時被擋,提示要輸入廠商/到期日/匯率?
存檔檢核要求:財務類別/申請日期/申請部門/到期日不可空白、匯率須大於 0;且進銷分類非零用金 A/B 時廠商代號必填。到期日/付款日是由付款條件算出的,沒帶廠商或沒設付款條件就可能空白。匯率由幣別+交易日期自動帶,若帶不到(缺匯率資料)會是 0 而擋存。
統一編號存檔報錯?
主檔統編非 00000000 時:8 碼會驗統編檢查碼、10 碼當身分證放行、其他長度視為錯誤。明細統編 A 開頭(人事轉入)會豁免。請確認輸入長度正確、檢查碼無誤。
刪不掉某一列明細?
本表以摘要是否空白判定刪列——把該列的摘要清空即會在存檔時被標記刪除(同時要求原幣未稅與稅額皆為 0)。若摘要還有字,系統會視為有效列保留。
新增時進銷分類為什麼自動帶「費用支出」或上一筆的值?
這是刻意的沿用設計(對應 VFP addagain):系統記住你上一筆瀏覽到的進銷分類供新增沿用,沒有上一筆時預設「1.費用支出」。需要其他分類時直接改下拉即可。
按了「修改」卻被擋住、不得修改?
符合下列任一狀態的單據會被擋下(對應 VFP allowedit):已沖帳(沖帳原幣不為 0,已被付款沖過)、已轉資料(相關單號有值)、已轉傳票(傳票號碼有值,需先到傳票端還原)、由別處轉入(轉入備註有值)。請先解除對應狀態(例如先反沖、先還原傳票)再修改。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/I-ARAP/images/):
payapply-step1.png— 費用申請主畫面(主檔+明細格線全貌)payapply-step2.png— 明細輸入原幣未稅後系統算出稅額/含稅與主檔合計payapply-step3.png—轉傳票視窗(過帳日期與轉入/復原)payapply-step4.png— 列印條件頁(預設帶本單財務單號與當月起訖)