オープンソースのERP iDempiereの標準で用意されているPostgreSQL用の支払期日を計算する関数"PaymentTermDueDate"は、"月末締め翌月末払い"など日本でよく行われている商慣習にそのまま使用しようとすると、月によっては(31日でない月の場合など)支払期日の計算が、意図した結果にならない場合があります。
海外の場合は、この仕様でも良いのかもしれませんが、日本では良くないので、支払期日を日本の商慣習に適した日付で計算するように新たに"JP_PaymentTermDueDate"という関数をJPiereに追加しました。
検索ウィンドウでの使用例
PaymentTermDueDate(修正前のPostgreSQL関数)
"月末締め翌月末払い"の支払条件で、iDempiereの標準機能として用意されている支払期日計算関数PaymentTermDueDateを使用すると、2月の売上請求伝票の支払期日が4月3日として計算されてしまいます。月末締めで31日の支払サイト(月末が31日でない月の場合は満たない日数を加算)だと考えれば理解できなくもないのですが、日本の商慣習的には、3月31日として欲しい所です。
JP_PaymentTermDueDate(修正後のPostgreSQL関数)
JPiereに追加したJP_PaymentTermDueDateを使用すると、同じ"月末締め翌月末払い"の"支払条件"で、ただしく翌月末を支払期日として計算してくれます。
更新履歴
2016年12月28日
"JP_PaymentTermDueDate"の固定日付のロジックを、末締め以外にも対応できるように修正しました。修正前は、例えば20日締め翌月末払いの支払条件において、20XX年4月21日の売上請求伝票の支払期日を20XX年5月31日としてしまっていたのを、修正後は20XX年6月30日とします。
2017年2月5日
"JP_invoice_v"ビューに、JP_Bill_IDを追加しました。
2017年4月5日
支払期日が休日の場合に、翌営業日か前営業日に自動変更する事ができるようにしました。
◆支払条件(C_PaymentTerm)への追加カラム
- IsDueDateBizDayOnlyJP(支払期日は営業日のみ:Due Date is Biz Day only) … 支払期日が休日の場合に、支払期日を営業日に変更するかどうかの判定フラグです。デフォルトは'N'
- IsDueDateHolidayNextBizDayJP(支払期日が休日の場合は翌営業日:Next Biz Day if Due Date is Holiday) … 支払期日は営業日のみのフラグがONの場合に、このフラグがONであれば、支払期日を翌営業日にします。OFFの場合は、前営業日にします。支払期日は営業日のみフラグがONの場合に表示されます。
- JP_Calendar_ID … 休日が設定されているカレンダーを入力するためのカラムです。支払期日は営業日のみフラグがONの場合に表示され、必須入力となります。
◆追加ファンクション
- JP_NextBusinessDay … 引数として日付とカレンダーを渡してあげると日付が休日だった場合に、翌営業日を返してくれるファンクションです。
- JP_PreviousBusinessDay … 引数として日付とカレンダーを渡してあげると日付が休日だった場合に、前営業日を返してくれるファンクションです。
2018年2月12日
"C_invoice_v"ビューに使用されているPaymentTermDueDateをJP_PaymentTermDueDateに置き換えました。
2021年12月23日
"C_invoice_v"と"JP_invoice_v"ビューに使用されているJP_PaymentTermDueDate関数の引数を請求日付(DateInvoiced)から転記日付(DateAcct)に変更しました。