liquidacionestareas.py 3.13 KB
# -*- coding: utf-8 -*-

from odoo import models, fields, api
from datetime import datetime
from odoo.exceptions import UserError

class hgt_liquidacionestareas(models.Model):
    _name = 'hgt.liquidacionestareas'

    nombre = fields.Char(
        string='Nombre',
        compute='obtener_nombre',
    )

    usuario = fields.Many2one(
        string='Usuario',
        comodel_name='res.users',
        ondelete='restrict',
    )
    
    lineas_tareas = fields.One2many(
        string='Tareas',
        comodel_name='hgt.linea_tarea',
        inverse_name='liquidaciones',
    )

    desde = fields.Date(
        string='Desde',
   
    )

    hasta = fields.Date(
        string='Hasta',
  
    )
    
    total = fields.Float(
        string='Total',
        compute="obtener_total",
    )
    
    abonado = fields.Boolean(
        string='Abonado?',
    )
    
    estado = fields.Selection(
        string='Estado',
        selection=[('borrador', 'Borrador'), ('aprobado', 'Aprobado'), ('liquidado', 'Liquidado')],
        default='borrador',
    )
    
    def obtener_nombre(self):
        for record in self:
            fecha = record.hasta
            usuario = record.usuario.name
            string = "{} - {}".format(fecha,usuario)
            record.nombre = string 


    def crear_linea(self,liquidacion,usuario,desde,hasta):

        # input1= desde
        # input2= hasta    

        # desde1= datetime.strptime(input1, "%Y-%m-%d")
        # hasta1= datetime.strptime(input2, "%Y-%m-%d")

        # desde2 = desde1.strftime("%m/%d/%Y %H:%M:%S")
        # hasta2 = hasta1.strftime("%m/%d/%Y %H:%M:%S")

        tareas = self.env['hgt.tarea'].search([('ejecutor','=',usuario)])
        #tareas = self.env['hgt.tarea'].search([('ejecutor','=',usuario),('inicio', '>=', desde.strftime('%Y-%m-%d 00:00:01')),('cierre', '<=', hasta.strftime('%Y-%m-%d 23:59:59'))])
        # tareas = self.env['hgt.tarea'].search([('ejecutor','=',usuario),('inicio', '>', desde),('cierre', '<', hasta)])
        
        for tarea in tareas.ids:             
            nva_lin = self.env['hgt.linea_tarea'].create({
            'tarea': tarea,
            'liquidaciones':liquidacion,
            'inicio': desde,
            'cierre': hasta,
            })

    def obtener_total(self):
        for liq in self:
            tot = 0
            for record in liq.lineas_tareas:
                tot = tot + record.subtotal
            liq.total = tot


    def aprobar_liquidaciones(self):
        self.estado = 'aprobado'

    def abonar_liquidaciones(self):
        self.estado = 'liquidado'
        self.abonado = True
        for tar in self.lineas_tareas:
            if (tar.tarea.liquidado == False) :
                tar.tarea.horas_liquidadas = tar.minutos_reales
                tar.tarea.liquidado = True
            else:
                raise UserError('Alguna de estas tareas ya fue liquidada previamente')

    def volver_borrador(self):
        self.estado = 'borrador'
        self.abonado = False
        for tar in self.lineas_tareas:
            tar.tarea.horas_liquidadas = tar.tarea.horas_liquidadas - tar.minutos_reales
            tar.tarea.liquidado = False