Dalam mengembangkan aplikasi kita menggunakan Odoo ERP mungkin akan menghubungkan aplikasi kita dengan model Users dan juga model partner atau Contact.

Menghubungkan aplikasi ke model Users dan Contact pada Odoo ERP adalah seperti pada penjelasan-penjelasan berikut ini

  1. Update pada model

    Kita login dengan user biasa ke Virtualmin dari Webmin kemudian mengedit model dan menambahkan relasi ke res.users dan res.partner seperti pada gambar di atas.


    Karena kita mengupdate model maka kita perlu melakukan restart odoo seperti pada gambar di atas.
  2. Mengupdate view

    Kita kemudian menambahkan source code pada view seperti pada gambar di atas.


    Setelah kita mengupdate view maka kita melakukan Upgrade modul seperti pada gambar di atas.
  3. Tampilan list view

    Tampak ada tambahan 2 field pada list view ini.
  4. Tampilan form

    Tampak ada tambahan tab dan juga field-field pada tampilan form seperti pada gambar di atas.


    Tampak tampilan form pada saat kita CREATE.
  5. Model res.partner

    Kita kemudian menuju aplikasi Settings, masuk ke menu Technical | Models kemudian mencari res.partner seperti pada gambar di atas.


    Tampak informasi detil dari model res.partner atau contact.
  6. Model res.users

    Kita kemudian mencari model res.users seperti pada gambar di atas.


    Tampak detil dari res.users atau User.
  7. Source code
    estate_property.py:

    from odoo import fields, models
    
    class EstateProperty(models.Model):
    	_name = "estate.property"
    	_description = "Real Estate Property"
    
    	active = fields.Boolean(default=True)
    	state = fields.Selection([ ('n', 'New'),('o', 'Offer Received'),('a', 'Offer Accepted'),('s', 'Sold'),('c', 'Cancelled'),],'State', default='n')
    
    	name = fields.Char(required=True,default='Rumah Baru')
    	description = fields.Text()
    
    	property_type_id = fields.Many2one("estate.property.type", string="Property Type")
    
    	postcode = fields.Char()
    	date_availability = fields.Date(copy=False)
    	expected_price = fields.Float()
    	selling_price = fields.Float(readonly=True,copy=False)
    	bedrooms = fields.Integer(default=2)
    	living_area = fields.Integer()
    	facades = fields.Integer()
    	garage = fields.Boolean()
    	garden = fields.Boolean()
    	garden_area = fields.Integer()
    	garden_orientation = fields.Selection([ ('n', 'North'),('s', 'South'),('e', 'East'),('w', 'West'),],'Garden Orientation', default='e')
    
    	user_id = fields.Many2one("res.users", string="Salesman",default=lambda self: self.env.user)
    	buyer_id = fields.Many2one("res.partner", string="Buyer",copy=False)
    

    estate_property_views.xml:

    <?xml version="1.0"?>
    <odoo>
        <record id="estate_property_action" model="ir.actions.act_window">
            <field name="name">Property</field>
            <field name="res_model">estate.property</field>
            <field name="view_mode">tree,form</field>
        </record>
    
    	<record id="estate_property_view_tree" model="ir.ui.view">
            <field name="name">estate.property.tree</field>
            <field name="model">estate.property</field>
            <field name="arch" type="xml">
                <tree string="Rumahan" >
                    <field name="name"/>
                    <field name="property_type_id"/>
                	<field name="postcode"/>
                    <field name="bedrooms"/>
                    <field name="living_area"/>
                    <field name="expected_price"/>
                    <field name="selling_price"/>
                    <field name="date_availability"/>
                    <field name="user_id"/>
                    <field name="buyer_id"/>
                </tree>
            </field>
        </record>
    
    	<record id="estate_property_view_form" model="ir.ui.view">
            <field name="name">estate.property.form</field>
            <field name="model">estate.property</field>
            <field name="arch" type="xml">
            	<form string="Rumahan">
       				 <sheet>
            			<group>
               				<group>
                    			<field name="name"/>
                    			<field name="property_type_id"/>
                            	<field name="postcode"/>
                    			<field name="date_availability"/>
                			</group>
                			<group>
                    			<field name="expected_price"/>
                    			<field name="selling_price"/>
                			</group>
            			</group>
                		<notebook>
                    		<page string="Description">
               				<group>
                        		<field name="description"/>
                        		<field name="bedrooms"/>
                        		<field name="living_area"/>
                        		<field name="facades"/>
                        		<field name="garage"/>
                        		<field name="garden"/>
                        		<field name="garden_area"/>
                        		<field name="garden_orientation"/>
                			</group>
                    		</page>
                     		<page string="Other Info">
                            	<group>
                    				<field name="user_id"/>
                   			 		<field name="buyer_id"/>
                                </group>
                            </page>
                		</notebook>
        			</sheet>
    			</form>
            </field>
        </record>
    
    	<record id="estate_property_view_search" model="ir.ui.view">
            <field name="name">estate.property.tree</field>
            <field name="model">estate.property</field>
            <field name="arch" type="xml">
                <search string="Rumahan" >
                    <field name="name"/>
                    <field name="postcode"/>
                    <field name="expected_price"/>
                    <field name="bedrooms"/>
                    <field name="living_area"/>
                    <field name="facades"/>
    				<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>		
            	</search>
            </field>
        </record>
    
    </odoo>
    

Informasi lebih lanjut silahkan mengunjungi
1. https://www.odoo.com/documentation/16.0/developer/howtos/rdtraining/08_relations.html .
2. https://github.com/odoo/technical-training-solutions/tree/16.0-core/estate .

Kunjungi www.proweb.co.id untuk menambah wawasan anda.

Jika anda tertarik mengenai aplikasi Odoo ERP silahkan mengisi form di bawah ini

Menghubungkan Aplikasi ke Model Users dan Contact pada Odoo ERP