1. 概要
焦点質問: 今月の現金はどこから入り、どこに出たか?
間接法C/F計算書は、P/L・B/Sの増減から営業・投資・財務の3区分のキャッシュフローを算出し、期末現金残高がB/S現預金と完全一致することを保証する。
| 項目 | 内容 |
|---|
| 出力タブ (実績) | 81_cf_indirect, 81b_cf_indirect_ytd |
| 出力タブ (計画) | 82_cf_indirect_plan, 82b_cf_indirect_plan_ytd |
| 関数 | dmCalcCf_, dmBuildCfOutput_ |
| ファイル | 605_datamart_cf.js |
関連する日次CF仕様
日次資金繰り (83/84/85タブ) は別仕様書 spec_daily_cf を参照。
2. データソース
| ソース | 読み込み条件 | 用途 |
|---|
| ctx.sectionTotalsPl | dmCalcPl_ 完了後 | 税引前当期純利益、法人税等 |
| ctx.depMonthly | dmCalcPl_ 完了後 | 減価償却費(非資金費用の足戻し) |
| ctx.bsSecTotal | dmCalcBs_ 完了後 | B/Sセクション別残高(投資・財務活動の増減算出) |
| ctx.flowCa_Op | dmCalcBs_ 完了後 | 流動資産(営業)のフロー増減 |
| ctx.flowCl_Op | dmCalcBs_ 完了後 | 流動負債(営業)のフロー増減 |
| ctx.flowCl_Fin | dmCalcBs_ 完了後 | 流動負債(財務)のフロー増減 |
| ctx.cashPlug | dmCalcBs_ 完了後 | 現預金プラグ残高(期首・各月末) |
旧 (V1) → 新 (V2) の変更(日次CF部分)
| 項目 | V1 | V2 |
|---|
| CF実績ソース | 42_trn_journal | 33_wrk_bank |
| 金額列 | 税込金額_計画 | 税込金額_決済 + 差額(手数料等) |
| 日付 | 決済日_実績 > 決済日_計画 > 発生日 | 決済日_実績 |
| noCash判定 | 決済手段で判定 | 不要(33タブは全て実際の入出金) |
3. 対象判定・フィルタ条件
間接法C/F (81/82) は P/L・B/S の集計結果から間接的に算出するため、個別行レベルのフィルタ条件は不要。前段の dmCalcPl_ / dmCalcBs_ で確定した ctx の値をそのまま使用する。
| # | 条件 | 処理 | 理由 |
|---|
| F1 | dmCalcPl_ 未完了 | C/F計算不可 | P/Lセクション合計が必要 |
| F2 | dmCalcBs_ 未完了 | C/F計算不可 | B/Sフロー・cashPlugが必要 |
33_wrk_bank スキーマ(日次CF用)
日次CF (83/84/85タブ) では 33_wrk_bank を直接読み込む。フィルタ条件の詳細は spec_daily_cf を参照。
| # | 列 | ヘッダー名 | CFでの用途 |
|---|
| 1 | A | 有効フラグ | FALSE → SKIP |
| 2 | B | 決済ID(STL) | 管理ID |
| 3 | C | 消込対象請求ID(INV) | INV参照(取引先・PJ名取得用) |
| 4 | D | 決済日_実績 | CF計上日 |
| 5 | E | 決済ステータス | "消込済" のみ対象 |
| 6 | F | 入出金区分 | 入金 / 出金 |
| 7 | G | 決済口座 | 表示用 |
| 8 | H | 取引先名 | 表示用 |
| 9 | I | 税込金額_決済 | メイン金額 |
| 10 | J | 差額(手数料等) | 差額金額(振込手数料等) |
| 11 | K | 差額処理科目 | 差額の勘定科目 |
| 12 | L | 摘要 | 表示用 |
| 13 | M | 自動仕訳JNL_ID | Action B で書き込まれた TRN_ID |
4. 処理ロジック
4.1 間接法C/F計算 (dmCalcCf_)
| 項番 | 処理フェーズ | 入力(論理名) | 入力(物理名) | 処理詳細 / 変換ロジック | 出力(論理名) | 出力(物理名) |
|---|
| C1 | 営業CF算出 | 税引前利益, 減価償却費, 流動資産増減, 流動負債増減, 法人税等 | ctx.sectionTotalsPl, ctx.depMonthly, ctx.flowCa_Op, ctx.flowCl_Op | 月別: cfOp[i] = 税引前利益 + 減価償却費 − 流動資産増減(営業) + 流動負債増減(営業) − 法人税等 | 営業CF | ctx.cfOp |
| C2 | 投資CF算出 | 固定資産残高, 繰延資産残高, 減価償却費 | ctx.bsSecTotal['asset_nca'], ctx.bsSecTotal['asset_def'], ctx.depMonthly | 月別: cfInv[i] = −(固定資産増減 + 繰延資産増減 + 減価償却費) | 投資CF | ctx.cfInv |
| C3 | 財務CF算出 | 固定負債残高, 資本金残高, 流動負債増減(財務) | ctx.bsSecTotal['liab_ncl'], ctx.bsSecTotal['eq_cap'], ctx.flowCl_Fin | 月別: cfFin[i] = 固定負債増減 + 資本金増減 + 流動負債増減(財務) | 財務CF | ctx.cfFin |
| C4 | 純増減額 | 営業CF, 投資CF, 財務CF | ctx.cfOp, ctx.cfInv, ctx.cfFin | cfNet[i] = cfOp[i] + cfInv[i] + cfFin[i] | 純増減額 | ctx.cfNet |
| C5 | 法人税等 | 法人税, 自動計算法人税(国税/地方税) | ctx.sectionTotalsPl['tax', 'auto_tax_national', 'auto_tax_local'] | taxOnly[i] = −(法人税 + 自動国税 + 自動地方税) | 法人税支払額 | ctx.taxOnly |
| C6 | 期首/期末残高 | 現預金プラグ | ctx.cashPlug | cashStart[i] = cashPlug[i-1], cashEnd[i] = cashPlug[i] | 期首/期末 | ctx.cashStart, ctx.cashEnd |
| C7 | 通期合計 | 各月配列 | cfOp〜cashEnd | arr[0] = arr[1..12].sum() ※ cashStart[0]=cashStart[1], cashEnd[0]=cashEnd[12] | 通期列 | 各配列[0] |
4.2 出力配列構築 (dmBuildCfOutput_)
| 項番 | 処理 | 内容 |
|---|
| O1 | 単月配列構築 | ヘッダー行 + 営業/投資/財務の各セクション行を pushCf で積み上げ。B列にスナップショット関数 (INDEX/MATCH) を埋め込み |
| O2 | YTD配列構築 | 各行を dmToYtdArray_ で累積変換。期末残高行のみ累積ではなく cashEnd をそのまま使用 |
| O3 | 戻り値 | { outC, fmtC, outCY, fmtCY } を返却し、呼び出し元 (dmRenderFs_) がシートに書き出す |
5. 財務ロジック (FRD)
※ 本セクションは経理担当・CFOが検証可能な表現で記述。技術用語は使用しない。
→ 技術詳細: SS4 参照
5.1 営業活動・投資活動・財務活動の分類
| 区分 | 含まれる項目 | 増減の意味 |
|---|
| 営業活動 CF | 税引前純利益 + 減価償却 + 流動資産増減(逆符号)+ 流動負債増減 − 法人税支払 | 本業の稼ぎから現金 |
| 投資活動 CF | 固定/繰延資産の取得・売却 | 設備・ソフトウェア投資 |
| 財務活動 CF | 借入増減 + 資本金増減 + 流動負債(財務区分)増減 | 資金調達・返済 |
5.2 間接法の調整項目
間接法では税引前当期純利益を出発点とし、以下の調整を行う。
| 調整項目 | 加減 | 理由 |
|---|
| 減価償却費 | 加算(+) | P/Lに費用計上されるが現金支出を伴わない(非資金費用) |
| 流動資産(営業)の増加 | 減算(−) | 売掛金の増加は現金未回収を意味する |
| 流動負債(営業)の増加 | 加算(+) | 買掛金の増加は現金未払いを意味する |
| 法人税等の支払額 | 減算(−) | 実際の現金流出 |
5.3 期末現金残高の整合性
期末現金残高 = 期首残高 + 営業CF + 投資CF + 財務CF
この値は B/S の現預金残高 (cashPlug) と完全一致しなければならない。不一致はB/S計算のエラーを示す。
6. 出力スキーマ
81_cf_indirect / 82_cf_indirect_plan(単月)
| セクション | 表示区分 | 行名 | 符号 | フォーマット |
|---|
| 1. 営業活動CF | mega_header | ■ 1. 営業活動によるキャッシュフロー | — | — |
| account | 税引前当期純利益 | そのまま | 数値 |
| account | 減価償却費 (非資金費用の足戻し) | そのまま | 数値 |
| account | 売掛金・その他流動資産の増減(△=増) | 反転(−flowCa_Op) | 数値 |
| account | 仕入債務・その他流動負債の増減(+=増) | そのまま | 数値 |
| account | 法人税等の支払額 | 負数 | 数値 |
| total_ope | 営業活動C/F 小計 | そのまま | 数値 |
| 2. 投資活動CF | mega_header | ■ 2. 投資活動によるキャッシュフロー | — | — |
| account | 固定資産の取得等 (△は増加) | そのまま | 数値 |
| total_inv | 投資活動C/F 小計 | そのまま | 数値 |
| 3. 財務活動CF | mega_header | ■ 3. 財務活動によるキャッシュフロー | — | — |
| account | 借入金・資本金等の増減額 (+は増加) | そのまま | 数値 |
| total_fin | 財務活動C/F 小計 | そのまま | 数値 |
| 合計 | profit | 現金及び現金同等物の増減額 | そのまま | 数値 |
| subtotal | + 期首残高 (前月末の現預金) | そのまま | 数値 |
| cash_plug | 期末現金残高 (B/S現預金と完全一致) | そのまま | 数値 |
列構成: A列=項目名, B列=選択月スナップ(INDEX/MATCH), C列=空白, D列=通期合計, E〜P列=月別(実績/予算ラベル付)
81b_cf_indirect_ytd / 82b_cf_indirect_plan_ytd(YTD累積)
上記と同じ行構成。各月の値は dmToYtdArray_ で1月からの累積値に変換される。ただし期末現金残高行のみ累積ではなく当月の cashEnd をそのまま表示する。
7. エッジケース・境界条件
7.1 42_trn_journal との違い(設計判断)
| 観点 | 旧 (42_trn_journal) | 新 (33_wrk_bank) |
|---|
| データ粒度 | 仕訳行(P/L・B/S混在) | 決済行(入出金のみ) |
| noCash判定 | 必要(仕訳振替を除外) | 不要(全行が実際の入出金) |
| 科目分類 | dmGetCashImpact_ で複雑な判定 | 入出金区分で直接判定 |
| 差額(手数料) | TRN行として別途存在 | STL行の差額列に内包 |
| 決済日 | 決済日_実績 > 計画日 のフォールバック | 決済日_実績 一本 |
※ 上記は日次CF (83/84/85タブ) に関する設計判断。間接法C/F (81/82) はP/L・B/Sの増減から算出するため 33_wrk_bank を直接参照しない。
7.2 間接法固有のエッジケース
| ケース | 条件 | 処理 |
|---|
| 自動計算法人税が未設定 | sectionTotalsPl['auto_tax_national'] が undefined | || Array(13).fill(0) でゼロ配列にフォールバック |
| 期首月のcashStart | i=1 | cashStart[1] = cashPlug[0] = 期首現預金 |
| 通期cashStart/cashEnd | i=0 | cashStart[0] = cashStart1, cashEnd[0] = cashEnd12 |
| 減価償却費の二重計上防止 | 投資CF算出時 | cfInv に depMonthly を加算して、営業CFでの足戻しと相殺 |
8. テスト仕様
テストデータによるCF集計結果(日次CF部分)
入力: 33_wrk_bank (消込済STL)
現時点ではSTL消込データがないため、CFイベントは 0件。
STL消込後の期待値
| 決済日 | 取引先 | 入金 | 出金 | 残高変動 | 備考 |
|---|
| 2025-12-25 | 角会計事務所 | — | 22,000 | -22,000 | 給与支払い |
| 2026-01-10 | 武生税務署 | — | 42 | -42 | 源泉所得税納付 |
※ 仕訳振替のINV(雑収入・預り金計上)はSTL消込されないため、CFに一切出ない。
間接法C/Fの検証項目
| テストID | テスト名 | 前提条件 | 期待結果 |
|---|
| CF-T01 | 営業CF算出 | P/L・B/S計算完了 | 税引前利益+償却費−流動資産増+流動負債増−法人税 と一致 |
| CF-T02 | 投資CF算出 | B/S計算完了 | −(固定資産増+繰延資産増+償却費) と一致 |
| CF-T03 | 財務CF算出 | B/S計算完了 | 固定負債増+資本金増+流動負債(財務)増 と一致 |
| CF-T04 | 期末残高一致 | C/F計算完了 | 期首残高+営業CF+投資CF+財務CF = B/S現預金 (cashPlug) |
| CF-T05 | 通期合計 | C/F計算完了 | arr[0] = arr[1..12] の合計 |
| CF-T06 | YTD累積 | C/F出力構築完了 | 各月YTD値 = 1月〜当月の累積。期末残高行は非累積 |
付録A: 実装変更の影響範囲
| ファイル | 変更内容 |
|---|
605_datamart_cf.js | dmCalcCf_: 間接法C/F算出, dmBuildCfOutput_: 出力配列構築 |
606_datamart_daily_cf.js | dmBuildDailyCashflow_: 実績CF (33_wrk_bank → 85タブ) |
606_datamart_daily_cf.js | dmBuildPlanCashflow_: 計画CF (32_wrk_invoice → 83/84タブ) |
606_datamart_daily_cf.js | dmGetCashImpact_: 予算データ用のキャッシュインパクト判定 |
602_datamart_main.js | dmBuildDailyCashflow_ / dmBuildPlanCashflow_ の呼び出し |
608_datamart_render.js | dmRenderFs_ で outC/fmtC/outCY/fmtCY をシートに書き出し |
付録B: 出力タブ一覧
| タブ | 関数 | ソース | 用途 |
|---|
| 81_cf_indirect | dmBuildCfOutput_ (実績ctx) | P/L・B/S実績 | 間接法C/F(単月) |
| 81b_cf_indirect_ytd | dmBuildCfOutput_ (実績ctx) | 同上 | 間接法C/F(YTD) |
| 82_cf_indirect_plan | dmBuildCfOutput_ (計画ctx) | P/L・B/S計画 | 間接法C/F計画(単月) |
| 82b_cf_indirect_plan_ytd | dmBuildCfOutput_ (計画ctx) | 同上 | 間接法C/F計画(YTD) |
| 83_cf_daily | dmBuildPlanCashflow_ | 32_wrk_invoice (承認済) | 計上済INVベースの資金繰り |
| 84_cf_daily_plan | dmBuildPlanCashflow_ | 32_wrk_invoice (全INV) + 33_wrk_bank | 未決済残高ベース + 実績STLのハイブリッド |
| 85_cf_daily_actual | dmBuildDailyCashflow_ | 33_wrk_bank (消込済) | 確定した入出金の実績 |