Cara Menghilangkan Button Default Create dan Edit berdasarkan kondisi state
ODOO 14

 

Segala puji milik Allah. Yang mana sebelumnya kita patut memuji-Nya, patut meminta pertolongan-Nya dan memohon ampun kepada-Nya. Serta kita berlindung diri kepada-Nya dari keburukan diri kita dan kejelekan perbuatan yang ada pada diri kita. Siapa yang diberi hidayah oleh Allah maka tidak ada yang mampu menyesatkannya dan sebaliknya bagi siapa yang disesatkan oleh Allah maka tidak akan ada yang dapat memberinya hidayah. Saya juga bersaksi bahwa tidak ada tuhan (yang berhak disembah) selain Allah semata yang tidak ada sekutu bagi-Nya dan saya bersaksi bahwa Nabi Muhammad Shalallahu'alaihi wa sallam adalah hamba dan utusan-Nya.

Selanjutnya saya ucapkan Ahlan wa sahlan wa Baarokallohu fiikum jamii'an bagi para pembaca setia blog ini dan tidak lupa juga saya berdo'a semoga seluruh kaum muslimin yang sedang sakit diberikan kesehatan dan yang sehat selalu dijaga oleh Allah azza wa jalla dan selalu diberikan hidayah islam dan diatas sunnah Nabi kita (Muhammad) Shalallahu'alaihi wa salam. Aamiin..!. Untuk kali ini saya akan menulis sedikit hasil explore yang saya dapatkan mengenai customize dengan JS (Javascript) di ODOO14.

Dan pada kali ini saya akan memberitahukan cara untuk customize default ODOO yaitu Button Create dan Edit dengan kondisi state (status) pada record selfnya. untuk mengcustomizenya anda bisa mengikuti langkah-langkah berikut ini.

1. Buatlah modul baru dan dan masukkan source code berikut ke dalam file 'templates.xml' pada folder view.

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend_hide_button" name="Hide Button Assets"
inherit_id="web.assets_backend">
<xpath expr=".">
<script type="application/javascript"
src="/nama_modul/static/src/js/hide_button.js"/>
</xpath>
</template>
</odoo>

2. Buatlah file 'hide_button.js' dengan menyesuaikan penempatan (repositorynya) sesuai src='nama_modul/static/src/js/' pada code diatas, jika belum ada maka buat lah folder repositorynya dengan struktur:

nama_modul
...static
........src
...........js
..............hide_button.js

3. Kemudian masukkan source code berikut ini pada file 'hide_button.js'.

odoo.define('nama_modul.FormView', function (require) {
// 'use strict'
var FormView = require('web.FormView');
var Context = require('web.Context');
var core = require('web.core');
var FormController = require('web.FormController');
var FormRenderer = require('web.FormRenderer');
const { generateID } = require('web.utils');
var rpc = require('web.rpc');
var _lt = core._lt;
var BasicController = require('web.BasicController');
var Dialog = require('web.Dialog');
var dialogs = require('web.view_dialogs');
var qweb = core.qweb;

FormController.include({
getState: function () {
var self = this;
if (this.viewType === "form" && self.modelName === 'payment.request') {
if ( this.controlPanelProps.actionMenus != null){
if (this.controlPanelProps.actionMenus.activeIds[0] != ''){
rpc.query({
model: 'payment.request',
method: 'search_read',
args: [[['id','=',
this.controlPanelProps.actionMenus.activeIds[0]]],['id','name','state']],
}).then(function(ev){
if (ev[0]['state'] == 'draft' || ev[0]['state'] ==
'paid' || ev[0]['state'] == 'cancel') {
$(".o_form_button_edit").css("display","");
$(".o_form_button_create").css("display","");
} else {
$(".o_form_button_edit").css("display","none");
$(".o_form_button_create").css("display","none");
}
});
}
}
}
const state = this._super.apply(this, arguments);
const env = this.model.get(this.handle, {env: true});
state.id = env.currentId;
return state;
},
});
return FormController;
});

Penjelasan:

Dalam codingan ini saya menginherit Class FormController pada default ODOO dan memberi kondisi bahwa saya hanya mengcustomize Button Create dan Edit pada tampilan form di object 'payment.request'. Kondisi berikutnya Button Create dan Edit akan hanya muncul pada state (status)-nya bukan/selain draft, paid, dan cancel.

Mungkin cukup disini dulu untuk tuilsan blog saya kali ini dan semoga tulisan saya ini bermanfaat bagi saya dan pembaca. Jika ada pertanyaan atau mengalami kendala dalam pembahasan yang saya tulis bisa comment saja di blog ini, Jazakumullahu khorin wa baarokallahu fiikum..

How To Set Default User Groups When Create New User Odoo