Membuat models dan addons di odoo (Docker)

 Membuat models dan addons

buka Docker dan jalankan odoo

Structur membuat models :

buat nama folder sesuai nama models yang akan dibuat
contoh style rentcar
buat struktur didalamnya terdapat



dalam folder views masih kosong sedangkan __init__.py dan __manifest__.py adalah file didalam style rentcar

Tahap pemasukan coding

Pada __Manifest__.py isikan :
# -*- coding: utf-8 -*-
{
'name': 'Style Rent Car',
'summary': 'Style rentcar management software',
'description': """Style rentcar management software""",
'author': "My Company",
'website': "http://srikandiart.com",
'category': 'Productivity',
'version': '0.1',
'application': True,

# any module necessary for this one to work correctly
'depends': ['base'],

# always loaded
'data': [
'security/ir.model.access.csv',
],
}

Lalu restart odoo di docker dan akses kembali localhost
lalu ke updat apps dan cari di menu search filenya lalu install




Membuat models

ketikan pada __init__.py yang ada dalam folder style_rentcar
from . import models

Buat folder models didalam style_rentcar
dan beri isi __init__.py danjuga models.py

dan __init__.py berisi
from . import models

from odoo import models, fields, api

class ModelDasar(models.Model):
_name = "stylerent.modeldasar"
_description = "model dasar style rent car"
kapasitas = fields.Char(
string='kapasitas penumpang',
Required=True,
)
tipe = fields.Selection(
string='tipe/jenis mobil',
selection=[('sedan', 'Sedan'), ('lcgc', 'LCGC'), ('mpv', 'MPV'), ('suv', 'SUV')]
)

class stylerent(models.Model):
_name = "stylerent.jenismobil"
_description = "Daftar Jenis-jenis mobil"
_inherit = 'stylerent.modeldasar' #memanggil model class yg atas inheriten delegation

name = fields.Char(
string='Jenis Sewa',
Required=True
)
harga = fields.Integer(
string='Harga sewa',
Required=True
)
active = fields.Boolean(
default=True
)
Tambahkan folder security di rentcar yang didalamnya berisi ir.models.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stylerent_jenismobil,access.stylerent.jenismobil,model_stylerent_jenismobil,,1,1,1,1
dengan struktur
File dalam folder controllers hanya berisi 
__init__.py
import . from controllers
dan controllers.py kosong

Lalu restart kembali odoo server didalam docker dan refresh kembali untuk page odoo 
lalu lakukan upgrade pada addons :



setelah melakukan update lanjut ke menu setting -> lanjut ke menu bar technical dan pilih models


Cari name yg sudah diinput tadi maka akan keluar modelsnya

Membuat menu bar dan Views

buatlah folder views didalam style_rentcar


dan tambah file menu.xml juga stylerent.xml
dengan 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="Operasional"
parent="stylerent_menu_root"
sequence="10"/>

<menuitem id="stylerent_datacontact_menu_categ"
name="Contacts"
parent="stylerent_menu_root"
sequence="11"/>
</data>
</odoo>

dan coding dari stylerentviews.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- 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="harga"></field>
<field name="kapasitas"></field>
<field name="tipe"></field>
<field name="active"></field>
</tree>
</field>
</record>

<!-- model.name action window -->
<record id="stylerent_jenismobil_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.jenismobil</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_smiling_face">
Diisi dengan daftar tipe/jenis mobil dan Harga sewa
</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_jenismobil_menu_act"
name="Tipe/Jenis Mobil"
parent="stylerent_datamaster_menu_categ"
action="stylerent_jenismobil_action"
sequence="10"/>
</data>
</odoo>
Remember Menu Item must have *HARUS PALING BAWAH
Lalu jangan lupa untuk tambahkan manifest berikut ke data yang ada di __manifest__.py
# always loaded
'data': [
'security/ir.model.access.csv',
'views/menu.xml',
'views/stylerent_views.xml',
],
Setelah itu silahkan Restart odoo didalam docker  dan reload kembali page di apps lalu upgrade style_rentcar setelah di update masuk ke menu style rent yg ada di menu -> style rent car

Lalu silahkan create dengan data sebagai berikut

Lalu untuk kembali klik Style Rent Car
dan muncul tampilan




Membuat field Edit

Buka file stylerent_views.xml
lalu tambahkan code ini untuk menambah field jika di klik maka file nya berupa fields edit :
tambahkan dibawah code<!-- model.name tree view --> </record> 
<!-- model.name form view -->
<record id="stylerent_jenismobil_view_form" model="ir.ui.view">
<field name="name">stylerent.jenismobil.view.form</field>
<field name="model">stylerent.jenismobil</field>
<field name="arch" type="xml">
<form string="Daftar Harga Sewa">
<sheet>
<group>
<group colspan='4'>
<group colspan='2'>
<separator string="RINCIAN SEWA"/>
<field name="name"/>
<field name="kapasitas"/>
</group>
<group colspan='2'>
<separator string="TIPE MOBIL"/>
<field name="tipe"/>
</group>
<notebook colspan='4'>
<page string="HARGA SEWA">
<field name="harga"/>
</page>
</notebook>
</group>
</group>
</sheet>
</form>
</field>
</record>
Save dan upgrade langsung module stylerent.car yang ada di apps (tidak usah restart server odoo karena tidak mengedit file py)
maka akan tampil jika  harian mingguan atau tahunan di klik (salah satu):

Membuat Filter pemanggil di menu search agar otomatis ada pilihanya

masuk ke file stylerent_views.xml
dibawah code <!-- model.name form view -->
<!-- model.name search view -->
<record id="stylerent_jenismobil_view_search" model="ir.ui.view">
<field name="name">stylerent.jenismobil.view.search</field>
<field name="model">stylerent.jenismobil</field>
<field name="arch" type="xml">
<search string="Pencarian">
<!-- Add your fields here (pencarian berdasarkan) -->
<field name="name"/>
<field name="tipe"/>
<filter name="7" string="7" domain="[('tipe', 'ilike', '7')]" />
<filter name="5" string="5" domain="[('tipe', 'ilike', '5')]" />
</search>
</field>
</record>
record id nya diambil dari models -> class stylerent.jenismobil
Upgrade module (tanpa restart server) lalu ke menu style rent car Maka muncul :