lineatarea.py 1.77 KB
# -*- coding: utf-8 -*-

from odoo import models, fields, api

class hgt_linea_tarea(models.Model):
    _name = 'hgt.linea_tarea'

    liquidaciones = fields.Many2one(
        string='Liquidaciones',
        comodel_name='hgt.liquidacionestareas',
        ondelete='restrict',
    )
    
    tarea = fields.Many2one(
        string=u'Tarea',
        comodel_name='hgt.tarea',
        ondelete='set null',
    )

    name = fields.Char(
        related='tarea.name',
        readonly=True,
        store=True
    )
    
    inicio = fields.Date(
        readonly=True,
        store=True
    )

    cierre = fields.Date(
        readonly=True,
        store=True
    )

    minutos_reales = fields.Integer(
        related='tarea.minutos_reales',
        readonly=True,
        store=True
    )
   
    tipo_cargo = fields.Many2one(
        string='Tipo de Cargo',
        comodel_name='hgt.tipo_cargo',
        ondelete='restrict',
    )
    
    subtotal = fields.Float(
        string='Subtotal',
        compute='obtener_subtotal',
    )

    state = fields.Selection(
        related='tarea.state',
        readonly=True,
        store=True
    )

    @api.onchange('tipo_cargo')
    def obtener_subtotal(self):
        for record in self:
            if record.tipo_cargo:
                horas = (record.minutos_reales)/60
                precio = record.tipo_cargo.monto
                tot= horas*precio 
                record.subtotal = tot

    @api.onchange('inicio','cierre')
    def onchange_dominio_tarea(self):
        result = {}
        result['domain'] = []
        i = self.inicio
        c = self.cierre
        ids = self.env['hgt.tarea'].search([('inicio2', '>=', i),('cierre2', '<=', c)])
        result['domain'] = {'tarea' : [('id', 'in', ids)]}
        return result