【iDempiere Lab】JPiere8.2とPostgreSQL11へのバージョンアップメモ

このコンテンツはJPiere7.1をJPiere8.2へのバージョンアップした時の作業メモです。備忘録として残しています。ついでにPostgreSQLも10から11にバージョンアップします。

 

PostgreSQL10からPostgreSQL11へのバージョンアップ

JPiere7.1のデータベースのダンプファイルは、PostgreSQL10で作成しています。JPiere8.2からはPostgreSQL11で作成したいと考えているため、JPiereのバージョンアップに伴いPostgreSQLも10から11へバージョンアップします。

【補足説明】PostgreSQLのメジャーバージョンアップ

PostgreSQLのメジャーバージョンアップは、旧バージョンにおいてダンプファイルを取得して、新バージョンにおいてリストアして行きます。

JPiere7.1のダンプファイルの取得

PostgreSQL10で作成しているJPiere7.1のダンプファイルをあらかじめ取得しておきまます。

PostgreSQL11のインストール

この時点の最新バージョン11.10をインストール。

PostgreSQL11へのJPiere7.1のダンプファイルのリストア

Windows10の環境で実行しましたが、特にエラー無く正常終了しています。

※もし、ここで何かしらのエラーに遭遇した場合は、そのエラー原因を特定して適切な対応が必要です。

i7.1zのマイグレーションスクリプトの適用

migrationフォルダのi7.1zにあるスクリプトを原則全部実行します。しかし、下記の点に注意して下さい。

IDEMPIERE-3358:Dictionary fixes のマイグレーションスクリプトについて

202006031349_IDEMPIERE-3358.sqlを実行すると下記のエラーが表示されます。

これは、下記のSQLを実行した事によるエラーだと思われます。

-- Jun 3, 2020, 3:10:40 PM CEST

INSERT INTO AD_TreeBar (AD_Tree_ID,AD_User_ID,Node_ID, AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy)VALUES (10,100,383,0,0,'Y',statement_timestamp(),100,statement_timestamp(),100);

 このSQLは、202006031349_IDEMPIERE-3358.sqlの最後のSQLであり、”お気に入りのメニュー”を追加するSQLであり、かつそのデータは既に登録されている"キャシュリセット"なので、エラーになってもそのまま無視して大丈夫だと思います。

お気に入りにキャッシュリセットを登録しているだけのSQLの様子です…
お気に入りにキャッシュリセットを登録しているだけのSQLの様子です…

IDEMPIERE-4426:Fix add_months and adddays functions

202008171626_IDEMPIERE-4426.sqlをそのまま実行すると次のようなエラーがでます。

JP_OpenItemビューでAddDays関数を使用しておこるエラーです。そのため、202008171626_IDEMPIERE-4426.sqlを実行する前に先にJP_OpenItemビューをドロップします。その後で、202008171626_IDEMPIERE-4426.sqlを実行し、再度JP_OpenItemビューを作成します。

i8.1zのマイグレーションスクリプトの適用

migrationフォルダのi8.1zにあるスクリプトを原則全部実行します。

JPBPのバージョンアップ対応

※pom.xmlとMANIFEST.MFの修正は各プラグインで行うのは大前提。

IDEMPIERE-2902:UX: Implement Radio buttons の対応

ラジオボタンが実装されたのに伴い、IEditorFactoryクラスに下記のメソッド定義が追加されているため実装しました。※参照:IDEMPIERE-2902 UX: Implement Radio buttons (#326)

  • public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration);

IDEMPIERE-4083:currency rate by document or by transactionの対応

◆Doc_InvoiceJPクラスのメンテナンス

◆Doc_AllocationHdrJPクラスのメンテナンス

  • DocLine_AllocationJPクラスの追加

【メモ】JPBPのバージョンアップ対応

JPBPのバージョンアップ対応の原則は、既存の機能をそのままの状態で最新のiDempiereのバージョンで動作する事を目的とします。その場合、jpiere.plugin.org.compiere.acctのパッケージに所属するクラスのみ最新のJPBPからコピーして、更新すれば最新のiDempiereの機能を阻害する事無くバージョンアップできるのではないかと思います。

JPFSのバージョンアップ対応

※pom.xmlとMANIFEST.MFの修正は各プラグインで行うのは大前提。

IDEMPIERE-4421:Html asset versioning should allow fluent deploymentの対応

Ver7とVer8ではiDempiereのテーマのリソースの管理方法が大きく変更になりました。後方互換してくれているようですが、新しい管理方法に準拠してJPFSを大幅に修正しました。

参照: https://wiki.idempiere.org/en/Migration_Notes#Version_iDempiere_8.2

◆デザイン関係のリソースをsrcデイレクトリの配下に移動

ファイルによってはthemeのリソースへのアクセスに"~./"が必要になります。

これに伴い、下記のシステムコンフィグ設定も修正しています。

  • ZK_LOGO_LARGE -> ~./theme/jpiere/images/large-logo-jpiere.png
  • ZK_LOGO_SMALL -> ~./theme/jpiere/images/small-logo-jpiere.png
  • HTML_REPORT_THEME -> /src/web/theme/jpiere/

◆metainfo.zk.lang-addon.xmlファイルの追加

デプロイした環境でデザインを反映させるのに必要になる、lang-addon.xmlファイルをsrc>metainfo>zkデイレクトリに追加しました。

◆システム画像ウィンドウのパスの修正

タブのアイコンが表示されなくなっていたため、システム画像の画像URLフィールドのパスを修正。そのパスに対応するデイレクトリに画像を配置しました。

 

IDEMPIERE-4085:search in the toolbarの対応

◆CSS修正

  • toolbar.css.dsp

◆アイコン画像の追加

IDEMPIERE-4536:Allow minor customizations in default themeの対応

◆CSS修正

  • custom.css.dspの追加 -> 適用されるフォントの種類や大きさをここで一元的に管理できるようにしました。

JPMS関連

※pom.xmlとMANIFEST.MFの修正は各プラグインで行うのは大前提。

MInOut - JPMSから削除

IDEMPIERE-4587:Wrong ordered qty when reactivating a purchase order and setting a line to zero に伴い、モディフィケーションしていた処理が不要になったため削除

カスタマイズ情報 : JPIERE-0224:マイナス数量の発注照合伝票

MMatchPO - JPMSから削除

IDEMPIERE-4575:Cannot complete Material Receipt from negative PO に伴いモディフィケーションしていたJPIERE-0224:マイナス数量の発注照合伝票の処理が不要になったため削除。

MMatchInv - 修正

JPIERE-0224の処理が不要になったため大幅に修正しました。

JPPS関連

※pom.xmlとMANIFEST.MFの修正は各プラグインで行うのは大前提。

jpiere.plugin.webui.wysiwygeditorの廃止

【JPIERE-0109】WYSIWYG EditorのカスタマイズはJPiere Groupwareのプラグインに統合し、jpiere.plugin.webui.wysiwygeditorのプラグインを廃止しました。Groupwareに統合した事により、下記のフォームの設定を修正する必要があります。

フォームの設定の修正
フォームの設定の修正

 

jpiere.plugin.webui.dashboardgadgetの廃止

【JPIERE-0110】お知らせガジェットのカスタマイズはJPiere Groupwareのプラグインに統合し、jpiere.plugin.webui.dashboardgadgetのプラグインは廃止しました。

IDEMPIERE-4254対応

IDEMPIERE-4254において、MRole#getOrgWhere()の戻り値が変更になったため下記の確認及びメンテナンスを実施しました。

JPiereでMRole#getOrgWhere()を使用している箇所
JPiereでMRole#getOrgWhere()を使用している箇所

【JPIERE-0111】シンプルインプットウィンドウ

JPiereSimpleInputWindowクラスをメンテナンスしました。

 

【JPIERE-0098】マトリクスウィンドウ

JPiereMatrixWindowクラスをメンテナンスしました。

 

メンテナンスが必要の無かったクラス

  • JPiereCreateInfoGadgetクラス
  • ToDoCalendarクラス
  • LoginSAMLクラス
  • MAttachmentFileRecordクラス