Commit e463d7c2 by juan

Adjuntos locales y urgencia

1 parent f94e1fd6
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
'security/permisos.xml', 'security/permisos.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
'wizard/generarmensaje.xml', 'wizard/generarmensaje.xml',
'wizard/adjuntar.xml',
'wizard/bajr.xml',
'views/incidencia_view.xml', 'views/incidencia_view.xml',
'views/mensaje_view.xml', 'views/mensaje_view.xml',
'views/menu.xml', 'views/menu.xml',
......
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
from . import incidencia from . import incidencia
from . import estados from . import estados
from . import mensaje from . import mensaje
from . import adjuntos
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api
import datetime
from datetime import datetime
class hgt_soporte_adjunto(models.Model):
_name = 'hgt.soporte_adjunto'
_order = 'id desc'
name = fields.Char(string='Codigo')
creador = fields.Many2one(
string = 'Creador',
comodel_name = 'res.users',
ondelete = 'set null',
default = lambda self: self.env.user.id,
)
fecha = fields.Datetime(
string = u'Fecha de envío',
default=lambda self: datetime.now().strftime('%Y-%m-%d %H:%M:%S')
)
incidencia = fields.Many2one(
comodel_name='hgt.soporte_incidencia',
string='Incidencia')
remoto = fields.Boolean(string='Remoto')
usuario = fields.Char(string='Usuario',
default=lambda self: self.env.user.display_name,
readonly=True)
orden = fields.Integer(string='Archivo')
file_name = fields.Char(string='Nombre', default='')
file = fields.Binary(string='Capturas')
def CodigoBase(self):
"""Codigo que se mostrara en el id de archivo"""
return("ADJ_LOC")
def GenerarCodigoArchivo(self):
self.name = f"""{self.CodigoBase()}{str(self.id).zfill(5)}"""
def DescargarArchivo(self):
vals = {
"file_name": self.file_name,
"file": self.file,
}
adjunto = self.env['soporte.descarga_wiz'].create(vals)
return {
'name': "Adjunto",
'type': 'ir.actions.act_window',
'res_model': 'soporte.descarga_wiz',
'view_mode': 'form',
'view_type': 'form',
'res_id': adjunto.id,
'target': 'new',
}
...@@ -55,7 +55,11 @@ class hgt_soporte_incidencia(models.Model): ...@@ -55,7 +55,11 @@ class hgt_soporte_incidencia(models.Model):
si_responsabilidad = fields.Selection( si_responsabilidad = fields.Selection(
string=u'Responsabilidad', string=u'Responsabilidad',
selection=[('pro', 'Propia'), ('ter', 'Tercero'), ('cli', 'Cliente'), ('cat', 'Catástrofe')] selection=[
('pro', 'Propia'),
('ter', 'Tercero'),
('cli', 'Cliente'),
('cat', 'Catástrofe')]
) )
si_historico_mensajes = fields.Text(string='Mensajes') si_historico_mensajes = fields.Text(string='Mensajes')
...@@ -67,7 +71,8 @@ class hgt_soporte_incidencia(models.Model): ...@@ -67,7 +71,8 @@ class hgt_soporte_incidencia(models.Model):
default=False default=False
) )
si_mensajes = fields.Many2many('hgt.soporte_mensaje', string=u'Mensajes', si_mensajes = fields.Many2many('hgt.soporte_mensaje',
string=u'Mensajes',
relation='hgt_soporte_incidencia_mensaje_rel', relation='hgt_soporte_incidencia_mensaje_rel',
column1='hgt_soporte_incidencia_id', column1='hgt_soporte_incidencia_id',
column2='hgt_soporte_mensaje_id') column2='hgt_soporte_mensaje_id')
...@@ -110,6 +115,22 @@ class hgt_soporte_incidencia(models.Model): ...@@ -110,6 +115,22 @@ class hgt_soporte_incidencia(models.Model):
telefonos = fields.Char(string='Telefonos de aviso', telefonos = fields.Char(string='Telefonos de aviso',
default="") default="")
adjunto = fields.One2many(
comodel_name='hgt.soporte_adjunto',
inverse_name='incidencia',
string='Adjuntos')
conclucion = fields.Text(string='Informe Final',
readonly = True)
urgencia = fields.Selection(string='Urgencia',
selection=[
('urgente', 'Urgente'),
('no_urgente', 'No Urgente'),],
default="no_urgente",
required=True)
def AgregarTelefonoAviso(self): def AgregarTelefonoAviso(self):
"""Agregar telefono a la lista de telefonos de aviso""" """Agregar telefono a la lista de telefonos de aviso"""
if self.telefonos == False: if self.telefonos == False:
...@@ -224,6 +245,7 @@ class hgt_soporte_incidencia(models.Model): ...@@ -224,6 +245,7 @@ class hgt_soporte_incidencia(models.Model):
'archivos':self.archivos, 'archivos':self.archivos,
'UID':self.env.user.id, 'UID':self.env.user.id,
'telefonos':self.telefonos, 'telefonos':self.telefonos,
'urgencia':self.urgencia
} }
} }
...@@ -358,6 +380,18 @@ class hgt_soporte_incidencia(models.Model): ...@@ -358,6 +380,18 @@ class hgt_soporte_incidencia(models.Model):
mensaje.usuario = usuario mensaje.usuario = usuario
mensaje.si_mens_fecha = fecha mensaje.si_mens_fecha = fecha
mensaje.remoto = True mensaje.remoto = True
def AgregarAdjunto(self):
msj = self.env['soporte.adjunto_wiz'].create({"incidencia":self.id})
return {
'name': "Mensaje",
'type': 'ir.actions.act_window',
'res_model': 'soporte.adjunto_wiz',
'view_mode': 'form',
'view_type': 'form',
'res_id': msj.id,
'target': 'new',
}
#print(hgt_soporte_incidencia.GenerarToken()) #print(hgt_soporte_incidencia.GenerarToken())
# si_url = fields.Char(string='Url de ticketera') # si_url = fields.Char(string='Url de ticketera')
......
...@@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink ...@@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hgt_soporte_incidencia,access_hgt_soporte_incidencia,model_hgt_soporte_incidencia,,1,1,1,1 access_hgt_soporte_incidencia,access_hgt_soporte_incidencia,model_hgt_soporte_incidencia,,1,1,1,1
access_hgt_soporte_estado,access_hgt_soporte_estado,model_hgt_soporte_estado,,1,1,1,1 access_hgt_soporte_estado,access_hgt_soporte_estado,model_hgt_soporte_estado,,1,1,1,1
access_hgt_soporte_mensaje,access_hgt_soporte_mensaje,model_hgt_soporte_mensaje,,1,1,1,1 access_hgt_soporte_mensaje,access_hgt_soporte_mensaje,model_hgt_soporte_mensaje,,1,1,1,1
access_hgt_soporte_adjunto,access_hgt_soporte_adjunto,model_hgt_soporte_adjunto,,1,1,1,1
\ No newline at end of file \ No newline at end of file
...@@ -61,9 +61,11 @@ ...@@ -61,9 +61,11 @@
<field name="si_cerrada" invisible="1" /> <field name="si_cerrada" invisible="1" />
</header> </header>
<h6>NOTA1: Ingrese la información del incidente de forma que sea fácil de interpretar. Indique ¿cuando?¿cómo?¿qué? adjunte capturas de pantalla, fotos o archivos. Recuerde que cada interacción implica tiempo de soporte y que hasta que el área técnica no entienda el problema o necesidad no puede trabajar en ella. Ahorre tiempo y dinero sea claro y específico.</h6> <h6>NOTA1: Ingrese la información del incidente de forma que sea fácil de interpretar. Indique ¿cuando?¿cómo?¿qué? adjunte capturas de pantalla, fotos o archivos. Recuerde que cada interacción implica tiempo de soporte y que hasta que el área técnica no entienda el problema o necesidad no puede trabajar en ella. Ahorre tiempo y dinero sea claro y específico.</h6>
<h6>NOTA2: Un solo tema por Incidente, si necesita abordar más de un tema genere varios incidentes</h6>
<group col="4" string="Incidencia"> <group col="4" string="Incidencia">
<field colspan="4" nolabel="1" name="si_descripcion" attrs="{'readonly':[('estado','!=', 'borrador')]}"/> <field colspan="4" nolabel="1" name="si_descripcion" attrs="{'readonly':[('estado','!=', 'borrador')]}"/>
<field name="file" filename="file_name" attrs="{ 'invisible' :[('estado','in', ['borrador','cerrada'])] }"/> <field name="urgencia" attrs="{'readonly':[('estado','!=', 'borrador')]}"/>
<field name="file" filename="file_name" attrs="{ 'invisible' :[('estado','in', ['cerrada'])] }"/>
<field name="file_name" invisible="1"/> <field name="file_name" invisible="1"/>
</group> </group>
...@@ -74,6 +76,7 @@ ...@@ -74,6 +76,7 @@
<group col="2"> <group col="2">
<button name="AgregarMensaje" string="Agregar Mensaje" type="object" /> <button name="AgregarMensaje" string="Agregar Mensaje" type="object" />
<button name="AgregarAdjunto" string="Agregar Adjunto" type="object" />
</group> </group>
<group> <group>
...@@ -87,6 +90,22 @@ ...@@ -87,6 +90,22 @@
</field> </field>
</group> </group>
<group>
<field name="adjunto" required="0" nolabel="1" >
<tree delete="false" create="false">
<field name="name" attrs="{'readonly': True}" />
<field name="usuario" attrs="{'readonly': True}" />
<field name="fecha" attrs="{'readonly': True}" />
<field name="file_name" attrs="{'readonly': True}" />
<button name="DescargarArchivo" icon="fa-download" string="Descarga" type="object" />
</tree>
</field>
</group>
<group string="Conclucion" col="4" attrs="{'invisible':[('estado','!=', 'cerrada')]}">
<field name="conclucion" nolabel="1"/>
</group>
<group string="Imagenes" col="2" > <group string="Imagenes" col="2" >
<field name="archivos" nolabel="1" readonly="1" force_save="1"/> <field name="archivos" nolabel="1" readonly="1" force_save="1"/>
</group> </group>
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from . import generarmensaje from . import generarmensaje
from . import adjuntar
from . import bajar
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
import requests, json
headers = {'Content-Type': 'application/json'}
class tpv_generar_nota(models.TransientModel):
_name = 'soporte.adjunto_wiz'
_description = 'Agregar adjunto'
incidencia = fields.Many2one(
string=u'incidencia origen',
comodel_name='hgt.soporte_incidencia',
)
file_name = fields.Char(string='Nombre', default='')
file = fields.Binary(string='Archivo')
def CargarAdjunto(self):
if self.file == False:
raise UserError("No se selecciono archivo")
vals = {
"file_name": self.file_name,
"file": self.file,
"incidencia": self.incidencia.id
}
adjunto = self.env["hgt.soporte_adjunto"].create(vals)
adjunto.GenerarCodigoArchivo()
self.PostProcesado(adjunto)
def PostProcesado(self,adjunto):
"""Luego de agregar el adjunto se debe Notificar al server externo
Via webservice"""
pass
def EnviarMensajeSoporte(self):
if self.incidencia.subida == False:
raise UserError("El responsable tecnico debe notificar a HGT primero")
self.Generarmensajeinterno()
self.incidencia.AgregarTelefonoAviso()
self.mensaje.remoto = True
Url = self.incidencia.GetUrlBase()
#print(self.mensaje)
datos = {
'params': { 'token':self.incidencia.GenerarToken(),
'si_mens_fecha': self.mensaje.si_mens_fecha,
'si_mensaje': self.mensaje.si_mensaje,
'codigo': self.incidencia.si_name,
'usuario': self.env.user.display_name,
'telefonos':self.incidencia.telefonos,
}
}
datos_json = json.dumps(datos)
f = requests.post(Url+'/soporteIncidencias/soporteMensaje', data=datos_json, headers=headers)
frespuesta = f.json()
if frespuesta["result"]["estado"] != "ok":
raise UserError(str(frespuesta))
def generar_notaCred(self):
return {
'name': "Nota de Débito",
'type': 'ir.actions.act_window',
'res_model': 'asw.comprobante',
'view_mode': 'form',
'view_type': 'form',
'res_id': contra_comprobante.id,
'target': 'self',
}
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data noupdate="0">
<record id="soporte_adjuntador_wizzard_view_form" model="ir.ui.view">
<field name="name">Adjuntar a incidencia</field>
<field name="model">soporte.adjunto_wiz</field>
<field name="arch" type="xml">
<form>
<group col='4'>
<field name="file" filename="file_name"/>
<field name="file_name" invisible="1"/>
</group>
<div style='text-align:center'>
<button name="CargarAdjunto" class="btn btn-success" string="Adjuntar" type="object" />
</div>
<footer>
<button special='cancel' string="Cancelar"/>
</footer>
</form>
</field>
</record>
<!-- soporte.mensaje_wiz action window -->
<record id="soporte_adjuntador_wizzard_action" model="ir.actions.act_window">
<field name="name">Agregar Adjunto</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">soporte.adjunto_wiz</field>
<field name="src_model">soporte.adjunto_wiz</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="multi">True</field>
</record>
</data>
</odoo>
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
import requests, json
headers = {'Content-Type': 'application/json'}
class soporte_bajar_adjunto(models.TransientModel):
_name = 'soporte.descarga_wiz'
_description = 'Bajar Adjunto'
file_name = fields.Char(string='Nombre',
default='',
readonly=True)
file = fields.Binary(string='Archivo',
readonly=True)
\ No newline at end of file \ No newline at end of file
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data noupdate="0">
<record id="soporte_bajadordor_wizzard_view_form" model="ir.ui.view">
<field name="name">Bajar Archivo</field>
<field name="model">soporte.descarga_wiz</field>
<field name="arch" type="xml">
<form>
<group col='4'>
<field name="file" filename="file_name"/>
<field name="file_name" invisible="1"/>
</group>
<footer>
<button special='cancel' string="Cerrar Ventana"/>
</footer>
</form>
</field>
</record>
<!-- soporte.mensaje_wiz action window -->
<record id="soporte_bajadordor_wizzard_action" model="ir.actions.act_window">
<field name="name">Bajar Adjunto</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">soporte.descarga_wiz</field>
<field name="src_model">soporte.descarga_wiz</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="multi">True</field>
</record>
</data>
</odoo>
\ No newline at end of file \ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<field name="texto"/> <field name="texto"/>
</group> </group>
<div style='text-align:center'> <div style='text-align:center'>
<button name="EnviarMensajeSoporte" class="btn btn-info" string="Enviar mensaje a HGT" type="object" /> <button name="EnviarMensajeSoporte" class="btn btn-info" string="Mensaje HGT - Cliente" type="object" />
<button name="Generarmensajeinterno" class="btn btn-success" string="Mensaje interno" type="object" /> <button name="Generarmensajeinterno" class="btn btn-success" string="Mensaje interno" type="object" />
</div> </div>
<footer> <footer>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!