# 画面設計書 28-メーカー詳細画面

## 概要

本ドキュメントは、InvenTreeシステムのメーカー詳細画面(ManufacturerDetail)の設計仕様を定義するものである。

### 本画面の処理概要

メーカー詳細画面は、部品を製造するメーカー企業の詳細情報を表示・管理するための画面である。本画面はCompanyDetailコンポーネントを継承し、購買管理の文脈でメーカー情報を表示する。

**業務上の目的・背景**：部品管理において、部品の製造元（メーカー）の情報管理は品質管理とトレーサビリティに不可欠である。本画面では、メーカーの基本情報に加え、そのメーカーが製造する部品一覧やメーカー経由の在庫情報を確認できる。これにより、調達担当者は部品の製造元を把握し、品質問題発生時の追跡調査や代替品検討を効率的に行うことができる。

**画面へのアクセス方法**：購買インデックス画面のメーカー一覧から対象のメーカーを選択、またはメーカー部品詳細画面からリンク、あるいは直接URL `/purchasing/manufacturer/:id/*` にアクセスすることで本画面を表示できる。

**主要な操作・処理内容**：
1. メーカー基本情報の表示・編集
2. メーカー部品一覧の表示・管理
3. メーカー経由の在庫アイテム一覧の表示
4. 連絡先・住所の管理
5. 添付ファイル・メモの管理

**画面遷移**：
- 遷移元：購買インデックス画面、メーカー部品詳細画面
- 遷移先：メーカー部品詳細画面

**権限による表示制御**：
- 会社詳細画面(CompanyDetail)の権限制御を継承
- `UserRoles.purchase_order` のChange権限がない場合、編集操作が無効化
- `UserRoles.purchase_order` のDelete権限がない場合、削除操作が無効化

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 23 | 会社マスタ管理 | 主機能 | メーカー情報の詳細表示・編集・削除処理 |
| 25 | 製造元部品管理 | 遷移先機能 | メーカー部品一覧の表示 |

## 画面種別

詳細画面（CompanyDetailを継承）

## URL/ルーティング

| パス | 説明 |
|------|------|
| `/purchasing/manufacturer/:id/*` | メーカー詳細画面 |

## 入出力項目

会社詳細画面(No.25)と同一。CompanyDetailコンポーネントを使用。

## 表示項目

会社詳細画面(No.25)と同一。CompanyDetailコンポーネントを使用。

ただし、以下のタブが主に表示される（is_manufacturer=trueの場合）：
- Company Details
- Manufactured Parts（メーカー部品一覧）
- Stock Items（在庫アイテム一覧）
- Contacts（連絡先一覧）
- Addresses（住所一覧）
- Parameters
- Attachments
- Notes

## イベント仕様

会社詳細画面(No.25)と同一。CompanyDetailコンポーネントを使用。

## データベース更新仕様

会社詳細画面(No.25)と同一。CompanyDetailコンポーネントを使用。

## メッセージ仕様

会社詳細画面(No.25)と同一。

## 例外処理

会社詳細画面(No.25)と同一。

## 備考

- ManufacturerDetailは、CompanyDetailコンポーネントに以下のpropsを渡すラッパーコンポーネント：
  - title: "Manufacturer"
  - breadcrumbs: [{ name: "Purchasing", url: "/purchasing/" }]
  - last_crumb_url: "/purchasing/manufacturer"
- 会社がメーカーとして登録されていない場合（is_manufacturer=false）でも表示は可能だが、メーカー固有のタブ（Manufactured Parts）は非表示となる
- メーカーは同時にサプライヤーであることも多く、その場合は両方の機能が利用可能

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: エントリーポイントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | ManufacturerDetail.tsx | `src/frontend/src/pages/company/ManufacturerDetail.tsx` | ラッパーコンポーネントの実装 |

**主要処理フロー**:
1. **5-12行目**: CompanyDetailコンポーネントを呼び出し、メーカー固有のpropsを渡す
   - title: `t\`Manufacturer\``
   - breadcrumbs: 購買メニューへのリンク
   - last_crumb_url: `/purchasing/manufacturer`

#### Step 2: ベースコンポーネントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | CompanyDetail.tsx | `src/frontend/src/pages/company/CompanyDetail.tsx` | ベースとなる会社詳細コンポーネント |

詳細は会社詳細画面(No.25)のコードリーディングガイドを参照。

### プログラム呼び出し階層図

```
ManufacturerDetail.tsx
    │
    └─ CompanyDetail.tsx
           │
           ├─ props受け取り
           │      ├─ title: "Manufacturer"
           │      ├─ breadcrumbs: [{ name: "Purchasing", url: "/purchasing/" }]
           │      └─ last_crumb_url: "/purchasing/manufacturer"
           │
           └─ (会社詳細画面と同じ構成)
```

### データフロー図

```
[入力]                              [処理]                              [出力]

URL /purchasing/manufacturer/:id ──▶ ManufacturerDetail ────────────▶ CompanyDetail
                                        │
                                        └─ props設定
                                           ├─ title
                                           ├─ breadcrumbs
                                           └─ last_crumb_url
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| ManufacturerDetail.tsx | `src/frontend/src/pages/company/ManufacturerDetail.tsx` | ソース | ラッパーコンポーネント |
| CompanyDetail.tsx | `src/frontend/src/pages/company/CompanyDetail.tsx` | ソース | ベースコンポーネント |
| ManufacturerPartTable.tsx | `src/frontend/src/tables/purchasing/ManufacturerPartTable.tsx` | ソース | メーカー部品一覧 |
| StockItemTable.tsx | `src/frontend/src/tables/stock/StockItemTable.tsx` | ソース | 在庫アイテム一覧 |
