2

I have inherited res.partner model and added my own one2many fields which is shown below :

from odoo import api, fields, models


class CustomContacts(models.Model):
_inherit = "res.partner"

x_brand_ids = fields.Many2many('res.partner.line', 'x_brand_id', string="Brand Name")
x_model_ids = fields.One2many('res.partner.line', 'x_model_id', string="Model Name")
x_customer_ids = fields.One2many('res.partner.line', 'x_customer_id', string="Vehicle Details")


class CustomContactsPage(models.Model):
_name = "res.partner.line"

x_customer_id = fields.Many2one('res.partner', string="Vehicle Details")
x_brand_id = fields.Many2one('vehicle.brand', string="Brand Name")
x_model_id = fields.Many2one('vehicle.model', string="Model Name")
x_vehicle_number_id = fields.Char(string="Vehicle Number")

Its related views :

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_inherited" model="ir.ui.view">
    <field name="name">res.partner.inherited</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//page[@name='internal_notes']" position="after">
            <page string="Vehicle Details">
                    <field name="x_customer_ids">
                        <tree editable="bottom">
                            <field name="x_brand_id"/>
                            <field name="x_model_id"/>
                            <field name="x_vehicle_number_id"/>
                        </tree>
                    </field>
            </page>
        </xpath>
    </field>
</record>
</odoo>

Now i have inherited sale.order model & added 3 fields in it :

from odoo import api, fields, models


class CustomSaleOrder(models.Model):
_inherit = "sale.order"


vehicle_brand = fields.Char(string='Vehicle Brand')
vehicle_model = fields.Char(string='Vehicle Model')
vehicle_number = fields.Char(string='Vehicle Number')

Its related views :

<?xml version="1.0" encoding="utf-8"?>

<odoo>

<record id="sale_order_inherited" model="ir.ui.view">
    <field name="name">sale.order.inherited</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='partner_id']" position="after">
                            <field name="vehicle_brand"/><field name="vehicle_model"/><field name="vehicle_number"/>
        </xpath>
    </field>
</record>

</odoo>

Now partner_id field is already there in sale.order which indicates the customer name , so how can i create a onchange function through which when i select customer(partner_id) it shows vehicles belongs to that customer ??

1 Answers1

0

Insted of creating new char fields of vehicle details you can add single related field into sale.order model.

vehicle_ids = fields.One2many(related='partner_id.x_customer_ids' string='Vehicles')

And in Sale order form view you can add page for vehicle list.

<page string='Vehicle List'>
    <field name='vehicle_ids'>
        <tree>
            <field name='x_brand_id'/>
            <field name='x_model_id'/>
            <field name='x_vehicle_number_id'/>
        </tree>
    </field>
</page>
  • Thanks for answering but I need to set this field as onchange function so it will fetch the details as per customer. – Dhiren Ahuja Apr 22 '22 at 05:42