Thursday, 28 July 2016

Odoo/OpenERP: Set 'Multi Companies' and 'Multi Currencies' by default for admin and other users.

Using XML :
<!-- Set Multi Companies and Multi Currencies by default for admin user
Note : This XMl code will be useful for only admin user alone.If you want to set it for all the users you can use py below code. -->
 <record model="res.groups" id="base.group_multi_company">
            <field name="name">Multi Companies</field>
            <field name="category_id" ref="base.module_category_extra" />
            <field name="implied_ids" eval="[(4, ref('base.group_light_multi_company'))]"/>
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
        <record model="res.groups" id="base.group_multi_currency">
            <field name="name">Multi Currencies</field>
            <field name="category_id" ref="base.module_category_extra" />
            <field name="implied_ids" eval="[(4, ref('base.group_light_multi_company'))]"/>
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
<!-- End -->

Using PY
class ResUsers(models.Model):
    _inherit = "res.users"

   groups_id = fields.Many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', 'Groups', default=_get_group)
    # Purpose : Set 'Multi Companies' and 'Multi Currencies' by default for res user - Added by Nivas
    @api.model
    def _get_group(self):
        dataobj = self.pool['ir.model.data']
        result = []
        try:
            dummy,group_id = dataobj.get_object_reference(self._cr, self._uid, 'base', 'group_user')
            result.append(group_id)
            # Purpose : Set 'Multi Companies' group as default
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_multi_company')
            result.append(group_id)
            # Purpose : Set 'Multi Currencies' group as default
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_multi_currency')
            result.append(group_id)
            # End
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_partner_manager')
            result.append(group_id)
        except ValueError:
            # If these groups does not exists anymore
            pass
        return result


In Old API(odoo 8 and 7 you can use the following code)

class res_users(osv.osv):
    _inherit = "res.users"

    def _get_group(self,cr, uid, context=None):
        dataobj = self.pool.get('ir.model.data')
        result = []
        try:
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_user')
            result.append(group_id)
            # Purpose : Set 'Multi Companies' group as default
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_multi_company')
            result.append(group_id)
            # Purpose : Set 'Multi Currencies' group as default
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_multi_currency')
            result.append(group_id)
            # End
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_partner_manager')
            result.append(group_id)
        except ValueError:
            # If these groups does not exists anymore
            pass
        return result

    _defaults = {    
        'groups_id': _get_group,
    }

Odoo/OpenERP: Set 'Multi Companies' and 'Multi Currencies' by default for admin and other users.

Using XML :
<!-- Set Multi Companies and Multi Currencies by default for admin user -->
 <record model="res.groups" id="base.group_multi_company">
            <field name="name">Multi Companies</field>
            <field name="category_id" ref="base.module_category_extra" />
            <field name="implied_ids" eval="[(4, ref('base.group_light_multi_company'))]"/>
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
        <record model="res.groups" id="base.group_multi_currency">
            <field name="name">Multi Currencies</field>
            <field name="category_id" ref="base.module_category_extra" />
            <field name="implied_ids" eval="[(4, ref('base.group_light_multi_company'))]"/>
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
<!-- End -->

Using PY
class ResUsers(models.Model):
    _inherit = "res.users"

   groups_id = fields.Many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', 'Groups', default=_get_group)
    # Purpose : Set 'Multi Companies' and 'Multi Currencies' by default for res user - Added by Nivas
    @api.model
    def _get_group(self):
        dataobj = self.pool['ir.model.data']
        result = []
        try:
            dummy,group_id = dataobj.get_object_reference(self._cr, self._uid, 'base', 'group_user')
            result.append(group_id)
            # Purpose : Set 'Multi Companies' group as default
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_multi_company')
            result.append(group_id)
            # Purpose : Set 'Multi Currencies' group as default
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_multi_currency')
            result.append(group_id)
            # End
            dummy,group_id = dataobj.get_object_reference(self._cr, SUPERUSER_ID, 'base', 'group_partner_manager')
            result.append(group_id)
        except ValueError:
            # If these groups does not exists anymore
            pass
        return result


In Old API(odoo 8 and 7 you can use the following code)

class res_users(osv.osv):
    _inherit = "res.users"

    def _get_group(self,cr, uid, context=None):
        dataobj = self.pool.get('ir.model.data')
        result = []
        try:
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_user')
            result.append(group_id)
            # Purpose : Set 'Multi Companies' group as default
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_multi_company')
            result.append(group_id)
            # Purpose : Set 'Multi Currencies' group as default
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_multi_currency')
            result.append(group_id)
            # End
            dummy,group_id = dataobj.get_object_reference(cr, SUPERUSER_ID, 'base', 'group_partner_manager')
            result.append(group_id)
        except ValueError:
            # If these groups does not exists anymore
            pass
        return result
 
    _defaults = {      
        'groups_id': _get_group,
    }

Tuesday, 12 July 2016

Odoo Menu : Hiding ,Deleting, replacing name or showing the menu only in debug mode


To delete the menu
<delete model="ir.ui.menu" id="mail.menu_contacts"/>

To replace name of menu id
<record model="ir.ui.menu" id="hr.menu_hr_root">
<field name="name">HR</field>      
</record>

To show the menu only in debug mode by using 'base.group_no_one' 
<record model="ir.ui.menu" id="hr.menu_hr_root">
<field name="name">Employees</field>
<field eval="[(6,0,[ref('base.group_no_one')])]" name="groups_id"/>
</record>
Note : 
  eval="[(6,0,[ref('base.group_no_one')])]"

It will replace all existing group ids with 'base.group_no_one' id in applied in 'hr.menu_hr_root' menu id .

<record model="ir.ui.menu" id="hr.menu_hr_root">
<field name="groups_id" eval="[(4,ref('base.group_no_one'))]"/>
</record>
   eval="[(4,ref('base.group_no_one'))]"
It will update given group id with existing group ids applied in 'hr.menu_hr_root' menu.