How can I hide the edit button in the purchase.order for a specific state?
Is there any exmaple ?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
How can I hide the edit button in the purchase.order for a specific state?
Is there any exmaple ?
Hi wizards,
I've found a solution for this, and that's working with js files. Here is the example
odoo.define('module.extension_name', function (require) { var FormView = require('web.FormView');
FormView.include({ load_record: function() { this._super.apply(this, arguments);
if (this.model === 'your.model') {
if (this.datarecord && (this.datarecord.state === 'state')) {
this.$buttons.find('.o_form_button_edit').css({'display':'none'});
}
else { this.$buttons.find('.o_form_button_edit').css({'display':''}); }
}
});
});
You also have to include the file in assets:
<?xml version="1.0" encoding="utf-8"?> <odoo> <data> <template id="assets_backend" name="account assets" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <script type="text/javascript" src="/path_to_js/static/src/js/file.js"/> </xpath> </template> </data> </odoo>
I don't really like this solution as, if you wan't to do this for a lot of models, you'll have to work with a lot of if and elses, incrementing a lot the cyclomatic complexity, but it's the only way I've found to hide that button (you can also disable it with css).
Hope it helps!
Regards,
Benjamin
how to include file in assets
Oh I forgot to include that detail!
Add the .xml file to your module manifest, in the data array, as any view you could've develop.
odoo.define('module.extension_name', function (require) { var FormView = require('web.FormView');
FormView.include({ init: function() { this._super.apply(this, arguments);
if (this.controllerParams.modelName === 'your.model') {
this.rendererParams.activeActions.edit = false;
}
});
});
its work
its hide full model edit but, i need to hide edit button to specific state please send a code to hide a edit button in purchase model for specific state......
It would be inheriting the form and adding edit='false' just like here:
<record model="ir.ui.view" id="view_stock_quant_form">
<field name="name">stock.quant.form</field>
<field name="model">stock.quant</field>
<field eval="10" name="priority"/>
<field name="arch" type="xml">
<form string="Inventory Valuation" create="false" edit="false">
<group>
<group>
<field name="product_id"/>
</group>
</form>
</field>
</record>
and where is the filter for the state?
This is just an example, it will not work for you anyways. Do not expect other people to solve your problems and you just copy and paste. Read the tips here, search some more and solve your own damn problems. Thats the way to go. Cheers
Hi Wizardz,
You can do this by creating a button where you set invisible on the attributes. In these attributes you can use the 'state not in' in order to hide the button when it is not in a specific state (or the other way around, when it is). An example of both:
<button name="your_action" string="Your text" type="object" attrs="{'invisible': [('state','not in', ('purchase','done'))]}"/> <button name="your_other_action" string="Your other text" type="object" attrs="{'invisible': [('state', 'in', ('draft','sent','to approve'))]}"/>
Regards,
Yenthe
but those are not doing the same as the edit?
how to remove the edit button from purchase order
with some user rights or you do it in the odoo js like this:
if (this.model === 'purchase.order') {
this is wrong answer
u didn't git the question
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
|
1
May 17
|
2436 | ||
|
6
Dec 17
|
7601 | ||
|
5
Sep 20
|
11375 | ||
|
1
May 18
|
5875 | ||
|
1
Mar 15
|
4127 |