From 88ccd2dfbd7b73cba84031b645a9bd68fc48c080 Mon Sep 17 00:00:00 2001 From: Abridbus Date: Mon, 24 Aug 2020 12:25:33 +0000 Subject: [PATCH] [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#57016 X-original-commit: 83239af1d396cf7f5aca37e33445405238fcfc48 Signed-off-by: Simon Goffin (sig) Co-authored-by: simongoffin --- addons/purchase_stock/models/account_invoice.py | 8 ++++++-- 1 file 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)