JPiere ver9において消込伝票の処理を大幅に改善したので、ここにまとめておきたいと思います。
外貨建て取引の際に適用する為替レート
外貨建ての取引における為替レートの適用ロジックのカスタマイズは、JPiereのver9における消込伝票の仕訳の改善において最も大きな改善です。
外貨建て取引の際に適用される為替レートは、iDempiereの標準機能では入金/支払伝票で、為替レートが上書き適用されている場合を除き、消込伝票の転記日付のレートが適用されます。
【ポイント】iDempiereの標準機能では消込伝票の「転記日付の為替レート」!!
iDempiereの標準機能では、外貨建て取引の消込伝票で適用される為替レートは、消込伝票の転記日付のレートです!!
JPiere9では消込伝票で適用される為替レートは「入金/支払伝票で適用されている為替レート」かもしくは、 「債権/債務の勘定科目については、売上/仕入請求伝票の為替レートを適用し、その他の科目については入金/支払伝票の為替レート」を適用するようにしました。
【ポイント】JPiere9では消込伝票に適用される為替レートには2パターンありシステムコンフィグ設定で切り替えられる。
債権/債務の勘定科目に入金/支払伝票で適用されている為替レートを採用するか、それとも売上/請求伝票の為替レートを採用するかシステムコンフィグ設定の「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"Y"にするか"N"にするかで切り替えられます。
- Y … 債権/債務の勘定科目をいったん入金/支払伝票に適用されている為替レートで評価してから、為替差損益を計算します。
- N … 債権/債務の勘定科目は、計上もととなった売上/仕入請求伝票に適用されている為替レートで評価して、為替差損益を計算します。
※JPiereでの初期設定は、"Y"になっています。
これに関連するカスタマイズとして、下記のカスタマイズもver9にて実施しています。
- 【JPIERE-0576(v9)】外貨建ての出納帳の仕訳で、入金/支払と結びついている明細には、入金/支払伝票の為替レートを適用する
- 【JPIERE-0575(v9)】外貨建ての売上/仕入請求伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
- 【JPIERE-0574(v9)】外貨建ての入金/支払伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
なぜ、このようなカスタマイズが施したのか理解して頂くために具体例を用いて説明します。
例1: 通常の消込処理
まずは、問題の無い通常の消込処理の仕訳を紹介します。下記のような通常処理においてはver8もver9も消込伝票の仕訳に少し違いがありますが、会計的には同じ意味になりますので問題はありません。
- 2022年12月31日に10ドル(1ドル=100円)の売上請求伝票を作成
- 2023年1月31日に10ドル(1ドル=120円)の入金伝票を作成し、消込処理を行う。
◆2022年12月31日の売上請求伝票の仕訳
ver9もver8も売上請求伝票の仕訳は同様です。
売掛金 1,000円 / 売上 1,000円
◆2023年1月31日の入金伝票の仕訳
ver9もver8も入金伝票の仕訳は同様です。
銀行仮勘定 1,200円 / 入金仮勘定 1,200円
◆2023年1月31日の消込伝票の仕訳(Ver9)
ver9では、「JP_APPLY_PAYMENT_RATE_TO_INVOICE」の設定により起票される仕訳が少し異なりますが、会計的には結果として同じになります。
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」= 'Y' (デフォルト)
入金仮勘定 1,200円 / 売掛金 1,200円
売掛金 200円 / 為替差益 200円
いったん売掛金を入金伝票の為替レートで評価してから、計上した売上請求伝票の為替レートとの差異を為替差損益として計算します。
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」= 'N'
入金仮勘定 1,200円 / 売掛金 1,000円
/ 為替差益 200円
売掛金は計上した売上請求伝票の為替レートで評価して、入金伝票との差異を為替差損益として計上します。
◆2023年1月31日の消込伝票の仕訳(Ver8)
ver8の為替レートの適用ロジックは、iDempiereの標準のロジックです。すべての勘定科目は、消込伝票の転記日付の為替レートで評価され、債権/債務の勘定科目については、その為替レートと売上/仕入請求伝票の為替レートの差から為替差損益が計算されます。それ以外の勘定科目については、消込伝票の転記日付の為替レートと入金/仕入請求に適用されている為替レートの差から為替差損益が計算されます。
入金仮勘定 1,200円 / 売掛金 1,200円
売掛金 200円 / 為替差益 200円
例2: 売上請求伝票と入金伝票を異なる日付で消込処理する
理解を深めてもらうために、もう1つ下記のケースを試してみます。
- 2022年12月31日に10ドル(1ドル=100円)の売上請求伝票を作成
- 2023年1月31日に10ドル(1ドル=120円)の入金伝票を作成
- 2023年2月28日(1ドル=110円)で上記の売上請求伝票と入金伝票を消込処理する
※消込伝票の転記日付は基本的には、入金/支払伝票の転記日付と同じ日付になりますが、消込処理などを使用すると、転記日付を指定できます。
◆2022年12月31日の売上請求伝票の仕訳
ver9もver8も売上請求伝票の仕訳は同様です。
売掛金 1,000円 / 売上 1,000円
◆2023年1月31日の入金伝票の仕訳
ver9もver8も入金伝票の仕訳は同様です。
銀行仮勘定 1,200円 / 入金仮勘定 1,200円
◆2023年2月28日の消込伝票の仕訳(V9)
この例2においては、ver9もver8とで消込伝票の仕訳に違いがでるのですが、ver9においては仕訳自体は、例1と同じ仕訳になります。
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」= 'Y' (デフォルト)
入金仮勘定 1,200円 / 売掛金 1,200円
売掛金 200円 / 為替差益 200円
いったん売掛金を入金伝票の為替レートで評価してから、計上した売上請求伝票の為替レートとの差異を為替差損益として計算します。
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」= 'N'
入金仮勘定 1,200円 / 売掛金 1,000円
/ 為替差益 200円
売掛金は計上した売上請求伝票の為替レートで評価して、入金伝票との差異を為替差損益として計上します。
◆2023年2月28日の消込伝票の仕訳(V8)
売掛金と入金仮勘定は、消込伝票の転記日付の為替レートで評価。為替差損益は、それぞれの勘定科目の転記時の為替レート(ヒストリカルレート)と、消込伝票の為替レートの差から計算する。
入金仮勘定 1,100円 / 売掛金 1,100円
売掛金 100円 / 為替差益 100円
入金仮勘定 100円 / 為替差益 100円
会計の結果としては、どれも同じ意味合いになりますが、それぞれに違いがあることは理解していただけたかなと思います。
例3: 入金伝票を現在の日付でリバースする
例1と例2は、ver8でもver9でも結果として会計的には同じになりますが、結果として違うケースがあります。ここでは例3として、入金伝票を現在の日付でリバースする際に、為替レートが異なるような特殊なケースを例に説明します。
- 2022年12月31日に10ドル(1ドル=100円)の入金伝票を作成
- 2023年1月1日付で上記入金伝票をリバースした(1ドル=120円)
◆ver9の場合
2022年12月31日の入金伝票は、10ドル(1ドル=100円)ですので、下記のような仕訳になります。
銀行仮勘定 1,000円 / 入金仮勘定 1,000円
その入金伝票を2023年1月1日の転記日付(この日の為替レートは1ド=120円)でリバースすると次のような仕訳が起票されます。
銀行仮勘定 -1,000円 / 入金仮勘定 -1,000円
本来は、2023年1月1日の為替レートは、1ドル=120円ですが、【JPIERE-0574(v9)】外貨建ての入金/支払伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐのカスタマイズにより、リバース処理で作成された赤伝票の入金伝票には1ドル=100円のレートが設定されていますので、仕訳は、1ドル=100円で起票されます。
そしてiDempiereとしては2021年12月31日に作成した入金伝票と、2023年1月1日にリバース処理で作成した赤伝の入金伝票との消込が2023年1月1日付で行われて消込伝票が作成されます。
この時の為替レートは入金伝票のレートが適用されるようにカスタマイズしていますので、次のような仕訳になります。
入金仮勘定 1,000円 / 入金仮勘定 1,000円
※画面では、借方で両建てされており、一方の仕訳がマイナス金額になってバランスしていますが、これは設定で借方マイナス金額になっているのを貸方プラス金額に変更することもできます。
◆ver8の場合
2022年12月31日の入金伝票は、10ドル(1ドル=100円)ですので、下記のような仕訳になります。この仕訳はver9と同じです。
銀行仮勘定 1,000円 / 入金仮勘定 1,000円
この入金伝票を2023年1月1日の転記日付(この日の為替レートは1ド=120円)でリバースすると次のような仕訳が起票されます。
銀行仮勘定 -1,200円 / 入金仮勘定 -1,200円
消込伝票の仕訳は2023年1月1日の転記日付で、次のようになります
入金仮勘定 1,200円 / 入金仮勘定 200円
為替差損益 200円
入金仮勘定 -1,200円
入金伝票を異なる日付でリバースしただけなのに為替差損が出ているので、仕訳的に正しくないと思います。 T.T
上記のような変な為替差損益が出ないようにver9では、【JPIERE-0574(v9)】外貨建ての入金/支払伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐのカスタマイズを施して、リバース処理で作成された赤伝票の入金/支払伝票にはリバース元の入金/支払伝票のレートを引き継ぐようにしています。
為替差損益の計算方法
為替差損益の計算方法をJPiere9で変更しています。
JPiere8(= iDempiereの標準機能)では、為替差損益は、債権/債務の勘定科目や、入金/支払仮勘定の勘定科目毎に、消込伝票の転記日付のレート(CR)で評価して、それぞれの勘定科目のヒストリカルレート(HR)との差額を計算していました。この処理では債権/債務の勘定と、入金仮勘定/支払仮勘定でそれぞれ為替差損益が計算されることになります。
例
・売上請求伝票(売掛金)のHRは、1ドル=100円
・入金伝票(入金仮勘定)のHRは、1ドル=120円
・消込伝票のCRは、1ドル = 110円
ver8の仕訳
入金仮勘定 1,100円(消込伝票のCR) / 売掛金 1,100円(消込伝票のCR)
売掛金 100円 / 為替差益 100円(CRと売上請求伝票のHRの差)
入金仮勘定 100円 / 為替差益 100円(CRと入金伝票のHRの差)
この処理をJPiere9では、入金/支払仮勘定の勘定科目は入金/支払伝票のHRで評価して、債権債務の勘定科目はシステムコンフィグ設定「JP_APPLY_PAYMENT_RATE_TO_INVOICE」が"Y"の場合は、入金/支払伝票のHRで評価して、売上/仕入請求伝票のHRとの差額を為替差損益とする計算方法にしました。
ver9「JP_APPLY_PAYMENT_RATE_TO_INVOICE」="Y"
入金仮勘定 1,200円(入金伝票のHR) / 売掛金 12,00円(入金伝票のHR)
売掛金 200円 / 為替差益 200円
「JP_APPLY_PAYMENT_RATE_TO_INVOICE」が"N"の場合は、債権債務の勘定科目は、売上/仕入請求伝票のHRで評価して、入金/支払伝票のHRとの差額を為替差損益とします。
ver9「JP_APPLY_PAYMENT_RATE_TO_INVOICE」="N"
入金仮勘定 1,200円(入金伝票のHR) / 売掛金 1,000円(売上請求伝票のHR)
/ 為替差益 200円
為替差損益の計算ロジックの切り替え
ここまでも説明しているとおり、ver9よりシステムコンフィグ設定「JP_APPLY_PAYMENT_RATE_TO_INVOICE」により消込伝票における債権/債務の勘定科目残高に適用する為替レートを、売上/仕入請求伝票の為替レートにするか入金/支払伝票の為替レートにするか選択適用できます。
◆システムコンフィグ設定:JP_APPLY_PAYMENT_RATE_TO_INVOICE
※初期値はYです。
※コンフィグレベルはクライアントです。
◆例
下記のような為替レートが異なる2枚の売上請求伝票を1枚の入金伝票を使用して消込処理した場合に、システムコンフィグ設定により為替差損益の計上方法がどのように違うのか具体的に説明します。
・売上請求伝票(ARI-1000291)…10ドル(@100円) = 売掛金計上額 1,000円
・売上請求伝票(ARI-1000292)…10ドル(@130円) = 売掛金計上額 1,300円
・入金伝票(ARR-1000069)…20ドル(@110円) = 入金額 2,200円
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"Y"
売掛金がいったん入金伝票の為替レートで評価されて、売掛金の計上金額との差額が為替差損益として計上され、その相手勘定として売掛金が調整されているのがわかると思います。
こちらの方法を採用した場合、為替差損益勘定には、売上/仕入請求伝票の情報と入金/支払伝票の両方の情報を仕訳に引き継げるようになっています。このことは、為替差損益を売上や費用と対応させて管理できるようになるということを意味します。為替差損益を売上げや費用を計上する組織や取引組織、契約に結びつけて管理したい場合におすすめです。
- 「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"N"
売掛金は、売上請求伝票のレートで評価し、入金仮勘定は入金伝票のレートで評価します。そしてその差額として為替差損益が計算されます。この場合は、為替差損益は、消込伝票1枚につき1回最後に計算されます。
この方法の良い所は、なんといっても仕訳が分かりやすいところです。その反面、最後に1回だけ貸借差額として為替差損益を計算しますので、為替差損益が計上されるの組織は、入金/支払伝票の組織となり、契約などの情報に結びつけることができません。
そして、組織間取引において、組織毎のBSをバランスさせるために起票される社内取引の仕訳のロジック上、為替差損益が発生した場合、仕訳が正しく起票されない場合があります。そのため「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"N"で使用する場合に、会計スキーマエレメントの「組織」のバランス済みフラグをOFFにしてご利用下さい。
「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"N"にする場合には、会計スキーマエレメントの「組織」のバランス済みフラグをOFFにする
債権/債務の勘定科目
売上請求伝票/仕入請求伝票の情報が引き継がれます。
このことは、組織、取引組織、取引先の情報は売上請求伝票/仕入請求伝票の情報を引き継ぐことを意味します。そのため、組織、取引組織、取引先別の債権/債務残高が綺麗に消えることになります。※ver8までは取引組織の情報が仕訳に欠落していたのでver9で追加しました。
入金仮勘定/支払仮勘定
入金仮勘定/支払仮勘定に入金伝票/支払伝票の情報を引き継ぐようにしました。
このことは、組織、取引組織、取引先の情報は入金伝票/支払伝票の情報を引き継ぐことを意味します。そのため、組織、取引組織、取引先別の入金仮勘定/支払仮勘定残高が綺麗に消えることになります。※ver8までは取引組織の情報が仕訳に欠落していたのでver9で追加しました。
貸倒勘定/割引勘定
貸倒と割引の勘定科目には、売上請求伝票/仕入請求伝票の情報と、入金伝票/支払伝票の情報の両方を引き継ぐようにしました。
その際に組織、取引組織、取引先の情報は売上請求伝票/仕入請求伝票の情報を引き継ぎます。このことは、1つの取引に係る費用と収益をなるべく対応させたいと考えたためです。このことにより、組織別、取引組織別、取引先別、契約別の損益に、貸倒と割引の額も含めて把握できるようになります。
為替差損益
前述しているとおり、ver9より為替差損益は初期設定では、消込伝票から起票される仕訳の貸借差額として最終的に求めますので、売上/仕入請求伝票や入金/支払伝票に結びつく情報は基本的に保持しません。この設定は、為替の影響はだれにもコントロールできないため、売上や費用を計上している組織や、取引組織、契約などの損益には反映させないというのを意図したものとも言えます。
一方で「JP_APPLY_PAYMENT_RATE_TO_INVOICE」を"Y"にすることで、為替差損益にを売上/仕入請求伝票と入金/支払伝票の情報を引き継ぐようにすることも可能です。この場合、為替差損益は、売上/仕入請求伝票の組織や取引組織、契約に負担させることを意図したものとなります。
参考:ver9で仕訳帳に追加された情報
参考にJPiere ver9で仕訳帳に追加されたカラムを紹介します。
【JPIERE-0566(v9)】消費税法の求める帳簿の記載事項を仕訳帳に保持する
売上請求伝票/仕入請求伝票の情報を引き継ぐ場合には、請求伝票[JP_Invoice_ID]に代入されます。入金伝票/支払伝票の情報を引き継ぐ場合には、入金支払伝票[JP_Payment_ID]に代入されます。
- 請求伝票[JP_Invoice_ID]
- 入金支払伝票[JP_Payment_ID]
【JPIERE-0556(v9)】青色申告書の提出の承認を受けようとする法人の帳簿の記載事項を可能な限り仕訳帳に保持する
入金伝票/支払伝票の情報を引き継ぐ場合にはアカウント[JP_BankAccount_ID]にアカウント情報が代入されます。摘要科目を使用して消込処理する場合にはその適用科目の情報が適用科目[JP_Charge_ID]に代入されます。
- 単価[JP_PriceActual]
- 摘要科目[JP_Charge_ID]
- アカウント[JP_BankAccount_ID]
【JPIERE-0553(v9)】インボイス制度の買手側の対応
※このカスタマイズは消込伝票の自動仕訳のカスタマイズとは直接的には関係ありません。
- 適格請求書発行事業者[IsQualifiedInvoiceIssuerJP]
- 適格請求書発行事業者登録番号[JP_RegisteredNumberOfQII]
【JPIERE-0543(v9)】仕訳帳に課税標準額と税額の追加
※このカスタマイズは消込伝票の自動仕訳のカスタマイズとは直接的には関係ありません。
- 売上/仕入区分[JP_SOPOType]
- 課税標準額[JP_TaxBaseAmt]
- 税額[JP_TaxAmt]
端数の丸目処理のコメントアウト
IDEMPIERE-4127:GL Inventory Clearing - Minor rounding variances で実装された処理自体に不具合があるため、コメントアウトしました。※債権/債務の勘定科目が1つしかない前提で実装されている…。
為替差損益を仕訳の貸借の差額で求めるようにしたので、この処理をコメントアウトしても影響はないはずです。
税金調整の不具合
外貨建てで税金調整を行うと、外貨金額を日本円(会計スキーマの通貨)として処理されてしまっていたのを、外貨として換算するように修正しました。
売上/仕入請求伝票で、為替レートを上書きしており、一部入金/支払時に為替差損益が発生する場合の不具合修正
売上/仕入請求伝票単位で為替差損益を計算する設定になっており(「JP_APPLY_PAYMENT_RATE_TO_INVOICE」が"Y")、かつ売上/仕入請求伝票で為替レートを上書きしていて、一部入金もしくは一部支払いで為替差損益が発生する場合に、上書きされてる為替レートを使用せずに為替差損益を計算している不具合を修正しました。
Step1: Doc_AllocationHdrJPクラスの修正
まずは、Doc_AllocationHdrJPクラスを修正します。そのままVr9のDoc_AllocationHdrJPクラスを全部コピーして、下記の修正を加えて下さい。
◆setInvoiceInfo()メソッドで、Ver8には無いカラムへのセットをコメントアウトする
下記イメージの赤線部分を適宜修正して下さい。
◆setPaymentInfo()メソッドで、Ver8には無いカラムへのセットをコメントアウトする
下記イメージの赤線部分を適宜修正して下さい。
◆copyAcctInfo()メソッドで、ver8には無いカラムへのセットをコメントアウトする
下記イメージの赤線部分をコメントアウトして下さい。
◆JP_Charge_IDをセットしている下記の箇所をコメントアウトして下さい。
JP_Charge_IDはver9で追加したカラムになりますので、下記イメージの赤線部分をコメントアウトして下さい。
Step2: 他の伝票との調整
消込伝票の仕訳だけを修正しても良いのですが、他の関連伝票も修正することが全体的に整合性のある処理になります。
【JPIERE-0574(v9)】外貨建ての入金/支払伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
入金/支払伝票を現在の日付でリバースする際に、リバース元の伝票の為替レートを引き継ぎで、赤伝を作成するようにしています。このカスタマイズを反映するためにMPaymentクラスをモディフィケーションして修正して下さい。
【JPIERE-0575(v9)】外貨建ての売上/仕入請求伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
売上/仕入請求伝票を現在の日付でリバースする際に、リバース元の伝票の為替レートを引き継いで、赤伝を作成するようにしています。このカスタマイズを反映するためにMInvoiceクラスをモデイフィケーションして修正して下さい。
【JPIERE-0576(v9)】外貨建ての出納帳の仕訳で、入金/支払と結びついている明細には、入金/支払伝票の為替レートを適用する
入金/支払伝票と結びついている出納帳明細の為替レートに、入金/支払伝票のヒストリカルレート(HR)を適用するようにしました。Doc_BankStatementJPクラスとDocLine_BankStatementJPクラスを修正して下さい。
【JPIERE-0576(v9)】外貨建ての出納帳の仕訳で、入金/支払と結びついている明細には、入金/支払伝票の為替レートを適用する
銀行仮勘定の残高がズレないように、外貨建ての出納帳の仕訳において、入金/支払伝票と結びついている出納帳明細に関しては、その入金/支払伝票で適用されている為替レートを使用するようにしました。
【JPIERE-0575(v9)】外貨建ての売上/仕入請求伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
外貨建ての売上/仕入請求伝票を「現在の日付でリバース」する際に、リバース元の伝票の為替レートを引き継ぐように修正しました。
【JPIERE-0574(v9)】外貨建ての入金/支払伝票を現在の日付でリバースする際にリバース元のレートを引き継ぐ
外貨建ての入金/支払伝票を「現在の日付でリバース」する際に、リバース元の伝票の為替レートを引き継ぐように修正しました。
【JPIERE-0052】JPiereの消込伝票の自動仕訳カスタマイズ
消込伝票の自動仕訳に施したカスタマイズをまとめています。
IDEMPIERE-5339: GL AP/AR and RLL/RLG facts posted on wrong side in allocation reversal document using Payment Reverse-Accrual(ver9の不具合修正)
消込伝票を「現在の日付でリバース(Reverse-Accrual)」処理した時の不具合が修正されています。
IDEMPIERE-4828:posting of Allocation with a AR Credit Memos with discount, the tax-correction has the wrong sign(ver8.2の不具合修正)
税金調整の不具合が修正されていいます。
IDEMPIERE-4696:Wrong GL Currency Balancing in payment allocation for payment reverse/accrual(ver8.2の機能改善)
消込伝票の自動仕訳において最終的にアンバランスな分を為替差損益になるように処理しています。
IDEMPIERE-4083:currency rate by document or by transaction(ver8.2の新機能)
ver8.2より追加された機能で、入金/支払伝票と売上/仕入請求伝票において、伝票単位で為替レートを設定できるようになりました。伝票単位で為替レートが設定できるので、消込伝票の仕訳においても、その為替レートを採用する必要があります。
IDEMPIERE-4127:GL Inventory Clearing - Minor rounding variances(ver7.1の機能改善)
Doc_AllocationHdr#createInvoiceRoundingCorrection()メソッドが実装されたチケット。