[MIG] account_mooncard_receipt_lost_transfer: migrate to 18.0

This commit is contained in:
Stéphan Sainléger
2026-08-04 10:29:46 +02:00
parent 949af68653
commit adeae4235d
9 changed files with 277 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import test_receipt_lost_transfer

View File

@@ -0,0 +1,144 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields
from odoo.tests.common import TransactionCase
import random
class TestReceiptLostTransfer(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.company = cls.env.ref('base.main_company')
cls.euro = cls.env.ref('base.EUR')
cls.country = cls.env.ref('base.fr')
cls.company.write({
'currency_id': cls.euro.id,
'country_id': cls.country.id,
})
cls.card_bank_account = cls.env['account.account'].create({
'code': '512199',
'name': 'Card prepaid account',
'account_type': 'asset_cash',
})
cls.expense_account = cls.env['account.account'].create({
'code': '6TESTXXX',
'name': 'Test Expense Account',
'account_type': 'expense',
})
cls.card_bank_journal = cls.env['account.journal'].create({
'type': 'bank',
'name': 'Card Test',
'code': 'CARD',
'default_account_id': cls.card_bank_account.id,
})
cls.card = cls.env['newgen.payment.card'].create({
'name': 'TESTCARD987',
'code': 'TST',
'company_id': cls.company.id,
'journal_id': cls.card_bank_journal.id,
})
def _create_transaction(self, values):
defaults = {
'company_id': self.company.id,
'card_id': self.card.id,
'date': fields.Datetime.now(),
'currency_id': self.euro.id,
'country_id': self.country.id,
'unique_import_id': 'TEST%s' % random.randrange(100000000),
'transaction_type': 'expense',
'expense_account_id': self.expense_account.id,
'description': 'Test transaction',
'vendor': 'Test vendor',
'vat_company_currency': 0,
'vat_rate': 0,
'total_company_currency': -100,
'receipt_lost': True,
}
defaults.update(values)
return self.env['newgen.payment.card.transaction'].create(defaults)
def _assert_receipt_lost(self, move, expected_receipt_lost):
self.assertEqual(
move.receipt_lost, expected_receipt_lost,
"%s: wrong receipt_lost" % move._name)
self.assertTrue(
move.mooncard_record,
"%s: mooncard_record should be True" % move._name)
for line in move.line_ids:
self.assertEqual(
line.receipt_lost, expected_receipt_lost,
"move line %s: wrong receipt_lost" % line.display_name)
self.assertTrue(
line.mooncard_record,
"move line %s: mooncard_record should be True" % line.display_name)
def test_expense_receipt_lost_true(self):
trans = self._create_transaction({
'receipt_lost': True,
})
trans.process_line()
self.assertEqual(trans.state, 'done')
invoice = trans.invoice_id
self.assertTrue(invoice, "Invoice should be generated")
self._assert_receipt_lost(invoice, True)
self._assert_receipt_lost(trans.bank_move_id, True)
def test_expense_receipt_lost_false(self):
trans = self._create_transaction({
'receipt_lost': False,
})
self.env['ir.attachment'].create({
'name': 'test_receipt.pdf',
'res_model': 'newgen.payment.card.transaction',
'res_id': trans.id,
'raw': b'test attachment content',
})
trans.process_line()
self.assertEqual(trans.state, 'done')
invoice = trans.invoice_id
self.assertTrue(invoice, "Invoice should be generated")
self._assert_receipt_lost(invoice, False)
self._assert_receipt_lost(trans.bank_move_id, False)
def test_bank_move_only_receipt_lost_true(self):
trans = self._create_transaction({
'receipt_lost': True,
'bank_move_only': True,
})
trans.process_line()
self.assertEqual(trans.state, 'done')
self.assertFalse(trans.invoice_id, "No invoice when bank_move_only")
bank_move = trans.bank_move_id
self.assertTrue(bank_move, "Bank move should be generated")
self._assert_receipt_lost(bank_move, True)
def test_bank_move_only_receipt_lost_false(self):
trans = self._create_transaction({
'receipt_lost': False,
'bank_move_only': True,
})
trans.process_line()
self.assertEqual(trans.state, 'done')
self.assertFalse(trans.invoice_id, "No invoice when bank_move_only")
bank_move = trans.bank_move_id
self.assertTrue(bank_move, "Bank move should be generated")
self._assert_receipt_lost(bank_move, False)
def test_load_receipt_lost_true(self):
self.company.transfer_account_id = self.card_bank_account.id
trans = self._create_transaction({
'transaction_type': 'load',
'receipt_lost': True,
'total_company_currency': 1000,
'expense_account_id': False,
})
trans.process_line()
self.assertEqual(trans.state, 'done')
self.assertFalse(trans.invoice_id, "Load should not generate an invoice")
bank_move = trans.bank_move_id
self.assertTrue(bank_move, "Bank move should be generated")
self._assert_receipt_lost(bank_move, True)