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

class trans_transportista(models.Model):
    _name = 'trans.transportista'
    _description = 'Transportista'
    _rec_name = 'trans_nombre'
    _order = 'trans_nombre'
    _sql_constraints = [
        ('trans_cuit_unique', 'UNIQUE(trans_cuit)',
         'Ya existe otro transportista con el mismo CUIT, por favor revíselo y vuelva a intentarlo'),
    ]

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

    trans_cuit = fields.Integer(
        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.Integer(
        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)
        localidad = vals["localidad"]
        provincia = vals["provincia"]
        transportista = vals["transportista"]
        #print(localidad,provincia,transportista)
        Localidad = self.env["asw.localidad"].search([["descripcion","=ilike",localidad],["loc_provincia","=ilike",provincia]], limit=1)
        self.transportista_punto(transportista, Localidad)
        return(vals)


    def transportista_punto(self, transportista, localidad):
        trans = self.search([['trans_nombre','=ilike',transportista]])
        if len(trans) == 0:
            total = self.search_count([])
            vals = {'trans_nombre':transportista}
            vals["trans_cuit"] = total
            vals["trans_telefono"] = total
            vals["trans_razon_social"] = transportista
            vals["trans_tipo_ent"] = "emp"
            trans = self.create(vals)
        self.punto(trans, localidad)
        #print(trans)

    
    def punto(self, transportista, localidad):
        print(transportista,localidad)
        for punto in transportista.trans_pto_retiro:
            if punto.pr_localiad.id == localiad.id:
                return()
        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})