Klik Button Tanpa Save Record

Pada umumnya ketika input data baru di form view kemudian klik salah satu button maka akan otomatis save record ke database (jika belum save sebelumnya), sementara dalam kondisi tertentu kita belum ingin save data tersebut. Misalnya karna ada fields mandatory yang belum diisi atau kita ingin melakukan pengecekan sesuatu dulu sebelum save data, artinya datanya belum tentu akan disimpan karna tergantung hasil pengecekan tersebut.

Untuk mencapai tujuan itu kita bisa menggunakan field boolean dengan ditambahkan onchange dan menggunakan class btn. Maka fungsi yang akan dijalankan adalah fungsi onchange akan tetapi dalam bentuk button. Contohnya seperti berikut ini, saya ingin melakukan pengecekan total piutang customer ketika input sale order.

from odoo import models, fields, api

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    check_receivable = fields.Boolean()

    @api.onchange('check_receivable')
    def action_check_receivable(self):
        if self.partner_id :
            return {'warning': {'title': 'Credit Info', 'message': f'Credit total for {self.partner_id.display_name} is {self.partner_id.credit}'}}
<record id="view_order_form" model="ir.ui.view">
    <field name="name">sale.order.form</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale_management.sale_order_form_quote"/>
    <field name="arch" type="xml">
        <field name="sale_order_template_id" position="after">
            <label for="check_receivable" class="btn btn-sm btn-primary"/>
            <field name="check_receivable" invisible="1"/>
        </field>
    </field>
</record>

Dan hasilnya seperti berikut ini

Kekurangan dari cara ini adalah fungsi yang bisa dijalankan hanya fungsi yang terdapat pada onchange seperti assign value, memunculkan warning, dll. Tidak bisa melakukan beberapa fungsi button seperti menampilkan wizard, melakukan print, dll. Selamat mencoba.

spasi cuy
Tested on :

  • Operating system : Linux Mint 19.3
  • Odoo version : 12

spasi cuy
spasi cuy
spasi cuy

Terimakasih, semoga bermanfaat dan CMIIW…

Tutorial odoo/openerp Indonesia