Trucos de Modelos de Odoo

Aqui veremos algunos trucos de programación de Odoo ERP segun mi experiencia estos son los mas usados en la creación de Modelos.

1 - Campos en Odoo

# Campo Date
date = fields.Date('Fecha contable', default=fields.Date.today)

# Campo Datetime
entry_date = fields.Datetime('Fecha de Entrada', default = lambda self: datetime.today()) 

# Campo Many2one
user_id = fields.Many2one('res.users', copy=False)

company_id = fields.Many2one('res.company', string='Compañía', change_default=True, readonly=True,
            default=lambda self: self.env['res.company']._company_default_get('traveler.register'))

# Campo Integer
folio = fields.Integer(string='Folio:', size=10)

# Campo Char
name = fields.Char(string='New Value', size=64, required=True)

# Campo Boolean
online_mode = fields.Boolean('Online Mode', help='Si esta activo', default='True')

# Campo Selection
gender = fields.Selection([('F','Femenino'),('M','Masculino')],'Sexo',size=1)

# Campo Related
online_mode_f = fields.Boolean('Online', related='company_id.online_mode')

# Campo Compute
estimado = fields.Float('Estimado')
pagado = fields.Float('Pagado')
restante = fields.Float(compute='calcular_restante')

@api.one
@api.depends('estimado','pagado')
def calcular_restante(self):
    self.restante = self.estimado - self.pagado

2 - Trabajar con el Log

import logging
_logger.info('Not be found data to update the currency %s!',currency.name)									

3 - Crear una secuencia

name = fields.Char('Código', translate=True, default="Nuevo")
@api.model
    def create(self, vals):
        if vals.get('name', "Nuevo") == "Nuevo":
            vals['name'] = self.env['ir.sequence'].next_by_code('hr.haberesydesc') or "Nuevo"
        return super(hr_haberesydesc, self).create(vals)