## 07_accounts_master.md # 勘定科目マスタ 詳細設計書 ## 1. 概要 ### 1.1 目的 - 仕訳入力で使用する勘定科目を管理する - 科目の追加・変更・無効化をシステムから行えるようにする - 会社(SPS/SCSPS)ごとに使用できる科目を制御する ### 1.2 基本方針 - 設定画面(common/accounting/settings.html)から操作可能 - 一度使った科目は削除不可(無効化のみ) - 会社ごとに利用可能科目を設定 ## 2. 科目の種類 ### 2.1 科目区分 | 区分 | 内容 | 例 | |------|------|-----| | 資産 | 会社の持っているもの | 現金、預金、売掛金 | | 負債 | 会社が払うべきもの | 買掛金、借入金 | | 資本 | 会社の元手 | 資本金、元入金 | | 収益 | 売上・収入 | 売上高、雑収入 | | 費用 | 経費・支出 | 仕入高、通信費 | ### 2.2 税区分デフォルト | 科目 | デフォルト税区分 | 備考 | |------|-----------------|------| | 売上高 | 10% | 大部分の売上 | | 仕入高 | 10% | | | 旅費交通費 | 10% | ガソリン代など | | 通信費 | 10% | | | 消耗品費 | 10% | | | 租税公課 | 非課税 | 印紙・税金 | | 預金 | 非課税 | | | 事業主借 | 非課税 | | | 事業主貸 | 非課税 | | ## 3. 会社別利用制限 ### 3.1 個人事業(SPS)専用科目 | 科目名 | 法人(SCSPS)で使ったら | |--------|------------------------| | 事業主貸 | 警告 | | 事業主借 | 警告 | | 家事消費 | 警告 | | 元入金 | 警告 | ### 3.2 法人(SCSPS)専用科目 | 科目名 | 個人事業(SPS)で使ったら | |--------|--------------------------| | 資本金 | 警告 | | 繰越利益剰余金 | 警告 | | 役員報酬 | 警告 | | 法人税、住民税及び事業税 | 警告 | ### 3.3 両方で使える科目 - 現金、普通預金、売掛金、買掛金、借入金 - 売上高、仕入高、通信費、旅費交通費、消耗品費、など ## 4. 設定画面(settings.html) ### 4.1 科目一覧表示 ``` ┌─────────────────────────────────────┐ │ 【勘定科目マスタ管理】 │ │ │ │ [全科目] [資産] [負債] [資本] [収益] [費用] │ │ │ │ 科目コード | 科目名 | 区分 | 税区分 | 利用会社 | 状態 │ │------------|--------|------|--------|----------|------│ │ CASH | 現金 | 資産 | 非課税 | SPS/SCSPS| 有効 │ │ SALES | 売上高 | 収益 | 10% | SPS/SCSPS| 有効 │ │ OWNER_LOAN | 事業主借| 資本| 非課税 | SPS | 有効 │ │ CAPITAL | 資本金 | 資本| 非課税 | SCSPS | 有効 │ │ │ │ [新規追加] │ └─────────────────────────────────────┘ ``` ### 4.2 新規追加画面 ``` ┌─────────────────────────────────────┐ │ 【勘定科目 新規追加】 │ │ │ │ 科目コード: [____________](半角英数)│ │ 科目名: [____________] │ │ 科目区分: [資産 ▼] │ │ デフォルト税区分: [10% ▼] │ │ │ │ 利用可能会社: │ │ □ SPS(個人事業) │ │ □ SCSPS(法人) │ │ │ │ □ 補助科目を使用する │ │ 反映先: [相手科目欄 ▼] │ │ │ │ [追加] [キャンセル] │ └─────────────────────────────────────┘ ``` ### 4.3 編集画面 ``` ┌─────────────────────────────────────┐ │ 【勘定科目 編集】 │ │ │ │ 科目コード: CASH(変更不可) │ │ 科目名: [現金] │ │ 科目区分: [資産 ▼] │ │ デフォルト税区分: [非課税 ▼] │ │ │ │ 利用可能会社: │ │ ■ SPS(個人事業) │ │ ■ SCSPS(法人) │ │ │ │ 状態: [有効] / [無効] │ │ │ │ ■ 補助科目を使用する │ │ 反映先: [相手科目欄 ▼] │ │ │ │ 【補助科目一覧】 │ │ 名称(文字幅18以内) | 有効 | │ │ 京銀(SPサービス) | ■ | [削除]│ │ GMO(SPS) | ■ | [削除]│ │ [補助科目を追加] │ │ │ │ [保存] [キャンセル] │ └─────────────────────────────────────┘ ``` ### 4.4 削除の制限 - すでに仕訳で使われている科目 → 削除不可(無効化のみ) - 初期マスタ(現金・売上高など) → 削除不可(無効化は可能) - 削除ボタンは使用不可の場合グレーアウト ### 4.5 補助科目の管理ルール - 補助科目は「名称」のみを持つ(コードなし)。名称が識別キーになる - 同一勘定科目内で補助科目名の重複は禁止(保存時バリデーション) - 名称の文字幅は18以内(全角1文字=2、半角1文字=1) - 追加・有効/無効切替が可能。削除は仕訳で未使用の場合のみ可能 - `use_sub: false` に変更した場合、既存仕訳の `sub_account` フィールドはそのまま保持(データ破壊しない) ### 4.6 保存方式 勘定科目マスタの編集・保存はサーバーAPI経由で行う。localStorageは使用しない。 - 読込:`GET /master/accounts.json`(直接フェッチ) - 保存:`POST /master/api/save_accounts.php`(`accounts.json` を上書き) - 編集内容は即時サーバーに保存され、全端末に反映される ### 4.7 科目区分と集計ロジックの関連付け 科目マスタの `type` フィールドは以下の意味を持ち、各画面での集計に使用される。 | type の値 | 意味 | 集計対象画面 | |-----------|------|--------------| | `income` | 収益科目 | 損益計算書(売上)、月別売上内訳 | | `expense` | 費用科目 | 損益計算書(経費)、月別経費内訳、確定申告(経費) | | `asset` | 資産科目 | 貸借対照表 | | `liability` | 負債科目 | 貸借対照表 | | `capital` | 資本科目 | 貸借対照表 | 各画面は科目マスタから動的に科目を取得し、この type に基づいて集計する。ハードコードは一切行わない。 ## 5. データ構造 ### 5.1 保存先 ``` /backoffice/master/accounts.json ``` ### 5.2 フィールド定義 | フィールド | 型 | 必須 | 説明 | |-----------|-----|------|------| | `code` | string | ✅ | 科目コード(半角英数・アンダースコア)。変更不可 | | `name` | string | ✅ | 科目名 | | `type` | string | ✅ | 区分:asset / liability / capital / income / expense | | `tax_default` | string | ✅ | デフォルト税区分:0 / 8 / 10 | | `available_for` | array | ✅ | 利用可能会社:["SPS"] / ["SCSPS"] / ["SPS","SCSPS"] | | `active` | boolean | ✅ | 有効フラグ | | `is_system` | boolean | ✅ | システム初期科目フラグ(削除不可) | | `use_sub` | boolean | ✅ | 補助科目使用フラグ | | `sub_display` | string | ✅ | 補助科目の反映先:"account"(相手科目欄)/ "description"(摘要欄) | | `sub_accounts` | array | ✅ | 補助科目リスト(use_sub: false の場合は空配列) | | `etax_group` | string | ✅ | e-Tax集計グループ名(通常は科目名と同じ) | | `created_at` | string | ✅ | 作成日(YYYY-MM-DD) | ### 5.3 補助科目(sub_accounts)フィールド定義 | フィールド | 型 | 必須 | 説明 | |-----------|-----|------|------| | `name` | string | ✅ | 補助科目名。同一科目内で一意。識別キーとして使用 | | `active` | boolean | ✅ | 有効フラグ | **補助科目にコードフィールドは持たない。名前が識別キー。** ### 5.4 データ形式サンプル ```json { "accounts": [ { "code": "CASH", "name": "現金", "type": "asset", "tax_default": "0", "available_for": ["SPS", "SCSPS"], "active": true, "is_system": true, "use_sub": false, "sub_display": "account", "sub_accounts": [], "etax_group": "現金", "created_at": "2024-01-01" }, { "code": "OTHER_BANK", "name": "その他の預金", "type": "asset", "tax_default": "0", "available_for": ["SPS", "SCSPS"], "active": true, "is_system": true, "use_sub": true, "sub_display": "account", "sub_accounts": [ { "name": "京銀(SPサービス)", "active": true }, { "name": "GMO(SPS)", "active": true }, { "name": "GMO(SPサービス)", "active": true } ], "etax_group": "その他の預金", "created_at": "2024-01-01" }, { "code": "TRAVEL", "name": "旅費交通費", "type": "expense", "tax_default": "10", "available_for": ["SPS", "SCSPS"], "active": true, "is_system": true, "use_sub": true, "sub_display": "description", "sub_accounts": [ { "name": "駐車料金", "active": true }, { "name": "ガソリン代", "active": true }, { "name": "ETC", "active": true }, { "name": "高速料金", "active": true }, { "name": "宿泊費", "active": true } ], "etax_group": "旅費交通費", "created_at": "2024-01-01" } ] } ``` ## 6. 仕訳入力との連動 ### 6.1 プルダウン表示 - 選択中の会社(SPS/SCSPS)に応じて、`available_for` に該当する `active: true` の科目のみ表示 - `use_sub: true` かつ `sub_accounts` に `active: true` の項目が1件以上ある科目を選択した場合、補助科目プルダウンを表示する ### 6.2 補助科目の反映ルール(sub_display) | sub_display の値 | 反映先 | 動作 | |-----------------|--------|------| | `"account"` | 相手科目欄(元帳) | 元帳の相手科目欄に科目名1行目・補助科目名2行目で表示。仕訳データの `sub_account` フィールドに補助科目名を保持 | | `"description"` | 摘要欄 | 摘要の先頭に補助科目名を付加して保存(例:「駐車料金 ○○パーキング」)。`sub_account` フィールドにも補助科目名を保持 | ### 6.3 消費税判定 仕訳登録・更新時の消費税(仮受/仮払)の振り分けは、科目名の文字列判定ではなく `type` フィールドで行う。 - 貸方科目の `type === "income"` → 仮受消費税等を貸方に追加 - それ以外 → 仮払消費税等を借方に追加 ### 6.4 警告機能(会社専用科目の誤使用) 仕訳入力時に `available_for` に現在の会社が含まれない科目を選択した場合、インライン警告を表示する(confirm/alert 禁止)。 ## 7. 初期マスタ ### 7.1 個人事業(SPS)用 | コード | 科目名 | 区分 | 税区分 | use_sub | |--------|--------|------|--------|---------| | CASH | 現金 | 資産 | 非課税 | false | | OTHER_BANK | その他の預金 | 資産 | 非課税 | true(sub_display: account) | | AR | 売掛金 | 資産 | 非課税 | false | | AP | 買掛金 | 負債 | 非課税 | false | | LOAN | 借入金 | 負債 | 非課税 | false | | OWNER_IN | 事業主借 | 資本 | 非課税 | false | | OWNER_OUT | 事業主貸 | 資本 | 非課税 | false | | SALES | 売上(収入) | 収益 | 10% | false | | PURCHASE | 仕入高 | 費用 | 10% | false | | TRAVEL | 旅費交通費 | 費用 | 10% | true(sub_display: description) | | VEHICLE | 車両費 | 費用 | 10% | true(sub_display: description) | | COMM | 通信費 | 費用 | 10% | false | | SUPPLIES | 消耗品費 | 費用 | 10% | false | | TAX | 租税公課 | 費用 | 非課税 | false | ### 7.2 法人(SCSPS)用 個人事業と共通科目に加えて以下を追加。 | コード | 科目名 | 区分 | 税区分 | use_sub | |--------|--------|------|--------|---------| | BANK | 普通預金 | 資産 | 非課税 | true(sub_display: account) | | CAPITAL | 資本金 | 資本 | 非課税 | false | | RETAINED | 利益剰余金 | 資本 | 非課税 | false | | OFFICER | 役員報酬 | 費用 | 10% | false | | CORP_TAX | 法人税等 | 費用 | 非課税 | false | ※ 普通預金は法人(SCSPS)専用(available_for: ["SCSPS"])。SPSはその他の預金を使用。 ## 8. 改訂履歴 | 日付 | 版 | 担当 | 内容 | 理由・影響範囲 | |------|----|------|------|--------------| | 2026-03-12 | 1.0 | 全体管理者 | 初版作成 | | | 2026-03-15 | 1.1 | 会計担当 | settings.htmlのパスを common/accounting/settings.html に修正 | | | 2026-03-17 | 1.2 | 会計担当 | 4.5節「科目区分と集計ロジックの関連付け」を追記 | | | 2026-03-22 | 1.3 | 会計担当 | 保存方式をサーバーAPIに変更・localStorage撤廃 | | | 2026-03-24 | 1.4 | 会計担当 | 補助科目機能を追加(コード・名称の2フィールド) | | | 2026-04-04 | 1.5 | 会計担当12代目 | 補助科目コードを廃止し名称をキーに変更。use_sub / sub_display / sub_accounts の正式定義を追記。消費税判定をtype基準に明記。フィールド定義表を新設(5.2・5.3節)。旅費交通費・車両費の補助科目をsub_display:descriptionとして初期マスタに明記 | 補助科目コードが保存バリデーションの障壁になっており未登録状態が続いていたため廃止。名称の一意性で識別可能。影響範囲:accounts.json・journals.json(既存sub_accountフィールドを名称に移行)・settings.html・journal.html |