MAS-061: キャッシュ実効税率(Cash ETR)トラッキング機能(合法節税範囲・税負担抑制案サジェスト)
概要
| 項目 | 内容 |
|---|---|
| 案件 ID | MAS-061 |
| 案件名 | キャッシュ実効税率(Cash ETR)トラッキング機能(合法節税範囲・税負担抑制案サジェスト) |
| カテゴリ | FP&A・税務分析 |
| 優先度 | P2 ★★(節税施策の費用対効果検証 + ランウェイ精度向上) |
| 所要時間 | 約 2.0 ヶ月(Step 0 税目分類マスタ整備込み・週 10h 前提) |
| 実装ステータス | 📝 仕様書段階・実装未着手 (2026-04-28 監査時点) |
| 対象ファイル(新規) | 400_domain/448_cash_etr_simulator.js(純粋関数・既存税務エンジン群を順次呼び出して統合指標を算出) |
| 対象ファイル(変更) | 200_data/202_repository.js(TaxPaymentRepository 追加)/ 100_config/101_sys_config.js(12_mst_tax_classification 新設または 11_mst_account 拡張)/ 000_infra/002_constants.js(MENU_DEFINITION 追加)/ 93_kpi_dashboard(Cash ETR セル追加) |
| 新規シート | 判断要: 案 A 12_mst_tax_classification(新設・税目分類マスタ)/ 案 B 11_mst_account への列追加(spec は案 A 推奨) |
新規 03_sys_params キー | F61_CASH_ETR_GREEN_MAX(default 0.20 = 20%)/ F61_CASH_ETR_YELLOW_MAX(default 0.30 = 30%)/ F61_NOL_PHASE_DETECTION_THRESHOLD(default 0.05 = 5%)/ F61_NORMALIZATION_YEARS(default 3)/ F61_HOUSEHOLD_ETR_ENABLED(default false)/ F61_CASH_ETR_DEFAULT_VARIANT(default accrual = 系統 B)の計 6 キー |
| 前提案件 | MAS-003 KPI ダッシュボード(✅ 完了・93_kpi_dashboard 拡張先)/ MAS-049 賃上げ税制(✅ 完了・節税施策連携)/ MAS-008 Cash Runway(既存・税金支払の織込)/ MAS-040 法人税会計年度ベース化(前提あり) |
| 後続連携 | MAS-041 繰越欠損金(📝・NOL フェーズ判定で連携)/ MAS-141 共済シミュレーター(📝・節税策サジェスト)/ MAS-218 タイムトラッキング(R&D 控除エビデンス)/ MAS-057 Phase 2-3(社保ロジック)/ MAS-058 必要年商(借入返済余力組込)/ MAS-059 意思決定ツリー(Tool 化)/ MAS-060 組織構成(税務最適化指数で連携) |
| 吸収・再定義対象 | なし(節税系個別案件 MAS-049/MAS-041/MAS-141 の統合指標領域) |
目的
法定実効税率(約 34%)と実際のキャッシュアウト税率(中小法人軽減税率・税額控除・繰越欠損金等の効果反映後)の乖離を継続トラッキングする。
直接の用途 2 つ:
- 節税設計の効果測定 — 小規模企業共済・経営セーフティ共済・賃上げ促進税制・研究開発税制等の各施策が Cash ETR をどれだけ圧縮できているかを定量化
- ランウェイ計算の精度向上 — 月次キャッシュアウトに税金支払を組み込み、より現実的な残月数を算出(MAS-008 連携)
加えて、bizlp の管理会計支援サービスとして顧客向けに Cash ETR ダッシュボードを提供可能なテンプレート資産化を視野(PH-4 商用化期)。脱税範囲は絶対に提示しない(合法節税のみ・Disclaimer 必須)。
現在のコード
本案件は既存の税務関連エンジンを順次呼び出して統合指標を算出するアグリゲータ。新規ロジックは Cash ETR 算出 + 節税優先順位サジェスト + ガードレールのみで、税率計算・節税効果計算は既存関数を流用する。
MAS-049 賃上げ税制(✅ 完了)の利用関数
| 関数 | 定義ファイル | 用途 |
|---|---|---|
WageTaxCreditSimulator.calc(input) | 400_domain/414_wage_tax_credit_simulator.js(既存) | 賃上げ控除額算出。Cash ETR 分子から控除 |
Constants.TAX_RATES(既存)の法人税ブラケット
| 定数 | 定義ファイル | 用途 |
|---|---|---|
Constants.TAX_RATES.brackets | 000_infra/002_constants.js:22 | 法人税累進(軽減 15% / 標準 23.2%) |
Constants.TAX_RATES.localRate | 同 | 地方法人税 + 法人住民税 + 事業税合算実効率 |
Constants.getParam(key, defaultVal) | 同:167 | F61_* パラメータ取得 |
MAS-003 KPI ダッシュボード(✅ 完了)
93_kpi_dashboard の条件付き書式は Utils.applyTrafficLight_(range, thresholds) を共通ヘルパとして既に持つ。本案件は同関数を呼び出して Cash ETR 信号機(🟢/🟡/🔴)を統一描画する。
MAS-008 Cash Runway(既存)
ランウェイ計算は既存。本案件で算出した予測 Cash ETR を使い、月次キャッシュアウトの税金部分を予測ベースで織り込む拡張は MAS-008 spec への変更が必要なため別 PR 推奨。
MAS-141 共済シミュレーター / MAS-041 繰越欠損金(📝 仕様書完了・未実装)
両者の出力(節税効果額)を本案件の優先順位サジェストに統合。実装着手は両者の実装完了後。
修正方針
Step 0 — 税目分類マスタ整備(前提タスク・着手前必須)
12_mst_tax_classification を新設(spec 推奨・案 A)。11_mst_account への列追加(案 B)も選択肢だが、税目は会計科目とは独立した次元のため別マスタが筋。
// 12_mst_tax_classification の DDL
{ name: '有効FLG', type: 'boolean' },
{ name: '科目ID', type: 'string' }, // 11_mst_account との外部キー
{ name: '税目区分', type: 'enum',
values: ['corporate_tax','local_corp_tax','enterprise_tax','special_enterprise_tax',
'inhabitant_tax','consumption_tax','withholding_tax','other'] },
{ name: '所得課税フラグ', type: 'boolean' }, // Cash ETR 分子算入対象か
{ name: '備考', type: 'string' },
消費税(預り金性質)と源泉所得税(前払法人税)は所得課税フラグ false で初期化し、Cash ETR 分子から自動除外。マイグレーション 8XX_migration_f61_tax_classification.js で既存「法人税等」「租税公課」「未払法人税等」科目を一括分類。
Step 1 — 計算式の二系統実装
| 系統 | 計算式 | デフォルト | 用途 |
|---|---|---|---|
| 系統 A (Cash Tax Rate) | 実際の納付日ベースで集計した税金キャッシュアウト ÷ 税引前当期純利益 | ドリルダウン | 実際の現金流出ベース |
| 系統 B (Effective Tax Rate) | 当期事業年度に帰属する税金(未払計上含む)÷ 税引前当期純利益 | ★ ダッシュボード default | 期間損益の実効率 |
F61_CASH_ETR_DEFAULT_VARIANT で切替可(default accrual = 系統 B)。
Step 2 — 仕訳データからの自動抽出
// 200_data/202_repository.js に TaxPaymentRepository 追加
var TaxPaymentRepository = (function () {
/**
* @param {string} fiscalYear 会計年度("2026" 等)
* @returns {Array<{date, taxType, amount, fiscalYearApplied, isIncomeTax}>}
*/
function findByFiscalYear(fiscalYear) {
var jnlRows = JournalRepository.findAll();
return jnlRows
.filter(_isTaxJournal_)
.map(_normalizeAsTaxPayment_)
.filter(function (r) { return r.fiscalYearApplied === fiscalYear; });
}
function _isTaxJournal_(row) {
var subCat = TaxClassificationRepository.findByAccountId(row.accountId);
return subCat && subCat.taxCategory && subCat.isIncomeTax === true;
}
return { findByFiscalYear: findByFiscalYear };
})();
tax_payment フラグまたは勘定科目(法人税等 / 租税公課のうち所得課税分)でフィルタし、TaxPayment レコード(date, taxType, amount, fiscalYearApplied)として正規化。
Step 3 — 3 年移動平均(Normalized Cash ETR)+ 期ズレ補正
function calcNormalizedCashEtr(fiscalYear, years) {
years = years || Constants.getParam('F61_NORMALIZATION_YEARS', 3);
var startYear = parseInt(fiscalYear, 10) - years + 1;
var totalTax = 0, totalProfit = 0;
for (var y = startYear; y <= parseInt(fiscalYear, 10); y++) {
totalTax += _sumTaxPayments_(String(y));
totalProfit += _sumPretaxProfit_(String(y));
}
if (totalProfit <= 0) return null; // 累計赤字は算出不能
return totalTax / totalProfit;
}
創業初期は単年運用(4 年目以降に有効化)。中間納付と確定納付の期ズレ(X1 期確定分が X2 期 5 月納付等)は fiscalYearApplied フィールドで明示管理。
Step 4 — ダッシュボード統合(93_kpi_dashboard 拡張・信号機)
既存 MAS-003 ダッシュボードに以下フィールドを追加(または新設 40_KPIMonthly シートに分離・仕様化時に判断・spec は前者推奨):
| フィールド | 内容 |
|---|---|
tax_paid_cumulative_fy | 当期累計税金キャッシュアウト |
pretax_profit_cumulative_fy | 当期累計税引前利益 |
cash_etr_ytd | Cash ETR YTD |
normalized_cash_etr_3y | 3 年移動平均 Cash ETR |
nol_phase_warning | 繰越欠損金フェーズ警告フラグ |
信号機:
| 信号 | 範囲 | 評価 |
|---|---|---|
| 🟢 | < 20% | 健全(節税策が機能) |
| 🟡 | 20-30% | 注意 |
| 🔴 | > 30% | 改善余地大 |
極端に低い期は翌期反動の警告アノテーション(繰越欠損金食い潰しの跳ね返り検知 = Cash ETR < F61_NOL_PHASE_DETECTION_THRESHOLD で 🟡 + 翌期警告)。GCP 移行後(PH-4)は Looker Studio スコアカードでも同等表示。
Step 5 — 予測 Cash ETR + 合法節税の優先順位サジェスト
翌期の予想 Cash ETR を節税施策プランから逆算するシミュレーション機能(共済掛金額・役員報酬水準・税額控除見込みをパラメータに)。MAS-058/MAS-059 と連携して意思決定ツリーの一要素化。
合法節税の優先順位サジェスト: 当期想定 PL + 個人 B/S + ライフイベントを入力に、節税策の優先順位付きリスト(合法範囲のみ)を出力。
| 連携策 | 案件 | 期待効果 |
|---|---|---|
| 賃上げ税制控除 | MAS-049 ✅ | 給与増加額の最大 25% |
| R&D 税制控除 | MAS-218 + 計算機能新設 | 試験研究費の最大 14% |
| 繰越欠損金活用 | MAS-041 📝 | 累計欠損金の食い潰し |
| 小規模企業共済 | MAS-141 📝 | 月 7 万・年 84 万・全額所得控除 |
| 経営セーフティ共済 | MAS-141 📝 | 月 20 万・年 240 万・全額損金 |
| 役員報酬最適化 | MAS-057/MAS-058 | 法人 vs 個人税率最適化 |
| 配当ミックス最適化(v1.1 追加) | MAS-066 起票・新設 | 株式配当ルートの社保ゼロ + 配当控除(10% / 12.8%)活用・特に年収 1,500 万超ゾーンで有効・法人税後利益から支払(損金 NG)・会社法 461 条の分配可能額制約・株主総会決議事務工数考慮 |
| 社宅家賃按分 | MAS-057 §4.3 | 個人⇆法人移転効果 |
| 出張日当規程 | MAS-057 §4.3 | 非課税枠活用 |
| 法人 vs 個人税率最適化 | MAS-057 §3.2 | デッドヒート均衡点 |
| 中小企業軽減税率 | 既存 Constants | 800 万境界活用 |
| 設備投資減税 | MAS-013 + 検討 | 中小企業投資促進税制 |
各策の 節税効果額 / 実施コスト / リスク(後述ガードレール参照) を集計し、優先順位付きで提示。
Step 6 — ガードレール(脱税範囲を絶対提示しない)
| 警告項目 | 法的根拠 | 対応 |
|---|---|---|
| 租税回避行為 | 同族会社の行為計算否認・法人税法 132 条 | spec 上で「経済合理性のない取引」を提案しない |
| 重加算税相当 | 国税通則法 68 条 | 隠蔽・仮装に該当する手法を提示しない |
| 過大役員給与認定 | 役員給与不相当高額部分 | MAS-057 既存ロジック延長で警告 |
| 業務委託の偽装請負 | 労働者性 6 要素判定 | MAS-060 連携で警告 |
| 海外移転価格・タックスヘイブン | 移転価格税制 | スコープ外として明示 |
| Disclaimer | — | 「本提案は税理士の個別助言に代わるものではない」を全画面・全レポートに明示 |
ガードレールは spec の最重要要件。法的に灰色の手法は実装しないことを明文化。
影響範囲
| 対象 | 種別 | 変更内容 | リスク |
|---|---|---|---|
400_domain/448_cash_etr_simulator.js | 追加 | CashEtrSimulator.calculate() + 内部ヘルパ群(純粋関数・約 250 行) | 既存ロジックへの影響なし |
200_data/202_repository.js | 変更 | TaxPaymentRepository 名前空間追加(findByFiscalYear 等) | 既存 Repository に影響なし |
100_config/101_sys_config.js | 変更 | 12_mst_tax_classification 新規 DDL 追加 + setupAllSchemas に組込 | 新規シートのため既存に影響なし |
000_infra/002_constants.js | 変更 | MENU_DEFINITION に「💰 Cash ETR シミュレーション」追加 + F03_CASH_ETR_THRESHOLDS 信号機閾値 | 既存メニューに影響なし |
93_kpi_dashboard | 変更 | 5 セル追加(tax_paid_cumulative_fy / pretax_profit_cumulative_fy / cash_etr_ytd / normalized_cash_etr_3y / nol_phase_warning)+ 条件付き書式 | MAS-003 既存セルに影響なし |
03_sys_params | 変更 | 6 キー追加(F61_*)。Constants.getParam 経由で読込・default fallback あり | シード未実行でも default 値で動作 |
8XX_migration_f61_tax_classification.js | 追加 | 既存 11_mst_account の典型科目(法人税等・租税公課・未払法人税等)に税目分類を一括付与(冪等) | 一度実行すればスキップ |
900_test/901_test_runner.js | 変更 | MAS-061 単体テスト F61-01〜F61-13 追加 | 既存テストへの影響なし |
| MAS-008 Cash Runway | 連携拡張(任意) | 予測 Cash ETR を 13 週 CF 予測に織込み(別 PR) | MAS-008 既存ロジック変更不要 |
| appsscript.json | 変更なし | OAuth スコープ追加不要 | failure_patterns #26 遵守 |
注意事項
消費税・源泉所得税は分子から除外: 消費税は預り金性質・源泉所得税は前払法人税の性質を持つため Cash ETR 分子に含めない。
12_mst_tax_classificationのisIncomeTax = falseで自動除外。マイグレーション 8XX で既存「仮払消費税」「仮受消費税」「源泉所得税預り金」を明示的に除外フラグ設定。租税回避行為(法人税法 132 条)警告: 同族会社の行為計算否認規定に該当しうる手法(経済合理性のない高額役員報酬・個人資産の不当な法人帰属移転 等)は提案しない。MAS-141 役員報酬最適化や MAS-057 法人/個人移転は 既存判例の安全範囲内 に限定。
重加算税相当(国税通則法 68 条)警告: 隠蔽・仮装に該当する手法(売上除外・架空経費計上 等)は当然提案しない。ガードレール違反検知時はダイアログで即停止 + ログ記録。
過大役員給与認定リスク(MAS-057 既存ロジック延長): 役員給与不相当高額部分の損金不算入リスクを MAS-057 spec から流用。役員報酬最適化提案時に「不相当高額のリスク段階」を併記。
Disclaimer 必須: 「本提案は税理士の個別助言に代わるものではない」を全画面・全レポートのフッタに明示。法的責任の最小化は spec の最重要法的設計(MAS-058 注意事項 #12 と同パターン)。
業務委託の偽装請負リスク(MAS-060 連携): 業務委託活用で社保コスト削減を提案する際、MAS-060 のリスクスコア参照 を必須化。労働者性 6 要素で偽装請負認定リスクが高ければ警告。
海外移転価格・タックスヘイブン回避はスコープ外として明示: 移転価格税制・タックスヘイブン対策税制は専門領域につき本案件の対象外。商用化時に顧客が海外展開を始めたら税理士紹介を促す UI を将来検討。
failure_patterns #25 遵守(並列実装対称性): MAS-049 賃上げ税制 / MAS-058 必要年商シミュレーター と純粋関数 + Constants.getParam パターンで対称。
Cash ETRのTax略称を NOT 使う(CashEtrSimulator命名統一)。failure_patterns #18-#20 遵守(命名造語禁止): 関数名
calculate/calcNormalizedCashEtrは既存命名と整合(動詞 + 目的語)。ETR は世界標準略称・新語ではない。Read で既存ファイルに同名関数がないことを着手時に裏取り。failure_patterns #26 遵守:
appsscript.jsonの OAuth スコープは変更不要(既存スコープ内で完結)。顧客向けサービス化を視野に汎用ライブラリ化: Cash ETR 算出ロジックは仕訳データ + 勘定科目マスタ + 税目分類で完結する独立ライブラリとして切り出し可能。商用化時のテンプレート資産化を視野(PH-4)。
税目分類マスタの DDL 拡張判断: 案 A
12_mst_tax_classification新設(spec 推奨)vs 案 B11_mst_account列追加(MAS-063 と統合可能性)。MAS-063 は「営業外サブ分類」で別の属性次元のため、本案件は別マスタが筋。MAS-041 繰越欠損金フェーズ判定の依存: NOL フェーズ判定(
Cash ETR < F61_NOL_PHASE_DETECTION_THRESHOLD)は MAS-041 実装後に精度向上。MAS-041 未実装時は閾値ベースの簡易判定で運用。世帯ベース実効税率の扱い: 「法人税 + 個人所得税 + 住民税 + 社会保険料 ÷ 法人税引前利益 + 役員報酬」を併設するか否か。default OFF(
F61_HOUSEHOLD_ETR_ENABLED = false)とし、MAS-057 Phase 3 完了後に ON 検討。個人税務情報の取込でスコープ拡大のため慎重判断。
エッジケース
| # | 条件 | 期待される挙動 | 理由・ログ出力 |
|---|---|---|---|
| 1 | pretaxProfit <= 0(赤字期) | Cash ETR = null + 「赤字期につき算出不能」表示 | 累計赤字は除算不能・正常な挙動 |
| 2 | pretaxProfit > 0 だが taxPaid = 0(繰越欠損金で食い潰し) | Cash ETR = 0% + 🟡 + 「翌期反動警告」アノテーション | NOL フェーズの誤判定を回避 |
| 3 | 期ズレ中間納付(X1 期確定 X2 期 5 月納付) | fiscalYearApplied = "X1" で X1 期に算入 | 系統 B(accrual)の期間整合 |
| 4 | 3 年データ不足の創業初期(fiscalYear < 4) | 単年 cash_etr_ytd のみ表示・normalized_cash_etr_3y は null | 4 年目以降に自動有効化 |
| 5 | 税額控除前後の二重表示要望 | breakdown.beforeCredits と breakdown.afterCredits を両方出力 | 節税効果の可視化 |
| 6 | 11_mst_account に税目分類が未付与の科目 | 「その他」扱いで集計 + 月次ログ「未分類税目: X 件」 | マイグレーション未実行 / 新規科目追加時の検出 |
| 7 | 消費税仮払・仮受の誤って分子算入 | マイグレーション後は除外フラグで自動除外・誤算入時は WARN ログ | 消費税は預り金性質・除外必須 |
| 8 | 源泉所得税の二重カウント | 法人税前払として除外フラグで自動除外 | 同上 |
| 9 | 03_sys_params の F61_* キーが範囲外 | 起動時バリデーション: 範囲外なら default で上書き + WARN ログ | ユーザー誤設定対策 |
| 10 | 予測 Cash ETR の翌期予想で節税策 0 件 | 法定実効税率(約 34%)をそのまま返す | 節税策未活用時の baseline |
| 11 | 役員報酬最適化で「不相当高額」域に入った提案 | 提案リストから自動除外 + WARN ログ | MAS-057 既存ロジック準拠 |
| 12 | 海外移転価格に該当する取引パターンを検出 | 提案 0 件 + 「スコープ外・税理士相談を推奨」UI | 法的リスク最小化 |
| 13 | Cash ETR 信号機 🟢(< 20%)が NOL フェーズに該当 | 🟢 + 翌期反動アノテーション | NOL 健全と誤判定回避 |
実データ検証
1. 齋藤 Baseline 当期想定(法人税軽減税率 + MAS-049 賃上げ控除)
実装完了後に以下を 901_test_runner.js で自動検証し、±5% 以内で一致を合格基準とする。
| 入力 | 期待 Cash ETR |
|---|---|
| 税引前利益 800 万 / 軽減税率 15% / 控除なし | 約 22% |
| 税引前利益 1,500 万 / 軽減 + 標準混在 / MAS-049 控除 30 万 | 約 26% |
| 税引前利益 2,400 万 / 同上 + MAS-141 共済 84 万 + 経営セーフティ 240 万 | 約 18% |
2. MAS-049 賃上げ控除前後の乖離率検証
控除前 Cash ETR と控除後 Cash ETR の差が MAS-049 計算結果 ÷ 税引前利益 と一致することを確認。
3. 系統 A(Cash Tax Rate)vs 系統 B(Effective Tax Rate)の差異
期ズレ中間納付ケースで、系統 A は X2 期に算入・系統 B は X1 期に算入されることを単体テスト F61-03 で網羅。
4. NOL フェーズ判定の精度
繰越欠損金 1,000 万 + 当期利益 800 万 → 課税所得ゼロ → Cash ETR 0% で 🟡 + 翌期反動警告が表示されることを確認。
5. エッジケース検証(単体テスト F61-01〜F61-13)
エッジケースセクションの 13 項目それぞれを 1 テストケースとして 901_test_runner.js に追加。
関連ドキュメント
| カテゴリ | ドキュメント | 関係 |
|---|---|---|
| MAS-003 KPI ダッシュボード | dev_mas-003_kpi_dashboard.md | 93_kpi_dashboard 拡張先。Cash ETR セルを 5 つ追加 |
| MAS-008 Cash Runway | dev_mas-008_cash_runway.md | 予測 Cash ETR を 13 週 CF 予測に織込み(別 PR) |
| MAS-040 法人税会計年度ベース化 | TODO_future.md の MAS-040 行 | 会計年度ベース集計の前提 |
| MAS-041 繰越欠損金 | dev_mas-041_*.md | NOL フェーズ判定で連携 |
| MAS-049 賃上げ税制 | dev_mas-049_wage_increase_tax_credit_simulator.md | 控除額算出を直接呼出 |
| MAS-057 Solo-CEO Cockpit | dev_mas-057_solo_ceo_cockpit.md | 個人/法人税率最適化(社宅・日当・共済) |
| MAS-058 必要年商シミュレーター | dev_mas-058_required_revenue_solver.md | 税負担ベースの財務健全性制約と連動 |
| MAS-059 意思決定ツリー | dev_mas-059_growth_planning_workspace.md | Cash ETR を Tool 化して連鎖オーケストレーション |
| MAS-060 組織構成シミュレーター | dev_mas-060_workforce_mix_optimizer.md | 業務委託リスクスコア参照 + 税務最適化指数 |
| MAS-062 PSF プロフィタビリティ拡張 | dev_mas-062_psf_profitability_extension.md | P/L 拡張ブロック群の並列共存 |
| MAS-063 P/L 営業外損益指標拡張 | dev_mas-063_pl_non_operating_metrics.md | 12_mst_tax_classification と並列・属性次元の整理 |
| MAS-141 共済シミュレーター | TODO_future.md の MAS-141 行 | 共済節税効果を優先順位サジェストに統合 |
| MAS-218 タイムトラッキング | TODO_future.md の MAS-218 行 | R&D 税制控除のエビデンス用 |
| use_cases.md OP-X8 | use_cases.md | 月次レビュー時の Cash ETR 確認 |
| PRD プロダクトポリシー | prd.md | Human-in-the-Loop 原則 + 合法範囲の Disclaimer |
| 失敗パターン | failure_patterns.md | 特に #18-#20(命名造語)/ #25(並列実装対称性)/ #26(oauthScopes) |
| CLAUDE.md | CLAUDE.md | プロジェクトルール・GAS ファイル番号体系・コーディング規約 |
人間が検討すべき事項
「世帯ベース実効税率」併設の判断: 一人法人特有の最適化視点として有用だが個人税務情報の取込でスコープ拡大。
F61_HOUSEHOLD_ETR_ENABLED = falseを default とし、MAS-057 Phase 3 完了後に ON 検討。系統 A・系統 B のどちらをデフォルト表示にするか: 推奨は 系統 B(accrual)。系統 A(cash)はドリルダウンで提供。
F61_CASH_ETR_DEFAULT_VARIANTで切替可。Cash ETR 信号機 🟢 (< 20%) の閾値: 繰越欠損金フェーズの「人為的な低 Cash ETR」を健全と誤判定しないためのコンテキスト判定ロジック設計。NOL 検出と連動した 2 段階判定が必要。
税額控除(賃上げ・R&D 等)の控除前後の両方を表示するか: 控除後のみだと節税効果が見えない。
breakdown.beforeCreditsとbreakdown.afterCreditsを両方出力する spec 採用。顧客向けサービス化を視野に汎用ライブラリ化: 仕訳データ + 勘定科目マスタ + 税目分類で完結する形にする。商用化時の SKU 設計に直結。
勘定科目マスタへの「税目分類」属性追加 vs 別マスタ
12_mst_tax_classification新設の判断: 後者は DDL 拡張が必要・前提タスク化。spec は 案 A 別マスタ推奨(MAS-063 営業外サブ分類とは別の次元のため)。予測 Cash ETR の信頼区間表示: 点推定 vs 範囲推定。MAS-054 Monte Carlo(P3)連携で範囲推定への拡張余地。
ID 採番の整合性: 税務系新規プレフィックス(TAX-XX/FIN-XX)を切らず F-* 系列継承(MAS-040/MAS-041/MAS-049 と並列)の方針継続可否。
節税優先順位サジェストのアルゴリズム: 単純な節税効果額ベース vs リスク × 効果のスコアリング。spec は前者を default、Phase 2 で後者に拡張。
MAS-008 Cash Runway 連携の深度: 予測 Cash ETR を MAS-008 に織込むか、MAS-061 内で完結するか。Runway 拡張は MAS-008 spec への変更が必要なため別 PR 推奨(注意事項 #で明記)。
税理士・会計士向け監査ログ: Cash ETR 算出根拠の仕訳明細をエクスポートする機能を v1 で含めるか v2 で追加するか(顧客向けサービス化時に必須)。
実装プロンプト(Claude Code 用)
Claude Opus 4.7(1M context)推奨。多数の既存税務エンジン結合 + ガードレール法的設計 + 節税優先順位サジェストの複合判断。
## 案件
MAS-061 — キャッシュ実効税率(Cash ETR)トラッキング機能
## 事前調査(必ず Read する)
1. `docs/dev/dev_mas-061_cash_etr_tracking.md` 全文(本仕様書)
2. `docs/dev/dev_mas-049_wage_increase_tax_credit_simulator.md` 全文(節税策連携手本)
3. `docs/dev/dev_mas-003_kpi_dashboard.md` — 93_kpi_dashboard 拡張方法
4. `docs/dev/dev_mas-008_cash_runway.md` — 予測連携先
5. `docs/dev/dev_mas-058_required_revenue_solver.md` — 純粋関数 + Constants.getParam パターン
6. `400_domain/414_wage_tax_credit_simulator.js` 全文(MAS-049 実装)
7. `200_data/202_repository.js` — Repository パターン手本
8. `100_config/101_sys_config.js` — DDL 拡張箇所(12_mst_tax_classification 新設)
9. `000_infra/002_constants.js` — TAX_RATES / getParam
10. `docs/_internal/failure_patterns.md` #18-#20 / #25 / #26
## 実装対象(Step 0 = 前提タスク)
Step 0. `100_config/101_sys_config.js` に `12_mst_tax_classification` DDL 追加
+ `8XX_migration_f61_tax_classification.js` で既存科目を一括分類
Step 1. `400_domain/448_cash_etr_simulator.js` 新規(IIFE 名前空間 CashEtrSimulator):
- calculate(input) — メイン API(系統 A/B 二系統)
- calcNormalizedCashEtr(fiscalYear, years) — 3 年移動平均
- simulateForecast(input) — 予測 Cash ETR
- suggestTaxOptimizations(input) — 合法節税優先順位
- 内部ヘルパ群(_loadParamsFromSysParams_ / _diagnoseNolPhase_ / 等)
Step 2. `200_data/202_repository.js` に `TaxPaymentRepository` + `TaxClassificationRepository` 追加
Step 3. `93_kpi_dashboard` セル追加(5 セル)+ 条件付き書式(信号機)
Step 4. `03_sys_params` の 6 キー追加(default は Constants.getParam の第 2 引数)
Step 5. `000_infra/002_constants.js` の MENU_DEFINITION + F03_CASH_ETR_THRESHOLDS 追加
Step 6. `900_test/901_test_runner.js` に F61-01〜F61-13 単体テスト
## 動作確認
1. 齋藤 Baseline で Cash ETR 22% / 26% / 18% の 3 ケース ±5% 一致
2. MAS-049 控除前後の乖離率検証
3. 系統 A vs 系統 B の期ズレケース
4. NOL フェーズ判定の翌期反動警告
5. エッジケース 13 項目すべて想定通り
## デプロイ
1. dev で push:dev → メニュー「💰 Cash ETR シミュレーション」実行 → 93_kpi_dashboard 確認
2. Go なら push:prod
3. コミット: feat(MAS-061): Cash ETR トラッキング (合法節税優先順位サジェスト + ガードレール)
## failure_patterns チェック
- #18-#20: CashEtrSimulator / TaxPaymentRepository を Read で裏取り
- #25: MAS-049/MAS-058 と純粋関数 + Constants.getParam パターンで対称
- #26: appsscript.json は変更なし
推奨実行モデル
| 工程 | 推奨モデル | 根拠 |
|---|---|---|
| Step 0 税目分類マスタ整備 + マイグレーション | Claude Opus 4.7 (1M context) | 会計科目分類の domain 知識 + 法的分類の判断 |
| Step 1 CashEtrSimulator コア実装(系統 A/B + 3 年移動平均) | Claude Opus 4.7 (1M context) | 複数税務エンジン結合 + 期ズレ補正の複合判断 |
| Step 2 TaxPaymentRepository 実装 | Claude Sonnet 4.6 | 既存 Repository パターン適用 |
| Step 3 93_kpi_dashboard 拡張 + 信号機 | Claude Sonnet 4.6 | MAS-003 既存パターン流用 |
| Step 4 予測 Cash ETR + 節税優先順位サジェスト | Claude Opus 4.7 (1M context) | ガードレール法的設計 + 優先順位アルゴリズム |
| Step 5 MAS-059 Tool 化 | Claude Opus 4.7 (1M context) | 意思決定ツリー連鎖の判断 |
| 単体テスト実装(F61-01〜F61-13) | Claude Sonnet 4.6 | パターン化された期待値検証 + 法的エッジケース |
| 仕様書レビュー | Gemini 3 Pro Preview + Deep Think | 第三者視点での法的リスク検証 |
変更履歴
| 日時 | バージョン | 変更内容 |
|---|---|---|
| 2026-04-27 | v0.1 (骨組み) | 初版骨組み作成。全セクション見出し + 概要テーブルのみ。ai_agent_tips.md §6 の章単位生成方針を準用。 |
| 2026-04-27 | v0.2 (本体) | 現在のコード(MAS-049 / Constants.TAX_RATES / MAS-003 / MAS-008 / MAS-141・MAS-041 連携前提)+ 修正方針 6 Step 本文(Step 0 税目分類マスタ整備 / Step 1 計算式二系統 / Step 2 仕訳データ自動抽出 / Step 3 3 年移動平均 + 期ズレ補正 / Step 4 ダッシュボード統合 + 信号機 / Step 5 予測 Cash ETR + 合法節税優先順位 / Step 6 ガードレール)を追記。JavaScript 疑似コードで CashEtrSimulator の calculate / calcNormalizedCashEtr を提示。 |
| 2026-04-27 | v0.3 (堅牢化) | 影響範囲テーブル(新規 2 / 変更 6 / 変更なし 2)+ 注意事項 14 項目(消費税・源泉除外 / 法人税法 132 条 / 国税通則法 68 条 / 過大役員給与 / Disclaimer 必須 / 偽装請負 MAS-060 連携 / 海外移転価格スコープ外 / failure_patterns #25/#26 / 顧客向け汎用ライブラリ化 / 税目分類マスタ DDL 判断 / MAS-041 NOL 依存 / 世帯ベース ETR)+ エッジケース 13 パターン(赤字期 / NOL フェーズ / 期ズレ / 創業初期 / 税額控除前後 / 未分類税目 / 消費税誤算入 / 源泉二重カウント / 不相当高額 / 移転価格 / NOL 誤判定 等)+ 実データ検証 5 本(齋藤 Baseline 3 ケース / MAS-049 乖離率 / 系統 A vs B / NOL 反動 / F61-01〜F61-13)。 |
| 2026-04-27 | v1.0 (仕様書完了) | 関連ドキュメント 17 件(MAS-003 / MAS-008 / MAS-040 / MAS-041 / MAS-049 / MAS-057 / MAS-058 / MAS-059 / MAS-060 / MAS-062 / MAS-063 / MAS-141 / MAS-218 / use_cases.md / PRD / failure_patterns / CLAUDE.md)+ 人間検討事項 11 項目(世帯ベース ETR 併設 / 系統 A vs B default / 信号機閾値 NOL 判定 / 控除前後表示 / 顧客向け汎用化 / 税目分類マスタ DDL / 信頼区間 / ID 採番 / 節税アルゴリズム / MAS-008 連携深度 / 監査ログ)+ 実装プロンプト(Claude Opus 4.7 向け・事前調査 10 / 実装対象 6 Step / 動作確認 5 / failure_patterns チェック)+ 推奨実行モデル(Step 0-5 + テスト + レビュー)。仕様書完了(v1.0)として昇格。実装着手は MAS-049/MAS-041/MAS-141 が出揃う段階で可能(2026 Q3 以降想定)。MAS-049/MAS-041/MAS-141 の実装完了後に本案件の実装タスクをキックオフ。 |
| 2026-04-27 | v1.1 (MAS-066 配当ミックス連携追加) | MAS-066 配当ミックス最適化案件起票(2026-04-27・MAS-057 Phase 3 実装後の振り返り派生)に伴う節税優先順位サジェスト拡張。Step 5 §6-3「合法節税の優先順位サジェスト」連携策テーブルに 配当ミックス最適化(MAS-066 起票) を新規追加。配当ルートの特性(社保ゼロ + 配当控除 10% / 12.8% + 法人税後利益から支払 / 損金 NG + 会社法 461 条の分配可能額制約 + 株主総会決議事務工数考慮)を明記。特に年収 1,500 万超ゾーンで社保頭打ち + 個人累進高税率の組合せにより配当ミックスが手取り最大化に有利になりうる旨を効果列に明記。今後の連携設計: MAS-066 仕様書完成後に MAS-061 v1.2 で「配当ミックス節税効果スコア」を 40_KPIMonthly ダッシュボードに追加検討(v1.1 では節税策リストへの追加のみ・スコアリング詳細は v1.2 で詰める)。ガードレール拡張: MAS-066 の配当ルートも本仕様書 §6-5 の Disclaimer(税理士助言代替不可)と同じ法的責任最小化原則を継承。docs-only 改訂で prod 自動デプロイへの影響なし。 |