mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[12.0][IMP] - sale line linked to contracts must not be invoiced from sale order
This commit is contained in:
@@ -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']
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 """
|
||||||
|
|||||||
Reference in New Issue
Block a user