Hacer campos dependientes con domain dinamico

544 views
Skip to first unread message

Edgar de la Cruz

unread,
May 8, 2019, 8:21:47 PM5/8/19
to Usuarios Odoo / OpenERP en España
Hola amigos, estoy intentando realizar un domain diinamico sobre un campo de a cuerdo a la selección de otr
mi modelo CRM tiene dos campos relacionados a res.partner uno llamado partner_id que es considerado como cliente y otro llamado contact_id
lo que busco es que en contact_id no liste registros si no existe un partner_id seleccionado; sin embargo cuando selecciono un cliente ya puedo retornar un domain para el contact con ayuda del on change, 

    contact_id = fields.Many2one('res.partner', string='Contact', domain=lambda self: self._default_contact_domain())
    def _default_contact_domain(self):
        params = self.env.context.get('params', False)
        domain = [('id', 'in', [])]# -----> Tuve que usar ese domain para que inicialmente no me muestre valores
        if params:
            lead_id = params.get('id', False)
            if lead_id:
                lead = self.browse(lead_id)
                if lead.partner_id:
                    #Vigilar que esta guardando en cache el ultimo id
                    domain = self._get_contact_domain(lead.partner_id)
        return domain

Se ejecuta al cambiar el cliente
def on_change_partner_id(self, cr, uid, ids, partner_id, context=None):
    values = {}
    contact_domain = [('id', 'in', [])]
    if partner_id:
        partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
        partner_name = (partner.parent_id and partner.parent_id.name) or (partner.is_company and partner.name) or False
        contact_name = (not partner.is_company and partner.name) or False
        if contact_name:#Contact
            contact_name += ' {}'.format(partner.last_name or '')
        contact_domain = self._get_contact_domain(partner)
        values = {
            'partner_name': partner_name,
            'contact_name': contact_name,
            'street': partner.street,
            'street2': partner.street2,
            'city': partner.city,
            'state_id': partner.state_id and partner.state_id.id or False,
            'country_id': partner.country_id and partner.country_id.id or False,
            'email_from': partner.email,
            'international_lada_phone': partner.international_lada_phone,
            'local_lada_phone': partner.local_lada_phone,
            'phone': partner.phone,
            'ext_phone': partner.ext_phone,
            'zip': partner.zip,
        }
    return {'value': values, 'domain': {'contact_id': contact_domain}}

Noto que mi domain solo se ejecuta una vez al inicio y que si visualizo un registro y me paso a otro en contact_id filtra contactos pero por el cliente del registro pasado, realmente lo que busco es que el dominio sea dinamico y que si no hay cliente no filtre nada y cuando actualice y solo quiera cambiar el contacto de la lista me filtre solo los del cliente en seleccion, gracias



Gabriel Davini

unread,
May 8, 2019, 9:07:14 PM5/8/19
to openerp-s...@googlegroups.com
Hola, 

prueba este módulo: [0]

Puedes dar una mano para terminar de migrarlo a la v11 (hay un PR abierto [1]) y luego a la 12.



--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/openerp-spain-users/7b14358b-e982-4b97-b224-fafb476c629a%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Gabriel.

Edgar de la Cruz

unread,
May 9, 2019, 7:02:18 PM5/9/19
to openerp-s...@googlegroups.com
Gracias amigo, está disponible para la version 9?

Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/ZGVOeqCKe1o/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/openerp-spain-users/CALZasCQDZw9kDmHdnY%2BbTGqR5U1p-G1Op_7jqrbf0dM0GS6svw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages