liquidacionestareas.py
3.86 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# -*- 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),('inicio', '>', desde1),('inicio', '<', hasta1)])
puesto = self.env['hgt.tipo_cargo'].search([('ejecutores','=',usuario)], limit=1)
for tarea in tareas.ids:
nva_lin = self.env['hgt.linea_tarea'].create({
'tarea': tarea,
'liquidaciones':liquidacion,
'inicio': desde,
'cierre': hasta,
'tipo_cargo': puesto.id,
})
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\n{}'.format(tar.tarea.display_name))
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
def ver_liquidacion(self):
return {
'type': 'ir.actions.act_window',
'name': 'Liquidaciones',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'hgt.liquidacionestareas',
'res_id': self.id,
'target': 'current',
}