diff --git a/contract_payment_mode/hooks.py b/contract_payment_mode/hooks.py index 01ee2da2..5e68b6c3 100644 --- a/contract_payment_mode/hooks.py +++ b/contract_payment_mode/hooks.py @@ -13,7 +13,10 @@ def post_init_hook(cr, registry): with api.Environment.manage(): env = api.Environment(cr, SUPERUSER_ID, {}) m_contract = env['account.analytic.account'] - contracts = m_contract.search([('type', '=', 'contract')]) + contracts = m_contract.search([ + ('type', '=', 'contract'), + ('payment_mode_id', '=', False), + ]) if contracts: _logger.info('Setting payment mode: %d contracts' % len(contracts)) diff --git a/contract_payment_mode/tests/__init__.py b/contract_payment_mode/tests/__init__.py new file mode 100644 index 00000000..be86a7bf --- /dev/null +++ b/contract_payment_mode/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_contract_payment_init diff --git a/contract_payment_mode/tests/test_contract_payment_init.py b/contract_payment_mode/tests/test_contract_payment_init.py new file mode 100644 index 00000000..2056a162 --- /dev/null +++ b/contract_payment_mode/tests/test_contract_payment_init.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# © 2015 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp.tests.common import TransactionCase +from ..hooks import post_init_hook + + +class TestContractPaymentInit(TransactionCase): + # Use case : Prepare some data for current test case + def setUp(self): + super(TestContractPaymentInit, self).setUp() + self.payment_mode = self.env.ref('account_payment.payment_mode_1') + self.partner = self.env['res.partner'].create({ + 'name': 'Test contract partner', + 'customer_payment_mode': self.payment_mode.id, + }) + + def _contract_payment_mode_id(self, contract_id): + contract = self.env['account.analytic.account'].search([ + ('id', '=', contract_id), + ]) + return contract.payment_mode_id.id + + def test_post_init_hook(self): + contract = self.env['account.analytic.account'].create({ + 'name': 'Test contract', + 'type': 'contract', + 'partner_id': self.partner.id, + 'payment_mode_id': self.payment_mode.id, + }) + self.assertEqual(self._contract_payment_mode_id(contract.id), + self.payment_mode.id) + + contract.payment_mode_id = False + self.assertEqual(self._contract_payment_mode_id(contract.id), False) + + post_init_hook(self.cr, self.env) + self.assertEqual(self._contract_payment_mode_id(contract.id), + self.payment_mode.id)