Search code examples
odooodoo-14

Domain for partner_shipping_id showing the child_ids of partner_id - Odoo


I would like to ovewrite partner_shipping_id field in sale.order to only display contacs from res.partner that match partner_id. Currently shows all existing contacts, so I would like to change this behavior.

This is what I tried:

 partner_shipping_id = fields.Many2one(
        'res.partner', 
        string='Delivery Address', 
        readonly=True, 
        required=True,
        states={
            'draft': [('readonly', False)], 
            'sent': [('readonly', False)], 
            'sale': [('readonly', False)]},
        domain="[('child_ids.parent_id','=', partner_id)]"
        # domain=
        # "['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
        )

But this only returns the same selected record in parnter_id field.


Solution

  • To show only partner contacts, use the following domain:

    domain="[('parent_id', '=', partner_id)]"
    

    Example:

    <record id="sale_order_form_only_partner_contacts" model="ir.ui.view">
    <field name="name">sale.order.form.only.partner.contacts</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <field name="partner_shipping_id" position="attributes">
            <attribute name="domain">[('parent_id', '=', partner_id)]</attribute>
        </field>
    </field>
    </record>