Initial commit: OCA Report packages (45 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit 2f4db400df
2543 changed files with 469120 additions and 0 deletions

View file

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="ir.ui.view" id="mis_report_view_tree">
<field name="name">mis.report.view.tree</field>
<field name="model">mis.report</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="description" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="mis_report_view_form">
<field name="name">mis.report.view.form</field>
<field name="model">mis.report</field>
<field name="arch" type="xml">
<form string="MIS Report">
<sheet>
<group col="2">
<field name="name" />
<field name="description" />
<field name="style_id" />
<field name="move_lines_source" options="{'no_open': true}" />
</group>
<notebook>
<page string="KPI's">
<field
name="kpi_ids"
nolabel="1"
colspan="2"
context="{'default_report_id': id}"
>
<tree>
<field name="sequence" widget="handle" />
<field name="description" />
<field name="name" />
<field name="type" />
<field
name="compare_method"
attrs="{'invisible': [('type', '=', 'str')]}"
/>
<field
name="accumulation_method"
attrs="{'invisible': [('type', '=', 'str')]}"
/>
<field name="expression" />
</tree>
</field>
</page>
<page string="Queries">
<field
name="query_ids"
nolabel="1"
colspan="2"
context="{'default_report_id': id}"
>
<tree editable="bottom">
<field name="name" />
<field name="model_id" />
<field
name="field_ids"
domain="[('model_id', '=', model_id)]"
widget="many2many_tags"
/>
<field name="field_names" />
<field name="aggregate" />
<field
name="date_field"
domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]"
/>
<field name="domain" />
</tree>
</field>
</page>
<page string="Sub KPI's">
<field name="subkpi_ids" nolabel="1" colspan="2">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field name="description" />
<field name="name" />
</tree>
</field>
</page>
<page string="Sub Reports">
<field
name="subreport_ids"
nolabel="1"
colspan="2"
context="{'default_report_id': id}"
>
<tree editable="bottom">
<field name="name" />
<field
name="subreport_id"
domain="[('id', '!=', parent.id)]"
/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="mis_report_view_kpi_form" model="ir.ui.view">
<field name="name">mis.report.view.kpi.form</field>
<field name="model">mis.report.kpi</field>
<field name="arch" type="xml">
<form string="MIS Report KPI">
<group col="4">
<field name="description" />
<field name="name" />
<field name="type" />
<newline />
<field name="compare_method" />
<field name="accumulation_method" />
<field name="style_id" />
<field name="style_expression" />
<field name='id' invisible='1' />
<field
name="report_id"
invisible="1"
attrs="{'required': [('id', '!=', False)]}"
/>
</group>
<notebook>
<page string="Expressions">
<group col="2">
<field name="multi" />
<newline />
<field
name="expression_ids"
colspan="2"
nolabel="1"
attrs="{'invisible': [('multi', '=', False)]}"
>
<tree editable="bottom">
<field
name="subkpi_id"
domain="[('report_id', '=', parent.report_id)]"
/>
<field name="name" />
</tree>
</field>
<field
name="expression"
colspan="2"
nolabel="1"
attrs="{'invisible': [('multi', '=', True)],
'readonly': [('multi', '=', True)]}"
placeholder="Enter expression here, for example balp[70%]. See also help tab."
/>
</group>
<group col="4" string="Auto expand">
<field name="auto_expand_accounts" />
<field
name="auto_expand_accounts_style_id"
attrs="{'invisible': [('auto_expand_accounts', '!=', True)]}"
/>
</group>
</page>
<page string="Help (for KPI expressions)">
<div style="display: flex; width: 100;">
<div>
<p>
Expressions can be any valid python expressions.
</p>
<p
> The following special elements are recognized in the expressions
to compute accounting data: <code
>{bal|crd|deb|pbal|nbal|fld}{pieu}(.fieldname)[account
selector][journal items domain]</code>. </p>
<ul>
<li>
<code>bal</code>, <code>crd</code>, <code
>deb</code>, <code>
pbal</code>, <code>nbal</code>, <code
>fld</code> : balance, debit, credit,
positive balance, negative balance,
other numerical field. </li>
<li>
<code>p</code>, <code>i</code>, <code
>e</code> : respectively variation over the period,
initial balance, ending balance </li>
<li>when <code
>fld</code> is used : a field name specifier
must be provided (e.g. <code
>fldp.quantity</code></li>
<li> The <b
>account selector</b> is a like expression on the
account code (eg <code
>70%</code>, etc), or a domain over accounts
(eg <code
>[('code', 'like', '60%')]</code>). </li>
<li> The <b
>journal items domain</b> is an Odoo domain filter on
journal items. </li>
<li>
<code>balu[]</code> : (<code
>u</code> for unallocated) is a special expression
that shows the unallocated profit/loss of previous fiscal
years. </li>
</ul>
<p>
Expressions can involve other KPI, sub KPI and
query results by name (eg <code>kpi1 + kpi2</code>,
<code>kpi2.subkpi1</code>, <code
>query1.field1</code>).
</p>
<p>
Additionally following variables are available
in the evaluation context:
</p>
<ul>
<li>
<code>sum</code>, <code>min</code>,
<code>max</code>, <code>len</code>,
<code>avg</code> : behave as expected, very
similar to the python builtins. </li>
<li>
<code>datetime</code>, <code
>datetime</code>, <code
>dateutil</code> : the python modules. </li>
<li>
<code>date_from</code>, <code
>date_to</code> : beginning and end date of the
period. </li>
<li>
<code
>AccountingNone</code> : a null value that behaves as 0 in
arithmetic operations. </li>
</ul>
</div>
<div>
<p>Examples:</p>
<ul>
<li>
<code
>bal[70]</code> : variation of the balance of account 70 over
the period (it is the same as <code
>balp[70]</code>. </li>
<li>
<code
>bali[70,60]</code> : initial balance of accounts 70 and 60. </li>
<li>
<code
>bale[1%%]</code> : balance of accounts starting with 1 at
end of period. </li>
<li>
<code
>crdp[40%]</code> : sum of all credits on accounts starting
with 40 during the period. </li>
<li>
<code>
debp[55%][('journal_id.code', '=',
'BNK1')]
</code>
: sum of all debits on accounts 55 and journal BNK1 during
the period. </li>
<li>
<code>
balp[('user_type_id', '=',
ref('account.
data_account_type_receivable').id)][]
</code>
: variation of the balance of all receivable accounts over
the period. </li>
<li>
<code>
balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]
</code>
: balance of move lines related to tax grid 56. </li>
<li>
<code
>pbale[55%]</code> : sum of all ending balances of accounts
starting with 55 whose ending balance is positive. </li>
</ul>
</div>
</div>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="mis_report_view_action">
<field name="name">MIS Report Templates</field>
<field name="view_id" ref="mis_report_view_tree" />
<field name="res_model">mis.report</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem
id="mis_report_conf_menu"
parent="account.menu_finance_configuration"
name="MIS Reporting"
sequence="90"
/>
<menuitem
id="mis_report_view_menu"
parent="mis_report_conf_menu"
name="MIS Report Templates"
action="mis_report_view_action"
sequence="21"
/>
</odoo>

View file

@ -0,0 +1,423 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="ir.ui.view" id="mis_report_instance_result_view_form">
<field name="name">mis.report.instance.result.view.form</field>
<field name="model">mis.report.instance</field>
<field name="priority" eval="20 " />
<field name="arch" type="xml">
<form
string="MIS Report Preview"
edit="false"
create="false"
delete="false"
>
<sheet>
<field
name="id"
widget="mis_report_widget"
nolabel="1"
style="width:100%"
/>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="mis_report_instance_view_tree">
<field name="name">mis.report.instance.view.tree</field>
<field name="model">mis.report.instance</field>
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle" />
<button
type="object"
name="preview"
string="Preview"
icon="fa-search"
/>
<button type="object" name="print_pdf" string="Print" icon="fa-print" />
<button
type="object"
name="export_xls"
string="Export"
icon="fa-download"
/>
<field name="name" />
<field name="report_id" string="Template" />
<field name="company_id" groups="base.group_multi_company" />
<field name="multi_company" groups="base.group_multi_company" />
<field name="currency_id" groups="base.group_multi_currency" />
<field name="target_move" />
<field name="pivot_date" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="mis_report_instance_view_form">
<field name="name">mis.report.instance.view.form</field>
<field name="model">mis.report.instance</field>
<field name="priority" eval="15" />
<field name="arch" type="xml">
<form string="MIS Report Instance">
<sheet>
<field name="temporary" invisible="1" />
<div class="oe_right oe_button_box" name="buttons">
<button
type="object"
name="preview"
string="Preview"
icon="fa-search"
/>
<button
type="object"
name="print_pdf"
string="Print"
icon="fa-print"
/>
<button
type="object"
name="export_xls"
string="Export"
icon="fa-download"
/>
<button
type="action"
name="%(mis_report_instance_add_to_dashboard_action)d"
string="Add to dashboard"
icon="fa-plus"
attrs="{'invisible': [('temporary', '=', True)]}"
/>
<button
type="object"
name="save_report"
string="Save"
icon="fa-save"
attrs="{'invisible': [('temporary', '=', False)]}"
/>
</div>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" placeholder="Name" />
</h1>
<field name="description" />
</div>
<group>
<group>
<field name="report_id" string="Template" />
<field
name="currency_id"
groups="base.group_multi_currency"
/>
<field name="comparison_mode" />
</group>
<group>
<group
name="simple_mode"
attrs="{'invisible': [('comparison_mode', '=', True)]}"
colspan="4"
>
<field name="date_range_id" />
<field
name="date_from"
attrs="{'required': [('comparison_mode', '=', False)]}"
/>
<field
name="date_to"
attrs="{'required': [('comparison_mode', '=', False)]}"
/>
</group>
</group>
</group>
<notebook>
<page
string="Columns"
attrs="{'invisible': [('comparison_mode', '=', False)]}"
>
<group>
<group>
<field name="date" />
</group>
<group>
</group>
<field
name="period_ids"
nolabel="1"
colspan="4"
attrs="{'required': [('comparison_mode', '=', True)]}"
context="{'default_report_instance_id': id}"
>
<tree decoration-danger="not valid">
<field name="sequence" widget="handle" />
<field name="name" />
<field name="source" />
<field name="source_aml_model_id" />
<field name="date_from" />
<field name="date_to" />
<field name="valid" invisible="1" />
</tree>
</field>
</group>
</page>
<page string="Filters">
<group name="filters">
<field name="target_move" widget="radio" />
<field
name="multi_company"
groups="base.group_multi_company"
/>
<field
name="company_id"
groups="base.group_multi_company"
attrs="{'required': [('multi_company', '=', False)], 'invisible': [('multi_company', '=', True)]}"
/>
<field
name="company_ids"
groups="base.group_multi_company"
widget="many2many_tags"
attrs="{'invisible': [('multi_company', '=', False)]}"
/>
<field
name="query_company_ids"
groups="base.group_multi_company"
widget="many2many_tags"
/>
<field name="source_aml_model_name" invisible="1" />
<field
name="analytic_domain"
widget="domain"
options="{'model': 'source_aml_model_name'}"
/>
</group>
</page>
<page string="Layout">
<group name="layout">
<field name="landscape_pdf" />
<field name="no_auto_expand_accounts" />
<field name="display_columns_description" />
<field name="wide_display_by_default" />
</group>
</page>
<page string="Widget">
<group name="widget">
<field name="widget_show_filters" />
<field
name="widget_search_view_id"
attrs="{'invisible': [('widget_show_filters', '=', False)]}"
/>
<field name="widget_show_settings_button" />
<field name="widget_show_pivot_date" />
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="mis_report_instance_view_action">
<field name="name">MIS Reports</field>
<field name="view_id" ref="mis_report_instance_view_tree" />
<field name="res_model">mis.report.instance</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('temporary', '=', False)]</field>
</record>
<menuitem
id="mis_report_finance_menu"
parent="account.menu_finance_reports"
name="MIS Reporting"
sequence="101"
groups="account.group_account_manager"
/>
<menuitem
id="mis_report_instance_view_menu"
parent="mis_report_finance_menu"
name="MIS Reports"
action="mis_report_instance_view_action"
sequence="10"
/>
<record id="wizard_mis_report_instance_view_form" model="ir.ui.view">
<field name="model">mis.report.instance</field>
<field name="priority">99</field>
<field name="inherit_id" ref="mis_builder.mis_report_instance_view_form" />
<field name="mode">primary</field>
<field name="arch" type="xml">
<field name="name" position="attributes">
<attribute name="readonly">1</attribute>
</field>
<label for="name" position="replace" />
<field name="report_id" position="attributes">
<attribute name="invisible">1</attribute>
</field>
<div name="buttons" position="attributes">
<attribute name="invisible">1</attribute>
</div>
<sheet position="after">
<footer>
<button
type="object"
name="save_report"
string="Save"
icon="fa-save"
/>
<button
type="object"
name="preview"
string="Preview"
icon="fa-search"
/>
<button
type="object"
name="print_pdf"
string="Print"
icon="fa-print"
/>
<button
type="object"
name="export_xls"
string="Export"
icon="fa-download"
/> or <button string="Cancel" class="oe_link" special="cancel" />
</footer>
</sheet>
</field>
</record>
<record model="ir.actions.act_window" id="last_mis_report_instance_view_action">
<field name="name">Last Reports Generated</field>
<field name="view_id" ref="mis_report_instance_view_tree" />
<field name="res_model">mis.report.instance</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('temporary', '=', True)]</field>
</record>
<menuitem
id="last_wizard_mis_report_instance_view_menu"
parent="mis_report_finance_menu"
name="Last Reports Generated"
action="last_mis_report_instance_view_action"
sequence="20"
/>
<record model="ir.ui.view" id="mis_report_instance_period_view_form">
<field name="model">mis.report.instance.period</field>
<field name="priority" eval="16" />
<field name="arch" type="xml">
<form>
<group col="4">
<field name="name" placeholder="Name" />
<field
name="subkpi_ids"
domain="[('report_id', '=', parent.report_id)]"
widget="many2many_tags"
options="{'no_create': True}"
/>
<field name="valid" invisible="1" />
<field
name="report_instance_id"
invisible="1"
attrs="{'required': [('id', '!=', False)]}"
/>
<field name="report_id" invisible="1" />
<field name="id" invisible="1" />
</group>
<group string="Source" col="4">
<group colspan="2" name="source">
<field name="source" />
</group>
<group col="2" colspan="2" name="source_data">
<field
name="source_aml_model_id"
attrs="{'invisible': [('source', '!=', 'actuals_alt')], 'required': [('source', '==', 'actuals_alt')]}"
/>
<field name="source_aml_model_name" invisible="1" />
<field
name="source_sumcol_ids"
attrs="{'invisible': [('source', '!=', 'sumcol')]}"
nolabel="1"
colspan="2"
>
<tree editable="bottom">
<field name="sign" />
<field
name="period_to_sum_id"
domain="[('report_instance_id', '=', parent.report_instance_id), ('id', '!=', parent.id)]"
options="{'no_create': True, 'no_open': True}"
/>
</tree>
</field>
<field
name="source_sumcol_accdet"
attrs="{'invisible': [('source', '!=', 'sumcol')]}"
/>
<field name="allowed_cmpcol_ids" invisible="1" />
<field
name="source_cmpcol_to_id"
attrs="{'invisible': [('source', '!=', 'cmpcol')], 'required': [('source', '=', 'cmpcol')]}"
domain="[('id', 'in', allowed_cmpcol_ids)]"
options="{'no_create': True, 'no_open': True}"
/>
<field
name="source_cmpcol_from_id"
attrs="{'invisible': [('source', '!=', 'cmpcol')], 'required': [('source', '=', 'cmpcol')]}"
domain="[('id', 'in', allowed_cmpcol_ids)]"
options="{'no_create': True, 'no_open': True}"
/>
</group>
</group>
<group string="Dates">
<group colspan="4">
<field name="mode" widget="radio" />
</group>
<group
name="relative"
attrs="{'invisible': [('mode', '!=', 'relative')]}"
colspan="4"
>
<group>
<field
name="type"
attrs="{'required': [('mode', '=', 'relative')]}"
/>
<field name="is_ytd" />
<field
name="date_range_type_id"
attrs="{'invisible': [('type', '!=', 'date_range')], 'required': [('type', '=', 'date_range'), ('mode', '=', 'relative')]}"
/>
<field name="offset" />
<field name="duration" />
</group>
<group>
<field name="date_from" />
<field name="date_to" />
</group>
</group>
<group
name="fix"
attrs="{'invisible': [('mode', '!=', 'fix')]}"
colspan="4"
>
<group>
<field name="date_range_id" />
</group>
<group>
<field
name="manual_date_from"
attrs="{'required': [('mode', '=', 'fix')]}"
/>
<field
name="manual_date_to"
attrs="{'required': [('mode', '=', 'fix')]}"
/>
</group>
</group>
</group>
<group string="Filters">
<field
name="analytic_domain"
widget="domain"
options="{'model': 'source_aml_model_name'}"
attrs="{'invisible': [('source_aml_model_name', '=', False)]}"
/>
</group>
</form>
</field>
</record>
</odoo>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="ir.ui.view" id="mis_report_style_view_tree">
<field name="name">mis.report.style.view.tree</field>
<field name="model">mis.report.style</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
</tree>
</field>
</record>
<record id="mis_report_style_view_form" model="ir.ui.view">
<field name="name">mis.report.style.view.form</field>
<field name="model">mis.report.style</field>
<field name="arch" type="xml">
<form string="MIS Report Style">
<sheet>
<group string="Style" col="2">
<field name="name" />
</group>
<group string="Number" col="4">
<field name="dp_inherit" string="Rounding inherit" />
<field
name="dp"
attrs="{'invisible': [('dp_inherit', '=', True)]}"
/>
<field name="divider_inherit" string="Factor inherit" />
<field
name="divider"
attrs="{'invisible': [('divider_inherit', '=', True)]}"
/>
<field name="prefix_inherit" />
<field
name="prefix"
attrs="{'invisible': [('prefix_inherit', '=', True)]}"
/>
<field name="suffix_inherit" />
<field
name="suffix"
attrs="{'invisible': [('suffix_inherit', '=', True)]}"
/>
</group>
<group string="Color" col="4">
<field name="color_inherit" />
<field
name="color"
attrs="{'invisible': [('color_inherit', '=', True)]}"
widget="color"
/>
<field name="background_color_inherit" />
<field
name="background_color"
attrs="{'invisible': [('background_color_inherit', '=', True)]}"
widget="color"
/>
</group>
<group string="Font" col="4">
<field name="font_style_inherit" />
<field
name="font_style"
attrs="{'invisible': [('font_style_inherit', '=', True)]}"
/>
<field name="font_weight_inherit" />
<field
name="font_weight"
attrs="{'invisible': [('font_weight_inherit', '=', True)]}"
/>
<field name="font_size_inherit" />
<field
name="font_size"
attrs="{'invisible': [('font_size_inherit', '=', True)]}"
/>
</group>
<group string="Indent" col="4">
<field name="indent_level_inherit" />
<field
name="indent_level"
attrs="{'invisible': [('indent_level_inherit', '=', True)]}"
/>
</group>
<group string="Visibility" col="4">
<field name="hide_empty_inherit" />
<field
name="hide_empty"
attrs="{'invisible': [('hide_empty_inherit', '=', True)]}"
/>
<field name="hide_always_inherit" />
<field
name="hide_always"
attrs="{'invisible': [('hide_always_inherit', '=', True)]}"
/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="mis_report_style_view_action">
<field name="name">MIS Report Styles</field>
<field name="view_id" ref="mis_report_style_view_tree" />
<field name="res_model">mis.report.style</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem
id="mis_report_style_view_menu"
parent="mis_report_conf_menu"
name="MIS Report Styles"
action="mis_report_style_view_action"
sequence="22"
/>
</odoo>