記事の概要
Odoo 17のInventoryモジュールは、入出庫や内部移動といった倉庫管理の基本プロセスを効率化します。第2回ではOdoo 17のインストールと基本設定を学びました。第3回では、入出庫と内部移動の具体的な運用方法を詳細に解説します。購買や販売との連携、バーコードを活用した作業の高速化、そしてプロセス自動化の設定も紹介します。実践を通じて、OdooのWMSがどのように業務を効率化するかを体験します。
入庫プロセスの設定と運用
入庫は、仕入先から商品を受け取り、倉庫に登録するプロセスです。Odoo 17では、購買モジュールと連携することで、入庫作業をスムーズに管理できます。
入庫の手順
-
購買オーダーの作成:
- 「購買」→「発注書」→「新規」に移動。
- 仕入先、製品、数量(例: Tシャツ100個)を入力。
- 「確認」をクリックして発注書を確定。
-
商品の受け取り:
- 発注書に紐づく「入庫」ボタンが表示されるのでクリック。
- 入庫画面で、受け取った数量を確認・入力(例: 100個)。
- 「検証」をクリックして在庫を更新。
-
在庫の確認:
- 「在庫」→「製品」に移動し、Tシャツの在庫数量が更新されたことを確認。
バーコードを使った入庫
Odoo 17のバーコード機能(Enterprise版推奨)を使用すると、入庫作業を高速化できます。
-
設定:
- 「在庫」→「設定」→「バーコード」を有効化。
- 製品にバーコード(例: EAN13)を登録。
-
操作:
- バーコードスキャナーで製品をスキャン。
- 数量を入力し、自動で入庫レコードを更新。
以下は、製品にバーコードをプログラムで追加する例です:
from odoo import models, fields
class ProductTemplate(models.Model):
_inherit = 'product.template'
barcode = fields.Char('バーコード')
def assign_barcode(self, product_id, barcode):
product = self.browse(product_id)
product.write({'barcode': barcode})
注意点:
- Community版ではバーコード機能が制限されるため、Enterprise版の試用を推奨。
- スキャナーはUSB接続またはBluetooth対応のものを選択。
出庫プロセスの設定と運用
出庫は、顧客への商品発送や販売に伴う在庫の引き出しを管理します。販売モジュールと連携することで、出庫を効率化できます。
出庫の手順
-
販売オーダーの作成:
- 「販売」→「販売オーダー」→「新規」に移動。
- 顧客、製品、数量(例: Tシャツ50個)を入力。
- 「確認」をクリックして販売オーダーを確定。
-
商品の発送:
- 販売オーダーに紐づく「配送」ボタンをクリック。
- 出庫画面で、発送する数量を確認・入力。
- 「検証」をクリックして在庫を更新。
-
在庫の確認:
- 「在庫」→「製品」に移動し、Tシャツの在庫が50個減ったことを確認。
バーコードを使った出庫
入庫と同様、バーコードスキャナーで出庫作業を迅速化できます。
- 出庫画面で製品のバーコードをスキャン。
- 数量を入力し、自動で出庫レコードを更新。
実践例:
- 販売オーダーでTシャツ50個を顧客Aに販売。
- バーコードスキャナーでTシャツをスキャンし、50個を出庫。
- 在庫が100個から50個に更新される。
内部移動の設定と運用
内部移動は、同一倉庫内の異なる保管場所間や、異なる倉庫間で商品を移動するプロセスです。たとえば、棚Aから棚Bへの移動や、東京倉庫から大阪倉庫への移動を管理します。
内部移動の手順
-
内部移動の作成:
- 「在庫」→「オペレーション」→「内部移動」→「新規」に移動。
- 以下を入力:
- 移動元(例: 東京倉庫/棚A)
- 移動先(例: 東京倉庫/棚B)
- 製品と数量(例: Tシャツ20個)
- 「検証」をクリックして移動を完了。
-
在庫の確認:
- 「在庫」→「在庫評価」に移動し、棚Aと棚Bの在庫数量を確認。
バーコードを使った内部移動
- 内部移動画面で、移動元の製品をスキャン。
- 移動先の保管場所をスキャン(場所にもバーコードを設定可能)。
- 数量を入力し、移動を確定。
以下は、内部移動をプログラムで実行する例です:
from odoo import models, fields, api
class StockMove(models.Model):
_inherit = 'stock.move'
@api.model
def create_internal_move(self, product_id, qty, source_loc, dest_loc):
move = self.create({
'name': '内部移動',
'product_id': product_id,
'product_uom_qty': qty,
'location_id': source_loc,
'location_dest_id': dest_loc,
})
move._action_confirm()
move._action_done()
実践例:
- 東京倉庫/棚Aから大阪倉庫/棚1へTシャツ30個を移動。
- バーコードで製品と移動先をスキャンし、移動を確定。
- 在庫評価で、両倉庫の在庫が正しく更新されたことを確認。
入出庫と内部移動の自動化
Odoo 17では、ルール設定によりプロセスを自動化できます。以下は簡単な例です:
自動入庫の設定
- 「購買」→「設定」→「発注ルール」を有効化。
- 発注が確定すると、自動で入庫オペレーションを生成。
自動出庫の設定
- 「販売」→「設定」→「自動配送」を有効化。
- 販売オーダーの確認後、配送オペレーションが自動生成。
内部移動の自動化
- 「在庫」→「設定」→「ルート」に移動。
- 例: 特定の製品が東京倉庫に入庫したら、自動で棚Aに移動するルールを設定。
コード例(自動ルートの設定):
from odoo import models, fields
class StockRoute(models.Model):
_inherit = 'stock.route'
name = fields.Char('ルート名')
rule_ids = fields.One2many('stock.rule', 'route_id', 'ルール')
def create_auto_move_rule(self):
self.env['stock.rule'].create({
'name': '東京倉庫→棚A',
'route_id': self.id,
'location_src_id': self.env.ref('stock.stock_location_stock').id,
'location_dest_id': self.env.ref('custom.shelf_a').id,
'action': 'push',
})
注意点:
- 自動化ルールは慎重にテストし、意図しない在庫移動を防ぐ。
- Enterprise版では、より複雑なルーティングが可能。
実践: 入出庫と内部移動のシナリオ
以下のシナリオで、プロセスを一通り実行します:
-
入庫:
- 仕入先からスマートフォン200台を東京倉庫/棚Aに受け入れる。
- バーコードスキャナーで製品をスキャンし、200台を登録。
-
内部移動:
- スマートフォン100台を東京倉庫/棚Aから大阪倉庫/棚1に移動。
- 移動元と移動先をバーコードでスキャン。
-
出庫:
- 顧客Bにスマートフォン50台を大阪倉庫から発送。
- 販売オーダーを確認後、バーコードで出庫を完了。
結果確認:
- 「在庫」→「在庫評価」で、以下を確認:
- 東京倉庫/ SCP shelfA: スマートフォン100台
- 大阪倉庫/棚1: スマートフォン50台
トラブルシューティング
入出庫や内部移動で発生しがちな問題と解決策を以下にまとめます:
- 在庫数量の不一致: 入出庫の検証前に数量を再確認。キャンセル済みのオペレーションがないかチェック。
- バーコードが認識されない: バーコード形式(EAN13など)を確認。スキャナーの設定を調整。
- 自動化ルールの失敗: ルートの条件(場所、製品など)が正しいか確認。ログでエラーを調査。
- パフォーマンス低下: 大量の移動データがある場合、インデックスを最適化。
Odooの公式ドキュメントやフォーラムを参照すると、詳細な解決策が見つかります。
まとめと次回予告
Odoo 17のInventoryモジュールを使い、入出庫と内部移動の基本プロセスを習得しました。バーコードによる作業の高速化や、自動化ルールの設定により、倉庫業務の効率が飛躍的に向上します。実践シナリオを通じて、購買や販売との連携も理解できたはずです。
次回は、在庫戦略(FIFO、FEFO)、自動補充、ロット/シリアル番号追跡など、Odoo WMSの高度な機能を解説します。よりスマートな倉庫管理を目指して、ぜひお楽しみに!
この記事が役に立ったら、いいねやストックをお願いします!Odoo WMSのシリーズを一緒に学びましょう!