summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbridbus <bve@odoo.com>2020-08-24 12:25:33 +0000
committerGoffin Simon <sig@odoo.com>2020-09-03 09:34:01 +0000
commitfa545eb660ec63663eaa7ddd456f2ea20c113cef (patch)
tree6c8388cfab75fc9641a2800796a5ad5a58d6e3a8
parent781bf9ec2eb5606d76ba3afa61cf06b5c3ac85fc (diff)
[FIX] stock-account: UserError on div by zero
With: - Anglo-saxon activated, - Costing Method: FIFO, - Inventory Valuation: Automated. Create a PO for product AAA, receive the product and archive it, create and try to POST the vendor bill. > This lead to a ZeroDivisionError: float division by zero The anglo-saxon entries cannot be generated as the product is not valued anymore. This commit is displaying a clearer error message for end users. more info from SLE on 2250451 opw-2307562, 2317338, 2320080, 2311843 Fine tuning of https://github.com/odoo/odoo/commit/8ce4db8ca04cd8e5266fc186b35deef76506da46 closes odoo/odoo#57007 X-original-commit: 83239af1d396cf7f5aca37e33445405238fcfc48 Signed-off-by: Simon Goffin (sig) <sig@openerp.com> Co-authored-by: simongoffin <sig@odoo.com>
-rw-r--r--addons/purchase_stock/models/account_invoice.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/addons/purchase_stock/models/account_invoice.py b/addons/purchase_stock/models/account_invoice.py
index 4dce189cfff..ac44ad6d5b2 100644
--- a/addons/purchase_stock/models/account_invoice.py
+++ b/addons/purchase_stock/models/account_invoice.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import api, fields, models
-from odoo.tools.float_utils import float_compare
+from odoo import api, fields, models, _
+from odoo.tools.float_utils import float_compare, float_is_zero
+from odoo.exceptions import UserError
class AccountMove(models.Model):
@@ -82,6 +83,9 @@ class AccountMove(models.Model):
move.company_id, valuation_date, round=False,
)
valuation_total_qty += layers_qty
+
+ if float_is_zero(valuation_total_qty, precision_rounding=line.product_uom_id.rounding or line.product_id.uom_id.rounding):
+ raise UserError(_('Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero.') % line.product_id.display_name)
valuation_price_unit = valuation_price_unit_total / valuation_total_qty
valuation_price_unit = line.product_id.uom_id._compute_price(valuation_price_unit, line.product_uom_id)