[IMP] contract_variable_quantity: Recompute price when changing qty

If you have contract lines with automatic price and your pricelist
contains different prices per quantity, the price is not changed
when computing quantity.

This PR fixes this.
This commit is contained in:
Pedro M. Baeza
2018-04-24 13:22:37 +02:00
parent 8583c7f505
commit 833b08dc23
4 changed files with 12 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
# Copyright 2004-2010 OpenERP SA # Copyright 2004-2010 OpenERP SA
# Copyright 2014-2017 Tecnativa - Pedro M. Baeza # Copyright 2014-2018 Tecnativa - Pedro M. Baeza
# Copyright 2015 Domatix # Copyright 2015 Domatix
# Copyright 2016-2018 Tecnativa - Carlos Dauden # Copyright 2016-2018 Tecnativa - Carlos Dauden
# Copyright 2017 Tecnativa - Vicent Cubells # Copyright 2017 Tecnativa - Vicent Cubells
@@ -8,7 +8,7 @@
{ {
'name': 'Contracts Management - Recurring', 'name': 'Contracts Management - Recurring',
'version': '11.0.2.0.1', 'version': '11.0.2.0.2',
'category': 'Contract Management', 'category': 'Contract Management',
'license': 'AGPL-3', 'license': 'AGPL-3',
'author': "OpenERP SA, " 'author': "OpenERP SA, "

View File

@@ -3,7 +3,7 @@
# Copyright 2014 Angel Moya <angel.moya@domatix.com> # Copyright 2014 Angel Moya <angel.moya@domatix.com>
# Copyright 2016 Carlos Dauden <carlos.dauden@tecnativa.com> # Copyright 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# Copyright 2016-2017 LasLabs Inc. # Copyright 2016-2017 LasLabs Inc.
# Copyright 2015-2017 Tecnativa - Pedro M. Baeza # Copyright 2015-2018 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@@ -98,7 +98,9 @@ class AccountAnalyticInvoiceLine(models.Model):
for line in self: for line in self:
if line.automatic_price: if line.automatic_price:
product = line.product_id.with_context( product = line.product_id.with_context(
quantity=line.quantity, quantity=line.env.context.get(
'contract_line_qty', line.quantity,
),
pricelist=line.analytic_account_id.pricelist_id.id, pricelist=line.analytic_account_id.pricelist_id.id,
partner=line.analytic_account_id.partner_id.id, partner=line.analytic_account_id.partner_id.id,
date=line.env.context.get('old_date', fields.Date.today()), date=line.env.context.get('old_date', fields.Date.today()),

View File

@@ -1,10 +1,10 @@
# Copyright 2016 Tecnativa - Pedro M. Baeza # Copyright 2016-2018 Tecnativa - Pedro M. Baeza
# Copyright 2018 Tecnativa - Carlos Dauden # Copyright 2018 Tecnativa - Carlos Dauden
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'Variable quantity in contract recurrent invoicing', 'name': 'Variable quantity in contract recurrent invoicing',
'version': '11.0.1.2.0', 'version': '11.0.1.2.1',
'category': 'Contract Management', 'category': 'Contract Management',
'license': 'AGPL-3', 'license': 'AGPL-3',
'author': "Tecnativa," 'author': "Tecnativa,"

View File

@@ -38,6 +38,10 @@ class AccountAnalyticAccount(models.Model):
vals = {} vals = {}
else: else:
vals['quantity'] = qty vals['quantity'] = qty
# Re-evaluate price with this new quantity
vals['price_unit'] = line.with_context(
contract_line_qty=qty,
).price_unit
return vals return vals