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
























2 comments

  1. menu inventaris belum dibuat bang jadi jangan diisikan dulu

    ReplyDelete
    Replies
    1. Owh itu hanya untuk menu bang jadi nnti di tahap selanjutnya itu dihapus karena memiliki 1 parent id yg sama

      Delete