【JPIERE-0051】伝票内で伝票明細の明細番号(Line)を一意にする

また実装していません。

 オープンソースのERP iDempiere(アイデンピエレ)は、トランザクションデータを伝票(Document)という概念で管理します。その伝票のほとんどは、ヘッダーデータと明細データに正規化されており、通常明細データには明細番号(カラム名:Line)があります。明細番号は、明細を追加する度に、10づつインクリメントして自動的に付与されるのが通常ですが(もちろんこの採番ルールもカスタマイズ可能)、手入力で上書き修正する事もできます。

 明細番号は通常、1枚の伝票内で明細を一意に識別するキー情報ですが、iDempiereでは明細番号を手入力で上書き修正する際に、既に採番されている同一伝票の他の明細の明細番号と同じ値にする事もできます。

 これは、主キーはiDempiereのテーブルの設計思想により、明細番号(Line)とは関係なく管理されているというシステム設計思想からくる仕様と考えられます。そしてオープンソースならではの「もし同一伝票内で明細番号を一意にしたかったら、自由にユニーク制約を設定してね」という事だと私は理解しています。

 そこで、JPiereジェイピエール)では、同一伝票内の明細番号は一意にする仕様にしたいので「”伝票ヘッダーテーブルの主キー”+”明細番号”」でユニーク制約を各伝票に設定しています。

【補足説明】伝票ヘッダーの主キー+明細番号のユニーク制約の設定方法について

 伝票ヘッダーの主キー+明細番号のユニーク制約は、postgreSQLのスクリプトファイルとして実装しており、JPiereの導入作業時にそのスクリプトを実行する事を想定しています。

 このようにするのは、iDempiereからフォークしないようにするための対応のひとつです。iDempiereコミュニティーでは、データベース(DB)の修正を行う場合にはマイグレーションスクリプトと呼ばれるSQLが発行されます。将来的に、そのマイグレーションスクリプトと今回のようなJPiereで施すDBの修正がバッティングしないように、通常のJPiereのメンテナンスDBには含めたくないためです。

 導入時に”伝票ヘッダーの主キー+明細番号”に設定したユニーク制約を、iDempiereのバージョンアップ時にはいったん解除するためのスクリプトも用意しています。

JPiereで伝票ヘッダーの主キー+明細番号のユニーク制約を設定する伝票一覧

販売管理

  • 受注伝票
  • 出荷納品伝票
  • 売上請求伝票

購買管理

  • 発注伝票
  • 入荷伝票
  • 仕入請求伝票

在庫管理

  • 在庫移動伝票
  • 棚卸伝票
  • 社内使用在庫伝票
  • 原価調整伝票
  • 製造指図伝票

返品管理

  • 得意先返品受付伝票
  • 得意先返品入荷伝票
  • 仕入先返品依頼伝票
  • 仕入先返品出荷伝票

債権債務と資金管理

  • 出納帳

関連するコンテンツ