19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:30:07 +01:00
parent ba20ce7443
commit 768b70e05e
2357 changed files with 1057103 additions and 712486 deletions

View file

@ -2,25 +2,34 @@
<odoo>
<data noupdate="0">
<!--
There are 4 groups
The way the groups work is different when `account_accountant` is installed or not.
There are 5 groups
The way the groups work is different depending on whether `account`, `account_accountant` or `accountant` are installed.
Invoicing only:
Invoicing only (account):
```
group_account_invoice ⇨ group_account_manager (only those two should be used)
group_account_readonly ⇨ group_account_user (those two are only visible through a server action)
group_account_basic ⬂ (those are only visible through a server action)
group_account_readonly ⇨ group_account_user
```
Invoicing + Accounting:
Invoicing Enterprise (account_accountant):
```
group_account_invoice ⬂
group_account_readonly ⇨ group_account_user ⇨ group_account_manager
group_account_invoice ⇨ group_account_basic ⇨ group_account_manager (basic accounting group activated)
group_account_readonly ⇨ group_account_user (these are still not visible)
```
Invoicing + Accounting (accountant):
```
group_account_invoice ⇨ group_account_basic ⬂
group_account_readonly ⇨ group_account_user ⇨ group_account_manager
```
`group_account_user` is almost (a bit more than) the sum of `group_account_invoice` and `group_account_readonly`
`group_account_manager` is the king (except when Consolidation is installed, then there is a super-king)
`group_account_invoice` can create/edit invoices, refunds, payments, etc but cannot see accounting related stuff (journal entries, reports, reconciliation,...)
`group_account_basic` can do additional accounting features (eg. basic bank recon) but not journal entries
`group_account_readonly` can see (and only see) everything, including the journal entries, advanced configuration, reports
`group_account_user` is the accountant: he can do everything except advanced config (accounting periods for instance)
`group_account_manager` can edit some config that `group_account_user` cannot do
@ -28,70 +37,71 @@
When you have only Invoicing installed, only `group_account_invoice` and `group_account_manager` should be used. The others are giving a shallow access to Accounting features, but we want to remove that.
-->
<record model="ir.module.category" id="base.module_category_accounting_accounting">
<field name="description">Helps you handle your accounting needs, if you are not an accountant, we suggest you to install only the Invoicing.</field>
<record model="res.groups.privilege" id="res_groups_privilege_accounting">
<field name="name">Accounting</field>
<field name="category_id" ref="base.module_category_accounting"/>
<field name="sequence">7</field>
</record>
<record id="group_delivery_invoice_address" model="res.groups">
<field name="name">Delivery Address</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_show_line_subtotals_tax_excluded" model="res.groups">
<field name="name">Tax display B2B</field>
<field name="comment">Show line subtotals without taxes (B2B)</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_show_line_subtotals_tax_included" model="res.groups">
<field name="name">Tax display B2C</field>
<field name="comment">Show line subtotals with taxes included (B2C)</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_account_readonly" model="res.groups">
<field name="name">Show Accounting Features - Readonly</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="group_account_invoice" model="res.groups">
<field name="name">Billing</field>
<field name="category_id" ref="base.module_category_accounting_accounting"/>
<field name="name">Invoicing</field>
<field name="sequence">20</field>
<field name="comment">Invoices, payments and basic invoice reporting.</field>
<field name="privilege_id" ref="res_groups_privilege_accounting"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="group_account_basic" model="res.groups">
<field name="name">Basic</field>
<field name="implied_ids" eval="[(4, ref('group_account_invoice'))]"/>
</record>
<record id="group_account_user" model="res.groups">
<field name="name">Show Full Accounting Features</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice')), (4, ref('group_account_readonly'))]"/>
<field name="implied_ids" eval="[(4, ref('group_account_basic')), (4, ref('group_account_readonly'))]"/>
</record>
<record id="group_account_manager" model="res.groups">
<field name="name">Billing Administrator</field>
<field name="category_id" ref="base.module_category_accounting_accounting"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice')),(4, ref('base.group_private_addresses'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
<field name="name">Administrator</field>
<field name="sequence">50</field>
<field name="comment">Full access, including configuration rights.</field>
<field name="privilege_id" ref="res_groups_privilege_accounting"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice'))]"/>
<field name="user_ids" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
<record id="group_warning_account" model="res.groups">
<field name="name">A warning can be set on a partner (Account)</field>
<field name="category_id" ref="base.module_category_hidden"/>
<record id="group_account_secured" model="res.groups">
<field name="name">Show Inalterability Features</field>
</record>
<record id="group_cash_rounding" model="res.groups">
<field name="name">Allow the cash rounding management</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_sale_receipts" model="res.groups">
<field name="name">Sale Receipt</field>
<field name="category_id" ref="base.module_category_hidden"/>
<record id="group_partial_purchase_deductibility" model="res.groups">
<field name="name">Partial Purchase Deductibility</field>
</record>
<record id="group_purchase_receipts" model="res.groups">
<field name="name">Purchase Receipt</field>
<field name="category_id" ref="base.module_category_hidden"/>
<!-- Add a new setting that can be enabled to allow the user to "trust" a partner bank account -->
<record model="res.groups.privilege" id="res_group_privilege_accounting_bank">
<field name="name">Bank</field>
<field name="sequence">50</field>
<field name="category_id" ref="base.module_category_accounting"/>
</record>
<record id="group_validate_bank_account" model="res.groups">
<field name="name">Validate bank account</field>
<field name="privilege_id" ref="res_group_privilege_accounting_bank"/>
<field name="implied_by_ids" eval="[Command.link(ref('base.group_system'))]"/>
</record>
</data>
@ -115,84 +125,70 @@
<field name="perm_unlink" eval="False"/>
</record>
<record id="base.group_public" model="res.groups">
<field name="implied_ids" eval="[(4, ref('account.group_show_line_subtotals_tax_excluded'))]"/>
</record>
<record id="base.group_portal" model="res.groups">
<field name="implied_ids" eval="[(4, ref('account.group_show_line_subtotals_tax_excluded'))]"/>
</record>
<record id="base.group_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('account.group_show_line_subtotals_tax_excluded'))]"/>
</record>
<record id="base.default_user" model="res.users">
<field name="groups_id" eval="[(4,ref('account.group_account_manager'))]"/>
</record>
<record id="account_move_comp_rule" model="ir.rule">
<field name="name">Account Entry</field>
<field name="model_id" ref="model_account_move"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="account_move_line_comp_rule" model="ir.rule">
<field name="name">Entry lines</field>
<field name="model_id" ref="model_account_move_line"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="journal_group_comp_rule" model="ir.rule">
<field name="name">Journal Group multi-company</field>
<field name="name">Multi-ledger multi-company</field>
<field name="model_id" ref="model_account_journal_group"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="journal_comp_rule" model="ir.rule">
<field name="name">Journal multi-company</field>
<field name="model_id" ref="model_account_journal"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="account_comp_rule" model="ir.rule">
<field name="name">Account multi-company</field>
<field name="model_id" ref="model_account_account"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_ids', 'parent_of', company_ids)]</field>
</record>
<record id="account_group_comp_rule" model="ir.rule">
<field name="name">Account Group multi-company</field>
<field name="model_id" ref="model_account_group"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="account_root_comp_rule" model="ir.rule">
<field name="name">Account Root multi-company</field>
<field name="model_id" ref="model_account_root"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<record id="tax_group_comp_rule" model="ir.rule">
<field name="name">Tax group multi-company</field>
<field name="model_id" ref="model_account_tax_group"/>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="tax_comp_rule" model="ir.rule">
<field name="name">Tax multi-company</field>
<field name="model_id" ref="model_account_tax"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="tax_rep_comp_rule" model="ir.rule">
<field name="name">Tax Repartition multi-company</field>
<field name="model_id" ref="model_account_tax_repartition_line"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">['|',('company_id','=',False), ('company_id', 'parent_of', company_ids)]</field>
</record>
<record id="invoice_analysis_comp_rule" model="ir.rule">
<field name="name">Invoice Analysis multi-company</field>
<field name="model_id" ref="model_account_invoice_report"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="account_fiscal_position_comp_rule" model="ir.rule">
<field name="name">Account fiscal Mapping company rule</field>
<field name="model_id" ref="model_account_fiscal_position"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record model="ir.rule" id="account_bank_statement_comp_rule">
@ -204,19 +200,19 @@
<record model="ir.rule" id="account_bank_statement_line_comp_rule">
<field name="name">Account bank statement line company rule</field>
<field name="model_id" ref="model_account_bank_statement_line"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="account_reconcile_model_template_comp_rule">
<field name="name">Account reconcile model template company rule</field>
<field name="model_id" ref="model_account_reconcile_model"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record model="ir.rule" id="account_reconcile_model_line_template_comp_rule">
<field name="name">Account reconcile model_line template company rule</field>
<field name="model_id" ref="model_account_reconcile_model_line"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'parent_of', company_ids)]</field>
</record>
<record model="ir.rule" id="account_payment_comp_rule">
@ -228,7 +224,7 @@
<record model="ir.rule" id="account_payment_term_comp_rule">
<field name="name">Account payment term company rule</field>
<field name="model_id" ref="model_account_payment_term"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'parent_of', company_ids)]</field>
</record>
<!-- Billing record rules for account.move -->
@ -251,14 +247,14 @@
<record id="account_invoice_rule_portal" model="ir.rule">
<field name="name">Portal Personal Account Invoices</field>
<field name="model_id" ref="account.model_account_move"/>
<field name="domain_force">[('state', 'not in', ('cancel', 'draft')), ('move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')), ('message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
<field name="domain_force">[('state', 'not in', ('cancel', 'draft')), ('move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')), ('partner_id','child_of',[user.commercial_partner_id.id])]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
<record id="account_invoice_line_rule_portal" model="ir.rule">
<field name="name">Portal Invoice Lines</field>
<field name="model_id" ref="account.model_account_move_line"/>
<field name="domain_force">[('parent_state', 'not in', ('cancel', 'draft')), ('move_id.move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')), ('move_id.message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
<field name="domain_force">[('parent_state', 'not in', ('cancel', 'draft')), ('move_id.move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')), ('move_id.partner_id','child_of',[user.commercial_partner_id.id])]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
@ -300,9 +296,16 @@
<field name="groups" eval="[(4, ref('account.group_account_invoice'))]"/>
</record>
<record id="account_invoice_send_rule_group_invoice" model="ir.rule">
<field name="name">Readonly Invoice Send and Print</field>
<field name="model_id" ref="model_account_invoice_send"/>
<record id="account_move_send_single_rule_group_invoice" model="ir.rule">
<field name="name">Readonly Invoice Send and Print (single)</field>
<field name="model_id" ref="model_account_move_send_wizard"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('account.group_account_invoice'))]"/>
</record>
<record id="account_move_send_batch_rule_group_invoice" model="ir.rule">
<field name="name">Readonly Invoice Send and Print (batch)</field>
<field name="model_id" ref="model_account_move_send_batch_wizard"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('account.group_account_invoice'))]"/>
</record>