summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwan <wan@odoo.com>2019-02-26 15:16:20 +0000
committerCedric Snauwaert <csn@openerp.com>2019-03-21 08:45:43 +0000
commit31f199597fc0dbefc6b875dc5a196fbe132e1c4d (patch)
treedcd466af4459b3db703627c2dd83fcf80f7425ba
parent755e565538e5f6ef87ee482abc58a850bcdc1c4f (diff)
[IMP] account: add option to group journals
It can be useful to be able to select several journals in 1 click in the financial reports Task: 1857934 closes odoo/odoo#26711 Signed-off-by: Cedric Snauwaert (csn) <csn@openerp.com>
-rw-r--r--addons/account/models/account.py14
-rw-r--r--addons/account/security/account_security.xml7
-rw-r--r--addons/account/security/ir.model.access.csv2
-rw-r--r--addons/account/views/account_view.xml43
4 files changed, 65 insertions, 1 deletions
diff --git a/addons/account/models/account.py b/addons/account/models/account.py
index 27ee060aeeb..8cb2b4f4225 100644
--- a/addons/account/models/account.py
+++ b/addons/account/models/account.py
@@ -70,7 +70,7 @@ class AccountAccount(models.Model):
result = self.read_group([('user_type_id', '=', data_unaffected_earnings.id)], ['company_id'], ['company_id'])
for res in result:
if res.get('company_id_count', 0) >= 2:
- account_unaffected_earnings = self.search([('company_id', '=', res['company_id'][0]),
+ account_unaffected_earnings = self.search([('company_id', '=', res['company_id'][0]),
('user_type_id', '=', data_unaffected_earnings.id)])
raise ValidationError(_('You cannot have more than one account with "Current Year Earnings" as type. (accounts: %s)') % [a.code for a in account_unaffected_earnings])
@@ -385,6 +385,16 @@ class AccountGroup(models.Model):
return self.browse(group_ids).name_get()
+class AccountJournalGroup(models.Model):
+ _name = 'account.journal.group'
+ _description = "Account Journal Group"
+
+ name = fields.Char(required=True, translate=True)
+ company_id = fields.Many2one('res.company', required=True, default=lambda self: self.env['res.company']._company_default_get('account.account'))
+ account_journal_ids = fields.Many2many('account.journal', string="Journals")
+ sequence = fields.Integer(default=10)
+
+
class AccountJournal(models.Model):
_name = "account.journal"
_description = "Journal"
@@ -479,6 +489,8 @@ class AccountJournal(models.Model):
alias_domain = fields.Char('Alias domain', compute='_compute_alias_domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"))
alias_name = fields.Char('Alias Name for Vendor Bills', related='alias_id.alias_name', help="It creates draft vendor bill by sending an email.", readonly=False)
+ journal_group_ids = fields.Many2many('account.journal.group', string="Journal Groups")
+
_sql_constraints = [
('code_company_uniq', 'unique (code, name, company_id)', 'The code and name of the journal must be unique per company !'),
]
diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml
index df21d0861d1..5e5a63f120f 100644
--- a/addons/account/security/account_security.xml
+++ b/addons/account/security/account_security.xml
@@ -100,6 +100,13 @@
<record id="journal_comp_rule" model="ir.rule">
<field name="name">Journal multi-company</field>
+ <field name="model_id" ref="model_account_journal_group"/>
+ <field name="global" eval="True"/>
+ <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</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="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv
index a091adbd8b8..2f74ad224ae 100644
--- a/addons/account/security/ir.model.access.csv
+++ b/addons/account/security/ir.model.access.csv
@@ -84,3 +84,5 @@ access_account_fiscal_year_user,account.fiscal.year.user,model_account_fiscal_ye
access_account_fiscal_year_manager,account.fiscal.year.manager,model_account_fiscal_year,account.group_account_manager,1,1,1,1
access_account_incoterms_all,account.incoterms all,model_account_incoterms,,1,0,0,0
access_account_incoterms_manager,account.incoterms manager,model_account_incoterms,account.group_account_manager,1,1,1,1
+access_account_journal_group_all,account.journal.group all,model_account_journal_group,,1,0,0,0
+access_account_journal_group_manager,account.journal.group manager,model_account_journal_group,account.group_account_manager,1,1,1,1
diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml
index bb7ba9796ec..018d21ffbaf 100644
--- a/addons/account/views/account_view.xml
+++ b/addons/account/views/account_view.xml
@@ -129,6 +129,7 @@
<field name='sequence' widget='handle'/>
<field name="name"/>
<field name="type"/>
+ <field name="journal_group_ids" widget="many2many_tags"/>
<field name="belongs_to_company" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
@@ -173,6 +174,34 @@
</search>
</field>
</record>
+ <record id="view_account_journal_group_tree" model="ir.ui.view">
+ <field name="name">account.journal.group.tree</field>
+ <field name="model">account.journal.group</field>
+ <field name="priority">1</field>
+ <field name="arch" type="xml">
+ <tree>
+ <field name="sequence" widget="handle"/>
+ <field name="name"/>
+ <field name="account_journal_ids" widget="many2many_tags"/>
+ </tree>
+ </field>
+ </record>
+ <record id="view_account_journal_group_form" model="ir.ui.view">
+ <field name="name">account.journal.group.form</field>
+ <field name="model">account.journal.group</field>
+ <field name="priority">1</field>
+ <field name="arch" type="xml">
+ <form string="Journal Groups">
+ <sheet>
+ <group>
+ <field name="name"/>
+ <field name="account_journal_ids" widget="many2many_tags" options="{'no_create': True}"/>
+ <field name="sequence"/>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
<record id="view_account_journal_form" model="ir.ui.view">
<field name="name">account.journal.form</field>
<field name="model">account.journal</field>
@@ -192,6 +221,7 @@
<group>
<group>
<field name="type"/>
+ <field name="journal_group_ids" widget="many2many_tags" domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]" options="{'no_create': True}"/>
</group>
<group>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
@@ -409,6 +439,19 @@
</record>
<menuitem action="action_account_journal_form" id="menu_action_account_journal_form" parent="account_account_menu" groups="account.group_account_manager"/>
+ <record id="action_account_journal_group_list" model="ir.actions.act_window">
+ <field name="name">Journal Groups</field>
+ <field name="res_model">account.journal.group</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a journal group
+ </p><p>
+ Journal group are used in reporting to display relevant data together.
+ </p>
+ </field>
+ </record>
+ <menuitem action="action_account_journal_group_list" id="menu_action_account_journal_group_list" parent="account_account_menu"/>
+
<act_window
id="act_account_journal_2_account_bank_statement"
name="Bank statements"