incidencia.py 5.96 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api
import datetime
from datetime import datetime
import requests, json

headers = {'Content-Type': 'application/json'}

class hgt_soporte_incidencia(models.Model):
    _name = 'hgt.soporte_incidencia'
    _order = "id desc"
    _rec_name = "si_name"

    #si_numero = fields.Char(string='Numero de ticket')

    si_cerrada = fields.Boolean(
       string=u'Cerrada', 
       default=False,
    )

    si_fecha = fields.Datetime(
        string = 'Fecha de creación',
        default=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    )

    si_responsable = fields.Many2one(
        string = 'Responsable',
        comodel_name = 'res.users',
        ondelete = 'set null',
        default = lambda self: self.env.user.id
    )

    si_name = fields.Char(
        string=u'Nombre',
    )

    si_descripcion = fields.Text(
        string=u'Descripción',
    )

    si_estado = fields.Many2one('hgt.soporte_estado', string='Estado', track_visibility='onchange', index=True,
    group_expand="_read_group_stage_ids")

    si_responsabilidad = fields.Selection(
        string=u'Responsabilidad',
        selection=[('pro', 'Propia'), ('ter', 'Tercero'), ('cli', 'Cliente'), ('cat', 'Catástrofe')]
    )
    
    si_historico_mensajes = fields.Text(string='Mensajes')

    si_texto_mensaje = fields.Char(string='Mensaje')

    si_si_interno = fields.Boolean(
        string="Nota Interna?",
        default=False
    )

    si_mensajes = fields.Many2many('hgt.soporte_mensaje', string=u'Mensajes',
        relation='hgt_soporte_incidencia_mensaje_rel',
        column1='hgt_soporte_incidencia_id',
        column2='hgt_soporte_mensaje_id')

    si_id_in = fields.Char(
        string=u'Id Incidencia',
    )

    subida = fields.Boolean(
        string="Subida a Incidencias?",
        default=False
    )

    def enviarMensaje(self):
        if (self.si_texto_mensaje == False) or (self.si_texto_mensaje == ""):
            raise UserError("No se puede enviar un mensaje vacío")
        datos = {'si_mensaje': self.si_texto_mensaje,
        'si_interno': False,
        }
        nvo_mensaje = self.env['hgt.soporte_mensaje'].create(datos)
        lista_msj = []
        for msj in self.si_mensajes:
            lista_msj.append(msj.id)
        lista_msj.append(nvo_mensaje.id)
        self.si_mensajes = lista_msj
        self.si_texto_mensaje = False
        self.registrar_mensaje(nvo_mensaje)
        if (self.si_si_interno == False):
            self.enviar_mensaje(nvo_mensaje) 

    def registrar_mensaje(self, mens):
        text = mens.si_mensaje
        envia = mens.si_creador
        envia = envia.name
        fecha = mens.si_mens_fecha
        text_orig = self.si_historico_mensajes
        if text_orig:
            texto_nuevo = """\n{} - {} \n\n{}\n\n ______________________________________________________\n""".format(fecha,envia,text)
            Texto = """{}\n{}""".format(texto_nuevo,text_orig)
            self.si_historico_mensajes = Texto
            return(True)
        else:
            texto_nuevo = """\n{} - {} \n\n{}\n\n ______________________________________________________\n""".format(fecha,envia,text)
            Texto = """{}""".format(texto_nuevo)
            self.si_historico_mensajes = Texto
            return(True)

    def enviar_mensaje(self, mens):
        #funcion para mandar el mensaje al modulo de incidencias
        datos = {
            'params': { 'token':"""a2354mtrgrerxswertyhj76543edfghoiuhEDSfvwerd-5644-fgdh34ergdf""",
                        'in_mensaje': mens.si_mensaje,
                        'in_creador': mens.si_creador.id,
                        'in_mens_fecha': mens.si_mens_fecha,
                        'in_id_si': self.id,
                        'in_fecha': self.si_fecha,
                        'responsable': self.si_responsable.id,
                        'name': self.si_name, 
                        'descripcion': self.si_descripcion, 
                        'responsabilidad': self.si_responsabilidad,       
            }
        }

        datos_json = json.dumps(datos)

        URL = self.env['ir.config_parameter'].sudo().search([('key','=','web.base.url')])
        URL = str(URL.value)

        f = requests.post(URL+'/incidencia/mensaje', data=datos_json, headers=headers)
        frespuesta = f.json()
        #print(frespuesta)

    def enviarIncidencia(self):
        #funcion para la creacion de incidencias en modulo incidencias
        self.subida = True 
        nom_estado = self.si_estado.name  
        datos = {
            'params': { 'token':"""a2354mtrgre3456783edfghoiuhEDSfvwerd-5644-fgdh34ergdf""",
                        'in_fecha': self.si_fecha,
                        'responsable': self.si_responsable.id,
                        'name': self.si_name,  
                        'descripcion': self.si_descripcion, 
                        'nom_estado': nom_estado,
                        'responsabilidad': self.si_responsabilidad, 
                        'in_id_si': self.id,        
            }
        }
        datos_json = json.dumps(datos)

        URL = self.env['ir.config_parameter'].sudo().search([('key','=','web.base.url')])
        URL = str(URL.value)
        
        f = requests.post(URL+'/incidencias/crear', data=datos_json, headers=headers)
        frespuesta = f.json()
        #en frespuesta tengo el id de la incidencia creada en el otro modulo
        self.si_id_in = frespuesta

        #("entro a enviar incidencia y ahora el valor de ella es " + str(self.subida))
        #print(frespuesta)







    # si_url = fields.Char(string='Url de ticketera')

    # _sql_constraints = [('id_ost_uniq', 'unique (id_ost)', 'Id Ticket must be unique.')]
    # si_id_ost = fields.Integer(string='Id osticket')

    # si_ost_cliente = fields.Char(string='Ost cliente')

    # si_ost_asunto = fields.Char(string='Ost asunto')

    # si_ost_mail = fields.Char(string='Ost mail')

    # si_ost_telefeno = fields.Char(string='Ost telefono')

  

    #forma de adjuntar queda pendiente