【JPIERE-0582(v9)】論理倉庫を活用した在庫移動の経路の記録

 輸送中の在庫を区分管理するために、実際には存在しない概念的な倉庫(以下、「論理倉庫」という)をマスタとして登録して運用する方法があります。例えば、移動元の倉庫でトラックに在庫を載せたら、論理倉庫への在庫移動伝票を作成し完成にします。この論理倉庫は”輸送中”のステータスを意味する倉庫で、その実態はトラックや船、飛行機など貨物を運ぶ輸送手段です。輸送中は実際にその輸送手段に在庫があるので、在庫を管理する枠組みという意味では輸送手段も倉庫として登録するのは合理性があります。そして目的地に在庫が到着したら、論理倉庫にある在庫を、目的地の倉庫に移動させる在庫移動伝票を作成し、完成にします。

 この方法は、輸送中の在庫を区分管理する上では非常にわかりやすいというメリットがありますが、次の2つの課題があります。

◆1回の在庫移動に2枚の在庫移動伝票を起票しなければならない

◆1枚目の在庫移動伝票では、最終目的地となる倉庫がわからない

上記2つの課題を解決し、輸送中に複数の論理倉庫を経由した場合に、それらの経路を辿っていけるようにしました。

在庫移動伝票

在庫移動伝票タブ

在庫移動伝票タブ
在庫移動伝票タブ

◆経路情報を記録する

経路情報を記録する際にはONにして下さい。

◆組織倉庫(次の目的地)

「組織倉庫(To)」フィールドの次に在庫移動する「組織倉庫」を入力します。

◆物理倉庫(次の目的地)

「物理倉庫(To)」フィールドの次に在庫移動する「物理倉庫」を入力します。

◆次の目的地への到着予定日

「組織倉庫(次の目的地)」と「物理倉庫(次の目的地)」への到着予定日を入力します。

【補足説明】次の目的地への在庫移動伝票作成プロセス

次の目的地となる「組織倉庫(次の目的地)」と「物理倉庫(次の目的地)」と「次の目的地への到着予定日」フィールドの情報をもとに、「組織倉庫(To)」及び「物理倉庫(To)」から次の目的地への在庫移動伝票を作成することができます。このプロセスは、経路情報を記録するかどうかに関わらず実行できます。

参照

◆組織倉庫(出発地)

在庫の出発地となる組織倉庫を入力します。

「1つ前の在庫移動伝票」の入力が無い場合、「組織倉庫(From)」が自動入力されます。「1つ前の在庫移動伝票」が入力されている場合、「1つ前の在庫移動伝票」の「組織倉庫(出発地)」が入力されている場合は、その組織倉庫が入力されます。入力が無い場合は、「組織倉庫(From)」が入力されます。
※「経路情報を記録する」がONの時に表示されるフィールドです。

◆物理倉庫(出発地)

在庫の出発地となる物理倉庫を入力します。

「1つ前の在庫移動伝票」の入力が無い場合、「物理倉庫(From)」が自動入力されます。「1つ前の在庫移動伝票」が入力されている場合、「1つ前の在庫移動伝票」の「物理倉庫(出発地)」が入力されている場合は、その物理倉庫が入力されます。入力が無い場合は、「物理倉庫(From)」が入力されます。

※「経路情報を記録する」がONの時に表示されるフィールドです。

◆出発日

出発地から出庫した日を入力します。

※「経路情報を記録する」がONの時に表示されるフィールドです。

◆1つ前の在庫移動伝票

「組織倉庫(From)」と「物理倉庫(From)」に在庫移動した在庫移動伝票が入力されるフィールドです。

◆次の目的地への在庫移動伝票

「組織倉庫(次の目的地)」と「物理倉庫(次の目的地)」に在庫移動した在庫移動伝票が入力されるフィールドです。「次の目的地への在庫移動伝票作成」プロセスを実行して作成した在庫移動伝票が入力されるフィールドです。

◆組織倉庫(最終目的地)

複数の論理倉庫を経由して在庫移動する場合に、最終の移動先となる組織倉庫を入力します。

※「経路情報を記録する」がONの時に表示されるフィールドです。

◆物理倉庫(最終目的地)

複数の論理倉庫を経由して在庫移動する場合に、最終の移動先となる物理倉庫を入力します。

※「経路情報を記録する」がONの時に表示されるフィールドです。

◆最終目的地への到着予定日

「組織倉庫(最終目的地)」と「物理倉庫(最終目的地)」への到着予定日を入力します。

※「経路情報を記録する」がONの時に表示されるフィールドです。

「経路情報を記録する」ことによる在庫移動伝票の倉庫単位の現実に即した在庫移動と在庫移動の経路の記録

倉庫単位での在庫移動伝票の起票

 iDempiereの標準機能の在庫移動伝票は、1枚の伝票の中に異なる倉庫の在庫(地理的に別の場所にある在庫)の移動も一緒におりまぜて作成することができます。

 しかし在庫移動の業務を考えると在庫の移動は地理的な場所毎に行うものですので、地理的に異なる場所にある在庫の移動を、同じ在庫移動伝票で処理するはオススメできませんし、経路情報を記録するという意味では、地理的に異なる場所にある在庫が1枚の在庫移動伝票に含まれると正確な記録ができなくなります。

 そこで「経路情報を記録する」をONにすると、在庫移動伝票のヘッダーの「組織倉庫(Form)」、「物理倉庫(From)」、「組織倉庫(To)」、「物理倉庫(To)」に属する保管場所からでしか、在庫移動伝票明細が起票できないように制御されます。

   そのため「経路情報を記録する」場合、「組織倉庫(Form)」もしくは「物理倉庫(From)」のいずれかの入力と、「組織倉庫(To)」もしくは「物理倉庫(To)」のいずれかの入力が必須となります。※もちろん両方入力しても大丈夫です!!

論理倉庫を活用した在庫移動の経路の記録

倉庫単位での在庫移動伝票の起票と「論理倉庫」の概念を活用して、移動経路毎に論理倉庫を作成することで、在庫移動の経路を正しく記録することができます。

【カスタマイズポイント】経路情報のマスタ化

このカスタマイズでは在庫移動の経路情報まではマスタ化していませんが、経路情報をマスタ化して1枚目の在庫移動伝票を完成にした時に、その経路情報マスタを参照して、すべての経路の在庫移動伝票を最初に作成してしまうようなカスタマイズも良いかなと思います。そうすることで、出発地から最終目的地までの配送状況が一目で把握できるようになるはずです(配送されているところまでの在庫移動伝票が完成になるので!!)。それに在庫を受け入れるシステム操作も、伝票を完成にするだけなので操作の手間も無いかなと思います。

カスタマイズ情報

M_Movementテーブルへのカラムの追加

◆JP_WarehouseNext_ID: 組織倉庫(次の目的地) / Org Warehouse(Next)

◆JP_PhysicalWarehouseNext_ID: 物理倉庫(次の目的地) / Physical Warehouse(Next)

◆JP_MovementDateNext: 次の目的地への到着予定日 / Movement Date(Next)

◆IsRecordRouteJP: 経路情報を記録する/Record the Route

◆JP_Processing1

※「次の目的地への在庫移動伝票」プロセスが割り当たっています。

◆JP_WarehouseDep_ID: 組織倉庫(出発地) / Org Warehouse(Departure)

◆JP_PhysicalWarehouseDep_ID: 物理倉庫(出発地) /Phys Warehouse(Departure)

◆JP_MovementDateDep: 出発日 / Movement Date(Departure)

◆JP_WarehouseDst_ID: 組織倉庫(最終目的地) / Org Warehouse(Destination)

◆JP_PhysicalWarehouseDst_ID: 物理倉庫(最終目的地) / Physical Warehouse(Destination)

◆JP_MovementDateDst: 最終目的地への到着予定日 / Movement Date(Destination)

◆JP_MovementPre_ID : 1つ前の在庫移動伝票/ Inventory Move(Previous)

◆JP_MovementNext_ID : 次の在庫移動伝票/Inventory Move(Next)

◆JP_Subject: 件名

◆JP_CommunicationColumn: 通信欄

◆JP_Remarks: 備考欄

M_MovementLineテーブルへのカラムの追加

◆JP_CommunicationColumn: 通信欄

フィールドグループの追加

  • - Inventory Move Route Info(在庫移動経路情報)

モデルバリデーターの加筆修正

  • jpiere.base.plugin.org.adempiere.base.JPiereMovementModelValidator

モデルバリデーターの追加

  • jpiere.base.plugin.org.adempiere.base.JPiereMovementLineModelValidator

コールアウトの追加

  • jpiere.base.plugin.org.adempiere.callout.JPiereMovementCallout