diff --git a/product_contract/__manifest__.py b/product_contract/__manifest__.py index fc857821..d1dc37ee 100644 --- a/product_contract/__manifest__.py +++ b/product_contract/__manifest__.py @@ -7,15 +7,10 @@ 'version': '12.0.1.0.0', 'category': 'Contract Management', 'license': 'AGPL-3', - 'author': "LasLabs, " - "ACSONE SA/NV, " - "Odoo Community Association (OCA)", + 'author': "LasLabs, " "ACSONE SA/NV, " "Odoo Community Association (OCA)", 'website': 'https://github.com/oca/contract', 'depends': ['product', 'contract_sale'], - 'data': [ - 'views/product_template.xml', - 'views/sale_order.xml', - ], + 'data': ['views/product_template.xml', 'views/sale_order.xml'], 'installable': True, 'application': False, } diff --git a/product_contract/models/sale_order_line.py b/product_contract/models/sale_order_line.py index 4a41c2a6..07195dcc 100644 --- a/product_contract/models/sale_order_line.py +++ b/product_contract/models/sale_order_line.py @@ -2,6 +2,7 @@ # Copyright 2017 ACSONE SA/NV. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from dateutil.relativedelta import relativedelta from odoo import api, fields, models, _ from odoo.exceptions import ValidationError @@ -105,20 +106,23 @@ class SaleOrderLine(models.Model): 'discount': self.discount, 'date_end': self.date_end, 'date_start': self.date_start or fields.Date.today(), - 'recurring_next_date': contract_line_env._compute_first_recurring_next_date( - self.date_start or fields.Date.today(), - self.recurring_invoicing_type, - self.recurring_rule_type, - self.recurring_interval, - ), + 'recurring_next_date': + contract_line_env._compute_first_recurring_next_date( + self.date_start or fields.Date.today(), + self.recurring_invoicing_type, + self.recurring_rule_type, + self.recurring_interval, + ), 'recurring_interval': self.recurring_interval, 'recurring_invoicing_type': self.recurring_invoicing_type, 'recurring_rule_type': self.recurring_rule_type, 'is_auto_renew': self.product_id.is_auto_renew, 'auto_renew_interval': self.product_id.auto_renew_interval, 'auto_renew_rule_type': self.product_id.auto_renew_rule_type, - 'termination_notice_interval': self.product_id.termination_notice_interval, - 'termination_notice_rule_type': self.product_id.termination_notice_rule_type, + 'termination_notice_interval': + self.product_id.termination_notice_interval, + 'termination_notice_rule_type': + self.product_id.termination_notice_rule_type, 'contract_id': contract.id, 'sale_order_line_id': self.id, } @@ -133,7 +137,9 @@ class SaleOrderLine(models.Model): ) contract_line |= new_contract_line if rec.contract_line_id: - rec.contract_line_id.stop(rec.date_start) + rec.contract_line_id.stop( + rec.date_start - relativedelta(days=1) + ) rec.contract_line_id.successor_contract_line_id = ( new_contract_line ) diff --git a/product_contract/tests/test_sale_order.py b/product_contract/tests/test_sale_order.py index de46f93c..5409ebc3 100644 --- a/product_contract/tests/test_sale_order.py +++ b/product_contract/tests/test_sale_order.py @@ -208,7 +208,7 @@ class TestSaleOrder(TransactionCase): self.order_line1.onchange_product() self.sale.action_confirm() self.assertEqual( - self.contract_line.date_end, Date.to_date("2018-06-01") + self.contract_line.date_end, Date.to_date("2018-05-31") ) self.assertFalse(self.contract_line.is_auto_renew) new_contract_line = self.env['account.analytic.invoice.line'].search(