Memunculkan harga

Memunculkan harga

 Tambahkan compute pada Order

Tambahkan harga dibawah models id sehingga menjadi 
harga = fields.Integer(
compute='_compute_harga',
string='Harga Sewa'
)
lalu tambahkan oocompute
hingga menjadi
@api.depends('jenissewa_id')
def _compute_harga(self):
for record in self:
record.harga = record.jenissewa_id.harga
dengan field diambil dari harga dan record dari jenissewa_id dari atas harga dan berbarengan dengan harga jadi pengambilan harga berdasarkan jenissewa_id

lalu tambahkan atau edit pada stylerent_order.xml menjadi 
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- stylerent.ordermobil tree view -->
<record id="stylerent_ordermobil_view_tree" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.tree</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<tree>
<!-- Add your fields here -->
<field name="pemesan_id"/>
<field name="tanggal_pesan"/>
</tree>
</field>
</record>
<!-- stylerent.ordermobil form view -->
<record id="stylerent_ordermobil_view_form" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.form</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<form string="">
<sheet>
<group>
<field name="pemesan_id" />
</group>
<group>
<field name="tanggal_pesan" />
</group>
<notebook colspan ='4'>
<page name="jenis mobil" string="Detail Pesanan">
<field name="detailjenis_ids">
<tree editable='bottom'>
<field name="jenissewa_id" />
<field name="harga"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

<!-- stylerent.ordermobil action window -->
<record id="stylerent_ordermobil_action" model="ir.actions.act_window">
<field name="name">Orderan Style Rent Car</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stylerent.ordermobil</field>
<field name="view_mode">tree,form</field>
</record>
<!-- This Menu Item must have a parent and an action -->
<menuitem
id="stylerent_ordermobil_menu_act"
name="Order Mobil"
parent="stylerent_menu_root"
action="stylerent_ordermobil_action"
sequence="5"/>
</data>
</odoo>
Restart server odoo dan upgrade maka akan menjadi seperti ini pada order mobil:
Untuk menambahkan line atau edit maka akan keluar jenisnya apabila di pilih maka keluar juga harganya

Menambah field lama sewa

 

Tambahkan diatas harga pada order.py dengan ofint dan code menjadi seperti

lamasewa = fields.Integer(
string='Lama sewa'
)

Lalu tampilkan pada field formnya di stylerent_order.xml menjadi

<!-- stylerent.ordermobil form view -->
<record id="stylerent_ordermobil_view_form" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.form</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<form string="">
<sheet>
<group>
<field name="pemesan_id" />
</group>
<group>
<field name="tanggal_pesan" />
</group>
<notebook colspan ='4'>
<page name="jenis mobil" string="Detail Pesanan">
<field name="detailjenis_ids">
<tree editable='bottom'>
<field name="jenissewa_id" />
<field name="harga"/>
<field name="lamasewa" />
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

Setelah itu refresh odoo dan lakukan upgrade sehingga mengahasilkan

 


 

Buat field jumlah harga dengan dibawah compute harga (line akhir) didalam order.py

Dengan oofcompute sehingga menjadi

jumlahnya = fields.Integer(compute='_compute_jumlahnya', string='Total harga sewa')
@api.depends('lamasewa')
def _compute_jumlahnya(self):
for record in self:
record.jumlahnya = record.harga * record.lamasewa

 

Jumlah harga depends terhadap lamasewa

Lalu for record in self

Record jumlah harga = (adalah) record.lamasewa * record.harga

Wajib ditulis record. Lalu definisinya karena record adalah file simpan (semua yang bilangan harus integer)

Lalu tambahkandibawah field lamasewa yang ada didalam file stylerent_order.xml dengan

<field name="jumlahnya" />

Setelah itu restart odoo dan upgrade maka akan muncul hasil :


 

 




Membuat detailpesan 1 customer bisa pesan beberapa mobil

Membuat detailpesan 1 customer bisa pesan beberapa mobil

 Membuat class baru didalam order

Buatlah class baru didalam order.py dengan nama detailorder

Hapus from odoo import api, fields, models sehingga menjadi source code seperti berikut
from odoo import api, fields, models

class OrderMobil(models.Model):
_name = 'stylerent.ordermobil'
_description = 'New Description'

pemesan_id = fields.Many2one(
comodel_name='res.partner',
string='Nama Pemesan',
domain=[('is_customernya','=','True')]
)
tanggal_pesan = fields.Datetime(
string='Tanggal pesanan',
default=fields.Datetime.now
)
#membuat viewnya detail field order
detailjenis_ids = fields.One2many(
comodel_name='stylerent.detailorder',
inverse_name='order_id',
string='Detail Pesanan'
)

class DetailOrder(models.Model):
_name = 'stylerent.detailorder'
_description = 'Detail Orderan Customer'

name = fields.Char(
string='Kode Order'
)

order_id = fields.Many2one(
comodel_name='stylerent.ordermobil',
string='Order Mobil'
)
jenissewa_id = fields.Many2one(
comodel_name='stylerent.jenismobil',
string='Jenis Sewa Mobil'
)
Jika One to many harus menggunakan s untuk pembeda karena dia satu ke semua
dan untuk kelas kelas baru dibutuhkan karena untuk memanggil fungsi diluar order misal memanggil fungsi dari models.py order_id untuk memanggil class yg pertama dan jenissewa_id itu lawanya atau yg ada di models.py tersebut
Tambahkan acces karena membuat function class baru menjadi 
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
access_stylerent_service,access.stylerent.service,model_stylerent_service,,1,1,1,1
access_stylerent_ordermobil,access.stylerent.ordermobil,model_stylerent_ordermobil,,1,1,1,1
access_stylerent_detailorder,access.stylerent.detailorder,model_stylerent_detailorder,,1,1,1,1

dan ubah stylerent_order.xml menjadi seperti
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- stylerent.ordermobil tree view -->
<record id="stylerent_ordermobil_view_tree" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.tree</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<tree>
<!-- Add your fields here -->
<field name="pemesan_id"/>
<field name="tanggal_pesan"/>
</tree>
</field>
</record>
<!-- stylerent.ordermobil form view -->
<record id="stylerent_ordermobil_view_form" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.form</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<form string="">
<sheet>
<group>
<field name="pemesan_id" />
</group>
<group>
<field name="tanggal_pesan" />
</group>
<notebook colspan ='4'>
<page name="jenis_mobil" string="Detail Pesanan">
<field name="detailjenis_ids">
<tree editable='bottom'>
<field name="jenissewa_id" />
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

<!-- stylerent.ordermobil action window -->
<record id="stylerent_ordermobil_action" model="ir.actions.act_window">
<field name="name">Orderan Style Rent Car</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stylerent.ordermobil</field>
<field name="view_mode">tree,form</field>
</record>
<!-- This Menu Item must have a parent and an action -->
<menuitem
id="stylerent_ordermobil_menu_act"
name="Order Mobil"
parent="stylerent_menu_root"
action="stylerent_ordermobil_action"
sequence="5"/>
</data>
</odoo>
Dengan membuat field form untuk memanggil ids dan juga memanggil fungsi yang jenissewa nya
sehingga memiliki output

contohnya disini perusahaan atau perorangan bisa menyewa unit dengan jenis sewanya yg harian mingguan atau tahunan yg disediakan oleh pegawai style rent car.








Menambahkan models baru (menu order)

Menambahkan models baru (menu order)

Membuat menu order yang berparent ke judul/ id utama dan berelasi many2one

Buat menu baru order.py pada style_rentcar -> models
sehingga menjadi susunan seperti berikut 

Lalu didalamnya buatlah source code model baru dengan class OrderMobil dan berdomain atau nanti pemesanya akan terfilter secara customer dengan many2one ke partner.py bagian is_customer
from odoo import api, fields, models

class OrderMobil(models.Model):
_name = 'stylerent.ordermobil'
_description = 'New Description'

name = fields.Char(
string='Kode Order',
Required=True,
)
pemesan_id = fields.Many2one(
comodel_name='res.partner',
string='Nama Pemesan',
domain=[('is_customernya','=','True')]
)
tanggal_pesan = fields.Datetime(
string='Tanggal pesanan',
default=fields.Datetime.now
)
agar tanggal pesan nanti secara otomatis mengisi tanggal sekarang
many2one harus menggunakan _id dan one2manu _ids agar bisa membedakan
dan input models baru order.py maka harus ditambahkan di __init__.py menjadi
from . import models
from . import pemeliharaan
from . import partner
from . import order
Lalu tambahkan stylerent_order.xml didalam views
dan didalamnya terdapat surce code
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- stylerent.ordermobil tree view -->
<record id="stylerent_ordermobil_view_tree" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.tree</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<tree>
<!-- Add your fields here -->
<field name="name"/>
<field name="pemesan_id"/>
<field name="tanggal_pesan"/>
</tree>
</field>
</record>
<!-- stylerent.ordermobil form view -->
<record id="stylerent_ordermobil_view_form" model="ir.ui.view">
<field name="name">stylerent.ordermobil.view.form</field>
<field name="model">stylerent.ordermobil</field>
<field name="arch" type="xml">
<form string="">
<sheet>
<group>
<field name="name" />
</group>
<group>
<field name="pemesan_id" />
</group>
<group>
<field name="tanggal_pesan" />
</group>
</sheet>
</form>
</field>
</record>

<!-- stylerent.ordermobil action window -->
<record id="stylerent_ordermobil_action" model="ir.actions.act_window">
<field name="name">Orderan Style Rent Car</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stylerent.ordermobil</field>
<field name="view_mode">tree,form</field>
</record>
<!-- This Menu Item must have a parent and an action -->
<menuitem
id="stylerent_ordermobil_menu_act"
name="Order Mobil"
parent="stylerent_menu_root"
action="stylerent_ordermobil_action"
sequence="5"/>
</data>
</odoo>
karena ingin ditaruh di sebelah style rent car maka parentnya harus id dari stylerent_menu_root danjuga sequence nya kasih lebih kecil dari Operasional
dan tambahkan data pada manifest menjadi
'data': [
'security/ir.model.access.csv',
'views/menu.xml',
'views/stylerent_views.xml',
'views/stylerent_pemeliharaan.xml',
'views/stylerent_pegawai.xml',
'views/stylerent_customer.xml',
'views/stylerent_order.xml'
],

setelah itu karena membuat fungsi models baru dan membuat xml baru yang terhubung jadi harus taruh acces di security dengan source code :
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
access_stylerent_service,access.stylerent.service,model_stylerent_service,,1,1,1,1
access_stylerent_ordermobil,access.stylerent.ordermobil,model_stylerent_ordermobil,,1,1,1,1

setelah itu restart server odoo dan upgrade maka akan tampil :





RELASI Many2one Pegawai dengan pemeliharaan (dan filter pegawai)

RELASI Many2one Pegawai dengan pemeliharaan (dan filter pegawai)

 Nama model Lawanya (Many to One)

buka pemeliharaan.py karena yang akan ditambahkan adalah pemeliharaan dengan kata lain mobil ini diservice oleh siapa penanggung jawabnya
lalu tambahkan dibawah  models_id = fields.Many2one dengan source code
pegawainya_id = fields.Many2one(
comodel_name='res.partner',
string='Penanggung Jawab'
)
comodel_name='res.partner' diambil dari models yang ada di partner.py inheritnya

lalu setelah itu tambahkan pada notebook bawah untuk bisa diketahui penanggungjawabnya dengan cara
buka stylerent_pemeliharaan.xml dan pada <!-- model.name form view -->
didalam notebook ditambahkan penanggunjawab yang memanggil id dari pegawainya_id menjadi code
              <notebook colspan='4'>
<page string="Deskripsi Service">
<field name="deskripsiservice"/>
</page>
<page string="Deskripsi Mobil">
<field name="models_id"/>
</page>
<page string="Penanggung Jawab">
<field name="pegawainya_id"/>
</page>
</notebook>
lalu restart server odoo dan upgrade, maka akan muncul sebagai berikut:
klik pada Operasional -> pemeliharaan (karena tadi menambahkan functionya pada pemeliharaan.xml)
lalu pilih jenis service yg dilakukan
lalu klik pada edit dan klik penanggung jawab dan isi dengan pegawai yang dimaksud seperti :

Filter penanggung jawab hanya pegawai nya saja

buka pemeliharaan.py pada pegawai_id tambahkan domain dibawah dengan ketentuan is_pegawainya(diambil dari res.partner atau models partner.py yg inherit ke res.partner) lalu dengan value True
dan berikut source code nya:
pegawainya_id = fields.Many2one(
comodel_name='res.partner',
string='Penanggung Jawab',
domain=[('is_pegawainya','=','True')]
)
setelah itu lakukan restart server odoo dan lakukan upgrade.
lalu kemenu pemeliharaan dan klik pada salah satu jenis service nya dan klik pada penanggung jawab lalu klik edit maka yang hanya keluar adalah pegawainya saja

saya menambahkan yuda juga dengan create pada data contact pilih customer dan klik create