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
menu inventaris belum dibuat bang jadi jangan diisikan dulu
ReplyDeleteOwh itu hanya untuk menu bang jadi nnti di tahap selanjutnya itu dihapus karena memiliki 1 parent id yg sama
Delete