Membuat Menu Data Contact di odoo-14 (Docker)

Membuat Menu Data Contact di odoo-14 (Docker)

 Membuat views pegawai pada odoo-14

Buatlah file pada menu style-rent -> views -> stylerent_pegawai.xml
sehingga menjadi susunan sebagai berikut


lalu pada stylerent_pegawai.xml berisikan code
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- partner inherit form view -->
<record id="inherit_res_partner_view_id" model="ir.ui.view">
<field name="name">res.partner.inherit.view.form</field> <!-- Karena tidak membuat models baru hanya inherit-->
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<!-- Add your xpath here -->
<field name="vat" position="after">
<field name="is_pegawainya"/>
<field name="is_menikah"/>
<field name="is_customernya"/>
</field>
</field>
</record>
</data>
</odoo>
dengan inherit dari contact
klik menu bar -> contact lalu pilih salah satu contact dan pilih icon developer(kumbang) dan pilih edit view form dan copy bagian ini

dan tambahkan pada manifest.py menjadi
# always loaded
'data': [
'security/ir.model.access.csv',
'views/menu.xml',
'views/stylerent_views.xml',
'views/stylerent_pemeliharaan.xml',
'views/stylerent_pegawai.xml',
],
maka akan terlihat pada contact menjadi



tambahin untuk actionya dalam source code pegawai.xml menjadi
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- partner inherit form view -->
<record id="inherit_res_partner_view_id" model="ir.ui.view">
<field name="name">res.partner.inherit.view.form</field> <!-- Karena tidak membuat models baru hanya inherit-->
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<!-- Add your xpath here -->
<field name="vat" position="after">
<field name="is_pegawainya"/>
<field name="is_menikah"/>
<field name="is_customernya"/>
</field>
</field>
</record>

<!-- res.partner action window -->
<record id="res_partner_action" model="ir.actions.act_window">
<field name="name">Data Pegawai Style Rent Car</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">tree,form</field>
</record>

<!-- This Menu Item must have a parent and an action -->
<menuitem id="contact_res_partner_menu_act"
name="Pegawai"
parent="stylerent_contact_menu_categ"
action="res_partner_action"
sequence="10"/>
</data>
</odoo>
dan tidak lupa untuk update pada menu.xml untuk menambahkan menu bar menjadi source code
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- This Menu Item will appear in the Upper bar, that's why It needs NO parent or action -->
<menuitem id="stylerent_menu_root" name="Style Rent Car" sequence="10"/>

<!-- This Menu Item Must have a parent -->
<menuitem id="stylerent_datamaster_menu_categ"
name="Inventaris"
parent="stylerent_menu_root"
sequence="10"/>

<menuitem id="stylerent_datamaster_menu_categ"
name="Operasional"
parent="stylerent_menu_root"
sequence="20"/>

<menuitem id="stylerent_contact_menu_categ"
name="Data Contact"
parent="stylerent_menu_root"
sequence="30"/>

</data>
</odoo>
Inventaris meiliki id yg sama dengan operasional karena tadinya saya ingin menambahkan pemeliharaan dalam inventaris namun tidak jadi jadi bisa dihapus saja menjadi source code seperti ini :
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- This Menu Item will appear in the Upper bar, that's why It needs NO parent or action -->
<menuitem id="stylerent_menu_root" name="Style Rent Car" sequence="10"/>

<!-- This Menu Item Must have a parent -->
<menuitem id="stylerent_datamaster_menu_categ"
name="Operasional"
parent="stylerent_menu_root"
sequence="20"/>

<menuitem id="stylerent_contact_menu_categ"
name="Data Contact"
parent="stylerent_menu_root"
sequence="30"/>

</data>
</odoo>
Lakukan upgrade dan restart odoo
maka akan muncul sebagai berikut











Inherit Rest Partner Contact ke rentcar (Odoo-14) Docker

Inherit Rest Partner Contact ke rentcar (Odoo-14) Docker

 Install models contact pada Apps

Buka menu apps lalu ketik pada keysearch dengan nama contact dan install

Lalu klik pada Menu bar dan pilih contact maka akan muncul


Klik salah satu contact untuk melihat external id nya lalu klik pada developer(gbr kumbang)
dan klik edit controlpanelview

dan akan terlihat seperti ini lalu copas pada external id

Lalu bukalah vscode nya dan tambahkan partner.py pada models untuk model inherit (omodi)
Dengan source code seperti :
from odoo import models


class Partner(models.Model):
_inherit = 'res.partner'

inherit res.partner dicari melalui
klik pada bar menu lalu pilih setting -> technical -> models

Kemduian buatlah 3 fields untuk customer dan pegawai juga menikah didalam file partner.py menjadi source berikut :
from odoo import models, fields, api


class Partner(models.Model):
_inherit = 'res.partner'

is_pegawainya = fields.Boolean(
string='Pegawai',
default=False #agar nilainya nanti kosong
)
is_customernya = fields.Boolean(
string='Customer',
default=False #agar nilainya nanti kosong
)
is_menikah = fields.Boolean(
string='Sudah menikah',
default=True #agar nilainya nanti kosong
)
Tidak menambahkan __name karena tidak ingin membuat models baru dan karena ingin menambah model is_customer dan is_pegawai kedalam model res.partner contact atau kesini klik res.partner tadi

Note jika ada penambahan di satu models pada modul maka semua modul res.parnet baik project baru maupun lama sudah terinstal

Setelah itu save dan isikan pada __init__.py dibawah form pemeliharaan didalam folder style_rent -> models
from . import parnter
lalu lakukan restart pada server odoo dan lakukan upgrade
Apabila menemukan seperti ini

Maka pagarkan atau berikan coment pada __init__.py bagian
#from . import parnter
lalu restart odoo nya dan setelah itu masuk ke apps dan menuju ke modul style_rentcar dan klik titik tiga pilih module info dan biarkan tetap disini

setelah itu matikan server odoonya lalu  hilangkan coment di __init__.py menjadi
from . import models
from . import pemeliharaan
from . import partner
setelah itu aktifkan kembali server odoonya dan klik upgrade pada halaman odoo nya tanpa klik apps lagi
setelah itu dilihat apakah file res partner berhasil ditambah
dengan ke menu bar -> settings
lalu pilih technical -> moduls ketik res pada pencarian pilih rest.partner contact lalu ke fields yang ada dibawah
dan cari apakah is_pegawainya is_customernya dan is_menikah seperti berikut




RELASI table pada odoo-14 One2Many

RELASI table pada odoo-14 One2Many

Relasi models One2many

Buka file pemeliharaan.py
dan buatlah fungsi tambahan ofo2m
atau seperti coding berikut :
    models_id = fields.One2many(
comodel_name='stylerent.jenismobil', #lawanya atau models intinya diambil dari models.py
inverse_name='service_id', #fields yang many2one yaitu service_id pada models.py
string='Deskripsi Mobil'
)
Dan tambahkan code pada stylerent_pemeliharaan.xml dan tambahkan didalam notebook dibawah deksripsiservice karena untuk memanggil models_id yang ada di pemeliharaan.py
sebagai berikut code nya:
                <page string="Deskripsi Mobil">
<field name="models_id"/>
</page>
Lalu restart server odoo dan lakukan upgrade pada appsnya
dan klik pada operasional lalu klik ke pemeliharaan dan pilih antara mobil yang disediakan maka akan keluar sebagai berikut, maka deskripsi mobil akan keluar sebagai berikut :



Maka table deskripsi mobil akan di berelasi ke function yang ada di models.
Perbedaanya adalah kalau many2one adalah semua fungsi dikeluarkan dalam satu klik sedangkan one2many adalah membuka satu dan mengeluarkan semua.





memanggil fungsi diluar models.py odoo-14

memanggil fungsi diluar models.py odoo-14

 Melanjutkan tutorial kemarrin Relasi table many2one

Membuat fungsi inherit pada 1 models

buka file models.py
pada service_id tambahkan fungsi delegate=True yang dimana fungsi ini bertujuan untuk inherit name pada pemeliharaan kedalam models sehingga nantinya hanya dipanggil nama fungsinya
codingnya :
service_id = fields.Many2one(
comodel_name='stylerent.service',
string='Pemeliharaan',
Required=True,
delegate=True
)

lalu pada <!-- model.name tree view -->
didalamnya tree dibawah harga tambahkan atau panggil fungsi teknik contohnya yg berada bukan pada models.py
<tree>
<field name="name"></field>
<field name="tipe"></field>
<field name="service_id"/>
<field name="kapasitas"></field>
<field name="harga"></field>
<field name="teknik"></field>
<field name="active"></field>
</tree>

Restart server odoo dan upgrade, maka akan keluar hasil :

Menambah fungsi atau tab pada deskripsi (notebook)

buka stylerent_views.xml
dan pada menu <!-- model.name form view -->
didalam notebook tambahkan dwskripsi atau memanggil file di pemeliharaan.py menjadi :
<notebook colspan='4'>
<page string="HARGA SEWA">
<field name="harga"/>
</page>
<page string="Deskripsi service">
<field name="deskripsiservice"/>
</page>
</notebook>
Karena tidak merubah .py maka hanya upgrade saja 
lalu akan menjadi seperti ini saat di klik pilihanya












RELASI table pada odoo-14 (Docker) many2one

RELASI table pada odoo-14 (Docker) many2one

 Membuat relasi many to one

Buat file baru bernama pemeliharaan.py didalam folder style_rentcar -> models
dengan isi code :
from odoo import models, fields, api
#nama class dibiarin tidak masalah yg penting _name nya bedain untuk dipasang di secutrity
class stylerent(models.Model):
_name = "stylerent.service"
_description = "Teknik Pemeliharaan mobil"

name = fields.Selection(
string='Jenis Service',
selection=[('biasa', 'biasa'), ('istimewa', 'istimewa'), ('spesial', 'spesial'), ('super','super')]
)
teknik = fields.Selection(
string='Teknik service',
selection=[('Large', 'All'), ('Medium', 'Machine'), ('Small', 'Oil')]
)
hasil = fields.Selection(
string='Hasil Service',
selection=[('Ringan', 'Ringan'), ('Sedang', 'Sedang'), ('Berat', 'Berat')]
)
tersedia = fields.Boolean(
string='tersedia',
default=True
)
deskripsiservice = fields.Char(
string='deskripsi',
help='Isi dengan Service dari mobil'
)

pada style_rentcar -> models -> __init__.py
tambahkan code dibawah from import pertama
from . import pemeliharaan

Berikan ijin untuk models yang dibuat di security
ditambah pada bawah access diambil dari __name : 'yang ini'
access_stylerent_service,access.stylerent.service,model_stylerent_service,,1,1,1,1

Tambahkan file viewnya untuk dibuat field nya
buat file stylerent_pemeliharaan.py didalam folder style_rentcar -> views
dengan code :
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- model.name tree view -->
<record id="stylerent_service_view_tree" model="ir.ui.view">
<field name="name">stylerent.service.view.tree</field>
<field name="model">stylerent.service</field>
<field name="arch" type="xml">
<tree>
<field name="name"></field>
<field name="teknik"></field>
<field name="hasil"></field>
<field name="deskripsiservice"></field>
<field name="tersedia"></field>
</tree>
</field>
</record>

<!-- model.name form view -->
<record id="stylerent_service_view_form" model="ir.ui.view">
<field name="name">stylerent.service.view.form</field>
<field name="model">stylerent.service</field>
<field name="arch" type="xml">
<form string="Daftar Pemeliharaan Mobil">
<sheet>
<group>
<group colspan='4'>
<group colspan='2'>
<separator string="Rincian Service"/>
<field name="name"/>
<field name="teknik"/>
</group>
<group colspan='2'>
<separator string="Hasil Service"/>
<field name="hasil"/>
<field name="tersedia"/>
</group>
<notebook colspan='4'>
<page string="Deskripsi Service">
<field name="deskripsiservice"/>
</page>
</notebook>
</group>
</group>
</sheet>
</form>
</field>
</record>

<!-- model.name action window -->
<record id="stylerent_service_action" model="ir.actions.act_window">
<field name="name">Jenis Mobil Style Rent Car</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stylerent.service</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_smiling_face">
Diisi dengan service mobil
</p><p>
<!-- More details about what a user can do with this object will be OK -->
</p>
</field>
</record>

<!-- This Menu Item must have a parent and an action -->
<menuitem id="stylerent_service_menu_act"
name="Pemeliharaan"
parent="stylerent_datamaster_menu_categ"
action="stylerent_service_action"
sequence="10"/>
</data>
</odoo>

Ubah file menu.xml di views menjadi
code :
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- This Menu Item will appear in the Upper bar, that's why It needs NO parent or action -->
<menuitem id="stylerent_menu_root" name="Style Rent Car" sequence="10"/>

<!-- This Menu Item Must have a parent -->
<menuitem id="stylerent_datamaster_menu_categ"
name="Inventaris"
parent="stylerent_menu_root"
sequence="10"/>

<menuitem id="stylerent_datamaster_menu_categ"
name="Operasional"
parent="stylerent_menu_root"
sequence="11"/>
</data>
</odoo>

Karena menuitem yg kedua sequence 11 adalah untuk memanggil field pemeliharaan
setelah itu tambahkan data di manifest menjadi
'data': [
'security/ir.model.access.csv',
'views/menu.xml',
'views/stylerent_views.xml',
'views/stylerent_pemeliharaan.xml',
],
Lakukan restart server odoo dan upgrade apps 
dan akan memunculkan seperti ini:
dan klik pada pemeliharaan maka akan tampil :
Dan klik create lalu isikan berikut sebagai contoh :


Many To One

Buka models.py yang ada di folder style_rentcar -> models
tambahkan coding berikut : (dibawah active)
service_id = fields.Many2one(
comodel_name='stylerent.service',
string='Pemeliharaan', Required=True
)
comodel name adalah model tujuan yg akan dipasangkan karena ini dikelas jenis mobil dan akan berelasi di kelas service maka comodelnya stylerent.service (__name yang ada di file pemeliharaan.py)

Agar bisa dipangiil buka stylerent_views.xml
dan tambahkan code berikut pada <!-- model.name tree view -->


dibawah  <field name="tipe"></field> menjadi
Coman ini diperhatikan <!-- xxx -->
<!-- model.name tree view -->.
<record id="stylerent_jenismobil_view_tree" model="ir.ui.view">
<field name="name">stylerent.jenismobil.view.tree</field>
<field name="model">stylerent.jenismobil</field>
<field name="arch" type="xml">
<tree>
<field name="name"></field>
<field name="tipe"></field>
<field name="service_id"/>
<field name="kapasitas"></field>
<field name="harga"></field>
<field name="active"></field>
</tree>
</field>
</record>
dan ubah juga pada  <!-- model.name form view --> pada group 
menjadi hanya ditambah service_id
              <group colspan='2'>
<separator string="TIPE MOBIL"/>
<field name="tipe"/>
<field name="service_id"/>
</group>
setelah itu restart server odoo dan lakukan upgrade pada module
lalu tampil  klik pada jenis dan sewa mobil yang semula tipe/jenis mobil diubah dari views -> stylerent_views dan pada menu item yg bawah name nya diubah :

Apabila gagal atau internal server eror silahkan hapus librari pada line 1 yang otomatis tertulis
from typing_extensions import Required
Lalu bisa diedit dengan klik salah satunya lalu klik edit
maka akan muncul dan pilihlah salah satu :

Kalau ingin memilih menu yang ada didalam sini karena pilihanya banyak dengan cara klik kotak dan panah kecil disamping :
Maka akan keluar menu pilihan berikut silahkan diisi sesuai keinginan lalu disimpan