1. 基本情報

焦点質問: 設備投資・借入マスタからどのようなINV(資産計上・減価償却・返済・利息)を自動生成するか?

項目内容
関数名generateCapexInvoices(targetOverride, _silent)
ファイル401_bat_rpa.js
入力24_bud_capex_loan
出力32_wrk_invoice + 31_wrk_order
メニュー「⚙️ 定期RPA起票 > 🏭 CAPEX(設備投資)」

2. 前提条件・依存関係

項目内容
SSOT32_wrk_invoice(起票先)、31_wrk_order(ORD自動作成先)
マスタ依存11_mst_account(科目名完全一致: 資産科目・負債科目・減価償却費・未払金・支払利息)
前提①有効フラグ=TRUEの行のみ処理対象
前提②発生日(P/L計上日) が設定済みであること
前提③最終起票年月日(手入力)が処理上限。空の場合は全有効行の最大値 or 当月にフォールバック
ヘッダー参照列番号ハードコード禁止。h.indexOf(name) でヘッダー名ベース参照

3. 入力スキーマ

24_bud_capex_loan カラム定義

#カラム名入力/自動説明制約
1A有効フラグcheckbox入力FALSE→SKIP空セルもFALSE扱い
2B管理IDstring自動CPX_NNNNORDマップのキーに使用
3C発生日(P/L計上日)date入力資産取得月(起点)空→行SKIP
4D資産・契約名string入力表示名・摘要に使用
5E取引先名string入力(pulldown)INV・ORDに転送
6F資産科目string入力(pulldown)車両運搬具, 備品, ソフトウェア 等11_mst_account に登録必須
7G取得価額number入力資産の総額
8H償却月数number入力0=償却なし
9I負債科目string入力長期未払金, 長期借入金 等11_mst_account に登録必須
10J借入金額number入力0=借入なし(全額自己資金)
11K返済月数number入力
12L月額返済額number入力手入力優先。0なら借入÷返済月数
13M初回返済額number入力空/0なら月額返済額を使用。初回のみ異なる場合に入力
14N月額支払利息number入力0=利息なし
15O頭金分割回数number入力空/0→1(一括)。頭金返済を複数月に分割する場合に入力
16P決済ラグ(月)number入力返済日の月ずれ(例: 1→翌月に決済)。全角数字も自動変換
17Q返済日number入力日(1-31)。0=月末
18R休日調整string入力前/後/なし
19S会社支払開始年月date入力この月から返済INVを起票
20T決済手段string入力(pulldown)立替精算/口座振替 等
21U組織名string入力(pulldown)ORD・INVに転送
22V最終起票年月日date入力(手動)ここまでの月を一括起票(+1ヶ月しない)空→全有効行の最大値 or 当月
23W備考string入力自由記述

4. 処理ロジック(マトリクス)

共通INVフィールド(buildCommon が自動設定): 有効フラグ=true, 請求ID=INV_YYYYMMDD_NNNN(自動発番), 起票日時=now, 起票者="RPA自動起票", 請求ステータス="未処理", 通貨="JPY", 税区分="対象外", 消費税額_計画=0, 収支区分="支出", 税込金額_計画=税抜金額_計画, 未決済残高=税抜金額_計画

全Rowに対して isDuplicate_() による摘要ベースの重複チェックあり。存在すればSKIP。

親ORD自動作成: 管理IDが存在し31_wrk_orderに未登録の場合、buildOrdRow_ でORDを自動作成する。

4.1 初期化・スキップ判定

STEP処理入力列ソース出力/変数条件
S1.1対象年月の決定最終起票年月日24_bud_capex_loan.V列targetYmtargetOverride指定時はそのまま使用。未指定時は全有効行のV列最大値。全て空なら当月YYYY-MMフォールバック
S2.1ループ開始24_bud_capex_loan 全行FOR EACH 行
S2.2スキップ判定①有効フラグ24_bud_capex_loan.A列!== trueSKIP(空セルもFALSE扱い)
S2.3スキップ判定②発生日, 最終起票年月日24_bud_capex_loan.C列, V列occurYm, rowTargetYmoccurYm空 OR rowTargetYm < occurYmSKIP
S3.1基本情報取得全列24_bud_capex_loan.C〜U列各変数col[name]=-1 の場合はデフォルト値(空文字/0)
S3.2申請種別の決定決済手段24_bud_capex_loan.T列capAplType「立替」含む→経費精算(社員立替)、「振込」含む→手動振込、「振替」含む→自動引落、それ以外→請求書受領(AP)
S3.3ORD検索/作成管理ID, occurYm変数ordId管理ID|occurYm をキーにordMapを検索。未登録なら generateOrdId_ で新規ORD作成

4.2 初回イベント(発生年月のみ — Row A/B/C/C2)

STEP処理入力列ソース出力/変数条件
A1.1Row A: 資産計上取得価額, 資産科目24_bud_capex_loan.G,F列INV行 → 32_wrk_invoice取得価額 > 0 AND 資産科目あり。申請種別="財務仕訳(振替等)", 決済手段="資産計上", 発生日=決済日_計画=occurMonthEnd
B1.1Row B: 借入計上借入金額, 負債科目24_bud_capex_loan.J,I列INV行 → 32_wrk_invoice借入金額 > 0 AND 負債科目あり。科目名=負債科目, 税抜金額_計画=+借入金額, 決済手段="資産計上"
C1.1Row C: 頭金計上取得価額, 借入金額変数INV行 → 32_wrk_invoice頭金 = 取得価額 - 借入金額> 0 → 科目名="未払金", 税抜金額_計画=+頭金, 決済手段="資産計上"
C2.1Row C2: 頭金返済頭金, 頭金分割回数, 決済ラグ, 返済日変数, 24_bud_capex_loan.O,P,Q列INV行(複数) → 32_wrk_invoice頭金 > 0 → 分割回数分ループ。科目名="未払金", 税抜金額_計画=-分割額, 決済手段=24タブの値 or "口座振替"。最終回は端数調整。発生日=各月末、決済日=対象月+ラグの返済日

4.3 毎月イベント — 減価償却(Row D)

STEP処理入力列ソース出力/変数条件
D1.1条件判定取得価額, 償却月数24_bud_capex_loan.G,H列monthlyDep取得価額 > 0 AND 償却月数 > 0 AND 資産科目あり月額償却費 = ROUND(取得価額/償却月数)
D1.2月ループm (1〜償却月数)変数depYmdepYm = addMonths(occurYm, m)depYm > rowTargetYmBREAK。償却は発生年月の翌月から(m=1)
D1.3端数調整残存簿価変数fee最終月(m=償却月数) → fee = remaining(残額)。それ以外 → fee = monthlyDep
D1.4Row D-1: 減価償却費(P/L)fee変数INV行 → 32_wrk_invoice申請種別="財務仕訳(振替等)", 科目名="減価償却費", 税抜金額_計画=+fee, 決済手段="資産計上"
D1.5Row D-2: 資産簿価減(B/S)fee, 資産科目変数INV行 → 32_wrk_invoice科目名=資産科目, 税抜金額_計画=-fee, 決済手段="資産計上"

4.4 毎月イベント — 返済・利息(Row E/F)

STEP処理入力列ソース出力/変数条件
E1.1月ループcurRepayYm変数FOR curRepayYm = payStartYm TO rowTargetYmcurRepayYm > payStartYm + 返済月数 - 1BREAK
E1.2返済日計算決済ラグ, 返済日24_bud_capex_loan.P,Q列repayDatesYm = addMonths(curRepayYm, capLag), repayDate = sYm の 返済日。月末キャップ。全角数字は自動変換
E1.3返済額決定初回返済額, 月額返済額24_bud_capex_loan.M,L列repayAmt初回月(curRepayYm===payStartYm) AND 初回返済額>0 → 初回返済額。それ以外 → monthlyRepay
E1.4Row E: 元本返済(B/S負債-)repayAmt, 負債科目変数INV行 → 32_wrk_invoicerepayAmt > 0 → 申請種別=capAplType, 科目名=負債科目, 税抜金額_計画=-repayAmt, 決済手段=24タブの値 or "口座振替"
F1.1Row F: 支払利息(P/L)月額支払利息24_bud_capex_loan.N列INV行 → 32_wrk_invoice> 0 → 科目名="支払利息", 税抜金額_計画=+monthlyInterest, 決済手段=24タブの値 or "口座振替"

4.5 書き出し

STEP処理入力出力条件
W1.1ORD一括書き込みnewOrdRows31_wrk_ordernewOrdRows.length > 0 の場合のみ
W1.2INV一括書き込みdrafts32_wrk_invoicewriteInvRows_() で32タブ末尾に追記
W1.3返済完了チェックrowTargetYm, payStartYm, 返済月数UIダイアログ最終起票年月日 > payStartYm + repayMonths - 1 → ダイアログに返済完了済みを表示

脚注:

  • ※1: コード上は debtAccount を24タブの負債科目列から取得。空文字の場合はそのまま空文字となる(デフォルト値なし)
  • ※2: 端数調整により Σfee = 取得価額 が保証される。ROUND丸めの累積誤差を最終月で吸収

5. 出力サマリー

イベント一覧(1資産あたり)

#Rowタイミング科目名金額P/L or B/S決済手段摘要パターン
1Row A発生年月(1回)資産科目+取得価額B/S資産資産計上【RPA:CAPEX】{occurYm} {assetName} 資産計上
2Row B発生年月(1回)負債科目+借入金額B/S負債資産計上【RPA:CAPEX】{occurYm} {assetName} 借入
3Row C発生年月(1回)未払金+頭金B/S負債資産計上【RPA:CAPEX】{occurYm} {assetName} 頭金
4Row C2発生月〜分割回数分未払金-分割額B/S負債口座振替等【RPA:CAPEX】{repayYm} {assetName} 頭金返済(n/N)
5Row D-1毎月×償却月数減価償却費+月額償却費P/L資産計上【RPA:CAPEX】{depYm} {assetName} 償却(m/N)
6Row D-2毎月×償却月数資産科目-月額償却費B/S資産資産計上【RPA:CAPEX】{depYm} {assetName} 償却(BS)
7Row E毎月×返済月数負債科目-月額返済額B/S負債口座振替等【RPA:CAPEX】{curRepayYm} {assetName} 返済(元本)
8Row F毎月×返済月数支払利息+月額利息P/L口座振替等【RPA:CAPEX】{curRepayYm} {assetName} 支払利息

ORD自動作成

管理IDが存在し31_wrk_orderに未登録の場合、以下のORDを自動作成する。

フィールド
発注ID(ORD)ORD_YYYYMMDD_NNNN(自動発番)
契約・件名資産・契約名
摘要【RPA:CAPEX】{assetName}
契約形態設備投資
税抜金額_発注取得価額
参照元区分CAPEX
参照元ID管理ID
組織名24タブの組織名を転送

6. 業務ルール

  1. 資産計上・減価償却はCF非対象 — Row A〜C は決済手段="資産計上"、Row D は決済手段="資産計上"。Cash Flow計算書に影響しない
  2. 会社支払開始年月 — この月から返済(Row E/F)を起票。それより前の月は返済をスキップ
  3. 初回イベントは発生年月のみ — Row A/B/C は発生年月に1回だけ生成
  4. 償却は発生年月の翌月から — m=1 なので addMonths(occurYm, 1) が初回
  5. 端数調整 — 月額償却 = ROUND(取得価額/償却月数)。最終月に残額を調整して累計=取得価額を保証
  6. 頭金 = 取得価額 − 借入金額 — 差額がなければ Row C/C2 は生成しない
  7. 頭金返済の分割 — 頭金分割回数>1の場合、発生月から分割回数分の月にわたり ROUND(頭金/分割回数) ずつ返済INVを生成。最終回は端数調整
  8. 月額返済額の手入力優先 — 手入力があればそれを使用。0なら借入金額÷返済月数で自動計算
  9. 初回返済額curRepayYm === payStartYm かつ初回返済額>0の場合のみ適用。それ以外は月額返済額
  10. 減価償却の2行ペア — Row D-1(P/L費用: +fee) + Row D-2(B/S資産: -fee)でセット
  11. 返済INVの符号 — Row E の税抜金額_計画は -repayAmt(負値: B/S負債の減少を表現)
  12. 申請種別の動的決定 — 返済INV(Row C2/E/F)の申請種別は決済手段の文字列から決定: 立替→経費精算、振込→手動振込、振替→自動引落、その他→請求書受領(AP)
  13. 組織名の転送 — 24タブの組織名を ORD および全 INV 行にそのままコピーする
  14. 決済ラグの全角対応 — 決済ラグ(月)列の全角数字は半角に自動変換される

7. 冪等性(二重起票防止)

メカニズム詳細
摘要ベース重複チェックINV 生成前に isDuplicate_ で 32 タブ既存摘要と照合・同一摘要は SKIP
摘要フォーマット【RPA:CAPEX】{YYYY-MM} {資産名} {イベント種別} で一意性保証
最終起票年月日行毎の rowTargetYm で処理上限制御・再処理は isDuplicate_ で SKIP

8. エラーハンドリング

エラー条件処理ユーザー通知
24_bud_capex_loan シートが存在しない即時return🚨 24_bud_capex_loan が見つかりません。 ダイアログ
CAPEXデータが0行(ヘッダーのみ)即時return✅ CAPEXデータがありません。 ダイアログ
関数内で例外発生Utils.logError 後 return 0🚨 generateCapexInvoices エラー: {message}
起票対象なし正常終了✅ 起票対象なし: {targetYm} で起票すべき CAPEX なし
返済完了済み資産あり正常終了(追加メッセージ)✅ 返済完了済み: {資産名1}, {資産名2} をダイアログに追記
列ヘッダー不在col[name] = -1 → 該当フィールドはデフォルト値(空文字/0)で処理続行通知なし(サイレント)

9. テスト仕様

テストデータ(CPX_0001 社用車)

項目
管理IDCPX_0001
発生日(P/L計上日)2025-10
資産・契約名社用車
取引先名ネッツトヨタ福井
資産科目車両運搬具
取得価額2,960,000
償却月数24
負債科目長期未払金
借入金額1,960,000
返済月数60
月額返済額32,579
初回返済額37,832
月額支払利息4,321
決済ラグ(月)0
返済日2
休日調整
会社支払開始年月2026-04

算出変数:

頭金           = 2,960,000 - 1,960,000 = 1,000,000
月額償却費     = ROUND(2,960,000 / 24) = 123,333
最終月償却     = 2,960,000 - 123,333 × 23 = 123,341(端数調整)
返済終了月     = 2026-04 + 60 - 1 = 2031-03
償却開始月     = 2025-11(発生年月の翌月)
償却終了月     = 2027-10(24ヶ月後)

単体テスト観点

テストIDテスト名前提条件期待結果
T1初回・資産+借入+頭金target=2025-10(発生年月)Row A(+2,960,000) + B(+1,960,000) + C(+1,000,000)
T2初回・頭金なし取得=借入=500,000Row A + B のみ。Row C 未生成
T3初回・借入なし借入=0Row A のみ。Row B/C/C2 未生成
T4償却1ヶ月目target=2025-11Row D-1(+123,333) + D-2(-123,333)
T5償却最終月(端数)target=2027-10Row D-1(+123,341) + D-2(-123,341)
T6返済開始(初回)target=2026-04(会社支払開始年月), 初回返済額=37,832Row E(-37,832) + F(+4,321)
T7返済前SKIPtarget=2026-03 < 会社支払開始年月Row E/F 未生成
T8返済完了後target > 2031-03返済ループBREAK、返済完了メッセージ表示
T9有効フラグOFF有効フラグ=FALSE全て未生成
T10重複チェック同月を2回実行2回目は0件起票
T11STL税込金額_決済親ORDなしSTL金額=INV金額(差引きなし)
T12償却+返済同時target=2026-04INV 4行(D-1, D-2, E, F)
T13初回返済額ありtarget=2026-04, 初回返済額=37,832Row E: -37,832(初回返済額を使用)
T14初回返済額なし初回返済額=空, 月額返済額=32,579Row E: -32,579(月額返済額にフォールバック)
T152回目以降の返済target=2026-05, 初回返済額=37,832Row E: -32,579(初回以外は月額返済額)
T16決済ラグcapLag=1, 返済日=2, curRepayYm=2026-04repayDate=2026-05-02(curRepayYm+1ヶ月の2日)
T17返済完了メッセージ最終起票年月日 > 最終返済月ダイアログに「返済完了済み: {資産名}」表示
T18行ごとの最終起票年月日行A: 最終起票年月日=2026-06, 行B: 2026-04各行が自分の最終起票年月日を上限として処理

ケース A: 初回実行(target=2025-10 / 発生年月)

32タブ期待結果(INV 3行 — 初回イベントのみ)

Row申請種別科目名金額発生日決済日_計画決済手段摘要
Row A財務仕訳(振替等)車両運搬具+2,960,0002025-10-312025-10-31資産計上…資産計上
Row B財務仕訳(振替等)長期未払金+1,960,0002025-10-312025-10-31資産計上…借入
Row C財務仕訳(振替等)未払金+1,000,0002025-10-312025-10-31資産計上…頭金

返済 Row E/F: 会社支払開始年月=2026-04 > target=2025-10 → SKIP 償却 Row D: 発生年月の翌月(2025-11)から開始、target=2025-10 → SKIP STL: 全て資産計上 → 0行

期待値サマリー

財務諸表科目金額
B/S車両運搬具(固定資産)+2,960,000
B/S長期未払金(負債)+1,960,000
B/S未払金(負債)+1,000,000
B/S現預金0(資産計上のみ、CF影響なし)

B/S等式チェック: 資産 2,960,000 = 負債 2,960,000 (1,960,000 + 1,000,000) ✓

ケース B: 償却開始後(target=2025-11)

32タブ期待結果(INV 2行 — 償却1ヶ月目)

Row申請種別科目名金額発生日決済日_計画決済手段摘要
Row D-1財務仕訳(振替等)減価償却費+123,3332025-11-302025-11-30資産計上…償却(1/24)
Row D-2財務仕訳(振替等)車両運搬具-123,3332025-11-302025-11-30資産計上…償却(BS)

返済 Row E/F: 会社支払開始年月=2026-04 > target=2025-11 → SKIP STL: 全て資産計上 → 0行

期待値サマリー(累計: 2025-10 + 2025-11)

財務諸表科目金額
P/L減価償却費-123,333
B/S車両運搬具2,960,000 - 123,333 = 2,836,667
B/S長期未払金+1,960,000
B/S未払金(頭金)+1,000,000

ケース C: 返済開始後(target=2026-04)

32タブ期待結果(INV 4行 — 償却 + 返済 + 利息)

償却は6ヶ月目(m=6: addMonths("2025-10",6)="2026-04")。

Row申請種別科目名金額発生日決済日_計画決済手段摘要
Row D-1財務仕訳(振替等)減価償却費+123,3332026-04-302026-04-30資産計上…償却(6/24)
Row D-2財務仕訳(振替等)車両運搬具-123,3332026-04-302026-04-30資産計上…償却(BS)
Row E請求書受領(AP)長期未払金-37,8322026-04-302026-04-02 (※capLag=0の場合)口座振替…返済(元本) ← 初回返済額
Row F請求書受領(AP)支払利息+4,3212026-04-302026-04-02 (※capLag=0の場合)口座振替…支払利息

33タブ期待結果(STL 2行 — Action A後)

STL消込対象INV入出金決済口座取引先税込金額_決済
STL 1Row E (元本)出金口座振替ネッツトヨタ福井37,832
STL 2Row F (利息)出金口座振替ネッツトヨタ福井4,321

期待値サマリー(target=2026-04 単月)

財務諸表科目金額備考
P/L減価償却費-123,333資産計上(CF非対象)
P/L支払利息-4,321口座振替
B/S車両運搬具-123,333簿価減少
B/S長期未払金-37,832初回元本返済
B/S現預金-42,153STL消込後 (37,832+4,321)
CF出金(元本)37,832STL1消込時(初回)
CF出金(利息)4,321STL2消込時

ケース D: 償却最終月(target=2027-10 / 24ヶ月目)

32タブ期待結果 — 端数調整

月額償却: 123,333 × 23ヶ月 = 2,836,659
最終月:   2,960,000 - 2,836,659 = 123,341(端数調整)
Row科目名金額摘要
Row D-1減価償却費+123,341…償却(24/24)
Row D-2車両運搬具-123,341…償却(BS)

この月以降、Row D は生成されない。Row E/F は2031-03まで継続。


付録

付録A: Action A→Action Bの流れ

Action A(INV承認 → TRN + STL自動作成)

資産計上Row(A, B, C)と減価償却Row(D-1, D-2)は決済手段="資産計上" のため STL対象外(現金移動なし)。 口座振替等のRow(C2, E, F)のみSTLが自動作成される。

STL 1: 元本返済 (Row E) — 税込金額_決済 = repayAmt
STL 2: 支払利息 (Row F) — 税込金額_決済 = monthlyInterest
STL 3: 頭金返済 (Row C2) — 税込金額_決済 = 分割額(該当する場合)

親ORDあり: CAPEX INVは親ORD_IDが設定されるが、ORDの発注残高はCAPEX全体の取得価額であり、個別INVの差引きには影響しない。STL税込金額_決済 = INV請求総額。

Action B(STL消込 → 決済仕訳)

STLに決済日・消込済を入力 → Action B で決済仕訳生成 → INV未決済残高=0。