incidencias.py 4.08 KB
# -*- coding: utf-8 -*-

from odoo import models, fields, api
import requests
class hgt_incidencias(models.Model):
    _name = 'hgt.incidencias'

    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')

    id_ost = fields.Integer(string='Id osticket')



    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',
    )

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

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

    @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 =[]
        cant = self.env['hgt.incidencias'].search_count(dom) 
        iden= cant + 1

        datos = {
            'resumen':'Tarea para resolver Incidencia {}'.format(iden),
            'descripcion': vals['descripcion']
        }
        nueva_tar = self.env['hgt.tarea'].create(datos)  
       
        if vals['accion']:
            accion = vals['accion']
            acc = self.env['hgt.acciones'].search([('id','=',accion)])
            acc.tareas = [(4,nueva_tar.id)]
        
        vals['tarea'] = nueva_tar.id
        result = super(hgt_incidencias, self).create(vals)
        return result


    def importarRango(self,key,inicio,final):
        idticket = 1
        ultimo = 5000
        while idticket <= ultimo:
            existe = self.env['asw.ticket'].search_count([('tic_id_externo', '=', idticket)])
            if existe == False:
                link = 'http://192.168.10.17:11876/get-info?id-tk=' + str(idticket) + '&api-key=' + key
                info = requests.get(link).json()
                if 'message'in info and info['message'] == 'Internal Server Error':
                    idticket += 1
                else:
                    datos = {   
                    'tic_id_externo':idticket,
                    'tic_asunto':info['asunto'],
                    'tic_cacilla':info['cacilla'],
                    'tic_cliente':info['cliente'],
                    'tic_resumen':info['cuerpo'],
                    'tic_departamento':info['departamento'],
                    'tic_estado':info['estado'],
                    'tic_numero':info['numero'],
                    'tic_mail':info['reporto'],
                    }
                    link2 = 'http://192.168.10.17:11876/get-client?id-t=' + str(idticket) + '&api-key=' + key
                    info2 = requests.get(link2).json()
                    if 'message'in info2 and info2['message'] == 'Internal Server Error':
                        self.env['asw.ticket'].create(datos)
                        idticket += 1
                    else:
                        datos['tic_notas'] = info2['notas']
                        datos['tic_telefono'] = info2['telefono']
                        self.env['asw.ticket'].create(datos)
                        idticket += 1