diff --git a/account_exception/demo/account_exception_demo.xml b/account_exception/demo/account_exception_demo.xml index 5e35b696..6a1317fd 100644 --- a/account_exception/demo/account_exception_demo.xml +++ b/account_exception/demo/account_exception_demo.xml @@ -10,13 +10,4 @@ - - No phone when posting - No phone when posting - 50 - account.move - failed = journal_entry._context.get('newState') == 'posted' and journal_entry.move_type == 'out_invoice' and not journal_entry.partner_id.phone - - - diff --git a/account_exception/models/account_move.py b/account_exception/models/account_move.py index 43a39b15..0a3075a7 100644 --- a/account_exception/models/account_move.py +++ b/account_exception/models/account_move.py @@ -18,6 +18,7 @@ class ExceptionRule(models.Model): 'account.move', string="Journal Entries") + class AccountMove(models.Model): _inherit = ['account.move', 'base.exception'] _name = "account.move" @@ -37,19 +38,8 @@ class AccountMove(models.Model): def _get_popup_action(self): return self.env.ref('account_exception.action_account_move_exception_confirm') - def write(self, vals): - print(f'\n\nwrite()\ncontext={self._context}\n') - newState = vals.get('state', '') - if not vals.get('ignore_exception'): - for journal_entry in self: - if journal_entry.with_context(newState=newState).detect_exceptions(): - return self._popup_exceptions() - return super().write(vals) - - def detect_exceptions(self): - print(f'\n\ndetect_exceptions()\ncontext={self._context}\n') - res = False - if not self._context.get("detect_exceptions"): - self = self.with_context(detect_exceptions=True) - res = super(AccountMove, self).detect_exceptions() - return res + def action_post(self): + self.ensure_one() + if self.detect_exceptions(): + return self._popup_exceptions() + return super().action_post() diff --git a/account_exception/tests/test_account_move_exception.py b/account_exception/tests/test_account_move_exception.py index 4e32c6c7..22b6717d 100644 --- a/account_exception/tests/test_account_move_exception.py +++ b/account_exception/tests/test_account_move_exception.py @@ -1,15 +1,16 @@ # from odoo.tests import common from odoo.addons.account.tests.common import AccountTestInvoicingCommon from odoo.tests import tagged +# from odoo.tests.common import Form @tagged('post_install', '-at_install') class TestAccountMoveException(AccountTestInvoicingCommon): - - def test_10_validation_on_write(self): + + def test_10_validation_on_post(self): self.env.user.groups_id += self.env.ref('analytic.group_analytic_accounting') - exception = self.env.ref('account_exception.excep_no_phone').sudo() - exception.active = True + exception = self.env.ref('account_exception.except_no_phone').sudo() + exception.active = True invoice = self.init_invoice('out_invoice', products=self.product_a) # must be exceptions when no phone and posting @@ -20,5 +21,4 @@ class TestAccountMoveException(AccountTestInvoicingCommon): # no exceptions when phone and posting invoice.partner_id.phone = '123' invoice.action_post() - self.assertTrue(invoice.exception_ids) - self.assertTrue(invoice.state='posted') \ No newline at end of file + self.assertFalse(invoice.exception_ids) diff --git a/account_exception/wizard/account_move_exception_confirm.py b/account_exception/wizard/account_move_exception_confirm.py index 6733fb06..3ef20ac2 100644 --- a/account_exception/wizard/account_move_exception_confirm.py +++ b/account_exception/wizard/account_move_exception_confirm.py @@ -23,5 +23,4 @@ class AccountMoveExceptionConfirm(models.TransientModel): def _action_ignore(self): self.related_model_id.ignore_exception = True super()._action_ignore() - # return self.related_model_id.action_post() - return True \ No newline at end of file + return self.related_model_id.action_post()