Ocultando el costo del producto

14 de diciembre de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Muchas veces los dueños de una empresa nos piden que se oculten los costos de los productos, muchas veces para evitar problemas con el personal (no entremos en ese punto). Odoo es un sistema muy abierto, y muestra el costo de los productos por todas partes. 

En este post vamos a desarrollar un módulo que muestra como ocultar el costo. El módulo no es completo, solo es a modo de ejemplo debido a que oculta el costo solo para el product.template en la vista tipo tree y form. No lo oculta para el modelo product.product ni para vistas kanban y otras vistas (que son numerosas).

El módulo se llama product_hide_cost y lo pueden descargar de nuestro repositorio (se instala como cualquier módulo). Que es lo que hace? Primero crea un grupo llamado "Show Product Cost".


Los usuario que pertenecen a este grupo van a poder ver los costos. El grupo lo creamos de la siguiente manera

<record id="group_show_cost" model="res.groups">
<field name="name">Show Product Cost</field>
<field name="comment">Show Product Cost</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>

Bien, una vez creado el grupo debemos agregarle el atributo groups a la columna standard_price en las diferentes vistas, aca lo vamos a hacer para la vista tree

    <record id="view_cost_product_template_tree" model="ir.ui.view">
<field name="name">view.cost.product.template.tree</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_tree_view"></field>
<field name="arch" type="xml">
<field name="standard_price" position="attributes">
<attribute name="groups">product_hide_cost.group_show_cost</attribute>
</field>
</field>
</record>

Donde heredamos la vista tipo tree y luego para el campo standard_price le agregamos el atributo groups donde le indicamos que el campo puede ser mostrador por el group Show Product Cost.


Y luego para el formulario hacemos algo parecido, la diferencia es que en el formulario el costo no se muestra mediante un field sino que tenemos que ocultar todo el grupo donde se encuentra dicha información. Eso lo hacemos mediante un xpath

    <record id="view_cost_product_template_form" model="ir.ui.view">
<field name="name">view.cost.product.template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"></field>
<field name="arch" type="xml">
<xpath expr="//group[@name='group_standard_price']" position="attributes">
<attribute name="groups">product_hide_cost.group_show_cost</attribute>
</xpath>
</field>
</record>

Para que quede asi, como pueden ver necesita mas reformulacion la vista 


Como acabamos de aclarar, lo mismo se debe hacer para el resto de las vistas donde aparece el costo y para el modelo product.product

Gustavo Orrillo 14 de diciembre de 2023
Compartir
Archivar
Identificarse dejar un comentario