Odooにおける **「プロダクト(商品マスタ)」と「プロダクトバリアント(品目バリエーション)」**は、販売・在庫・請求すべての根幹になる構造です。
以下に、設定項目とデータ構造の関係を明確にご説明します。
✅ 用語の定義
用語 | モデル名 | 説明 |
---|
プロダクト(Product Template) | product.template | 商品の共通情報(例:Tシャツ)を定義 |
プロダクトバリアント(Product Variant) | product.product | バリエーションごとのSKU(例:赤のMサイズ)を定義 |
✅ 構成関係(テンプレートとバリアントの関係)
cppコピーする編集するproduct.template(テンプレート)
↓ 1対多
product.product(バリアント)
- 1つのテンプレート(product.template) が、複数のバリアント(product.product) を持つ
- バリアントが1つしかなければ、テンプレートとバリアントはほぼ同一に扱われます(UI上は「単一バリアント」と見える)
✅ 設定できる項目(販売画面から編集できるもの)
🟦 product.template
(テンプレートレベル=共通設定)
項目分類 | 主な設定項目 |
---|
一般情報 | 商品名、内部参照、商品タイプ(消耗品/在庫/サービス) |
販売 | 売上価格、販売可否、請求ポリシー(注文/納品) |
購買 | 仕入価格、仕入先、自動再発注ルール |
在庫 | 保管場所、リードタイム、ルーティング |
会計 | 会計カテゴリ、収益勘定、原価計算方式 |
バリアント構成 | 属性(色・サイズなど)を追加 |
その他 | 単位(UoM)、通貨、追跡(ロット/シリアル)、説明文など |
🟧 product.product
(バリアントレベル=個別SKU)
項目分類 | 主な設定項目 |
---|
属性値 | 例:色=赤、サイズ=M |
バーコード | SKUごとのバーコード |
コスト価格 | 仕入価格が異なる場合に調整可能(テンプレートと異なる) |
特定価格設定 | プライスリストなどでSKU単位に価格差がある場合 |
トラッキング | ロット/シリアルでSKU単位の在庫管理 |
画像・説明(任意) | SKUごとに差別化したい場合に使う |
機能 | product.template | product.product |
---|
商品の説明・基本価格 | ✅ | ❌(継承) |
在庫管理 | ❌(集約) | ✅(SKU単位) |
請求・出荷伝票 | ❌ | ✅(バリアントごとに記録) |
ロット/シリアル番号 | ❌ | ✅(SKU単位) |
✅ バックエンドのつながり(技術視点)
関係 | フィールド | 内容 |
---|
product.template → product.product | product_tmpl_id | 各バリアントはテンプレートを参照 |
product.product → product.template | product_variant_ids (逆参照) | テンプレートはバリアントリストを持つ |
在庫や請求など | 常に product.product 単位で記録 | SKUベースでトラッキングされる |
🧩 モデル構成図(簡略)
product.template(Tシャツ)
├─ product.product(Tシャツ/赤/M)
├─ product.product(Tシャツ/赤/L)
└─ product.product(Tシャツ/青/M)
✅ よくある誤解
誤解 | 正確な理解 |
---|
「商品は product.product に全部入っている」 | 正確には 共通情報が template にあり、バリエーションが product にある |
「在庫も template にある」 | 実際には在庫は 常に product.product (SKU)単位 で管理 |
✅ UIでの使い分け
- 販売画面の「商品」メニューから編集すると、通常は
product.template
を対象とします
- 属性(サイズや色)を追加すると、自動的に
product.product
が生成されます
- 「バリアント」タブを開くと SKU ごとの個別編集が可能
コメントを残す