【JPIERE-0363】契約管理

 JPiereの契約管理は、契約書を一元管理し、契約内容に基づいて、販売管理と購買管理の各種伝票(受注伝票、出荷納品伝票、売上請求伝票、発注伝票、入荷伝票、仕入請求伝票)を作成する事ができます。

 JPiereの契約管理は汎用的に作られており、標準機能だけでも様々な契約を管理する事ができます。標準機能では管理できない特殊な契約を管理する場合でも、カスタマイズのベースとして使用する事ができます。

JPiereの契約管理の特徴

契約書の一元管理

 企業には色々な契約があり、多くは紙として存在しファイリングされています。契約内容を確認したい場合、大量にファイリングされている契約書の中から、目的の契約書を探さないといけません。その作業は企業規模が大きくなればなるほど大変です。

 JPiereの契約管理機能では、iDempiereの標準機能として提供されている添付ファイルの機能を使用して、紙の契約書を電子ファイルとして保存し、共有する事を想定しています。そして目的の契約書が探しやすいように、検索条件を自由に追加して使用する事を想定しています。もちろんiDempiere標準機能の権限設定により、ユーザー毎に閲覧できる契約書を制限する事もできます。

 

契約区分による3種類の契約管理形態

 JPiereの契約管理では、契約書を次の3つに区分管理し、契約情報を業務に活用する事ができます。

◆スポット契約

 iDempiereの標準機能では、1つの取引先マスタに対して、販売管理と購買管理でそれぞれ1つずつの取引条件(支払条件、支払方法など)しか設定する事ができませんが、”スポット契約”の機能を使用する事により、1つの取引先に対して複数の取引条件を設定する事ができます。

 JPiereの契約管理の開発により、受注伝票、出荷納品売上請求伝票、発注伝票、仕入請求伝票には、契約書フィールドが追加されています。スポット契約の場合、それらの伝票の契約書フィールドを選択入力する事で、契約書の取引条件を伝票に自動入力する事ができます。

 

◆期間契約

 iDempiereの標準機能では、保守契約やライセンス販売などのように継続的にサービス提供するような取引を処理する機能があまり充実していません。そこでJPiereでは、継続的にサービス提供するような契約を期間契約として、契約内容にもとづき、各種伝票を自動作成する事ができるようにするなど、継続的にサービス提供するような取引を業務処理する機能を充実させています。

 

◆一般契約

 スポット契約と期間契約のどちらにも属さない契約です。契約書をJPiere/iDempiere上で一元管理する事を目的とした区分です。契約書のデータを登録しておき、情報を共有化します。

 

3タブ構成の契約書

 JPiereの契約管理の中心となるのが”契約書”です。契約書ウィンドウは次の3つのタブから構成されています。

◆契約書タブ

 契約書タブは、紙の契約書と対応する事を意図しています。紙の契約書の情報を入力して検索及び参照できるようにし、契約書の内容を共有化します。契約区分が”一般契約”の場合、契約書タブのみ表示されます。 

 

◆契約内容タブ

 ”契約内容”タブは契約区分が”期間契約”か”スポット契約”の場合に表示されるタブです。”期間契約”の場合、”契約内容をもとに作成する伝票”のヘッダ情報(鑑となる情報)を入力します。スポット契約の場合は、取引条件(支払条件、支払方法など)を入力します。

 

◆契約内容明細タブ

 ”契約内容明細”タブは契約区分が”期間契約”か”スポット契約”の場合に表示されるタブです。

 ”期間契約”の場合、”契約内容をもとに作成する伝票”の明細情報を入力します。”契約内容をもとに作成する伝票”が受注伝票の場合、出荷納品伝票と売上請求伝票をJPiereの契約管理で自動起票する事ができます。発注伝票も同様に、入荷伝票を仕入請求伝票をJPiereの契約管理で自動起票する事ができます。

 “スポット契約”の場合は、取引する明細情報が契約により決まっているような場合に使用する事を想定しており、その明細情報を登録しておくことで、受注伝票を作成する際に、契約内容明細の情報をもとに受注伝票明細を自動作成する事ができます。

 

契約書のタブ構成イメージ
契約書のタブ構成イメージ

 紙の契約書は、契約書タブと対応します。契約内容タブは、契約書タブの1レコードに対して複数登録する事ができます。契約内容タブには、その契約内容が有効な期間を入力するようになっており、契約内容に変更があった場合などに履歴管理が行えます。

 

 システム的には契約書ウィンドウは2つの”伝票(Document)”から構成されています。1つは契約書タブ1つで1枚の伝票を構成し、もうひとつは契約内容タブと契約内容明細タブの2つのタブで1枚の伝票を構成します。1つの契約書を2つの”伝票(Document)”として管理する事で、契約書タブと契約内容タブで、それぞれ伝票としての機能(ワークフローや、伝票ステータスの更新、伝票番号の自動採番)を使う事ができます。

 

 

販売契約と購買契約の管理

 契約内容をもとに、iDempiereの伝票を起票したいという場合、販売管理の伝票を起票する契約と購買管理の伝票を起票する契約に大別する事ができます。JPiereの契約管理では、販売管理の伝票を起票する契約を”販売契約”とし、購買管理の伝票を起票する契約を”購買契約”として、契約内容をもとに、販売管理の伝票と購買管理の伝票を起票する事ができます。

◆販売契約

 契約内容に基づいて、受注伝票、出荷納品伝票、売上請求伝票を作成する事ができます。受注伝票、出荷納品伝票を作成する必要が無い場合は、売上請求伝票だけを作成する事もできます。

 

◆購買契約

 契約内容に基づいて、発注伝票、入荷伝票、仕入請求伝票を作成する事ができます。発注伝票、入荷伝票を作成する必要が無い場合は、仕入請求伝票だけを作成する事もできます。

 

期間契約の契約定期処理と契約カレンダー

  “期間契約”の場合、”契約定期処理”を実行する事で販売契約と購買契約の各種伝票を自動起票させる事ができます。契約定期処理は ”契約カレンダー”をもとに実行されます。契約カレンダーには、各種伝票を作成する単位で区切られる、”契約処理期間”があります。契約処理期間はその期間の日付をFrom~Toで区切る事で、任意の期間で作成する事ができます。

 契約カレンダーは、必要に応じていくつでも作成する事ができます。 

期間契約と契約カレンダー、契約処理期間、契約定期処理
期間契約と契約カレンダー、契約処理期間、契約定期処理

【ポイント】期間契約は契約処理期間毎に伝票を管理

 期間契約では、契約処理期間毎に作成した伝票を管理します。そのため、同じ契約処理期間で同じ伝票の重複登録を防止したり、反対に登録忘れを防止したりする事ができます。

 

 

“契約内容をもとに作成する伝票(基点となる伝票)”と”派生伝票”

  ”期間契約”の機能を使用すると伝票を自動作成する事ができます。自動作成するための設定は自動作成する伝票を”契約内容をもとに作成する伝票(基点となる伝票)”と”基点となる伝票から派生して作成する伝票(派生伝票)”に分けると理解しやすくなります

 例えば受注伝票は、”契約内容をもとに作成する伝票(基点となる伝票)”です。そして受注伝票をもとに作成する出荷納品伝票や売上請求伝票は、”基点となる伝票から派生して作成する伝票(派生伝票)”です。基点となる伝票と派生伝票は1:Nの関係になります。

 期間契約では、”基点となる伝票”と”派生伝票”を柔軟に自動で作成する事ができます。

 

◆契約内容をもとに作成する伝票(基点となる伝票)は4種類

 契約内容をもとに作成する伝票(基点となる伝票)は、契約書ウィンドウの契約内容タブと契約内容明細タブの情報をもとに作成される伝票であり、販売契約では”受注伝票”、”売上請求伝票”、購買契約では”発注伝票”、”仕入請求伝票”の4種類あります。

 販売契約で在庫管理が必要のない契約の場合には、受注伝票と出荷納品伝票は作成せずに、直接売上請求伝票を、作成する事ができます。この場合、契約内容をもとに作成する伝票(基点となる伝票)は”売上請求伝票”という事になります。

 購買契約でも在庫管理が必要のない契約の場合には、発注伝票と入荷伝票は作成せずに、直接仕入請求伝票を、作成する事ができます。この場合、契約内容をもとに作成する伝票(基点となる伝票)は”仕入請求伝票”という事になります。

 

◆基点となる伝票から派生して作成する伝票(派生伝票)は4種類

 契約内容をもとに作成する伝票(基点となる伝票)が受注伝票の場合、受注伝票から派生して作られる伝票は出荷納品伝票と、売上請求伝票があります。契約内容をもとに作成する伝票(基点となる伝票)が発注伝票の場合は、入荷伝票と仕入請求伝票があります。

 基点となる伝票が、売上請求伝票と仕入請求伝票の場合は、派生伝票はありません。

【ポイント】契約書ウィンドウの”契約内容”タブと”契約内容明細”タブには基本的に ”基点となる伝票”を作成するための情報を入力します!!

 契約書ウィンドウの契約内容タブと契約内容明細タブには、基本的に基点となる伝票を作成するために必要となる情報を入力します。そのため、例えば1年契約のものであっても受注伝票を毎月作成するようなケースでは、毎月作成する受注伝票の情報を、契約内容タブと契約内容明細タブに登録する事になります。

 そして、基点となる伝票が受注伝票か発注伝票の場合で、派生伝票を契約定期処理で自動作成したい場合に、派生伝票を作成するための情報を、契約内容明細タブに追加登録します。

 派生伝票を自動作成する情報を契約内容明細毎に設定する事で、基点となる伝票と派生伝票の1:Nの関係を柔軟に定義し、契約定期処理で自動作成する事ができます。

 

 

“契約カレンダー”と”契約処理マスタ”

 契約処理マスタには契約内容をもとに各種伝票を作成するプロセスを設定しておく事ができます。契約処理マスタ毎に各種伝票を作成するプロセスをプラグインとして差し替える事で、伝票を作成する処理を自由にカスタマイズする事ができます。

 期間契約の場合、契約書ウィンドウの契約内容タブと契約内容明細タブに、それぞれ契約カレダ―と契約処理マスタが設定できるようになっています。

 契約内容タブの契約カレンダーと契約処理マスタは”契約内容をもとに作成する伝票(基点となる伝票)”を作成する際に使用します。

 契約内容明細タブの契約カレンダーと契約処理マスタは”基点となる伝票から派生して作成する伝票(派生伝票)”を作成する際に使用します。そのため、契約内容明細タブの契約カレンダーと契約処理マスタは、入出荷伝票(入荷伝票 or 出荷納品伝票)作成用と請求伝票(仕入請求伝票 or 売上請求伝票)作成用の2つを選択入力する事ができるようになっています。

◆ケーススタディー

 スポーツクラブを経営しており、年会費による支払いの会員が1名入会しました。受注伝票は入会時に1枚起票し、売上を月ごとに計上するために出荷納品伝票と売上請求伝票は毎月作成する事とします。

  • この例の場合、“基点となる伝票”となる受注伝票は年に1枚で、”派生伝票”となる出荷納品伝票と売上請求伝票は月に1枚作成しています。 JPiereの契約管理の標準機能では、”基点となる伝票”は契約内容タブの”契約カレンダー” をもとに作成し、”派生伝票”は契約内容明細タブの”契約カレンダー(入出荷)”フィールドと”契約カレンダー(請求)”フィールドに設定されている契約カレンダーをもとに作成します。伝票の作成タイミングを受注伝票を基点として明細毎に制御する事ができますので、受注伝票1枚に対して複数の出荷納品伝票や売上請求伝票を作成する事ができます。
  • 基点となる受注伝票を作成した後の、派生する出荷納品伝票と売上請求伝票の作成は、”契約定期処理”を実行して自動作成する事もできますし、契約定期処理を使用せずに、既存の機能を使用して作成する事もできます。既存機能を使用して作成した後で、契約定期処理を実行しても、契約カレンダーの契約処理期間毎に伝票の作成を制御する事ができるため、2重登録を防止する事ができます。
  • 基点となる伝票と派生伝票の関係は1:N(1:1を含む)の関係を想定しており、基点となる伝票と派生伝票がN:1になる場合は、契約管理では想定していません。例えば後払いのケースで複数の受注伝票をまとめて、1枚の請求書を発行したい場合、基点となる受注伝票と派生する売上請求伝票を1:1の関係で作成し、受注伝票の数だけ作成された売上請求伝票を”【JPIERE-0106】まとめ請求書”の機能で、まとめて請求する事を想定しています。

 

 

契約テンプレート

 企業活動において、契約は通常、取引の種類毎にある程度定型化されて行きます。JPiereでは定型化されている契約内容を予め登録しておく事ができる”契約テンプレート”の機能を使用する事で、契約内容の入力を省力化し誤入力を防止します。

 

 

契約内容毎の自動仕訳の勘定科目の制御

 スポット契約と期間契約では、iDempiereの標準機能の自動仕訳の勘定科目を必要に応じて変更する事ができます。

◆グループ会社間取引の把握を勘定科目残高レベルで把握する事が可能

 例えば、iDempiereでは売上の勘定科目は品目マスタ毎に決まっています。そのため、連結会計を意識して、売上の勘定科目をグループ会社とそうではない取引先とで切り分けたいと考えた場合は、それを実現するためには品目マスタ自体を分けざるを得ません。しかし、JPiereの契約管理を使用すれば、ひとつの品目マスタでも契約内容毎に適した勘定科目で自動仕訳を起票する事ができますので、グループ会社間の取引を勘定科目残高レベルで容易に把握する事ができます。

 

◆債権/債務勘定科目の切り替え

 iDempiereの標準機能では、債権/債務の勘定科目は取引先マスタに1つづつした設定する事ができません。そのため、取引の種類に応じて、債権/債務の勘定科目を切り替えたいと考えた場合に、計上する債権/債務の勘定科目分だけ取引先マスタを用意する必要がありました。しかし、JPiereの契約管理を使用すれば、債権/債務の勘定科目を契約内容毎に適した勘定科目で自動仕訳を起票する事ができますので、そのような必要はありません。

 

 

計上伝票を活用した売上の認識タイミングの適正化と費用収益の見越し繰延

 契約管理のオプション機能として、計上伝票(売上計上伝票仕入計上伝票)があります。計上伝票と請求伝票(売上請求伝票/仕入請求伝票)を使用する事で、費用と収益の見越繰延を行い、適切なタミングで収益を費用を認識(計上)する事ができます。

 iDempiereの標準機能では、売上は売上請求伝票作成の完成時に計上されますが、前払いの取引などのように契約内容によっては必ずしも、請求のタイミングで売上が計上されるわけではありません。計上伝票を使用する事により、売上の計上を売上計上伝票で行い、請求タイミングと売上の計上タイミングを分離させる事ができます。

契約管理の全体イメージと処理の流れ

契約管理の全体イメージと処理の流れ
契約管理の全体イメージと処理の流れ

資料

更新履歴

2022年5月27日(Ver9)

契約書と契約テンプレートにおいて、「基点となる伝票」フィールドが"SOO-受注伝票"か"POO-発注伝票"の時に「基点となる伝票の伝票タイプ」フィールに設定されている伝票タイプの「プライリストに無い品目の許可」フラグにより、プライスリストに登録されていない品目を契約内容明細に入力を許可するかどうか制御するようにしました。

2022年5月26日(Ver9):

プライスリストがセットされた時に、税込フラグ(IsTaxIncluded)も更新されるようにモデルクラスを修正しました。

  • MEstimation
  • MContractContent
  • MContractContentT
  • MRecognition

2022年3月30日(Ver9) : 売上/仕入請求伝票で計算した課税標準額や税額などの情報を仕訳帳に引き継げるようにしました。

【JPIERE-0543】仕訳帳に課税標準額と税額の追加 に関連して、売上/仕入請求伝票で計算した課税標準額や税額などの情報を仕訳帳に引き継げるようにしました。

  • jpiere.base.plugin.org.compiere.acct.Doc_InvoiceJP

2022年3月9日(Ver9) サービス品目の原価詳細データの作成制御

売上請求伝票と仕入請求伝票の転記処理に時に、品目タイプがアイテム以外の品目マスタの明細で、原価詳細(M_CostDetail)データを作成するかどうかシステムコンフィグ設定(JP_CREATE_COSTDETAIL_OF_SERVICE_PRODUCT)で制御できるようにしました。サービス系の品目について、原価詳細が不要であれば、false('N')にする事でパフォーマンスが少し良くなります。サービス品目は基本的に在庫評価の計算などは不要なのでデフォルトはNにしています。

2022年3月1日 Ver9

転記処理が即時転記以外の場合(システムコンフィグ設定「CLIENT_ACCOUNTING」の値が"I"以外の場合)に、伝票ステータスが"完成"にならない不具合を解消しました。

2022年2月3日 - 不具合修正 ver8

複数会計のスキーマがある時に、契約会計情報の各自動仕訳の設定を取得する処理に不具合があったので修正しました。

  • jpiere.base.plugin.org.adempiere.process.CopyContractAcct
  • jpiere.base.plugin.org.adempiere.model.MContractAcct

2021年12月4日 - 機能改善 ver8

  • 売上/仕入計上伝票を作成する際に、追加したフィールドの値を引き継げるように改善しました。

2020年3月5日 - 不具合修正

  • AbstractCreateContractFromTemplateクラスにおいて、倉庫を選択する処理に不具合があったので修正しました。

2019年9月30日 - 不具合修正

  • jpiere.base.plugin.org.adempiere.process.AbstractContractProcessで定義されている定数に誤りがあったので修正しました。
    • (誤)JP_ContractProcessType_CreateDocument = "DC"
    • (正)JP_ContractProcessType_CreateDocument = "CD"

2018年7月20日:契約テンプレートから契約内容作成プロセスの改善

  • 契約テンプレートの契約カレンダー選択リストに設定されているカレンダーが1つの場合、契約内容や契約内容明細に自動設定する。
  • 契約テンプレートの契約処理マスタ選択リストに設定されている契約処理マスタが1つの場合、契約内容や契約内容明細に自動設定する。

関連するカスタマイズ

【JPIERE-0052】異なる取引先マスタ間での債権債務の消込の自動仕訳

 JPIERE-0363:契約管理の開発に伴い異なる取引先マスタ間での債権債務の消込の自動仕訳のカスタマイズをJPiere Base Pluginのカスタマイズ区分に移行しました。

  • 削除(JPMS):org.compiere.acct.Doc_AllocationHdr
  • 追加(JPBP):jpiere.base.plugin.org.compiere.acct.Doc_AllocationHdrJP