[12.0][IMP] - sale line linked to contracts must not be invoiced from sale order

This commit is contained in:
sbejaoui
2019-10-01 10:51:50 +02:00
committed by Ilyas
parent 5481afbeb6
commit 6cb39e62ec
3 changed files with 27 additions and 1 deletions

View File

@@ -107,7 +107,7 @@ class SaleOrder(models.Model):
def action_show_contracts(self): def action_show_contracts(self):
self.ensure_one() self.ensure_one()
action = self.env.ref( action = self.env.ref(
"contract.contract_contract_customer_form_view" "contract.action_customer_contract"
).read()[0] ).read()[0]
contracts = ( contracts = (
self.env['contract.line'] self.env['contract.line']

View File

@@ -231,3 +231,18 @@ class SaleOrderLine(models.Model):
return super( return super(
SaleOrderLine, self.filtered(lambda l: not l.contract_id) SaleOrderLine, self.filtered(lambda l: not l.contract_id)
).invoice_line_create(invoice_id, qty) ).invoice_line_create(invoice_id, qty)
@api.depends(
'qty_invoiced',
'qty_delivered',
'product_uom_qty',
'order_id.state',
'product_id.is_contract',
)
def _get_to_invoice_qty(self):
"""
sale line linked to contracts must not be invoiced from sale order
"""
res = super()._get_to_invoice_qty()
self.filtered('product_id.is_contract').update({'qty_to_invoice': 0.0})
return res

View File

@@ -110,6 +110,17 @@ class TestSaleOrder(TransactionCase):
contract_line.recurring_next_date, Date.to_date('2018-01-31') contract_line.recurring_next_date, Date.to_date('2018-01-31')
) )
def test_sale_order_invoice_status(self):
"""
sale line linked to contracts must not be invoiced from sale order
"""
self.sale.action_confirm()
self.assertEqual(self.order_line1.invoice_status, 'no')
invoice = self.order_line1.contract_id.recurring_create_invoice()
self.assertTrue(invoice)
self.assertEqual(self.order_line1.invoice_qty, 1)
self.assertEqual(self.order_line1.qty_to_invoice, 0)
def test_action_confirm_without_contract_creation(self): def test_action_confirm_without_contract_creation(self):
""" It should create a contract for each contract template used in """ It should create a contract for each contract template used in
order_line """ order_line """