[IMP] - link contract line and its successor in upsel case

This commit is contained in:
sbejaoui
2018-11-26 15:17:24 +01:00
committed by Thomas Binsfeld
parent 4c7a314ef6
commit 6d7774885a
2 changed files with 32 additions and 26 deletions

View File

@@ -47,8 +47,8 @@ class SaleOrderLine(models.Model):
help="Repeat every (Days/Week/Month/Year)", help="Repeat every (Days/Week/Month/Year)",
copy=False, copy=False,
) )
date_start = fields.Date(string='Date Start',) date_start = fields.Date(string='Date Start')
date_end = fields.Date(string='Date End',) date_end = fields.Date(string='Date End')
contract_line_id = fields.Many2one( contract_line_id = fields.Many2one(
comodel_name="account.analytic.invoice.line", comodel_name="account.analytic.invoice.line",
@@ -57,9 +57,7 @@ class SaleOrderLine(models.Model):
copy=False, copy=False,
) )
is_auto_renew = fields.Boolean( is_auto_renew = fields.Boolean(
string="Auto Renew", string="Auto Renew", related="product_id.is_auto_renew", readonly=True
related="product_id.is_auto_renew",
readonly=True,
) )
@api.onchange('product_id') @api.onchange('product_id')
@@ -107,8 +105,7 @@ class SaleOrderLine(models.Model):
'discount': self.discount, 'discount': self.discount,
'date_end': self.date_end, 'date_end': self.date_end,
'date_start': self.date_start or fields.Date.today(), 'date_start': self.date_start or fields.Date.today(),
'recurring_next_date': 'recurring_next_date': contract_line_env._compute_first_recurring_next_date(
contract_line_env._compute_first_recurring_next_date(
self.date_start or fields.Date.today(), self.date_start or fields.Date.today(),
self.recurring_invoicing_type, self.recurring_invoicing_type,
self.recurring_rule_type, self.recurring_rule_type,
@@ -120,10 +117,8 @@ class SaleOrderLine(models.Model):
'is_auto_renew': self.product_id.is_auto_renew, 'is_auto_renew': self.product_id.is_auto_renew,
'auto_renew_interval': self.product_id.auto_renew_interval, 'auto_renew_interval': self.product_id.auto_renew_interval,
'auto_renew_rule_type': self.product_id.auto_renew_rule_type, 'auto_renew_rule_type': self.product_id.auto_renew_rule_type,
'termination_notice_interval': 'termination_notice_interval': self.product_id.termination_notice_interval,
self.product_id.termination_notice_interval, 'termination_notice_rule_type': self.product_id.termination_notice_rule_type,
'termination_notice_rule_type':
self.product_id.termination_notice_rule_type,
'contract_id': contract.id, 'contract_id': contract.id,
'sale_order_line_id': self.id, 'sale_order_line_id': self.id,
} }
@@ -133,10 +128,18 @@ class SaleOrderLine(models.Model):
contract_line_env = self.env['account.analytic.invoice.line'] contract_line_env = self.env['account.analytic.invoice.line']
contract_line = self.env['account.analytic.invoice.line'] contract_line = self.env['account.analytic.invoice.line']
for rec in self: for rec in self:
contract_line |= contract_line_env.create( new_contract_line = contract_line_env.create(
rec._prepare_contract_line_values(contract) rec._prepare_contract_line_values(contract)
) )
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)
rec.contract_line_id.successor_contract_line_id = (
new_contract_line
)
new_contract_line.predecessor_contract_line_id = (
self.contract_line_id.id
)
return contract_line return contract_line
@api.constrains('contract_id') @api.constrains('contract_id')

View File

@@ -58,8 +58,7 @@ class TestSaleOrder(TransactionCase):
{ {
"name": "Test Contract 2", "name": "Test Contract 2",
"partner_id": self.sale.partner_id.id, "partner_id": self.sale.partner_id.id,
"pricelist_id": "pricelist_id": self.sale.partner_id.property_product_pricelist.id,
self.sale.partner_id.property_product_pricelist.id,
"recurring_invoices": True, "recurring_invoices": True,
"contract_type": "purchase", "contract_type": "purchase",
"contract_template_id": self.contract_template1.id, "contract_template_id": self.contract_template1.id,
@@ -129,10 +128,7 @@ class TestSaleOrder(TransactionCase):
self.order_line1.recurring_invoicing_type, self.order_line1.recurring_invoicing_type,
self.product1.recurring_invoicing_type, self.product1.recurring_invoicing_type,
) )
self.assertEqual( self.assertEqual(self.order_line1.date_end, Date.to_date('2019-01-01'))
self.order_line1.date_end,
Date.to_date('2019-01-01'),
)
def test_check_contract_sale_partner(self): def test_check_contract_sale_partner(self):
"""Can't link order line to a partner contract different then the """Can't link order line to a partner contract different then the
@@ -214,6 +210,13 @@ class TestSaleOrder(TransactionCase):
self.assertEqual( self.assertEqual(
self.contract_line.date_end, Date.to_date("2018-06-01") self.contract_line.date_end, Date.to_date("2018-06-01")
) )
self.assertFalse( self.assertFalse(self.contract_line.is_auto_renew)
self.contract_line.is_auto_renew new_contract_line = self.env['account.analytic.invoice.line'].search(
[('sale_order_line_id', '=', self.order_line1.id)]
)
self.assertEqual(
self.contract_line.successor_contract_line_id, new_contract_line
)
self.assertEqual(
new_contract_line.predecessor_contract_line_id, self.contract_line
) )