summaryrefslogtreecommitdiff
path: root/addons/account/tests/test_payment.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-09-20 14:16:48 +0000
committerChristophe Simonis <chs@odoo.com>2019-09-20 14:33:54 +0000
commit58a83d12228fbbd4e9dde542e133d264204ee0f3 (patch)
tree60aaf45e3281e88fddc58fea8fe75de0ad4e2f46 /addons/account/tests/test_payment.py
parentf6da4d57bcc8e19ae0bd6d571926706bee46e08f (diff)
parent4a1321bc99dd7d8d153aceb2d0076161ce28bcd7 (diff)
[MERGE] forward port branch saas-12.4 up to 4a1321bc99d
closes odoo/odoo#37127 Signed-off-by: Christophe Simonis <chs@odoo.com>
Diffstat (limited to 'addons/account/tests/test_payment.py')
-rw-r--r--addons/account/tests/test_payment.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/addons/account/tests/test_payment.py b/addons/account/tests/test_payment.py
index ade019768ea..557a482d34f 100644
--- a/addons/account/tests/test_payment.py
+++ b/addons/account/tests/test_payment.py
@@ -33,6 +33,8 @@ class TestPayment(AccountingTestCase):
self.bank_journal_euro = self.env['account.journal'].create({'name': 'Bank', 'type': 'bank', 'code': 'BNK67'})
self.account_eur = self.bank_journal_euro.default_debit_account_id
+ self.cash_journal_euro = self.env['account.journal'].create({'name': 'Cash', 'type': 'cash', 'code': 'CASH'})
+
self.bank_journal_usd = self.env['account.journal'].create({'name': 'Bank US', 'type': 'bank', 'code': 'BNK68', 'currency_id': self.currency_usd_id})
self.account_usd = self.bank_journal_usd.default_debit_account_id
@@ -425,3 +427,119 @@ class TestPayment(AccountingTestCase):
# The invoice should now be paid
self.assertEqual(invoice.invoice_payment_state, 'paid', "Invoice should be in 'paid' state after having reconciled the two payments with a bank statement")
+
+ def test_payment_cancel_keep_name(self):
+ self.bank_journal_euro.update_posted = True
+
+ payment = self.payment_model.create({
+ 'payment_type': 'inbound',
+ 'payment_method_id': self.payment_method_manual_in.id,
+ 'partner_type': 'customer',
+ 'partner_id': self.partner_agrolait.id,
+ 'amount': 90,
+ 'payment_date': time.strftime('%Y') + '-07-15',
+ 'payment_difference_handling': 'reconcile',
+ 'journal_id': self.bank_journal_euro.id,
+ })
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 1)
+ name = payment.move_line_ids.mapped('move_id').name
+ self.assertTrue(name)
+
+ payment.cancel()
+ self.assertFalse(payment.move_line_ids.mapped('move_id'))
+ payment.action_draft()
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 1)
+ self.assertEqual(name, payment.move_line_ids.mapped('move_id').name)
+
+ def test_payment_transfer_cancel_keep_names(self):
+ self.bank_journal_euro.update_posted = True
+ self.cash_journal_euro.update_posted = True
+
+ payment = self.payment_model.create({
+ 'payment_type': 'transfer',
+ 'payment_method_id': self.payment_method_manual_out.id,
+ 'amount': 90,
+ 'payment_date': time.strftime('%Y') + '-07-15',
+ 'journal_id': self.bank_journal_euro.id,
+ 'destination_journal_id': self.cash_journal_euro.id,
+ })
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 2)
+
+ all_moves = payment.move_line_ids.mapped('move_id')
+ move = all_moves.filtered(lambda m: m.journal_id == self.bank_journal_euro)
+ transfer_move = all_moves - move
+ self.assertEqual(transfer_move.journal_id, self.cash_journal_euro)
+
+ name = move.name
+ transfer_name = transfer_move.name
+ self.assertTrue(name)
+ self.assertTrue(transfer_name)
+ self.assertNotEqual(name, transfer_name)
+
+ reconciled_lines = payment.move_line_ids.filtered(lambda l: l.reconciled)
+ self.assertEqual(len(reconciled_lines), 2)
+ self.assertEqual(reconciled_lines.mapped('move_id'), all_moves)
+
+ reconciled_lines.remove_move_reconcile()
+ payment.cancel()
+ self.assertFalse(payment.move_line_ids.mapped('move_id'))
+ payment.action_draft()
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 2)
+
+ all_moves = payment.move_line_ids.mapped('move_id')
+ move = all_moves.filtered(lambda m: m.journal_id == self.bank_journal_euro)
+ transfer_move = all_moves - move
+ self.assertEqual(transfer_move.journal_id, self.cash_journal_euro)
+
+ self.assertEqual(name, move.name)
+ self.assertEqual(transfer_name, transfer_move.name)
+
+ def test_payment_cancel_to_transfer(self):
+ self.bank_journal_euro.update_posted = True
+
+ payment = self.payment_model.create({
+ 'payment_type': 'inbound',
+ 'payment_method_id': self.payment_method_manual_in.id,
+ 'partner_type': 'customer',
+ 'partner_id': self.partner_agrolait.id,
+ 'amount': 90,
+ 'payment_date': time.strftime('%Y') + '-07-15',
+ 'payment_difference_handling': 'reconcile',
+ 'journal_id': self.bank_journal_euro.id,
+ })
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 1)
+ name = payment.move_line_ids.mapped('move_id').name
+ self.assertTrue(name)
+
+ payment.cancel()
+ self.assertFalse(payment.move_line_ids.mapped('move_id'))
+ payment.action_draft()
+
+ payment.write({
+ 'payment_type': 'transfer',
+ 'payment_method_id': self.payment_method_manual_out.id,
+ 'partner_id': False,
+ 'destination_journal_id': self.cash_journal_euro.id,
+ })
+
+ payment.post()
+ self.assertEqual(len(payment.move_line_ids.mapped('move_id')), 2)
+
+ all_moves = payment.move_line_ids.mapped('move_id')
+ move = all_moves.filtered(lambda m: m.journal_id == self.bank_journal_euro)
+ transfer_move = all_moves - move
+ self.assertEqual(transfer_move.journal_id, self.cash_journal_euro)
+
+ self.assertEqual(name, move.name)
+ self.assertTrue(transfer_move.name)
+ self.assertNotEqual(name, transfer_move.name)