diff options
| author | Abridbus <bve@odoo.com> | 2020-08-24 12:25:33 +0000 |
|---|---|---|
| committer | Goffin Simon <sig@odoo.com> | 2020-09-03 09:34:01 +0000 |
| commit | fa545eb660ec63663eaa7ddd456f2ea20c113cef (patch) | |
| tree | 6c8388cfab75fc9641a2800796a5ad5a58d6e3a8 | |
| parent | 781bf9ec2eb5606d76ba3afa61cf06b5c3ac85fc (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.py | 8 |
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) |
