【JPIERE-0555(v9)】JPiereオリジナル添付ファイル管理-2022年電子帳簿保存法対応

JPiereオリジナル添付ファイルの使い勝手を良くして、さらに電子帳簿保存法に対応するために、【JPIERE-0436】JPiereオリジナル添付ファイル管理の機能を大幅に改修しました。

通常、既にカスタマイズしている機能を改修する場合は、カスタマイズ管理番号は分けないのですが、今回は添付ファイルのバージョンアップと言えるくらい大幅に改修しましたので、カスタマイズの番号を分けています。

iDempiere/JPiereの電子帳簿保存法の対応については、電子帳簿保存法関係のカスタマイズと電子帳簿保存法への対応 を参照して下さい。

改善した機能

ファイルのハッシュ値を保持する

ファイルの添付時に、特定のファイルもしくは全てのファイルのハッシュ値を計算し、添付ファイル台帳に保持します。

 電子帳簿保存法のスキャナ保存において、これまでは信頼できる第3者機関である時刻認証局TSATime-Stamping Authority)によるタイムスタンプが求められていましたが、2022年から要件が緩和されて、期間内(最長2ヶ月と7営業日以内)に、スキャンしてデータの保存を行った事が確認できて、訂正または削除を行った場合に、その事実及び内容を確認する事ができるか、もしくはそもそも訂正や削除を行う事ができない場合は、タイムスタンプの付与に代えることができるとされました。

 電子帳簿保存法では、ファイルのハッシュ値を計算しシステム内に保持するような事は求めてはいませんが、ファイルを添付した時のハッシュ値を保持しておくことにより、ファイルを改ざんしていない事が証明できます。

 ハッシュ値の計算は、ファイルを添付した時にのみ行います。そして添付ファイル台帳のレコードの作成日を確認する事で、ファイルを添付した日時も確認できます。これにより、添付したファイルの保存日時と、添付したファイルに改ざんが無い事を証明できます。

 

添付ファイル台帳のデータを削除不可になった時点で固定する

 添付ファイル台帳のレコードは、添付ファイルのメタデータです。レコードが作成される時に、添付元となったレコードのファイルを添付した時点の情報をもとに作成されます。

添付ファイル台帳の管理項目と同じカラムが、ファイルの添付元となったレコードのテーブルにある場合に、その値を引き継ぎます。添付ファイル台帳にカラムを追加するだけで、値を引き継ぐことができますので、管理したい項目があれば追加して下さい。

 そして削除可能フラグをOFFにした時に、その時点の添付元となってレコードの情報を最新にして、その後は更新されません。そして、削除可能フラグをOFFにした添付ファイル台帳のレコードは、文字通り削除できなくなります。

添付ファイル台帳の「リファレンス」のフィールドグループと「伝票」のフィールドグループの情報は、添付元となったレコードの同カラムの削除フラグをOFFにした時点の情報で固定されます。

添付ファイル台帳
添付ファイル台帳

 削除可能フラグは、伝票ステータスの更新のタイミングや、添付元のレコードの特定の情報が特定の値に更新された時に自動でOFFにする事ができます。

【ポイント】伝票の完成のタイミングで削除可能フラグをOFFにする

システムコンフィグ設定を行う事で、伝票の完成のタイミングで削除可能フラグをOFFにするように設定できます。そうする事で、伝票の更新/削除ができなくなるタイミングで、添付ファイルも更新/削除が出来なくなります。※伝票が完成になった後でも、追加でファイルを添付する事は可能です。

ファイルを保存するパス体系の見直し

ファイルを保存するパスの体系を見直しました。これは、1つのデイレクトリの配下に非常に多くのデイレクトリがあるとパフォーマンスに悪影響が出る事が想定されるため、1つのデイレクトリの配下に、1万を超えるデイレクトリが作成されないようにしました。

  1. クライアントID
  2. 組織ID
  3. テーブル名
  4. レコードIDを10,000,000で割った整数値に、10,000,000をかけた数。
  5. レコードIDを10,000で割った整数値に、10,000をかけた数。
  6. レコードID

 

添付ファイル台帳にストレージプロバイダーを追加

添付ファイル台帳に、ファイルを添付する時に使用したストレージプロバイダーを保持するようにしました。この事により、ディスクがいっぱいになりファイルの保存先を変更したい場合など、新規に追加するファイルは新しいストレージプロバイダーを使って処理をしても、以前のファイルはそのままアクセスできるようになりました。

添付ファイル台帳
添付ファイル台帳

ストレージプロバイダーが空欄の場合には、クライアント情報タブに設定されている「JPiere添付ファイル用ストレージプロバイダー」でを使って処理されます。

 

添付ファイル台帳に金額フィールドを追加

電子帳簿保存法では、金額での検索が求められます。

JPiereの添付ファイルの機能は、添付ファイルをのもとになる業務データがあり、その業務データを検索ウィンドウを使用して、日付、取引先、金額で自由に検索する事ができます。そのため、これだけでも充分に電子帳簿保存法の求めに対応できると思いますが、年のため添付ファイルのメタデータといえる添付ファイル台帳にも金額を持たせて、検索できるようにしました。

添付ファイル台帳
添付ファイル台帳

他の日付や金額のフィールドを保持したい場合は、そのカラムを添付ファイル台帳に追加して下さい。添付ファイルの元となるデータに、同じカラムがあれば、その値を添付ファイル台帳に引き継ぎます。

 

添付ファイル台帳の検索ウィンドウ

添付ファイル台帳の検索ウィンドウを作成し直して、取引先日付金額で検索し、添付ファイル台帳にズームしてファイルを確認する事ができるようにしました。

添付ファイル台帳の検索ウィンドウ
添付ファイル台帳の検索ウィンドウ

【補足説明】伝票の検索ウィンドウに金額を検索条件として追加

検索ウィンドウガジェットに表示されている下記の検索ウィンドウの検索条件に金額がなかったため、検索条件として追加しました。

  • 見積伝票/手書伝票検索
  • 受注伝票検索
  • 発注伝票検索
  • まとめ請求書検索
  • 支払依頼伝票検索
  • 振替仕訳伝票検索

 

添付ファイルの一括削除不可に更新するプロセス

プロセスの実行条件に合致する添付ファイルの削除可能フラグを一括でOFFにするフラグです。削除可能フラグをOFFにした添付ファイルは削除できなくなり保護する事ができます。

◆作成日

ファイルを添付した日付を範囲指定します。

この日付に範囲内に添付したファイルが削除不可に更新する対象となります。

◆テーブル

ファイルを添付した元となった業務データのテーブルを指定して、ファイルを一括削除不可にする対象を限定する事ができます。

◆メディアフォーマット

拡張子(メディアフォーマット)を指定して、ファイルを一括削除不可にする対象を限定する事ができます。

 

エクセルのプレビュー機能の実装

iDempiereの標準の添付ファイルの機能で、エクセル(xlsxの拡張子のみ)がプレビューできるようになりましたので、JPiereでもできるようにしました。

エクセルのプレビュー
エクセルのプレビュー
  • 添付したファイルを直接編集したり保存したりする事はできません。基本的に参照するだけです。ツールバーのアイコン操作も制限されています。保存アイコンを押すとダウンロードされます。
  • xlxの拡張子とcsvには対応していません。

ウィンドウの改善点

ストレージプロバイダーウィンドウ - ストレージプロバイダータブ

ストレージプロバイダーに、添付ファイルのハッシュ値を計算するアルゴリズムを設定できるようにしました。

ストレージプロバイダー
ストレージプロバイダー

◆ハッシュアルゴリズム[JP_Hash_Algorithm]

下記のハッシュアルゴリズムを選択できます。SHA-512がおススメです。

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-512 (デフォルト:空欄の場合に適用されます)

クライアント情報

クライアント情報タブに、JPiere添付ファイル専用のストレージプロバイダーを設定できるようにしました。

クライアント情報タブ
クライアント情報タブ

添付ファイル台帳

添付ファイル台帳に、ストレージプロバイダーと、ファイルの添付元となった業務データの金額と、ファイルのハッシュ値を追加しました。

添付ファイル台帳
添付ファイル台帳

カスタマイズ情報

追加カラム

◆AD_ClientInfoテーブル

  • JP_StorageAttachment_ID

◆AD_StorageProviderテーブル

  • JP_Hash_Algorithm

◆JP_AttachmentFileRecordテーブル

  • AD_StorageProvider_ID
  • JP_Subject
  • JP_Remarks
  • TotalLines
  • GrandTotal
  • TotalAmt
  • LineNetAmt
  • PayAmt
  • JPBillAmt
  • StmtAmt
  • TrxAmt
  • ChargeAmt
  • JP_Hash_File
  • JP_Hash_Algorithm

追加クラス

  • jpiere.modification.org.adempiere.process.JPiereAttachmentFileUndeletable

電子帳簿保存法に対応するためのオススメのコンフィグ設定

JP_ATTACHMENT_DOCVALIDATE_UNDELETABLE

この設定は、7(完成にする処理の前)か、9(完成にする処理の後)を設定するのをオススメします。この設定により伝票ステータスが完成になったと同時に、添付ファイル台帳のレコードが削除できなくなり、添付ファイルを保護する事ができます。

システムコンフィグ設定
システムコンフィグ設定

JP_ATTACHMENT_MODELCHANGE_UNDELETABLE_COLUMN

この設定は、Processed を設定するのをオススメします。

JP_ATTACHMENT_MODELCHANGE_UNDELETABLE_VALUEの設定と合わせて、伝票が変更できなくなったのと同じタイミングで、添付ファイルを保護する事ができます。

システムコンフィグ設定
システムコンフィグ設定

JP_ATTACHMENT_MODELCHANGE_UNDELETABLE_VALUE

この設定は、Y を設定するのをオススメします。

JP_ATTACHMENT_MODELCHANGE_UNDELETABLE_COLUMNの設定と合わせて、伝票が変更できなくなったのと同じタイミングで、添付ファイルを保護する事ができます。

システムコンフィグ設定
システムコンフィグ設定

JP_ATTACHMENT_HASH_FILE_LIST

この設定は、ハッシュ値を取得したいファイルの拡張子(メディアフォーマット)を設定します。証票類はPDFファイル が多いと思いますので、"PDF" は設定しておくことをオススメします。あとは必要に応じて、カンマで区切ってメディアフォーマットを設定して下さい。"ALL"と設定すると、すべての添付ファイルのハッシュ値を取得します。

システムコンフィグ設定
システムコンフィグ設定

【ポイント】iDempiereを再起動して下さい。

上記のシステムコンフィグ設定のいくつかはiDempiereの再起動後に有効になる設定があります。

バージョンアップ作業手順

【JPIERE-0436】JPiereオリジナル添付ファイル管理からバージョンアップするための作業手順です。

JPIERE-0555のパックアウト->パックイン

JPiereの最新のダンプファイルをリストアして、JPIERE-0555をパックアウトして、バージョンアップしたい環境にパックインして下さい。

パックアウト
パックアウト

 

添付ファイル台帳にストレージプロバイダーを設定する

パックインを行うと、添付ファイル台帳[JP_AttachmentFileRecordテーブル]にストレージプロバイダー[AD_StorageProvider_ID]カラムが追加されます。AD_StorageProvider_IDカラムに、現在使用しているストレージプロバイダーのIDを設定して下さい。設定は、SQLで一括でUpdateとしてしまって問題ありません。

 添付ファイル台帳にストレージプロバイダーを設定する事で、クライアント情報タブに設定しているストレージプロバイダーを変更しても、引き続き添付ファイルにアクセスする事ができます。

既存の添付ファイル台帳のデータに使用しているストレージプロバイダーを設定する
既存の添付ファイル台帳のデータに使用しているストレージプロバイダーを設定する

 

新規ストレージプロバイダーの追加

既存のストレージプロバイダーを使いまわす事も可能ですが、安全を考慮して新規のストレージプロバイダーを登録して、既存のストレージプロバイダーとはフォルダのパスを変更することをオススメします。

ストレージプロバイダー
ストレージプロバイダー

【ポイント】IDが1000万代になっているテーブルのレコードに添付ファイルしている場合は、新規のストレージプロバイダーを登録すべき!

【JPIERE-0555(v9)】JPiereオリジナル添付ファイル管理-2022年電子帳簿保存法対応の改修において、添付ファイルを保存するパスはテーブル名の配下にIDのデイレクトリを1000万単位で作成します。そのため既存のストレージプロバイダーで既に1000万代のIDになっている場合は、ファイルを保存するディレクトリが重複してしまう可能性があります。そのため、新規のストレージプロバイダーを登録して、保存先を切り替えるのをオススメします。

 

クライアント情報タブのJPiere添付ファイル用ストレージプロバイダーを設定する

新規に登録したストレージプロバイダーを、JPiere添付ファイル用ストレージプロバイダーに設定して下さい。

クライアント情報タブ
クライアント情報タブ

以上で、バージョンアップ作業は完了です。

カスタマイズ履歴