Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
2 Risposte
1893 Visualizzazioni
I added a field to the product listings to calculate the profit margin. I use this formula:

for record in self:

record['x_studio_margen_de_utilidad'] = (record.list_price - record.standard_price) / record.list_price

What condition should I apply to the field to avoid errors in the database?

Avatar
Abbandona
Risposta migliore

Hi,


To prevent division-by-zero errors in your formula for calculating the profit margin in Odoo 17, you should ensure that record.list_price is not zero. This is important because dividing by zero will raise an exception and can disrupt the Odoo server or lead to incomplete record creation/updating.


You can wrap the calculation with a condition like this:


for record in self:
if record.list_price: # Implicitly checks that it's not zero or None
record['x_studio_margen_de_utilidad'] = (record.list_price - record.standard_price) / record.list_price
else:
record[
'x_studio_margen_de_utilidad'] = 0.0 # or any default value you prefe



If this is used in a computed field, make sure:


The field has store=True if you want it indexed and searchable.


You add both list_price and standard_price in the depends() decorator so that Odoo knows when to recompute.


Hope it helps

Avatar
Abbandona
Risposta migliore

I’d start by ensuring the universe doesn’t implode over a zero or negative list price—so, my first condition would be record.list_price > 0. After all, I'm not in the business of selling products with prices less than or equal to zero (unless we’ve entered some alternate dimension of reverse economics). Plus, dividing by zero isn’t just bad math; it’s a straight-up party pooper for your database. So, let’s keep things sensible and error-free!

And I guess sometimes you can sell product without any inventory which may result in standard price of 0 and the margin of 100%. 

Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
1
ago 25
477
0
mar 25
1737
0
feb 25
1361
3
ago 24
6147
1
apr 24
33