Menghitung order.py
Buka order.py
Karena akan menghitung jumlah dari orderan yang mana kita akan menghitung dari Jenis sewa mobil yang dipilih maka masukan tambahkan compute di dalam kelas Ordermobil kelas pertama
lalu masukan oofcompute
jml_order = fields.Integer(compute='_compute_jml_order', string='Total Order')
@api.depends('detailjenis_ids')
def _compute_jml_order(self):
for record in self:
record.jml_order += len(record.detailjenis_ids)
len panjang jumlah pesanan ada berapa atau totalkan yang ada di detailjenis_ids atau Jumlah dari jenis sewa mobil yang dipilih
lalu tambahkan juga buaka menu stylerent_order.xml dan tambahkan
pada tree atau didepan menu order dan tambahkan juga didalamnya supaya formnya diketahui jumlah ordernya berapa dengan memanggil function jml_order yang
<!-- 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"/>
<field name="jml_order"/>
</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" />
<field name="jml_order"/>
</group>
Menghitung total harga yang harus dibayarkan
buat api model pada dibawah dari @api_depens dari jml_order dengan
total_order = fields.Integer(compute='_compute_total_order', string='Total yang harus dibayar')
@api.model
def _compute_total_order(self):
for record in self:
total = sum(self.env['stylerent.detailorder'].search([]).mapped('jumlahnya'))
record.total_order = total
dimana self.env diambil dari kelas detail order dan cari mapped atau yg berupa list karena yang berupa list adalah jumlahnya maka ambil jumlahnya (compute dari harga sewa dikali lama sewa) yang ada di kelas stylerent.detailorder
buka stylerent_order.xml
tambahkan di form 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" />
<field name="tanggal_pesan" />
</group>
<group>
<field name="jml_order"/>
<field name="total_order"/>
</group>
Restart server dan upgrade lalu akan muncul
Filter agar total order hanya by id saja
jumlahkan jumlahnya yang order id nya berdasarkan id foreign key atau order_id
tambahkan didalam search tadi
menjadi
total = sum(self.env['stylerent.detailorder'].search([('order_id','=', record.id)]).mapped('jumlahnya'))
lalu restart server odoo tanpa harus upgrade maka apabila kita memiliki orderan 2 orang tidak akan terjumlah semuanya melainkan by id yang ada
Apabila tidak menggunakan filter atau tidak diisi berdasarkan foreign keynya maka total yang harus dibayar akan terjumlah semua