1

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.

Legna
  • 460
  • 6
  • 19

1 Answers1

4

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>
Kenly
  • 24,317
  • 7
  • 44
  • 60