Thursday, 2 November 2017

Odoo , Python : To get month name list based on dates duration.

import calendar

# print calendar.month_name[9] # give your month number and it will show exact month name.


import datetime
import time
from datetime import date
from dateutil.rrule import rrule, MONTHLY
# give your date duration
date_from = '01/03/2016'
date_to = '30/04/2017'

date_from_date = date_from[:2]
date_from_month = date_from[3:5]
date_from_year = date_from[6:]

date_to_date = date_to[:2]
date_to_month = date_to[3:5]
date_to_year = date_to[6:]
#
date1 = date(int(date_from_year), int(date_from_month), int(date_from_date))
date2 = date(int(date_to_year), int(date_to_month), int(date_to_date))

months = [dt.strftime("%m") for dt in rrule(MONTHLY, dtstart=date1, until=date2)]
print months

for mo in [dt.strftime("%m") for dt in rrule(MONTHLY, dtstart=date1, until=date2)]:
    print calendar.month_name[int(mo)]

Wednesday, 30 August 2017

Odoo: Show Notification message(red color window) before wizard popup window and Show help view window on field in wizard popup.

Create a new css file in static-> css folder and add below code.

/* Show notification message at first level (above the existing popup window) - Nivas*/
/* Existing module file path: /web/static/src/less/notification.less */
.o_notification_manager {
    z-index: 5000 !important;  // above the modals. Fixme: expose a variable
}
/* Showing developer mode view in wizard option.  */
.tooltip {
z-index: 6000 !important;
}
/* End */

Thursday, 13 October 2016

Odoo(OpenERP) : Menu badge count


Steps to add Menu badge as shown in 'Next Activities' menu in Sales Module:
1) Inherit ('ir.needaction_mixin) class in your  the class as shown below.

          class YourClass(models.Model):
                   _name = "your.class"
                   _inherit = ['ir.needaction_mixin']

2) Add '_needaction_domain_get' function in your class as shown below code.Here we have to give domain filter based on which the count is calculatated and displayed in the menu.

         @api.model
         def _needaction_domain_get(self):
                  return [('state', '=', 'on_going')]



Monday, 3 October 2016

Odoo Python Tips : change unicode list into normat list format


The following code is useful to change the unicode string list format into normal list
-------------
employee_list = [int(i) for i in self.employee_list.strip('[]').split(',')]
-------------

Odoo Python Date Range : Find out the date range as list using two date.


Step 1 : Create a file as validations.py and put the below code
-------------------
def get_date_range(date_from, date_to):
    date_from_year = date_from[:4]
    date_from_month = date_from[5:7]
    date_from_date = date_from[8:11]
   
    date_to_year = date_to[:4]
    date_to_month = date_to[5:7]
    date_to_date = date_to[8:11]
   
    d1 = date(int(date_from_year), int(date_from_month), int(date_from_date))
    d2 = date(int(date_to_year), int(date_to_month), int(date_to_date))
    delta = d2 - d1
    date_range_list = []
    for i in range(delta.days + 1):
        r_date = d1 + td(days=i)
        date_range_list.append(str(r_date))
    return date_range_list
--------------------

Step 2 : Use the following code in wherever you want to find out the date range and to return in list format.
--------------------
date_list = validations.get_date_range(date_from, date_to)
--------------------

FUI:
you can separate the date as year, month, date using below code too.
date_from_year = date_from[:4]
    date_from_month = date_from[5:7]
    date_from_date = date_from[8:11]

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,
    }