# 02_data_definition/02_03_company_info.md # 事業者情報マスタ 版:v2.0(承認待ち) 実装の状況は `work_order_db_migration.md`(作業書)を見る ## 1. 概要 ### 1.1 目的 - 個人事業(SPS)と法人(SCSPS)の基本情報を一元管理する。 - 適格請求書登録番号、探偵業届出情報、会社住所など、帳票に必要な情報を持つ。 - 各帳票(請求書、領収書、決算書、申告書など)で共通して参照する。 ### 1.2 基本方針 - 会社コード(SPS / SCSPS)で識別する。 - 権限に応じて、閲覧・編集できる。 - 変更の履歴は、必要に応じて `change_history`(`00_10`)に残す。 ## 2. 保存先 `companies` テーブルと `company_detective_names` テーブル(`schema_master.sql`)。 | 項目 | 保存先 | |------|--------| | 会社コード、会社名、代表者名、住所、電話、設立日、備考 | `companies` の各列 | | 適格請求書登録番号、登録日 | `companies.invoice_number`、`invoice_registered_date` | | 探偵業の商号、届出日、届出番号 | `companies.detective_trade_name`、`detective_filing_date`、`detective_license_number` | | 探偵業で使える名称(複数) | `company_detective_names`(1名称につき1行) | 日付(登録日、届出日、設立日)は、和暦の文字列で持つ(帳票にそのまま印字するため)。 ## 3. データ構造(APIの入出力の形) 以下の値は、テスト用。 ```json { "companies": [ { "code": "SPS", "name": "SPS(個人事業)", "representative": "テスト 太郎", "address": "京都府○○市△△1-2-3", "phone": "000-000-0000", "invoice": { "number": "T0000000000000", "registered_date": "令和5年10月1日" }, "detective": { "trade_name": "テスト調査サービス", "filing_date": "平成29年11月29日", "license_number": "第00000000号", "available_names": ["SPS", "テスト調査"] }, "established_date": "平成26年8月26日", "notes": "" } ] } ``` ## 4. 項目の説明 | 項目 | 必須 | 説明 | |------|------|------| | `code` | ○ | 会社コード(SPS / SCSPS) | | `name` | ○ | 会社名 | | `representative` | ○ | 代表者名 | | `address` | ○ | 住所 | | `phone` | ○ | 電話番号 | | `invoice.number` | ○ | 適格請求書登録番号(T で始まる) | | `invoice.registered_date` | ○ | 登録日(和暦) | | `detective.trade_name` | ○ | 探偵業の商号 | | `detective.filing_date` | ○ | 届出日(和暦) | | `detective.license_number` | ○ | 届出番号 | | `detective.available_names` | ○ | 使える名称の一覧 | | `established_date` | ○ | 設立日・開業日(和暦) | | `notes` | - | 備考 | ## 5. 関連する帳票・画面 | 帳票・画面 | 参照項目 | |-----------|---------| | 請求書 | 会社名、住所、電話番号、適格請求書登録番号 | | 領収書 | 会社名、適格請求書登録番号 | | 決算書(表紙) | 会社名、住所、代表者名 | | 確定申告書(個人) | 氏名(代表者名)、適格請求書登録番号 | | 法人税申告書 | 会社名、代表者名、適格請求書登録番号 | | 消費税申告書 | 会社名、適格請求書登録番号 | | 事業者情報(`master/company_info.html`、`master/company_edit.html`) | すべて | ## 6. 閲覧・編集の権限 | 操作 | 権限 | 備考 | |------|------|------| | 閲覧 | `company_info_view` | 会社ごとの範囲は、会社へのアクセス権限(`company_access_*`)に従う | | 編集 | `company_info_edit` | 保存のAPIでも確認する | (旧仕様書は、編集権限を `permission_assign` としていた。現行の権限マスタにある `company_info_view`・`company_info_edit` に合わせた。要確認:作業書 I-11) ## 7. 画面 - 一覧:`master/company_info.html`。個人事業(SPS)と法人(SCSPS)のタブ切り替え。 - 編集:`master/company_edit.html`。入力フォーム、保存、キャンセル。 ## 8. API ### 8.1 読み込み:`GET /master/api/load_company.php`(名前は案) - ログインを確認し、`company_info_view` の権限で、閲覧できる会社の情報を返す。 - 画面は、このAPIから読み込む(ファイルやテーブルを直接読まない)。 ### 8.2 保存:`POST /master/api/save_company.php` | 項目 | 内容 | |------|------| | リクエスト | `{"company": { 3節の形 }}`(更新者はセッションから取得する。リクエストには含めない) | | 成功 | `{"success": true, "message": "保存しました"}` | | 失敗 | `{"success": false, "message": "…"}` | 処理の内容: 1. ログインと `company_info_edit` の権限を確認する。 2. 入力を検証する(必須項目、登録番号の形式)。 3. トランザクションを開始する。 4. `companies` の該当行を更新する(なければ追加)。`company_detective_names` は、該当会社の行を入れ替える。 5. 更新者と更新日時を記録する。変更の履歴を `change_history` に残す。 6. コミットする。途中で失敗したらロールバックする。 ## 変更履歴 | 日付 | 版 | 担当 | 変更内容 | 備考 | |------|----|------|----------|------| | 2026-03-15 | 1.0 | マスタ管理担当 | 初版作成 | | | 2026-03-16 | 1.1 | マスタ管理担当 | 保存処理API仕様を追記 | | | 2026-10-08 | 1.2 | 全体管理者(12代目) | ファイル名規則の変更に伴う参照名の置換(内容の変更なし) | | | 2026-10-30 | 2.0 | 全体管理者(14代目) | DB前提に書き直し。保存先を `companies`、`company_detective_names` に。読み込みAPI(`load_company.php`)を追加。権限を `company_info_view` / `company_info_edit` に。データ例の実名・番号をテスト値に | 仕様書をDB前提に統一(作業書 J-02)。影響範囲:`save_company.php`、`company_info.html`、`company_edit.html`、`schema_master.sql` |