記事の概要
Odoo 17のInventoryモジュールは、基本的な入出庫や内部移動を超え、在庫戦略や自動補充、ロット追跡などの高度な機能を提供します。これにより、倉庫業務の効率化と精度向上が可能です。第3回では入出庫と内部移動を学びました。第4回では、FIFO、FEFO、自動補充ルール、ロット/シリアル番号追跡、運送統合を詳細に解説し、スマートな倉庫管理を実現する方法を紹介します。
在庫戦略の設定
Odoo 17では、在庫戦略(FIFO、FEFO、LIFOなど)を設定することで、商品の出庫順序を最適化できます。これにより、期限切れや在庫の陳腐化を防ぎます。
在庫評価方法の選択
- FIFO(先入先出): 最初に入庫した商品を最初に出庫。生鮮食品や消費財に適しています。
- FEFO(有効期限先出し): 有効期限が近い商品を優先出庫。医薬品や化粧品に最適。
- LIFO(後入先出): 最新の入庫商品を最初に出庫(非推奨の場合が多い)。
設定手順:
- 「在庫」→「設定」→「在庫評価」で「自動」を選択。
- 製品ごとに追跡方法(ロット/シリアル番号)を有効化。
- 「在庫」→「製品」→対象製品で「FIFO」または「FEFO」を選択。
FEFOの実践
- 製品(例: 牛乳)に有効期限を登録。
- 出庫時に、Odooが自動で有効期限の近いロットを優先選択。
- 「在庫」→「在庫移動」で、ロットごとの出庫を確認。
コード例(製品に有効期限を追加):
from odoo import models, fields
class StockProductionLot(models.Model):
_inherit = 'stock.production.lot'
expiration_date = fields.Datetime('有効期限')
注意点:
- FEFOはロット追跡が有効な場合にのみ機能。
- Enterprise版でより詳細な在庫評価が可能。
自動補充ルールの設定
自動補充は、在庫が最小値を下回った際に自動で発注や補充を行う機能です。手動発注の負担を軽減し、在庫不足を防ぎます。
補充ルールの作成
- 「在庫」→「設定」→「補充」を有効化。
- 「在庫」→「製品」→対象製品(例: Tシャツ)を選択。
- 「補充ルール」タブで以下を設定:
- 最小数量(例: 50個)
- 最大数量(例: 200個)
- 発注単位(例: 100個)
- 補充方法(例: 購買、製造)
実践例:
- Tシャツの在庫が50個を下回ると、自動で100個の発注書を生成。
- 「購買」→「発注書」で、自動生成された発注を確認。
プログラムによる補充ルール
以下は、補充ルールをプログラムで設定する例です:
from odoo import models, fields
class StockWarehouseOrderpoint(models.Model):
_inherit = 'stock.warehouse.orderpoint'
def create_reorder_rule(self, product_id, min_qty, max_qty, qty_multiple):
self.create({
'product_id': product_id,
'product_min_qty': min_qty,
'product_max_qty': max_qty,
'qty_multiple': qty_multiple,
'location_id': self.env.ref('stock.stock_location_stock').id,
})
注意点:
- 最小数量と最大数量は、需要予測に基づいて慎重に設定。
- 購買モジュールが有効でない場合、自動補充は制限される。
ロット/シリアル番号の追跡
ロット/シリアル番号追跡は、商品の出所や品質管理に不可欠です。Odoo 17では、製品ごとに追跡レベルを設定できます。
追跡の設定
- 「在庫」→「設定」→「追跡」で「ロット/シリアル番号」を有効化。
- 製品(例: スマートフォン)の設定画面で以下を選択:
- ロット追跡: 同一バッチの商品をグループ管理。
- シリアル番号追跡: 個々の商品を個別管理。
- 入庫時にロット番号(例: LOT202506)やシリアル番号を登録。
実践: ロット追跡
- スマートフォン100台を入庫し、ロット番号「LOT202506」を割り当て。
- 出庫時に「在庫」→「ロット/シリアル番号」で、ロットごとの移動履歴を確認。
- 返品やリコール時に、特定のロットを迅速に特定。
コード例(ロット作成):
from odoo import models, fields, api
class StockProductionLot(models.Model):
_inherit = 'stock.production.lot'
@api.model
def create_lot(self, product_id, lot_name):
return self.create({
'name': lot_name,
'product_id': product_id,
})
注意点:
- シリアル番号は1製品1番号のため、大量在庫には不向き。
- バーコードスキャナーでロット入力を効率化。
運送業者との統合
Odoo 17の運送統合機能(Enterprise版)は、UPS、FedEx、DHLなどの運送業者と連携し、送料計算やラベル印刷を自動化します。
運送統合の設定
- 「在庫」→「設定」→「運送方法」を有効化。
- 「在庫」→「設定」→「運送業者」に移動し、例: UPSを追加。
- 必要な認証情報(APIキー、アカウント番号)を入力。
- 販売オーダーの配送時に、運送業者を選択し、送料を自動計算。
ラベル印刷の実践
- 販売オーダーで顧客にTシャツ50個を発送。
- 配送画面でUPSを選択し、送料を確認。
- 「ラベル印刷」をクリックして、配送ラベルをPDFで生成。
コード例(運送業者の設定):
from odoo import models, fields
class DeliveryCarrier(models.Model):
_inherit = 'delivery.carrier'
def configure_ups(self, api_key, account_number):
self.write({
'name': 'UPS',
'delivery_type': 'ups',
'ups_api_key': api_key,
'ups_account_number': account_number,
})
注意点:
- 運送統合はEnterprise版限定。Community版では手動で送料を入力。
- APIキーの有効期限や地域制限を確認。
実践: 高度な倉庫管理シナリオ
以下のシナリオで、高度な機能を一括実践します:
-
在庫戦略:
- 牛乳200リットルを入庫し、FEFOを適用。
- ロット「MILK20250601」(有効期限: 2025-06-10)を登録。
-
自動補充:
- Tシャツの最小数量を50、最大数量を200に設定。
- 在庫が50個以下で、自動発注100個を生成。
-
ロット追跡:
- スマートフォン50台を入庫、ロット「LOT202506」を割り当て。
- 販売」で20台を出庫し、ロット履歴を確認。
-
運送統合:
- Tシャツ50個を顧客に発送、UPSで配送ラベルを印刷。
結果確認:
- 「在庫」→「在庫評価」で牛乳のロットと有効期限を確認。
- 「購買」→「発注書」でTシャツの自動発注を確認。
- 「在庫」→「ロット/シリアル番号」でスマートフォンの履歴を確認。
トラブルシューティング
高度な機能で発生しがちな問題と解決策をまとめます:
- FIFO/FEFOが適用されない: ロット追跡が有効か確認。製品設定を再チェック。
- 自動補充が発動しない: 最小数量や発注ルールの条件を確認。購買モジュールが有効かチェック。
- ロット番号の重複: バーコードスキャナー設定や手動入力ミスを確認。
- 運送統合エラー: APIキーやネットワーク接続を確認。Odooログでエラーを調査。
Odooの公式ドキュメントやフォーラムを参照すると、詳細な解決策が見つかります。
まとめと次回予告
Odoo 17のInventoryモジュールの高度な機能(FIFO、FEFO、自動補充、ロット追跡、運送統合)を活用することで、倉庫管理の効率と精度を大幅に向上させました。これらの機能を組み合わせることで、在庫の最適化と業務の自動化が実現可能です。
次回は、レポートとデータ分析をテーマに、在庫回転率や評価額の分析、カスタムレポートの作成を解説します。データ駆動型の倉庫管理を目指して、ぜひお楽しみに!
この記事が役に立ったら、いいねやストックをお願いします!Odoo WMSのシリーズを一緒に学びましょう!