incidencias.py 5.35 KB
# -*- coding: utf-8 -*-
from odoo.exceptions import UserError
from odoo import models, fields, api
import requests
class hgt_incidencias(models.Model):
    _name = 'hgt.incidencias'
    _order = "id desc"

    responsabilidad = fields.Selection(
        string=u'Responsabilidad',
        selection=[('pro', 'Propia'), ('ter', 'Tercero'), ('cli', 'Cliente'), ('cat', 'Catástrofe')]
    )
    
    responsable = fields.Many2one('res.users', string='Responsable', index=True, default=lambda self: self.env.user)
    
    reporte = fields.Many2one(
        string='Reporte',
        comodel_name='hgt.reporte',
        ondelete='restrict',
    )

    cliente = fields.Many2one(
        string='Cliente',
        comodel_name='hgt.instituciones',
    )

    descripcion = fields.Html(
        string=u'Descripción',
    )

    url = fields.Char(string='Url de ticketera')

    numero = fields.Char(string='Numero de ticket')

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

    ost_cliente = fields.Char(string='Ost cliente')

    ost_asunto = fields.Char(string='Ost asunto')

    ost_mail = fields.Char(string='Ost mail')

    ost_telefeno = fields.Char(string='Ost telefono')

    ost_mensaje = fields.Text(string='Mensajes')

    fecha_creacion = fields.Date(
        string=u'Fecha de creación',
        default=fields.Date.context_today,
    )
    
    estado = fields.Many2one(
        string='Estados',
        comodel_name='hgt.estados',
        ondelete='restrict',
    )

    tarea = fields.Many2one(
        string='Tarea',
        comodel_name='hgt.tarea',
        ondelete='restrict',
    )

    tareas = fields.Many2many(
    comodel_name='hgt.tarea',
    relation="tareas_incidente",
    string='Tareas derivadas',
    )
    

    proyecto = fields.Many2one(
        string='Proyecto',
        comodel_name='hgt.proyecto',
        ondelete='restrict',
    )

    accion = fields.Many2one(
        string='Acción',
        comodel_name='hgt.acciones',
        ondelete='restrict',
    )

    texto_descripcion = fields.Html(string='Texto descripcion de la tarea')

    asignador = fields.Many2one(comodel_name='res.users', string='Ejecuta')

    abrir = fields.Boolean(string='Abrir al crear', default=False)

    tiempo_carga = fields.Integer(string='Tiempo utilizado', default=30)

    def generar_tareas(self):
        #import ipdb; ipdb.set_trace()
        if (len(self.asignador) == 0):
            raise UserError("""Esta creando una tarea nula.
            La tarea tiene que tener ejecutante.""")
        datos = {'resumen':'Incidencia {} OST {} {}'.format(self.id, self.numero, self.ost_asunto),
            'descripcion': self.texto_descripcion,
            'ejecutor': self.asignador.id,
            'minutos_reales': self.tiempo_carga}
        nueva_tar = self.env['hgt.tarea'].create(datos)
        self.asignador = False
        self.texto_descripcion = False
        self.tareas = [(4,nueva_tar.id,0)]
        self.tiempo_carga = 30
        if self.abrir == True:
            return {
            'type': 'ir.actions.act_window',
            'res_model': 'hgt.tarea',
            'views': ((False, 'form'), (False, 'tree')),
            'res_id': nueva_tar.id,
            'domain': [('field', '=', 'value')],
            }

    @api.onchange('proyecto') 
    def onchange_campo(self):
        result = {}
        result['domain'] = []
        if self.proyecto:
            ids = self.proyecto.acciones.ids
            result['domain'] = {'accion' : [('id', 'in', ids)]}
            return result 


    @api.model
    def create(self, vals):
        dom =[]
        config = self.env['hgt.coniguracion_incidencias'].search([["habilitado", "=", True]])
        try:
            datos = {'resumen':'Incidencia OST {} {}'.format(vals['numero'], vals['ost_asunto']),
                'descripcion': vals['descripcion'],
                'ejecutor':config.dispacher.id,
                'origen':"Incidentes",}
            if config.url_ost == True:
                datos['notitas'] = vals['url']
            if (vals['numero'] == False) or (vals['numero'] == ""):
                raise()
        except:
            num = self.search_count([]) + 1
            #num = 1
            datos = {'resumen':'Incidencia local {} '.format(num),'origen':"Incidentes",'ejecutor':config.dispacher.id}
            vals['numero'] = "INC {}".format(num)
        print(datos)
        nueva_tar = self.env['hgt.tarea'].create(datos)  
        try:
            if vals['accion']:
                accion = vals['accion']
                acc = self.env['hgt.acciones'].search([('id','=',accion)])
                acc.tareas = [(4,nueva_tar.id)]
        except:
            pass
        vals['tarea'] = nueva_tar.id
        result = super(hgt_incidencias, self).create(vals)
        return result


    def mensajes_ost(self, val):
        #print(val[0])
        dom = [["numero", "=", val[0]]]
        ins =  self.env['hgt.incidencias'].search(dom, limit=1)
        if len(ins) == 0:
            #print("no esta en sistemma")
            return(True)
        text_orig = ins.ost_mensaje
        texto_nuevo = """\n{} {} {} \n{}\n\n#######################################################\n""".format(val[1],val[2],val[4],val[3])
        Texto = """{}\n{}""".format(text_orig,texto_nuevo)
        #print(Texto)
        ins.ost_mensaje = Texto
        return(True)