【JPIERE-0411】反対仕訳作成プロセス

プロセスの実行条件に合致する実績の仕訳をもとに、その反対仕訳を作成するプロセスです。

 

反対仕訳作成の目的

JPiere/iDempiereを使用開始するにあたり各種トランザクションデータと勘定科目残高を移行すると、2重で仕訳が起票されるケースがあります。そのような場合に、トランザクションデータの移行から発生した仕訳の反対仕訳を自動作成し、帳尻を合わせる事を目的としたプロセスです。

反対仕訳作成プロセスの仕様

反対仕訳作成プロセスは、実行条件に合致した実績の仕訳データの反対仕訳を振替仕訳伝票で起票します。一度、反対仕訳を起票した仕訳データは対象外となり、ひとつの仕訳データから反対仕訳が複数回起票される事はありません。そのため、同じ条件で反対仕訳プロセスを何度実行しても問題ありません。

【JPIERE-0407】振替仕訳伝票インポートの連携

反対仕訳作成プロセスは、振替仕訳伝票インポートと連携して動作します。反対仕訳作成プロセスは、はじめに実行条件に合致する実績の仕訳データを抽出し、反対仕訳が起票されていない場合は、振替仕訳伝票インポートで使用しているインポートテーブル(中間テーブル)I_GLJpurnalJPにデータを作成します。I_GLJpurnalJPテーブルに反対仕訳のデータをすべて登録した後で、インポートプロセスが実行され、反対仕訳が振替伝票に作成されます。

実行条件

反対仕訳作成プロセスの実行条件
反対仕訳作成プロセスの実行条件

◆会計スキーマ(必須)

反対仕訳作成プロセスは会計スキーマ単位で行います。実行する会計スキーマを1つ選択します。

◆組織(任意)

反対仕訳作成プロセスを組織単位で実行した場合に、実行する組織を選択する事ができます。

◆転記日付(必須)

反対仕訳の対象となる実績の仕訳を転記日付で範囲指定します。

◆テーブル(任意)

反対仕訳の対象となる実績の仕訳をトランザクションデータのテーブル単位で実行する事ができます。

◆レコード(任意)

テーブルが選択されている時に表示され入力する事ができます。レコードIDを入力して、反対仕訳の対象をレコード単位で制限する事ができます。

◆伝票タイプ(必須)

反対仕訳を起票する振替仕訳伝票で使用する伝票タイプを選択します。

◆伝票ステータス更新(任意)

振替仕訳伝票を登録した後で実行する伝票ステータス更新の処理を選択します。何も選択が無い場合は、振替仕訳伝票は作成されずに、インポートテーブル(中間テーブル)にインポートデータを作成するまでになります。

 

処理概要

◆インポートテーブル(I_GLJournalJP)のデータ削除

反対仕訳作成プロセスでは処理の最初に、I_GLJournalJPテーブルのデータを削除します。

◆反対仕訳の対象となる仕訳の実績データを抽出

実行条件の入力値をもとに、反対仕訳の対象となる仕訳の実績データを抽出します。

  • あくまでも実績のデータが対象(予算などのデータは対象外)
  • 振替仕訳伝票は原則として反対仕訳の対象外。対象に含めてしまうと、反対仕訳の反対仕訳が起票されてしまうため。どうしても振替仕訳伝票の反対仕訳を起票したい場合は、実行条件のテーブルに"振替仕訳伝票"を指定する。

◆反対仕訳の重複チェック

抽出した仕訳の実績データの中に、すでに反対仕訳が登録されているデータがある場合は、2重登録しないように処理をスキップします。すでに反対仕訳が登録されているかどうかは、データ移行用識別子(JP_DataMigration_Identifier)を使用します。反対仕訳で作成された振替仕訳伝票のデータ移行用識別子フィールドには、"RE-テーブルID-レコードID"が入力されます。反対仕訳を登録しようとしているデータと同じ"RE-テーブルID-レコードID"が入力されている振替仕訳伝票が既に登録してある場合には、2重登録となると判断し処理対象外となります。接頭辞として"RE-"を付けるのは、反対仕訳ではないデータ移行のデータと区別するためです。"RE-"はReversing Entry(反対仕訳)の略です。

◆インポートテーブル(I_GLJournalJP)にデータ作成

処理対象となった仕訳のデータをもとに、I_GLJournalJPテーブルのデータを作成します。

その際に、伝票番号には原則として反対仕訳の対象となった伝票の伝票番号が設定されます。しかし一部のトランザクションデータには伝票番号フィールドが無い場合があるので、そのような場合には、レコードID+名称欄のデータ(可能な限り)が代わりに入力されます。

◆振替伝票へインポート処理

反対仕訳作成プロセスの実行条件に伝票ステータス更新処理の指定があった場合にはI_GLJournalJPテーブルに作成したデータを振替伝票へインポートし、伝票ステータスの更新処理が行われます。伝票ステータス更新処理の指定が無かった場合は、この処理は行われません。

反対仕訳作成プロセスの実行準備

替仕訳伝票(GL_Journalテーブル)のデータ移行識別子(JP_DataMigration_Identifier)にユニークインデックスを付与する

仕訳データのインポートの処理で振替仕訳伝票のデータ移行識別子を使用していますので、DBインデックスをつけておくことで処理が速くなることが期待できるうえに、同じデータが誤って2度登録される事を防ぐ事ができます。ユニークインデックスはデータ移行識別子(JP_DataMigration_Identifier)と会計スキーマと伝票番号の複合ユニーク制約をつけて下さい。

【ポイント】GL_Journalのユニークインデックス

JP_DataMigration_Identifier と C_AcctSchema_ID とDocumentNo で複合ユニークインデックスをつけておいて下さい。

 

振替仕訳伝票の反対仕訳を作成する場合

振替仕訳伝票の反対仕訳を作成する場合、反対仕訳伝票の対象となる伝票と同じ伝票番号で仕訳が作成されます。そのため、既存の下記のユニークインデックスを無効にする必要があります。

 

仕訳帳(Fact_Acct)の「コピー許可」フラグ

 反対仕訳は、仕訳帳のデータをコピーして作成します。一部の情報を除いて、「コピー許可」フラグで、何の情報を反対仕訳に引き継ぐか設定できます。

  仕訳帳に転記されている情報の内、どんな情報を引き継いで反対仕訳を起票するか制御する事で、残高移行の作業負荷を軽減することができるかもしれません。(*´▽`*)

 ちなみに強制的に反対仕訳に引き継がれる情報は、下記の情報です。言い換えると下記の情報以外は、コピー許可フラグにより引き継ぐかどうか制御できるはずです。

  • 組織[AD_Org_ID]
  • 明細番号[Line] … Fact_Acct_IDがセットされる
  • 借方取引通貨金額[AmtSourceDr]
  • 貸方取引通貨金額[AmtSourceCr]
  • 借方会計通貨金額[AmtAcctDr]
  • 貸方会計通貨金額[AmtAcctCr]
  • 数量[Qty]
  • 伝票番号[DocumentNo]

カスタマイズ情報

クラス

  • jpiere.base.plugin.org.adempiere.process.CreateReversingEntry

カスタマイズ履歴

2022年8月20日(v9): 振替仕訳伝票の反対仕訳にデータ移行用識別子が無いデータのみになるようにしました。

 反対仕訳として投入した振替仕訳伝票のさらに反対仕訳を投入しないように、振替仕訳伝票から起票する反対仕訳は、データ移行用識別子が無いデータのみにしました。

2022年8月20日(v9): DELETE分の構文間違い

DELETE分の構文が間違っておりデータの削除時にエラーになっているのを修正しました。