transportista.py 6.4 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from datetime import datetime

class trans_transportista(models.Model):
    _name = 'trans.transportista'
    _description = 'Transportista'
    _rec_name = 'trans_nombre'
    _order = 'trans_nombre'


    trans_razon_social = fields.Char(
        string=u'Razón Social',
    )

    trans_cuit = fields.Char(
        string=u'CUIT')

    trans_pagina_web = fields.Char(
        string=u'Página Web',
        help='Ingrese su página web si es que posee',
    )
    
    trans_nombre = fields.Char(
        string=u'Nombre',
        required=True,
    )
    
    trans_logo = fields.Binary(
        string=u'Logo',
        help='Archivo png o jpg de menos de 2 Mb'        
    )

    trans_categoria  = fields.Selection(
        string=u'Categoría',
        selection=[('p', 'Paga'), ('np', 'No Paga')],
        readonly=True,
        default="np"
    )
    
    trans_telefono = fields.Char(
        string=u'Teléfono',    
    )

    trans_email = fields.Char(
        string = u'Correo Electrónico',
    )

    trans_tipo_ent = fields.Selection(
        string=u'Tipo de entidad',
        selection=[('emp', 'Empresa'), ('ca', 'Camionero'), ('co', 'Comisionista')],
        required = True,
    )

    trans_restriccion_elem = fields.Char(
        string=u'Elementos que no transporta',
        help='Aclarar aquí qué elementos no transporta, si los hubiera',
    )

    trans_tipo = fields.Many2many(
        string=u'Tipo de Transporte',
        comodel_name='trans.tipo_transporte',
        relation='tipo_transporte_transportista_rel',
        column1='trans_tipo_transporte_id',
        column2='trans_transportista_id',
    )

    trans_pto_retiro = fields.Many2many(
        string=u'Punto de Retiro',
        comodel_name='trans.punto_retiro',
        relation='pto_retiro_transportista_rel',
        column1='trans_punto_retiro_id',
        column2='trans_transportista_id',
    )

    trans_posee_ayu = fields.Boolean(
        string=u'Posee ayudantes de carga?',
    )

    trans_observ = fields.Text(
        string=u'Observaciones',
        help = u'Utilice este campo para agregar cualquier observación que desee',
    )
    
    ejecutor = fields.Many2one(
        string='Ejecuta',
        comodel_name='res.users',
        index=True,
        default= lambda self: self.env.user
    )

    @api.one
    @api.constrains('trans_cuit', 'trans_telefono')
    def _requerir_valores(self):
        if self.trans_cuit == 0:
            #raise exceptions.ValidationError('Por favor ingrese el CUIT')
            pass
        if self.trans_telefono == 0:
            #raise exceptions.ValidationError('Por favor ingrese el teléfono')
            pass

    def CargaTranspoorteRobot(self,vals):
        """Funcion para el robot, revisar si esta localidad y provincia y si no crearla
        agregar transportista si no existe, agregar localidad-provincia al transportista"""
        #print(vals)
        try:
            localidad = vals["localidad"]
            provincia = vals["provincia"]
            transportista = vals["transportista"]
        except:
            return("nop")
        #print(localidad,provincia,transportista)
        Localidad = self.env["asw.localidad"].search([["descripcion","=ilike",localidad],["loc_provincia","=ilike",provincia]], limit=1)
        self.transportista_punto(transportista, Localidad, vals)
        return(vals)


    def transportista_punto(self, transportista, localidad, vals):
        trans = self.search([['trans_nombre','=ilike',transportista]])
        if len(trans) == 0:
            try:
                total = self.search_count([])
                if vals["trans_cuit"] == 0:
                    vals["trans_cuit"] = ""
                vals["trans_cuit"] = str(vals["trans_cuit"])
            except:
                vals["trans_cuit"] = "" 
            #vals["trans_cuit"] = total
            #vals["trans_telefono"] = total
            #vals["trans_razon_social"] = transportista
            del vals["localidad"]
            del vals["transportista"]
            del vals["provincia"]
            vals["trans_tipo_ent"] = "emp"
            try:
                if vals['trans_nombre'] == False or vals['trans_nombre'] == "":
                    vals['trans_nombre'] = transportista
            except:
                vals['trans_nombre'] = transportista
            trans = self.create(vals)
        elif len(trans) == 1:
            trans.write(vals)
        #print("vals 142", vals)
        self.punto(trans, localidad)
        #print(trans)

    
    def punto(self, transportista, localidad):
        #print(transportista,localidad)
        for punto in transportista.trans_pto_retiro:
            try:
                if punto.pr_localiad.id == localiad.id:
                    return()
            except:
                pass
        lista = transportista.trans_pto_retiro.ids
        vals = {"pr_direccion":"-----------"}
        vals["pr_localidad"] = localidad.id
        vals["pr_horario"] = "-----------"
        vals["pr_telefono"] = 555555555
        #print(vals)
        punto = self.env['trans.punto_retiro'].create(vals)
        lista.append(punto.id)
        transportista.trans_pto_retiro = lista

        
    def Transportistas(self,vals):
        transportistas = self.search([])
        lista = []
        for transportista in transportistas:
            lista.append(transportista.trans_nombre)
        return({"transportistas":lista})

    def Usuario(self,vals):
        modelos = self.env["hgt.usuarios_externos"].sudo()
        usuario = modelos.search([["ultimo_uso", "=", False], ["id_sistema", "=", "lapabot"], ["habilitado", "=", True]], limit=1)
        if len(usuario) == 0:
            dominio = []
            dominio.append(["id_sistema", "=", "lapabot"])
            dominio.append(["habilitado", "=", True])
            usuario = modelos.search(dominio, order="ultimo_uso asc", limit=1)
        vals = {}
        vals["usuario"] = usuario.user
        vals["passw"] = usuario.passw
        usuario.ultimo_uso = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        return(vals)

    def Localidad_busqueda(self,vals):
        #print(vals)
        Id = vals["Id"]
        modelo = self.env["asw.localidad"].sudo()
        localidad = modelo.search([["id", ">=", Id]], limit=1)
        Localidad = localidad.descripcion
        Provincia = localidad.loc_provincia.descripcion
        return({"localidad":Localidad, "provincia":Provincia, "Id": localidad.id})