【JPIERE-0506】カスタム契約管理

 JPiereの契約管理は、契約の内容の応じて、販売管理や購買管理の各種伝票を自動作成する事ができる便利な機能です。色々な契約内容に対応できるように、多くの機能があり、JPiereの業務機能の中では、とても大きな機能になっています。

 とても大きな機能であり、さらに契約管理の販売管理や購買管理の各種伝票を自動作成するという業務的な要件は、企業によっても色々な利用ケースが想定され、カスタマイズしたくなってくる部分もあると思います。

 そこで、JPiereベースプラグインの中にあるJPiere標準の契約管理の機能を、カスタム契約管理としてプラグイン化して外出しして、JPiereベースプラグインの中にある契約管理の機能に縛られる事無く、自由にカスタマイズできるようにしました。

 データモデルと、もととなるクラスは、JPiereベースプラグインにある契約管理と同じですが、カスタム契約管理は、JPiereベースプラグインには依存していませんので、自由にカスタマイズする事ができます。

 JPiereベースプラグインの契約管理の機能には縛られませんので、カスタマイズもしやすいはずですし、データモデルとカスタマイズのベースとなるクラスが既に存在していますので、開発工数もその分削減できるのではないかと思います。

リポジトリ

カスタム契約管理のソースコードは下記のURLで管理しています。使用する際には、クローンしたりダウンロードして下さい。

https://github.com/JPiere/custom.contract

プロジェクト構成

ダウンロードしたプラグインをEclipseにインポートすると左記のように表示されます。

 

クラスのパッケージ名は、JPiereベースプラグインのもともとのパッケージ名にcustom.contract.という接頭辞を付しています。

 

クラス名は、基本的にJPiereベースプラグインの契約管理で使用しているクラスと同じ名前にしています。

 

クラスの名前は同じですが、パッケージ名が異なり、ファクトリークラスで、cutom.contractのパッケージに属するクラスを呼び出すように切り替えています。

 

このような仕組みのため、カスタム契約管理では、JPiereベースプラグインの契約管理の仕様に縛れらることなく自由にカスタマイズする事ができます。

 

マニフェストファイルについて

カスタム契約管理の必須プラグイン設定
カスタム契約管理の必須プラグイン設定

カスタム契約管理は、JPiereの他のプラグンに依存していません。

 

JPiereの各ファクトリークラスが呼び出される前にカスタム契約管理のファクトリークラスが呼び出されます。

 

そうする事で、JPiereの標準の契約管理の機能を、カスタム契約管理の機能に置き換える事ができます。

 

ファクトリークラスについて

カスタム契約管理のファクトリークラス
カスタム契約管理のファクトリークラス

カスタム契約管理の各ファクトリークラスが、JPiereベースプラグインの各ファクトリークラスより前に呼び出されて、カスタム契約管理の各クラスが使用されるようになっています。

 

custom.contract.jpiere.base.plugin.org.adempiere.baseパッケージについて

custom.contract.jpiere.base.plugin.org.adempiere.baseパッケージには、モデルバリデーターのクラスと、カスタム契約管理で使用するタックスプロバイダーのインターフェースクラスがあります。

 

custom.contract.jpiere.base.plugin.org.adempiere.modelパッケージについて

custom.contract.jpiere.base.plugin.org.adempiere.modelパッケージには、主にカスタム契約管理で使用するモデルクラスが格納されています。

 

custom.contract.jpiere.base.plugin.org.adempiere.processパッケージについて

custom.contract.jpiere.base.plugin.org.adempiere.processパッケージには、主にカスタム契約管理で使用するプロセスのクラスが格納されています。

 

custom.contract.jpiere.base.plugin.org.compiere.acctパッケージについて

custom.contract.jpiere.base.plugin.org.compiere.acctパッケージには、主にカスタム契約管理で使用する自動仕訳のクラスが格納されています。

契約管理では、Doc_InvoiceJPや、Doc_InOutJPでも大きくカスタマイズしていますので、必要であれば追加して修正して下さい。

 

コールアウトについて

契約管理で使用しているコールアウトについては、このカスタム契約管理には含めていません。コールアウトのカスタマイズが必要になった場合には、別途追加して下さい。

 

ウィンドウバリデーターについて

契約管理で使用しているウィンドウバリデーターについては、このカスタム契約管理には含めていません。ウィンドウバリデーターのカスタマイズが必要になった場合には、別途追加して下さい。

【補足説明】必要に応じてクラスを別途追加してご利用下さい!!

カスタム契約管理は、JPiereの標準機能の契約管理をカスタマイズする上で、必要となる機能を移植してきていますが、必要十分ではない場合もあると思います。その際には、別途必要なクラスを追加して下さい。カスタム契約管理は、JPiereの標準機能の契約管理をカスタマイズする際のベースとなる事を目的としています。

開発準備

JPiere標準機能の契約管理が既に動作する環境であるという事を前提に、カスタム契約管理に切り替えるための準備作業を説明します。

プロセスのパッケージ名の更新

カスタム契約管理に切り替えるためには、JPiereベースプラグインの契約管理で使用するようになっている各種プロセスのクラスを変更する必要があります。パッケージ名の先頭に"custom.contract."を付けて下さい。

下記のSQLを実行すると対象のレコードを更新する事ができます。

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0363:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0365:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0431:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0432:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0433:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0434:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0435:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0442:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0443:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0444:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

UPDATE adempiere.AD_Process SET ClassName='custom.contract.' || ClassName WHERE Description = 'JPIERE-0445:JPBP' AND ClassName IS NOT NULL AND ClassName not like 'custom.contract%';

  このSQLは、プロジェクトの"Migration-SQL"フォルダの中のUpdateProcess.txtにもあります。

 

モデルバリデーターのパッケージ名の更新

カスタム契約管理に切り替えるためには、JPiereベースプラグインの契約管理で使用するようになっている各種モデルバリデーターのクラスを変更する必要があります。パッケージ名の先頭に"custom.contract."を付けて下さい。

下記のSQLを実行すると対象のレコードを更新する事ができます。

UPDATE adempiere.AD_ModelValidator SET ModelValidationClass='custom.contract.' || ModelValidationClass WHERE Description ='JPIERE-0363:JPBP' AND ModelValidationClass not like 'custom.contract%';

UPDATE adempiere.AD_ModelValidator SET ModelValidationClass='custom.contract.' || ModelValidationClass WHERE Description ='JPIERE-0364:JPBP' AND ModelValidationClass not like 'custom.contract%';

 このSQLは、プロジェクトの"Migration-SQL"フォルダの中のUpdateModelValidator.txtにもあります。

 

実行の構成

実行の構成で、custom.contractを使用できる状態にして、実行して下さい。

実行構成
実行構成

カスタム契約管理に含まれているJPiereのカスタマイズ

 

カスタマイズ履歴(更新情報)

2021年12月4日

  • 売上/仕入計上伝票を作成する際に、追加したフィールドの値を引き継げるように改善しました。