solicitudes.py
6.79 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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# -*- coding: utf-8 -*-
from odoo.exceptions import UserError, ValidationError, Warning
from datetime import datetime, timedelta
from odoo import models, fields, api
import random, string, time
AVAILABLE_PRIORITIES = [
('0', 'Baja'),
('1', 'Normal'),
('2', 'Alta'),
('3', 'Crítico'),
]
usuario = {
'name':"userAPI9",
'login':'userapi9@gmail.com',
}
class lappasolicitudes(models.Model):
_name = "lappa.solicitudes"
_order = "id desc"
name = fields.Char(
string="Servicio",
compute="_compute_name",
store=True,
readonly=True
)
inicio = fields.Datetime("Creación",
default=lambda *a: datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
fecha = fields.Date(string='Fecha',
default=lambda *a: datetime.now().strftime('%Y-%m-%d'))
nombre = fields.Char(string='Solicitante')
celular = fields.Char(string='Telefono solicitante')
email = fields.Char(string='Email')
localidad = fields.Integer(string='Localidad')
cuit = fields.Char(string='Cuit/Documento')
estado = fields.Selection(string='Estado', selection=[
('a_revisar', 'Sin Revisar'),
('revision', 'En Revision'),
('aceptado', 'Aceptado'),
('rechazado', 'Rechazado'),
],
default="a_revisar",
required=True)
transportista = fields.Many2one(comodel_name='trans.transportista',
string='Transportista al que se relacionara',
help="Si se deja basio generara un nuevo transportista con el nombre de este formulario")
seguro = False
@api.depends('nombre')
def _compute_name(self):
for record in self:
name = """SOLICITUD {} - {} - {}"""
name = name.format(str(record.id).zfill(5), record.nombre, record.fecha)
record.name = name
notitas = fields.Text(string='Seguimiento', default='')
texto = fields.Char(string='Seguimiento', default='')
usuario = fields.Many2one('res.users',
string='Usuario',
readonly=True)
@api.onchange('texto')
def _onchange_texto(self):
if (self.texto == "") or (self.texto == False):
return({})
Texto = """{} - {}: {} \n{}""".format(self.env.user.display_name,
(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M'),
self.texto, self.notitas)
self.notitas = Texto
modelo = self.env["lappa.solicitudes"].browse(self._origin.id)
modelo.write({"notitas": Texto})
self.texto = ""
return({})
def Revisar(self):
Texto = """{} - {}: {} \n{}""".format(self.env.user.display_name,
(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M'),
"Se pasa a revisar", self.notitas)
self.notitas = Texto
self.estado = "revision"
def Rechazar(self):
Texto = """{} - {}: {} \n{}""".format(self.env.user.display_name,
(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M'),
"Se rechaza solicitud", self.notitas)
self.notitas = Texto
self.estado = "rechazado"
def AceptarNuevo(self):
Texto = """{} - {}: {} \n{}""".format(self.env.user.display_name,
(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M'),
"Se Acepta y se genera trasnportista nuevo", self.notitas)
self.GenerarNuevoTransportista()
self.GenerarNuevoUsuario()
self.notitas = Texto
self.estado = "aceptado"
def AceptarRelacionar(self):
if len(self.transportista) == 0:
raise Warning("No se a seleccionado con que transportista se relacionara seleccionelo y luego presione este boton")
self.GenerarNuevoUsuario()
Texto = """{} - {}: {} \n{}""".format(self.env.user.display_name,
(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M'),
"Se Acepta y se relaciona a un transportista existente", self.notitas)
self.notitas = Texto
self.estado = "aceptado"
def GenerarNuevoUsuario(self):
pw = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(6))
usuario["password"] = pw
users = self.env["res.users"]
test = users.search(["|",["login","=",self.email ],["CelularRecuperacion","=",self.celular]])
if len(test) > 0:
raise Warning("Ya hay un usuario con este login, por favor chequee si ya no lo creo o si esta bien escrito, el mail/login y el telefono deben ser unicos >> " + test[0].display_name + " " + test[0].login +" " + str(test[0].CelularRecuperacion))
usuario["name"] = self.nombre
usuario["CelularRecuperacion"] = self.celular
usuario["login"] = self.email
self.AltaUsuarioNotificacion(usuario)
self.env.cr.commit()
defecto = users.search([["login","=" , "lappa_default_user"]])
er = defecto.sudo().copy(usuario)
self.usuario = er.id
self.transportista.ejecutor = er.id
def GenerarNuevoTransportista(self):
transportista ={"trans_razon_social":self.nombre}
transportista["trans_cuit"] = self.cuit
transportista["trans_nombre"] = self.nombre
transportista["trans_telefono"] = self.celular
transportista["trans_email"] = self.email
transportista["trans_tipo_ent"] = "emp"
trans = self.env['trans.transportista'].sudo().create(transportista)
self.transportista = trans.id
def AltaUsuarioNotificacion(self,usuario):
TextoAlta = """Se a confirmado el alta de su susuario en
https://lappa.ar
usuario = {USUARIO}
contraseña = {PASS}
celular = {CEL}"""
TextoAlta = TextoAlta.replace("{USUARIO}",usuario["login"])
TextoAlta = TextoAlta.replace("{PASS}",usuario["password"])
TextoAlta = TextoAlta.replace("{CEL}",usuario["CelularRecuperacion"])
try:
self.enviar_mensaje(tipo="Mail",mensaje=TextoAlta,email=usuario["login"],titulo="Confirmacion de usuario")
except:
pass
try:
self.enviar_mensaje(mensaje=TextoAlta,telefono=usuario["CelularRecuperacion"],titulo="Confirmacion de usuario")
except:
pass
def enviar_mensaje(self, tipo='Whatsapp', mensaje="mensaje", titulo="Titulo",email="",telefono=""):#Crea mensaje y lo envia
#Hay que agregar al modelo la relacion con los mensajes para tener trazavilidad
identidad = self.env["asw.token"].sudo().search([])[0]
#identidad = self.http.env["asw.token"].sudo().search([])[0]
vals = {"mensaje_nombre":titulo,
"mensaje_descripcion":mensaje,
"mensaje_numero_whatsapp":telefono,
"mensaje_direccion_mail":email,
"identidad":identidad.id}
#print(vals)
mensaje = self.env['asw.mensaje'].sudo().create(vals)
mensaje.tipo = tipo
mensaje.enviar()