diff options
| author | wan <wan@odoo.com> | 2019-02-26 15:16:20 +0000 |
|---|---|---|
| committer | Cedric Snauwaert <csn@openerp.com> | 2019-03-21 08:45:43 +0000 |
| commit | 31f199597fc0dbefc6b875dc5a196fbe132e1c4d (patch) | |
| tree | dcd466af4459b3db703627c2dd83fcf80f7425ba | |
| parent | 755e565538e5f6ef87ee482abc58a850bcdc1c4f (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.py | 14 | ||||
| -rw-r--r-- | addons/account/security/account_security.xml | 7 | ||||
| -rw-r--r-- | addons/account/security/ir.model.access.csv | 2 | ||||
| -rw-r--r-- | addons/account/views/account_view.xml | 43 |
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" |
