You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.8 KiB

  1. # Copyright 2019 Tecnativa - Vicent Cubells
  2. # Copyright 2019 Tecnativa - Carlos Dauden
  3. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  4. from odoo.addons.contract.tests.test_contract import TestContractBase
  5. class TestContractPriceRevision(TestContractBase):
  6. def execute_wizard(self):
  7. wizard = self.env['contract.price.revision.wizard'].create({
  8. 'date_start': '2018-02-15',
  9. 'variation_percent': 100.0,
  10. })
  11. wizard.with_context(
  12. {'active_ids': [self.contract.id]}).action_apply()
  13. def test_contract_price_revision_wizard(self):
  14. self.acct_line.copy({'automatic_price': True})
  15. self.assertEqual(len(self.contract.contract_line_ids.ids), 2)
  16. self.execute_wizard()
  17. self.assertEqual(len(self.contract.contract_line_ids.ids), 3)
  18. lines = self.contract.contract_line_ids.filtered(
  19. lambda x: x.price_unit == 200.0)
  20. self.assertEqual(len(lines), 1)
  21. def test_contract_price_revision_invoicing(self):
  22. self.acct_line.copy({'automatic_price': True})
  23. self.execute_wizard()
  24. invoice = self.contract.recurring_create_invoice()
  25. invoices = self.env['account.invoice'].search([
  26. ('invoice_line_ids.contract_line_id', 'in',
  27. self.contract.contract_line_ids.ids)])
  28. self.assertEqual(len(invoices), 1)
  29. lines = invoice.invoice_line_ids
  30. self.assertEqual(len(lines), 2)
  31. lines = lines.filtered(lambda x: x.price_unit == 100.0)
  32. self.assertEqual(len(lines), 1)
  33. invoice = self.contract.recurring_create_invoice()
  34. lines = invoice.invoice_line_ids
  35. self.assertEqual(len(lines), 2)
  36. lines = lines.filtered(lambda x: x.price_unit == 200.0)
  37. self.assertEqual(len(lines), 1)