liquidacionestareas.py
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# -*- coding: utf-8 -*-
from odoo import models, fields, api
import datetime
from odoo.exceptions import UserError
#from lib.config import config
DEFAULT_SERVER_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
DEFAULT_SERVER_TIME_FORMAT = "%H:%M:%S"
DEFAULT_SERVER_DATETIME_FORMAT = "%s %s" % (
DEFAULT_SERVER_DATE_FORMAT,
DEFAULT_SERVER_TIME_FORMAT)
class hdgt_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',
)
reporte_ejecutor = fields.Many2one(
string=u'Ejecutó',
comodel_name='res.users',
default=lambda self: self.env.user
)
reporte_fecha = fields.Datetime(
string='field_name',
default=fields.Datetime.now,
)
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):
desde1 = "{} 00:00:01".format(desde)
hasta1 = "{} 23:59:59".format(hasta)
#import ipdb; ipdb.set_trace()
tareas = self.env['hgt.tarea'].search([('ejecutor','=',usuario),('write_date', '>', desde1),('write_date', '<', hasta1)])
for tarea in tareas.ids:
nva_lin = self.env['hgt.linea_tarea'].create({
'tarea': tarea,
'liquidaciones':liquidacion,
'inicio': desde,
'cierre': hasta,
})
return len(tareas)
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
def imprimir_liquidaciones(self):
obj = self.env.ref('hgt_liquidacion_tareas.reporte_liquidaciones').report_action(self)
return obj