From 3c882b676477634a02da60ca8cb573ad6730a3c8 Mon Sep 17 00:00:00 2001 From: sbejaoui Date: Fri, 2 Nov 2018 17:13:36 +0100 Subject: [PATCH] [FIX] - Remove recurring_next_date from sale order line recurring_next_date should be computed by contract line to get default value --- product_contract/models/contract_line.py | 2 +- product_contract/models/sale_order.py | 14 +++++++------- product_contract/models/sale_order_line.py | 13 ++++++------- product_contract/views/sale_order.xml | 3 --- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/product_contract/models/contract_line.py b/product_contract/models/contract_line.py index 998da169..101e544c 100644 --- a/product_contract/models/contract_line.py +++ b/product_contract/models/contract_line.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, _ +from odoo import fields, models class AccountAnalyticInvoiceLine(models.Model): diff --git a/product_contract/models/sale_order.py b/product_contract/models/sale_order.py index a2e8487d..e53fbb91 100644 --- a/product_contract/models/sale_order.py +++ b/product_contract/models/sale_order.py @@ -26,6 +26,7 @@ class SaleOrder(models.Model): line_to_create_contract = rec.order_line.filtered( lambda r: not r.contract_id ) + line_to_update_contract = rec.order_line.filtered('contract_id') for contract_template in line_to_create_contract.mapped( 'product_id.contract_template_id' ): @@ -47,7 +48,6 @@ class SaleOrder(models.Model): contract._onchange_contract_template_id() order_lines.create_contract_line(contract) order_lines.write({'contract_id': contract.id}) - line_to_update_contract = rec.order_line.filtered('contract_id') for line in line_to_update_contract: line.create_contract_line(line.contract_id) return super(SaleOrder, self).action_confirm() @@ -64,10 +64,10 @@ class SaleOrder(models.Model): action = self.env.ref( "contract.action_account_analytic_sale_overdue_all" ).read()[0] - contracts = self.env['account.analytic.invoice.line'].search([ - ('sale_order_line', 'in', self.order_line.ids) - ]).mapped('contract_id') - action["domain"] = [ - ("id", "in", contracts.ids) - ] + contracts = ( + self.env['account.analytic.invoice.line'] + .search([('sale_order_line_id', 'in', self.order_line.ids)]) + .mapped('contract_id') + ) + action["domain"] = [("id", "in", contracts.ids)] return action diff --git a/product_contract/models/sale_order_line.py b/product_contract/models/sale_order_line.py index 1c13fdad..70e868c4 100644 --- a/product_contract/models/sale_order_line.py +++ b/product_contract/models/sale_order_line.py @@ -20,7 +20,7 @@ class SaleOrderLine(models.Model): comodel_name='account.analytic.contract', string='Contract Template', related='product_id.product_tmpl_id.contract_template_id', - readonly=True + readonly=True, ) recurring_rule_type = fields.Selection( [ @@ -50,9 +50,6 @@ class SaleOrderLine(models.Model): ) date_start = fields.Date(string='Date Start', default=fields.Date.today()) date_end = fields.Date(string='Date End', index=True) - recurring_next_date = fields.Date( - default=fields.Date.today(), copy=False, string='Date of Next Invoice' - ) @api.onchange('product_id') def onchange_product(self): @@ -74,8 +71,6 @@ class SaleOrderLine(models.Model): 'uom_id': self.product_uom.id, 'price_unit': self.price_unit, 'discount': self.discount, - 'recurring_next_date': self.recurring_next_date - or fields.Date.today(), 'date_end': self.date_end, 'date_start': self.date_start or fields.Date.today(), 'recurring_interval': self.recurring_interval, @@ -87,9 +82,13 @@ class SaleOrderLine(models.Model): @api.multi def create_contract_line(self, contract): + contract_line_env = self.env['account.analytic.invoice.line'] contract_line = self.env['account.analytic.invoice.line'] for rec in self: - contract_line.create(rec._prepare_contract_line_values(contract)) + contract_line |= contract_line_env.create( + rec._prepare_contract_line_values(contract) + ) + contract_line._onchange_date_start() @api.constrains('contract_id') def _check_contract_sale_partner(self): diff --git a/product_contract/views/sale_order.xml b/product_contract/views/sale_order.xml index 70397c32..4443c39d 100644 --- a/product_contract/views/sale_order.xml +++ b/product_contract/views/sale_order.xml @@ -56,7 +56,6 @@ - @@ -68,8 +67,6 @@ attrs="{'column_invisible': [('parent.is_contract', '=', False)]}"/> -