llamadas_pendientes.py 4.94 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api


class hgt_llamada_pendiente(models.TransientModel):
    _name = 'hgt.llamada_pendiente'
      
    organizacion = fields.Many2one(
        string=u'Organización',
        comodel_name='hgt.instituciones',
        ondelete='restrict',
        default=lambda self: self.ong()
    )
    
    fecha_llamada = fields.Datetime(
        string='Fecha y hora de la llamada',
        default=fields.Date.context_today,
    )

    fecha_hoy = fields.Date(
        string='Fecha de creacion',
        default=fields.Date.context_today,
    )
    
    medio = fields.Selection(
        string=u'Medio',
        selection=[('Telefono', 'Teléfono'), ('Whatsapp', 'Whatsapp'), ('E-Mail', 'E-Mail'),],
        default='Telefono'
    )

    notas = fields.Text(
        string='Notas',
    )

    contacto = fields.Many2one(
        string='Contacto',
        comodel_name='asw.contactos',
        ondelete='restrict',
    )

    persona = fields.Many2one(
        string='Persona',
        comodel_name='hgt.personas',
        ondelete='restrict',
    )
    
    otro = fields.Boolean(
        string='Otro. Se creará contacto',
    )

    otro_nombre = fields.Char(
        string='Nombre',
        uppercase=True,              
    )

    otro_telefono = fields.Char(
        string=u'Teléfono',
    )
    
    otro_email = fields.Char(
        string=u'E-mail',
    )
    
    otro_celular = fields.Char(
        string='Celular',
    )  
    
    temas = fields.Html(
        string='Temas a tratar',
    )

    def ong(self):
        ids = self.env.context.get('active_ids', [])
        try:
            return(ids[0])
        except:
            return(False)
    
    @api.onchange('organizacion') 
    def dominio_personas(self):
        result = {}
        result['domain'] = []
        org = self.organizacion
        ids = self.organizacion.personas_bidirecional.ids
        result['domain'] = {'persona' : [('id', 'in', ids)]}
        return result 

    @api.onchange('persona') 
    def dominio_contactos(self):
        result = {}
        result['domain'] = []
        person = self.persona
        ids = self.persona.contactos.ids
        #print(ids)
        default = self.env["asw.contactos"].search([('id', 'in', ids)])
        #print(default)
        if not len(default) == 0:
            self.contacto = default[0]

        result['domain'] = {'contacto' : [('id', 'in', ids)]}
        return result 

    def crear_tarea(self):
        #import ipdb; ipdb.set_trace()
        if self.otro: 
            #creo el contacto 
            vals = {
                'ctc_nombre': self.otro_nombre,
                'ctc_telefono': self.otro_telefono,
                'ctc_email': self.otro_email,
                'ctc_celular': self.otro_celular,
            }
            nvo_contacto = self.env['asw.contactos'].create(vals)
            nvo_contacto.instituciones = [(4,self.organizacion.id)]

        #creo la persona
            div = self.otro_nombre.split()
            if len(div)==1:  
                nom = div[0]
                vals3 = {
                    'name': nom,
                }
            elif len(div)==2:
                nom = div[0]
                ap = div[1]
                vals3 = {
                    'name': nom,
                    'apellido': ap,
                }
            elif len(div)>2:
                nom = div[0]
                ap = div[len(div)-1]
                vals3 = {
                    'name': nom,
                    'apellido': ap,
                }

            nva_persona = self.env['hgt.personas'].create(vals3)
            nva_persona.contactos = [(4,nvo_contacto.id)]
            nvo_contacto.personas = [(4,nva_persona.id)]
            self.persona = nva_persona.id

        #tarea:
        titulo = 'Contactar {}'.format(self.organizacion.name)
        if self.notas: 
            if self.contacto: 
                descr = '{} - Llamar a {} por el medio: {}. Temas a tratar: {}Notas: {}'.format(self.fecha_llamada,self.contacto.ctc_nombre,self.medio,self.temas,self.notas)
            elif self.otro: 
                descr = '{} - Llamar a {} por el medio: {}. Temas a tratar: {}Notas: {}'.format(self.fecha_llamada, nvo_contacto.ctc_nombre,self.medio,self.temas,self.notas)
        else: 
            if self.contacto: 
                descr = '{} - Llamar a {} por el medio: {}. Temas a tratar: {}'.format(self.fecha_llamada,self.contacto.ctc_nombre,self.medio,self.temas)
            elif self.otro:  
                descr = '{} - Llamar a {} por el medio: {}. Temas a tratar: {}'.format(self.fecha_llamada, nvo_contacto.ctc_nombre,self.medio,self.temas)
        vals2 = {
            'resumen' : titulo,
            'prioridad' : '1',
            'descripcion' : descr,
            'cierre': self.fecha_llamada,
            "inicio": self.fecha_llamada,
        }
        
        nva_tarea = self.env['hgt.tarea'].create(vals2)
        nva_tarea.contacto = [(4,self.persona.id)]