Editando la moneda del producto

19 de abril de 2024 por
Gustavo Orrillo
| Sin comentarios aún
 

Meses atrás hablamos de como definir de forma automática la moneda del producto, lo hicimos con el post "Definiendo el USD como la moneda para costos y precios". En ese post introducíamos un módulo, product_usd_currency, el cual definía de forma automática como moneda del producto el USD.

El día de hoy le hicimos un par de cambios a dicho módulo. Primero hicimos visibles los campos de monedas en el formulario del producto.


Y si queremos modificar la moneda...


Quedo muy bonito... bueno, ahora vamos a resolver el siguiente problema, que es tener actualizado el tipo de cambio USD de forma automática con datos de AFIP.

Notas técnicas

Para hacer que un campo deje de ser invisible, solo hay que modificar su atributo invisible a False, como lo hacemos a continuación

    <record id="product_template_cost_usd_form" model="ir.ui.view">
<field name="name">product.template.cost.usd.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<field name="currency_id" position="attributes">
<attribute name="invisible">False</attribute>
</field>
<field name="cost_currency_id" position="attributes">
<attribute name="invisible">False</attribute>
</field>
</field>
</record>

Por último, los campos currency_id y cost_currency_id son campos computados (debido a que cada vez que se cambia la compañía, se cambia la moneda del producto). Ahora hay situaciones en las que necesitamos definir manualmente el valor de un campo computado. Para ello utilizamos la función inverse de la definición del campo computado. Y ahí realizamos todos los cambios que necesitamos hacer (muchas veces no tenemos que  hacer nada, como en esta ocasión)

    currency_id = fields.Many2one(
'res.currency','Currency',
compute='_compute_currency_id',
​inverse='_inverse_currency_id')
cost_currency_id = fields.Many2one(
'res.currency','Currency',
compute='_compute_currency_id',
​ inverse='_inverse_currency_id')

def _inverse_currency_id(self):
pass
Gustavo Orrillo 19 de abril de 2024
Compartir
Archivar
Identificarse dejar un comentario