オープンソースのERP iDempiereの標準機能である、売上/仕入請求伝票明細に入力したセット品目を、部品表を構成する品目ごとに明細を自動作成する機能をJPiereとしてカスタマイズしました。
使い方
マスタ設定
セット品目のマスタは在庫管理するフラグをOFFにし、部品表フラグをONにします。そして部品表タブで構成品目を入力し、部品表の構成チェックプロセスを実行して、検査済みフラグをONにさせます。
伝票入力
セット品目を売上伝票明細にセットし、売上請求伝票ヘッダのプロセスアイコンを押して、選択した売上請求伝票のセット品目の展開プロセスを実行します。
【補足説明】
※選択した売上請求伝票のセット品目の展開プロセスは伝票ステータスが"草案"の時にしか実行する事ができません。
※選択した売上請求伝票のセット品目の展開プロセスを実行しなくても、伝票ステータスを完成にしようとすると、自動でセット品目は展開されます。
プロセスの実行後、セット品目は、それを構成する品目に展開されます。
セット品目は、売上請求伝票明細のセット品目フィールドに設定されます。
システムコンフィグ設定
JP_REMAIN_EXPLODE_PRODUCT_LINE
セット品目の明細行をそのまま残すかどうか制御します。
- Y … セット品目の明細行は、そのまま残して、セット品目を展開した単品の明細行を追加します。
- N … セット品目の明細行はなく、セット品目を展開した単品の明細行だけで売上伝票明細を構成します(デフォルト設定)。
カスタマイズ情報
追加カラム
◆C_InvoiceLineテーブルに、JP_ProductExplodeBOM_IDカラムを追加
セット品目の情報を保持するために、JP_ProductExplodeBOM_IDカラムをC_InvoiceLineテーブルに追加しました。
追加クラス
◆jpiere.base.plugin.org.adempiere.process.ExplodeBomInvoice
MInvoiceJPクラスに標準機能であるexplodeBOM()メソッドを呼び出すプロセスです。
カスタマイズクラス
◆jpiere.base.plugin.org.adempiere.model.MInvoiceJP
MInvoiceJPクラスにexplodeBOM()メソッドをpublicクラスとして定義しました。
◆jpiere.base.plugin.org.adempiere.model.MOrderJP
納品受注、請求受注、カウンター伝票の処理時に、セット品目を代入する処理を追加しました。
◆jpiere.base.plugin.factory.JPiereBasePluginModelFactory
MInvoiceJPを呼び出すために修正
◆jpiere.base.plugin.org.adempiere.base.JPiereInvoiceModelValidator
PrepareIt()メソッドでMInvoiceJPクラスのexplodeBOM()メソッドを呼び出しています。
◆jpiere.base.plugin.org.adempiere.base.JPiereInOutModelValidator
出荷納品伝票の完成時に売上請求伝票を作成する際に、JP_ProductExplodeBOM_IDをセットするようにしました。
更新情報
2022年9月7日(v9):マルチBOM対応
iDempiere ver9にて、マルチBOMが実装されたので、それに対応できるようにメンテナンスしました。デフォルトのBOM(「部品表タイプ」が"現在使用中の部品表"であり「部品表使用用途」が"マスタ")を使用して展開します。
参考
2018年3月15日
売上請求伝票明細で結びつく受注伝票明細もしくは出荷納品伝票明細を選択して保存した際に、セット品目の情報が代入されなかったのを、代入するように改善しました。
- jpiere.base.plugin.org.adempiere.base.JPiereInvoiceLineModelValidator