## 07_07_accounts_master.md # 勘定科目マスタ 詳細設計書 版:v2.2 実装の状況は `work_order_db_migration.md`(作業書)を見る ## 1. 概要 ### 1.1 目的 - 仕訳入力で使用する勘定科目を管理する - 科目の追加・変更・無効化をシステムから行えるようにする - 会社(SPS/SCSPS)ごとに使用できる科目を制御する ### 1.2 基本方針 - 設定画面(common/accounting/settings.html)から操作可能 - 一度使った科目は削除不可(無効化のみ) - 会社ごとに利用可能科目を設定 ## 2. 科目の種類 ### 2.1 科目区分 | 区分 | 内容 | 例 | |------|------|-----| | 資産 | 会社の持っているもの | 現金、その他の預金、売掛金 | | 負債 | 会社が払うべきもの | 買掛金、借入金 | | 資本 | 会社の元手 | 事業主借・事業主貸(個人事業)、資本金・利益剰余金(法人) | | 収益 | 売上・収入 | 売上(収入) | | 費用 | 経費・支出 | 仕入高、通信費 | ### 2.2 税区分デフォルト | 科目 | デフォルト税区分 | 備考 | |------|-----------------|------| | 売上(収入) | 10% | 大部分の売上 | | 仕入高 | 10% | | | 旅費交通費 | 10% | ガソリン代など | | 通信費 | 10% | | | 消耗品費 | 10% | | | 租税公課 | 非課税 | 印紙・税金 | | 預金(その他の預金・普通預金) | 非課税 | | | 事業主借 | 非課税 | | | 事業主貸 | 非課税 | | 全科目の値は7節。 ## 3. 会社別利用制限 ### 3.1 個人事業(SPS)専用科目 | 科目名 | 法人(SCSPS)で使ったら | |--------|------------------------| | 事業主貸 | ❌ 警告 | | 事業主借 | ❌ 警告 | ### 3.2 法人(SCSPS)専用科目 | 科目名 | 個人事業(SPS)で使ったら | |--------|--------------------------| | 普通預金 | ❌ 警告 | | 資本金 | ❌ 警告 | | 利益剰余金 | ❌ 警告 | 個人事業の預金は「その他の預金」(補助科目で口座を分ける)を使い、「普通預金」は法人だけが使う。 ### 3.3 両方で使える科目 - 現金、その他の預金、売掛金、仮払消費税等 - 買掛金、借入金、仮受消費税等 - 売上(収入) - 仕入高、旅費交通費、通信費、消耗品費、車両費、会議費、租税公課、支払手数料、雑費、水道光熱費 ### 3.4 会計担当の判断待ちの科目名 仕訳には、科目マスタに無い名前が使われているものがある:「その他預金」「雑収入」「受取利息」「元入金」。マスタに加えるか、既存の科目に直すかは、会計担当が決める(未決)。決まるまで、科目マスタは7節の23科目とする。 ## 4. 設定画面(settings.html) ### 4.1 科目一覧表示 ``` ┌─────────────────────────────────────┐ │ 【勘定科目マスタ管理】 │ │ │ │ [全科目] [資産] [負債] [資本] [収益] [費用] │ │ │ │ 科目コード | 科目名 | 区分 | 税区分 | 利用会社 | 状態 │ │------------|--------|------|--------|----------|------│ │ CASH | 現金 | 資産 | 非課税 | SPS/SCSPS| 有効 │ │ SALES | 売上(収入)| 収益 | 10% | SPS/SCSPS| 有効 │ │ OWNER_IN | 事業主借| 資本| 非課税 | SPS | 有効 │ │ CAPITAL | 資本金 | 資本| 非課税 | SCSPS | 有効 │ │ │ │ [新規追加] [一括編集] │ └─────────────────────────────────────┘ ``` ### 4.2 新規追加画面 ``` ┌─────────────────────────────────────┐ │ 【勘定科目 新規追加】 │ │ │ │ 科目コード: [____________](半角英数)│ │ 科目名: [____________] │ │ 科目区分: [資産 ▼] │ │ デフォルト税区分: [10% ▼] │ │ │ │ 利用可能会社: │ │ □ SPS(個人事業) │ │ □ SCSPS(法人) │ │ │ │ [追加] [キャンセル] │ └─────────────────────────────────────┘ ``` ### 4.3 編集画面 ``` ┌─────────────────────────────────────┐ │ 【勘定科目 編集】 │ │ │ │ 科目コード: CASH(変更不可) │ │ 科目名: [現金] │ │ 科目区分: [資産 ▼] │ │ デフォルト税区分: [非課税 ▼] │ │ │ │ 利用可能会社: │ │ ■ SPS(個人事業) │ │ ■ SCSPS(法人) │ │ │ │ 状態: [有効] / [無効] │ │ │ │ [保存] [キャンセル] [削除](使用中は不可)│ └─────────────────────────────────────┘ ``` ### 4.4 削除の制限 - すでに仕訳で使われている科目 → 削除不可(無効化のみ) - 初期マスタ(`is_system` が真の科目。現金・売上(収入)など) → 削除不可(無効化は可能) - 削除ボタンは使用不可の場合グレーアウト #### 4.5 科目区分と集計ロジックの関連付け 科目マスタの `type` フィールドは以下の意味を持ち、各画面での集計に使用される。 | type の値 | 意味 | 集計対象画面 | |-----------|------|--------------| | `income` | 収益科目 | 損益計算書(売上)、月別売上内訳 | | `expense` | 費用科目 | 損益計算書(経費)、月別経費内訳、確定申告(経費) | | `asset` | 資産科目 | 貸借対照表 | | `liability` | 負債科目 | 貸借対照表 | | `capital` | 資本科目 | 貸借対照表 | 各画面は科目マスタから動的に科目を取得し、この type に基づいて集計する。ハードコードは一切行わない。 ## 5. データ構造 ### 5.1 保存先 3つのテーブルで持つ(`00_07_database.md` 5.4節、`schema_accounting_2.sql`)。画面は、API(`load_accounts.php` / `save_accounts.php`)経由で取得・保存する。 | テーブル | 列 | 内容 | |---|---|---| | `accounts` | account_code(主キー)、name、account_type、tax_default、use_sub、sub_display、etax_group、is_system、active、sort_order、created_at | 勘定科目本体。sort_order は並び順(整数。小さい順)。account_type は asset / liability / capital / income / expense。tax_default は `0`(非課税)または `10`(10%)。sub_display は account(科目名で表示)または description(摘要欄に表示) | | `account_companies` | account_code、company_code | 科目を使える会社(SPS / SCSPS)。1科目に1〜2行 | | `sub_accounts` | sub_account_id(自動採番)、account_code、name、active | 補助科目(例:その他の預金の銀行口座)。use_sub が真の科目だけが持つ | ### 5.2 データ形式(APIの入出力の形) - 配列の順が、科目の並び順(`sort_order` の順)。`sort_order` の値そのものは入出力に含めない。 - 読み込み(`load_accounts.php`)は、`sort_order` の小さい順に返す。画面は、受け取った順のまま並べてよい(仕訳入力のプルダウンは科目名の五十音順。`07_02` 3.8節)。 - 保存(`save_accounts.php`)は、受け取った配列の順に `sort_order` を1から付け直す。新しい科目は、配列の末尾に足す。 ```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": "SALES", "name": "売上(収入)", "type": "income", "tax_default": "10", "available_for": ["SPS", "SCSPS"], "active": true, "is_system": true, "created_at": "2024-01-01" }, { "code": "OWNER_IN", "name": "事業主借", "type": "capital", "tax_default": "0", "available_for": ["SPS"], "active": true, "is_system": true, "created_at": "2024-01-01" } ] } ``` ## 6. 仕訳入力との連動 ### 6.1 プルダウン表示 - 選択中の会社(SPS/SCSPS)に応じて、利用可能な科目のみ表示 - 例:SPS選択時 → 事業主借が表示される - 例:SCSPS選択時 → 事業主借は表示されない ### 6.2 警告機能 選択中の会社で使えない科目を選んだときは、確認のダイアログ(`confirm()`)を使わず、科目の欄のそばに警告を表示する(作業ルール⑩、`03_01_design_guideline.md`)。絵文字・アイコンは使わない。 ``` 【仕訳入力時】 会社:SCSPS(法人)を選択 借方:事業主貸 ← 選択   ↓ (科目の欄のそばに表示) 「事業主貸は個人事業(SPS)専用の科目です。  法人では「役員借入金」または「仮払金」を使用してください。」 [この科目で登録する][科目を選び直す] ``` ## 7. 初期マスタ 個人事業・法人の科目を1つのマスタで持ち、利用会社で分ける。下の表の並びが、初期の並び順(`sort_order` 1〜23)。補助科目の「使う(摘要欄に表示)」は、`sub_display` が description の科目。`is_system` が偽(利用者が追加した科目)は水道光熱費(UTILITY)だけで、ほかは初期マスタ。 | コード | 科目名 | 区分 | 税区分 | 利用会社 | 補助科目 | |--------|--------|------|--------|----------|----------| | CASH | 現金 | 資産 | 非課税 | SPS/SCSPS | — | | BANK | 普通預金 | 資産 | 非課税 | SCSPS | 使う | | OTHER_BANK | その他の預金 | 資産 | 非課税 | SPS/SCSPS | 京銀(SPサービス)、GMO(SPS)、GMO(SPサービス) | | AR | 売掛金 | 資産 | 非課税 | SPS/SCSPS | — | | AP | 買掛金 | 負債 | 非課税 | SPS/SCSPS | — | | LOAN | 借入金 | 負債 | 非課税 | SPS/SCSPS | — | | SALES | 売上(収入) | 収益 | 10% | SPS/SCSPS | — | | PURCHASE | 仕入高 | 費用 | 10% | SPS/SCSPS | — | | TRAVEL | 旅費交通費 | 費用 | 10% | SPS/SCSPS | 使う(摘要欄に表示) | | COMM | 通信費 | 費用 | 10% | SPS/SCSPS | — | | SUPPLIES | 消耗品費 | 費用 | 10% | SPS/SCSPS | — | | VEHICLE | 車両費 | 費用 | 10% | SPS/SCSPS | 使う(摘要欄に表示) | | MEETING | 会議費 | 費用 | 10% | SPS/SCSPS | — | | TAX | 租税公課 | 費用 | 非課税 | SPS/SCSPS | — | | FEE | 支払手数料 | 費用 | 10% | SPS/SCSPS | — | | MISC | 雑費 | 費用 | 10% | SPS/SCSPS | — | | UTILITY | 水道光熱費 | 費用 | 10% | SPS/SCSPS | — | | OWNER_IN | 事業主借 | 資本 | 非課税 | SPS | — | | OWNER_OUT | 事業主貸 | 資本 | 非課税 | SPS | — | | PREPAID_TAX | 仮払消費税等 | 資産 | 非課税 | SPS/SCSPS | — | | TAX_PAYABLE | 仮受消費税等 | 負債 | 非課税 | SPS/SCSPS | — | | CAPITAL | 資本金 | 資本 | 非課税 | SCSPS | — | | RETAINED | 利益剰余金 | 資本 | 非課税 | SCSPS | — | ## 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-10-08 | 1.3 | ファイル名規則を「フォルダ番号+ファイル番号」形式に変更したことに伴い、参照名と保存先表記を機械的に置換(内容の変更なし) | | 2026-10-29 | 2.0 | DB前提に書き直し。保存先を `accounts` テーブルに(5節) | | 2026-11-05 | 2.1 | 5.1節を、`accounts` / `account_companies` / `sub_accounts` の列に確定(「設計未確定」を解消)。5.2節の例を、実データの値(tax_default は `0`/`10`、補助科目・etax_group・sub_display を含む)に合わせた | | 2026-11-06 | 2.2 | v2.1 の承認取り消し(2026-11-05)を受けた修正。2・3・4・7節の科目を、実データ(`master/accounts.json`、23科目)に合わせた(売上高→売上(収入)、普通預金は法人専用、資本の科目、初期マスタを1つの表に)。3.4節:仕訳にだけある4つの科目名を「会計担当の判断待ち」と明記。6.2節:警告を画面内の表示に(`confirm()`・絵文字を使わない)。改訂履歴の表の途中の「```」を削除 | | 2026-11-07 | 2.2 | (承認前の追記。全体管理者16代目)5.1節:`accounts` に並び順の列 `sort_order` を追加(真柴さんの決定 2026-11-07)。5.2節:配列の順が並び順であること、読み込みは `sort_order` の順、保存は配列の順に付け直すことを追記。7節:表の並びが初期の並び順 |