---
generated_at: 2026-01-29 19:30:00
metrics:
  claims_total: 225
  claims_with_evidence: 225
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: order.csv (単体テストケース一覧)

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容(Claim: 主張)を検証しています:

1. **根拠の有無確認**: 各テストケースに対して、ソースコードの該当メソッド・クラスが存在するか
2. **根拠との整合性**: テスト観点がコードの実装内容と矛盾していないか
3. **網羅性**: 主要なメソッド・プロパティ・バリデーションロジックをカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」: 根拠あり、「△」: 根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー (まず見るところ)
- 総合信頼度(derived): **1.00**
  - 根拠あり: 225 / 225、根拠なし: 0
- 優先レビュー(高)
  1. **UT-ORD-061~067**: receive_line_items関連 - 複雑なロジックのため詳細確認推奨
  2. **UT-ORD-145~146**: complete_shipment関連 - 状態遷移とバックグラウンド処理
  3. **UT-ORD-148~158**: SalesOrderAllocation.clean - 多数のバリデーションルール

## 2) 参照した情報 (Evidence一覧)
> ここに「実在するもの」だけ列挙。

- E-01: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/order/models.py` (3069行)
- E-02: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/order/status_codes.py` (118行)
- E-03: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/order/tasks.py` (265行)
- E-04: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/order/validators.py` (65行)
- E-05: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/order/events.py` (40行)

## 3) Claims と根拠の対応 (レビューの主戦場)

### TotalPriceMixin (UT-ORD-001 ~ UT-ORD-009)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | TotalPriceMixin.save()でtotal_priceが自動更新される | E-01 Line 73-84 | ○ |
| C-02 | currencyプロパティがorder_currency優先で返却される | E-01 Line 103-119 | ○ |
| C-03 | calculate_total_priceがlines + extra_linesを合計する | E-01 Line 128-179 | ○ |
| C-04 | MissingRate例外時にNoneが返却される | E-01 Line 153-158, 170-174 | ○ |

### Order基底クラス (UT-ORD-010 ~ UT-ORD-023)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | Order.save()でreference_intが再構築される | E-01 Line 329 | ○ |
| C-06 | check_locked()がcompleteステータスとUNLOCK_SETTINGを確認する | E-01 Line 335-350 | ○ |
| C-07 | clean()でresponsible必須チェックが行われる | E-01 Line 366-371 | ○ |
| C-08 | clean()でcontactとcompanyの整合性チェックが行われる | E-01 Line 374-378 | ○ |
| C-09 | clean()でstart_dateとtarget_dateの順序チェックが行われる | E-01 Line 381-385 | ○ |
| C-10 | overdue_filterがstatus in OPENかつtarget_date < todayを返す | E-01 Line 415-426 | ○ |

### PurchaseOrder (UT-ORD-024 ~ UT-ORD-067)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | PurchaseOrder.__str__がreference - supplier.name形式 | E-01 Line 608-610 | ○ |
| C-12 | add_line_itemでquantity検証が行われる | E-01 Line 715-722 | ○ |
| C-13 | add_line_itemでsupplier一致検証が行われる | E-01 Line 724-727 | ○ |
| C-14 | add_line_itemでgroup=Trueの場合に既存行に追加される | E-01 Line 729-746 | ○ |
| C-15 | _action_placeでPLACEDステータスに遷移する | E-01 Line 762-781 | ○ |
| C-16 | _action_completeでCOMPLETEステータスに遷移する | E-01 Line 783-805 | ○ |
| C-17 | can_issueがPENDING/ON_HOLDでTrueを返す | E-01 Line 812-818 | ○ |
| C-18 | can_cancelがOPENステータスでTrueを返す | E-01 Line 859-865 | ○ |
| C-19 | pending_line_itemsがquantity > receivedをフィルタする | E-01 Line 902-907 | ○ |
| C-20 | receive_line_itemsが複数アイテムを受領してStockItemを作成する | E-01 Line 933-1199 | ○ |
| C-21 | receive_line_itemsでPLACED以外はValidationError | E-01 Line 958-961 | ○ |

### SalesOrder (UT-ORD-068 ~ UT-ORD-102)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | SalesOrder.is_fully_allocatedが全行の割当状態を確認する | E-01 Line 1384-1386 | ○ |
| C-23 | SalesOrder.is_completedがshipped >= quantityを確認する | E-01 Line 1392-1399 | ○ |
| C-24 | can_completeが複数の完了条件を検証する | E-01 Line 1401-1450 | ○ |
| C-25 | _action_placeでIN_PROGRESSに遷移する | E-01 Line 1465-1481 | ○ |
| C-26 | _action_cancelでallocationsが削除される | E-01 Line 1541-1567 | ○ |
| C-27 | pending_allocationsがshipment=NullまたはshipmentDate=Nullをフィルタする | E-01 Line 1656-1667 | ○ |

### OrderLineItem (UT-ORD-103 ~ UT-ORD-107)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | OrderLineItem.save()でロック済み注文はValidationError | E-01 Line 1733-1736 | ○ |
| C-29 | OrderLineItem.delete()でロック済み注文はValidationError | E-01 Line 1749-1752 | ○ |
| C-30 | total_line_priceがquantity * priceを返す | E-01 Line 1766-1770 | ○ |

### PurchaseOrderLineItem (UT-ORD-108 ~ UT-ORD-121)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | clean()でsupplier一致を検証する | E-01 Line 1888-1891 | ○ |
| C-32 | clean()でbuild_order.external=Trueを検証する | E-01 Line 1893-1897 | ○ |
| C-33 | clean()でbuild_order.partとpart.partの一致を検証する | E-01 Line 1907-1910 | ○ |
| C-34 | get_destinationが優先順位で場所を返す | E-01 Line 1990-2004 | ○ |
| C-35 | remaining()がmax(quantity - received, 0)を返す | E-01 Line 2006-2009 | ○ |
| C-36 | update_pricingがsupplier_partの価格で更新する | E-01 Line 2015-2026 | ○ |

### SalesOrderLineItem (UT-ORD-122 ~ UT-ORD-132)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | clean()でsalable=Falseを検証する | E-01 Line 2090-2094 | ○ |
| C-38 | fulfilled_quantityがstock_itemsのquantity合計を返す | E-01 Line 2137-2146 | ○ |
| C-39 | allocated_quantityがallocationsのquantity合計を返す | E-01 Line 2148-2160 | ○ |
| C-40 | is_fully_allocatedがvirtualパーツでTrueを返す | E-01 Line 2164-2166 | ○ |

### SalesOrderShipment (UT-ORD-133 ~ UT-ORD-147)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | clean()でshipment_addressとcustomerの一致を検証する | E-01 Line 2251-2255 | ○ |
| C-42 | addressプロパティがshipment_address優先で返す | E-01 Line 2349-2355 | ○ |
| C-43 | check_can_completeが複数条件を検証する | E-01 Line 2369-2397 | ○ |
| C-44 | complete_shipmentがバックグラウンドタスクを起動する | E-01 Line 2447-2452 | ○ |

### SalesOrderAllocation (UT-ORD-148 ~ UT-ORD-158)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | clean()でitem未設定を検証する | E-01 Line 2517-2521 | ○ |
| C-46 | clean()でpart一致を検証する | E-01 Line 2523-2531 | ○ |
| C-47 | clean()で過剰割当を検証する | E-01 Line 2533-2547 | ○ |
| C-48 | clean()でquantity > 0を検証する | E-01 Line 2549-2550 | ○ |
| C-49 | clean()でシリアル品のquantity=1を検証する | E-01 Line 2552-2553 | ○ |
| C-50 | complete_allocationがallocateToCustomerを呼ぶ | E-01 Line 2610-2630 | ○ |

### ReturnOrder (UT-ORD-159 ~ UT-ORD-182)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | is_receivedが全line itemsのreceived_dateを確認する | E-01 Line 2768-2770 | ○ |
| C-52 | _action_completeでCOMPLETEに遷移しcomplete_dateを設定する | E-01 Line 2810-2817 | ○ |
| C-53 | receive_line_itemでStockItemを更新しline.received_dateを設定する | E-01 Line 2879-2954 | ○ |
| C-54 | 部分数量の場合にStockItemが分割される | E-01 Line 2905-2911 | ○ |

### ReturnOrderLineItem (UT-ORD-183 ~ UT-ORD-188)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | clean()でitem必須を検証する | E-01 Line 2978-2979 | ○ |
| C-56 | clean()でquantity <= item.quantityを検証する | E-01 Line 2981-2984 | ○ |
| C-57 | clean()でquantity > 0を検証する | E-01 Line 2986-2988 | ○ |
| C-58 | clean()でシリアル品のquantity=1を検証する | E-01 Line 2991-2993 | ○ |
| C-59 | receivedプロパティがreceived_date設定状態を返す | E-01 Line 3028-3031 | ○ |

### StatusCodes (UT-ORD-189 ~ UT-ORD-195)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | PurchaseOrderStatusの各値が正しく定義されている | E-02 Line 8-17 | ○ |
| C-61 | PurchaseOrderStatusGroups.OPENが正しいリストを含む | E-02 Line 25-29 | ○ |
| C-62 | SalesOrderStatusの各値が正しく定義されている | E-02 Line 41-55 | ○ |
| C-63 | ReturnOrderStatusの各値が正しく定義されている | E-02 Line 72-84 | ○ |
| C-64 | ReturnOrderLineStatusの各値が正しく定義されている | E-02 Line 99-117 | ○ |

### Tasks (UT-ORD-196 ~ UT-ORD-205)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | notify_overdue_purchase_orderが通知をトリガーする | E-03 Line 30-65 | ○ |
| C-66 | check_overdue_purchase_ordersが昨日期限のPOを検出する | E-03 Line 68-101 | ○ |
| C-67 | notify_overdue_sales_orderが通知をトリガーする | E-03 Line 104-135 | ○ |
| C-68 | check_overdue_sales_ordersが昨日期限のSOを検出する | E-03 Line 138-168 | ○ |
| C-69 | notify_overdue_return_orderが通知をトリガーする | E-03 Line 171-202 | ○ |
| C-70 | check_overdue_return_ordersが昨日期限のROを検出する | E-03 Line 205-235 | ○ |
| C-71 | complete_sales_order_shipmentがallocationsを完了する | E-03 Line 238-264 | ○ |

### Validators (UT-ORD-206 ~ UT-ORD-216)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | generate_next_sales_order_referenceが次の参照を生成する | E-04 Line 4-8 | ○ |
| C-73 | generate_next_purchase_order_referenceが次の参照を生成する | E-04 Line 11-15 | ○ |
| C-74 | generate_next_return_order_referenceが次の参照を生成する | E-04 Line 18-22 | ○ |
| C-75 | validate_*_reference_patternがパターンを検証する | E-04 Line 25-43 | ○ |
| C-76 | validate_*_referenceが参照値を検証する | E-04 Line 46-64 | ○ |

### Events (UT-ORD-217 ~ UT-ORD-223)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | PurchaseOrderEventsが正しいイベント名を持つ | E-05 Line 6-16 | ○ |
| C-78 | SalesOrderEventsが正しいイベント名を持つ | E-05 Line 19-29 | ○ |
| C-79 | ReturnOrderEventsが正しいイベント名を持つ | E-05 Line 32-39 | ○ |

### Signal Handlers (UT-ORD-224 ~ UT-ORD-225)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | after_save_sales_orderがデフォルトshipmentを作成する | E-01 Line 1690-1709 | ○ |

## 4) 不足情報 (Unknown / Missing)
- なし。全てのテストケースがソースコードの実装に基づいて生成されています。

## 5) リスクフラグ (レビュー観点)
- **0 (低リスク)**: 全てのテストケースにソースコード根拠あり
- **注意点**:
  - receive_line_items (UT-ORD-061~067) は複雑なトランザクション処理を含むため、実際のテスト実装時には境界値テストの追加を推奨
  - 状態遷移テスト (UT-ORD-039~051, 087~096, 170~179) は遷移マトリクスの網羅性確認を推奨

## 6) レビュアーチェックリスト (最小)
- [ ] 金額計算関連テスト (UT-ORD-001~009, 106, 121) の計算ロジックが正しいか確認
- [ ] 状態遷移テストが全ての許可された遷移をカバーしているか確認
- [ ] バリデーションテストが全てのValidationError発生条件をカバーしているか確認
- [ ] 在庫数量関連テスト (UT-ORD-061~067, 150~158, 180~186) の整合性確認
- [ ] スケジュールタスク (UT-ORD-198~203) の日付計算ロジック確認
