カスタムレポート

Odooには、強力で使いやすいレポーティングフレームワークが付属しています。このエンジンを使用すると、税レポートや、特定のグルーピングとレイアウトを持つ貸借対照表および損益計算書などの新しいレポートを作成できます。

重要

会計レポート作成インターフェースにアクセスするには、開発者モードを有効にします。

新しいレポートを作成するには、会計アプリを開き、設定 ‣ 会計レポートに移動します。ここから、ルートレポートまたはバリアントを作成できます。

ルートレポート

ルートレポートは、一般的で中立的な会計レポートとみなすことができます。ルートレポートは、ローカル会計バージョンを構築するためのモデルとして機能します。レポートにルートレポートがない場合、それ自体がルートレポートであると見なされます。

Example

ベルギーとアメリカの税レポートは、同じ一般的なバージョンをベースにして、それぞれの国内規制に合わせることになります。

新しいルートレポートを作成する際には、そのためのメニュー項目を作成する必要があります。そのためには、レポートを開き、そのレポート上で(施策)アイコンをクリックし、メニュー項目を作成を選択します。ページを更新すると、レポートが会計 ‣ レポーティングで対応可能になります。

注釈

新しいルートレポートを作成する必要があるケースは、その国の税務当局が新しい特定のタイプのレポートを要求する場合など、稀です。

バリアント

バリアントはルートレポートの国別バージョンであるため、常にルートレポートを参照します。バリアントを作成するには、新しいレポートを作成する際に ルートレポート フィールドで汎用(ルート)レポートを選択して下さい。

ルートレポートが会計アプリのメインメニューの1つから開かれると、そのすべてのバリアントがビューの右上隅のバリアントセレクターに表示されます。

Example

次の画像では、VAT Report (BE)がルートGeneric Tax reportのバリアントです。

レポート明細行

レポート(ルートまたはバリアント)を作成したら、レポート行を入力する必要があります。行を追加をクリックして新しい行を作成するか、既存のレポート行をクリックして変更できます。すべてのレポート行には名称が*必須*であり、数式でその値を使用したい場合は任意のコードを追加することもできます。

エンジン明細オプション

式

各レポート行には、1つまたは複数の式を含めることができます。式は、レポート行に必要なサブ変数とみなすことができます。式を作成するには、レポート行内の行を追加をクリックします。

式を作成する際は、その式を参照するために使用するラベルを割り当てる必要があります。そのため、各行の式の中で**一意**である必要があります。また、計算エンジンと計算式の両方を指定する必要があります。**エンジン**は、**計算式**および**サブ計算式**がどのように解釈されるかを定義します。必要に応じて、同じ行内で異なる計算エンジンを使用する式を混在させることも可能です。

注釈

エンジンによっては、サブ式 も必要な場合があります。

'Odooドメイン' エンジン

このエンジンでは、数式は Odooドメイン と解釈され、account.move.line オブジェクトを対象とします。

このサブ計算式によって、ドメインに一致する仕訳明細をどのように使って式の値を計算するかを定義することができます:

sum

一致した仕訳明細の全残高の合計です。

sum_if_pos

一致した仕訳明細の残高の合計です。そうでなければ 0 です。

sum_if_neg

金額が負であれば、結果は一致した仕訳明細の残高の合計となります。そうでなければ 0 です。

count_rows

結果は、この式のサブ行の数になります。レポート行にグループ化の値が設定されている場合、これは一致した仕訳行における重複のないグループ化キーの数に対応します。それ以外の場合は、一致した仕訳行の数になります。

また、サブ計算式の先頭に - 記号を付けると、結果の符号を 反転 させることができます。

明細レポート内の数式明細

'税タグ' エンジン

このエンジン用に作成された式は、税タグに一致するために使用される名前で構成されます。式の作成時にそのようなタグが存在しない場合は、作成されます。

式を評価する場合、式の計算はおおよそ次のように表すことができます: (タグが + の仕訳明細の金額) - (タグが - の仕訳明細の金額) です。

Example

式が tag_name の場合、エンジンは税タグ +tag_name と -tag_name を一致させ、必要な場合、作成します。更に例を挙げるならば、2つのタグは式によって一致されます。 もし式が A であれば、タグ +A および -A を要求(必要な場合、作成)します。

'その他の計算式の集計'エンジン

他の式で取得した金額に対して算術演算を実行する必要がある場合は、このエンジンを使用します。ここでの計算式は、4つの基本算術演算子(加算 +、減算 -、除算 /、乗算 *)のいずれかで区切られた式への参照で構成されます。式を参照するには、そのレポート行の**コード**の後にピリオド . と式の**ラベル**を入力します(例: code.label)。

サブ式 は以下の1つであることが可能です:

if_above(CUR(amount))

算術式の値は、指定された境界よりも大きい場合にのみ返されます。そうでなければ、結果は 0 となります。

if_below(CUR(amount))

算術式の値は、指定された境界よりも小さい場合にのみ返されます。そうでなければ、結果は 0 となります。

if_between(CUR1(amount1), CUR2(amount2))

算術式の値は、指定された境界の間に厳密に入っている場合のみ返される。そうでない場合は、最も近い境界に戻されます。

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

算術式の値は、指定された行コードと数式ラベルで示される式の値が、指定された境界よりも大きい場合にのみ返されます。そうでなければ、結果は 0 となります。

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

算術式の値は、指定された明細コードと式ラベルで示される式の値が、指定された境界よりも小さい場合にのみ返されます。そうでなければ、結果は 0 となります。

CUR`は大文字の通貨コードで、`金額`はその通貨で表示された限界額です。

cross_report(xml_id | report_id)

xml_idまたはレポートID自体でターゲット指定された別のレポートの式を照合するために使用されます。

'勘定コードのプレフィックス'エンジン

このエンジンは、勘定科目コードのプレフィックスを算術式の変数として使用し、勘定科目の金額を照合するために使用されます。

Example

21
算術式は、次のようプレフィックス1つで表すこともできます。

Example

21 + 10 - 5
この計算式は、コードが 21 と 10 で始まる勘定科目の仕訳明細の残高を加算し、プレフィクスが 5 の勘定科目の仕訳明細の残高を減算します。

サブプレフィックスの選択を無視することも可能です。

Example

21 + 10\(101, 102) - 5\(57)
この式は前の例と同じように機能しますが、プレフィックスの 101`、102、57 は無視されます。

C と D のサフィックスを使って**貸方と借方**に 'サブフィルタ' を適用することができます。この場合、勘定はプレフィクスが一致し、かつ この勘定で行われた仕訳明細の合計残高が 貸方/借方 である場合のみ考慮されます。

Example

勘定科目 210001 の残高は -42 で、勘定科目 210002 の残高は25です。数式 21D は勘定科目 210002 にのみマッチし、したがって25を返します。210001 は残高が 貸方 であるため、参照されません。

プレフィクスの除外はサフィックスの C や D と混ぜることができます。

Example

21D + 10\(101, 102)C - 5\(57)
この計算式は、勘定科目コードが借方(D)の 場合 は 21、貸方(C)の 場合 は 10 で始まる勘定科目の残高を足し合わせますが、プレフィックス 101、102 は無視し、プレフィックス 57 は無視してプレフィックス 5 で始まる勘定科目の残高を引きます。

プレフィクスの C または D に一致し、サフィックスとして使用しない場合は、空の除外文字 () を使用します。

Example

21D\()
この計算式は、残高の符号に関係なく、コードが 21D で始まる勘定科目に一致します。

コードプレフィクスを使って勘定科目を含めるだけでなく、勘定科目タグ で一致させることもできます。これは、例えば、あなたの国に標準化された勘定科目表がなく、同じプレフィクスが企業間で異なる目的で使用される可能性がある場合に特に便利です。

Example

tag(25)
この式は、関連するタグが id 25 を含む勘定科目に一致します。

参照するタグがデータファイルで定義されている場合は、idの代わりにxmlidを使うことができます。

Example

tag(my_module.my_tag)
この式は、関連するタグが my_module.my_tag で示されるタグを含む勘定科目に一致します。

また、タグに算術式を使うこともでき、プレフィクス選択と組合わせることもできます。

Example

tag(my_module.my_tag) + tag(42) + 10
my_module.my_tag としてタグ付けされた勘定科目の残高は、ID 42 のタグにリンクされた勘定科目およびコードプレフィックス 10 の勘定科目の残高と合計されます。

`C`と`D`のサフィックスもタグと同じように使うことができます。

Example

tag(my_module.my_tag)C
この式は、my_module.my_tag というタグと貸方残高を持つ勘定科目に一致します。

プレフィクスの除外はタグでも機能します。

Example

tag(my_module.my_tag)\(10)
この式は、my_module.my_tag というタグと、10 で始まらないコードを持つ勘定科目に一致します。

'外部値' エンジン

'外部値' エンジンは、手動値 および 繰越値 を参照するために使用されます。これらの値は account.move.line ではなく、account.report.external.value で保存されます。これらのオブジェクトはそれぞれ、それが影響を与える式を直接指しているので、ここで選択することはあまりありません。

式 は以下のいずれかになります:

sum

その結果が、その期間内の全ての外部値の合計でなければならない場合。

most_recent

その結果が、その期間の最新の外部値の値でなければならない場合。

さらに、サブ計算式 は2つの方法で使用することができます:

rounding=X

X を数字に置き換えると、X桁に丸めることを指示します。

editable

この式を手動で編集できることを示し、レポートにアイコンを表示して、ユーザがこの操作を実行できるようにします。

注釈

手動値は、現在レポートで選択されている date_to で作成されます。

どちらのサブ計算式も ; で区切ることで混在させることができます。

Example

editable;rounding=2
は両方の動作を混ぜ合わせた正しいサブ計算式です。

「カスタム Python 関数」エンジン

このエンジンは、開発者がケースバイケースで式のカスタム計算を導入するための手段です。数式は呼び出すPython 関数の名前であり、サブ数式はこの関数が返す辞書から取得するキーです。独自のカスタムモジュールを作成する場合にのみ使用してください。

カラム

レポートには、不明な数 の列が表示される場合があります。各列は 行 で明示された 式 から値を得ます。列の expression_label フィールドは、値が表示される式のラベルを表示します。そのフィールドに 式 がない行がある場合、この列には何も表示されません。 複数の列が必要な場合は、異なる 式 ラベルを使用する必要があります。

レポートの列。

会計レポートの オプション タブにある 期間比較 機能を使用すると、全ての列が各期間で繰返されます。

行のグループ化

非標準のグループ化は、*仕訳明細*モデルに既存のフィールドを追加または使用することで可能ですが、フィールドが関連フィールドであり、非保存である必要があります。

注釈

行をグループ化するには、レポートに編集可能な明示的なレポート行が必要です。たとえば、繰延レポートは、生成される動的行を使用するため、行のグループ化をサポートしていません。

仕訳明細に新しいフィールドを作成

*仕訳明細*モデルに非保存の関連フィールドを作成するには、まず会計 ‣ 仕訳明細に移動し、(bug)アイコンをクリックしてから、Fieldsをクリックします。Newをクリックして新しいフィールドを作成し、次のフィールドを入力します:

  • Field Name:フィールドの技術名

  • Field Label:フィールドに表示されるラベル

  • Field Type:この関連フィールドが指す必要があるフィールドのタイプ

  • Stored:非保存フィールドのみが行のグループ化に使用できるため、このフィールドはチェックを外したままにします。

  • Related Model:フィールドタイプがone2many、many2many、またはmany2oneの場合、グループ化する元のフィールドのモデルを選択します。

  • Related Field Definition:グループ化するフィールドへの技術パス

    Example

    商業パートナーの販売チームでグループ化するには、関連フィールド定義を move_id.team_id に設定します。

行のグループ化

行をグループ化するには、目的のレポートの行タブに移動し、グループ化する行をクリックして、グループ化フィールドを編集します。グループ化キーとして使用するフィールドの技術名(フィールド名)を入力してください。

ちなみに

モデルのすべてのフィールドとその技術名のリストを表示するには、会計 ‣ 仕訳明細に移動し、(bug)アイコンをクリックしてから、Fieldsをクリックします。各フィールドの技術名は、Field Name列に表示されます。

カスタム税レポートの設定

レポート設定

ちなみに

Odoo のレポートエンジンのすべての技術用語と関数は、このページの前のセクションで説明されています。カスタム税レポートを設定する前に、これらのセクションを読むことを強くお勧めします。

カスタム税レポートを作成するには、会計アプリを開き、管理設定 ‣ 会計レポートに移動して、新規をクリックします:

  • レポートの名前を入力します。

  • ルートレポートを選択します。

  • 利用可能条件フィールドの下で、Country Matchesを選択し、次に会社に一致するCountryを選択します。

次に、明細追加をクリックしてレポート行を作成します。作成したら、そのレポート行をクリックして設定します:

  • 再度明細追加をクリックして式を作成し、名前を付けます。

  • Definitionタブで、次のシナリオに応じてその式のComputation Engineを選択します:

このシナリオでは、会社が税グリッドを使用します:

  • 計算エンジンとしてTax Tagsを選択します。Odoo はこのフィールドを使用して、レポート行を税にリンクします。

  • 数式フィールドに、短いグリッド識別子を入力します(例: vat_sales_base)。Odoo は自動的にこのタグの + と - のバリアントを生成するため、管理設定 ‣ Taxes内でマッピングできます。

  • Subformulaフィールドに、課税標準を報告するには base、または徴収/支払った実際の税額を報告するには tax のいずれかを入力します。

必要に応じてこのプロセスを繰り返します。次に、保存して閉じるをクリックします。

または、次の方法もあります:

  • 他の数式を集計を計算エンジンとして選択します。Odooはこのフィールドを使用して、生の打刻データをスキャンするのではなく、レポートに既に存在する行で計算を実行します。

  • 数式フィールドで、行コードを参照する基本的な代数を使用します(例:LINE_10 - LINE_20)。

必要に応じてこのプロセスを繰り返します。次に、保存して閉じるをクリックします。

式のオプションタブで、繰越先フィールドに数式を入力して、常に残高を繰り越すか、付与数が負の場合にのみ繰り越すようにします。この機能を使用しない場合は、このフィールドを空白のままにします。

Example

if_below(EUR(0))
この数式は、0.00 EUR未満の付与数のみを繰り越します。

税設定

次に、設定 ‣ 税に移動し、新規をクリックして、カスタム税レポート用の新しい税を作成および設定します。販売および購入の税を作成し、以前に作成した一致する税グリッドを使用して、すべての税の税グリッドに入力します。最後に、各税について税の未払勘定と税の未収勘定の両方を指定してください。

Example

税グリッドの設定。

締め仕訳

税を締めるには、カスタム税レポートで使用される各税に税グループを指定する必要があります。これを行うには、会計アプリを開き、設定 ‣ 税に移動し、税グループが必要な税を開き、詳細オプションタブをクリックして、税グループフィールドでグループを選択します。割り当てたら、(右矢印)アイコンをクリックし、税の未払勘定と税の未収勘定の両方を設定します。

ちなみに

  • すべてが設定されたら、そのレポート固有の税を使用して請求書、仕入先請求書、クレジットメモを作成し、レポートをテストしてください。最後に、締め仕訳自体をテストします。

  • 税の締め仕訳で特定のアカウントを非表示にする場合は、設定 ‣ 税に移動し、税を選択して、(設定調整)アイコンをクリックします。そこから、税の締め仕訳ボックスをチェックして、公開設定を調整します。

参照

税の締め