[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>
This commit is contained in:
wan
2019-03-21 08:45:43 +00:00
committed by Cedric Snauwaert
parent 755e565538
commit 31f199597f
4 changed files with 65 additions and 1 deletions
+13 -1
View File
@@ -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 !'),
]
@@ -98,6 +98,13 @@
<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_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"/>
@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
84 access_account_fiscal_year_manager account.fiscal.year.manager model_account_fiscal_year account.group_account_manager 1 1 1 1
85 access_account_incoterms_all account.incoterms all model_account_incoterms 1 0 0 0
86 access_account_incoterms_manager account.incoterms manager model_account_incoterms account.group_account_manager 1 1 1 1
87 access_account_journal_group_all account.journal.group all model_account_journal_group 1 0 0 0
88 access_account_journal_group_manager account.journal.group manager model_account_journal_group account.group_account_manager 1 1 1 1
+43
View File
@@ -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"