[IMP] - can't upsell or downsell a resiliated contract

This commit is contained in:
sbejaoui
2020-01-30 13:24:25 +01:00
committed by Ilyas
parent 924d3c85a2
commit 4450953113
4 changed files with 39 additions and 0 deletions

View File

@@ -17,6 +17,18 @@ class SaleOrder(models.Model):
compute='_compute_need_contract_creation' compute='_compute_need_contract_creation'
) )
@api.constrains('state')
def check_contact_is_not_resiliated(self):
for rec in self:
if rec.state not in (
'sale',
'done',
'cancel',
) and rec.order_line.filtered('contract_id.is_resiliated'):
raise ValidationError(
_("You can't upsell or downsell a resiliated contract")
)
@api.depends('order_line.contract_id', 'state') @api.depends('order_line.contract_id', 'state')
def _compute_need_contract_creation(self): def _compute_need_contract_creation(self):
for rec in self: for rec in self:

View File

@@ -67,6 +67,17 @@ class SaleOrderLine(models.Model):
help="Specify Interval for automatic renewal.", help="Specify Interval for automatic renewal.",
) )
@api.constrains('contract_id')
def check_contact_is_not_resiliated(self):
for rec in self:
if (
rec.order_id.state not in ('sale', 'done', 'cancel')
and rec.contract_id.is_resiliated
):
raise ValidationError(
_("You can't upsell or downsell a resiliated contract")
)
@api.multi @api.multi
@api.depends('product_id') @api.depends('product_id')
def _compute_contract_template_id(self): def _compute_contract_template_id(self):

View File

@@ -342,3 +342,18 @@ class TestSaleOrder(TransactionCase):
self.env['contract.contract'].search(action['domain']), self.env['contract.contract'].search(action['domain']),
self.sale.order_line.mapped('contract_id'), self.sale.order_line.mapped('contract_id'),
) )
def test_check_contact_is_not_resiliated(self):
self.contract.is_resiliated = True
with self.assertRaises(ValidationError):
self.order_line1.contract_id = self.contract
def test_check_contact_is_not_resiliated(self):
self.order_line1.contract_id = self.contract
self.sale.action_confirm()
self.contract.is_resiliated = True
self.sale.action_cancel()
with self.assertRaises(ValidationError):
self.sale.action_draft()
self.contract.is_resiliated = False
self.sale.action_draft()

View File

@@ -41,6 +41,7 @@
domain="['|',('contract_template_id','=',contract_template_id), domain="['|',('contract_template_id','=',contract_template_id),
('contract_template_id','=',False), ('contract_template_id','=',False),
('partner_id','=',parent.partner_id), ('partner_id','=',parent.partner_id),
('is_resiliated','=',False),
]"/> ]"/>
<field name="contract_line_id" <field name="contract_line_id"
attrs="{'invisible': [('is_contract', '=', False)]}" attrs="{'invisible': [('is_contract', '=', False)]}"