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)