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.

87 lines
3.6 KiB

  1. from odoo.tests.common import TransactionCase
  2. from odoo.modules.module import get_module_resource
  3. import base64
  4. import datetime
  5. class TestOfxFile(TransactionCase):
  6. """Tests for import bank statement ofx file format
  7. (account.bank.statement.import)
  8. """
  9. def setUp(self):
  10. super(TestOfxFile, self).setUp()
  11. self.absi_model = self.env['account.bank.statement.import']
  12. self.abs_model = self.env['account.bank.statement']
  13. self.j_model = self.env['account.journal']
  14. self.absl_model = self.env['account.bank.statement.line']
  15. cur = self.env.ref('base.USD')
  16. self.env.ref('base.main_company').currency_id = cur.id
  17. bank = self.env['res.partner.bank'].create({
  18. 'acc_number': '123456',
  19. 'partner_id': self.env.ref('base.main_partner').id,
  20. 'company_id': self.env.ref('base.main_company').id,
  21. 'bank_id': self.env.ref('base.res_bank_1').id,
  22. })
  23. self.env['account.journal'].create({
  24. 'name': 'Bank Journal TEST OFX',
  25. 'code': 'BNK12',
  26. 'type': 'bank',
  27. 'bank_account_id': bank.id,
  28. })
  29. bank_iban_ofx = self.env['res.partner.bank'].create({
  30. 'acc_number': 'FR7630001007941234567890185',
  31. 'partner_id': self.env.ref('base.main_partner').id,
  32. 'company_id': self.env.ref('base.main_company').id,
  33. 'bank_id': self.env.ref('base.res_bank_1').id,
  34. })
  35. self.env['account.journal'].create({
  36. 'name': 'FR7630001007941234567890185',
  37. 'code': 'BNK13',
  38. 'type': 'bank',
  39. 'bank_account_id': bank_iban_ofx.id,
  40. })
  41. def test_wrong_ofx_file_import(self):
  42. ofx_file_path = get_module_resource(
  43. 'account_bank_statement_import_ofx',
  44. 'tests/test_ofx_file/', 'test_ofx_wrong.ofx')
  45. ofx_file_wrong = base64.b64encode(open(ofx_file_path, 'rb').read())
  46. bank_statement = self.absi_model.create(
  47. dict(data_file=ofx_file_wrong))
  48. self.assertFalse(bank_statement._check_ofx(data_file=ofx_file_wrong))
  49. def test_ofx_file_import(self):
  50. ofx_file_path = get_module_resource(
  51. 'account_bank_statement_import_ofx',
  52. 'tests/test_ofx_file/', 'test_ofx.ofx')
  53. ofx_file = base64.b64encode(open(ofx_file_path, 'rb').read())
  54. bank_statement = self.absi_model.create(
  55. dict(data_file=ofx_file))
  56. bank_statement.import_file()
  57. bank_st_record = self.abs_model.search(
  58. [('name', 'like', '123456')])[0]
  59. self.assertEqual(bank_st_record.balance_start, 2516.56)
  60. self.assertEqual(bank_st_record.balance_end_real, 2156.56)
  61. line = self.absl_model.search([
  62. ('name', '=', 'Agrolait'),
  63. ('statement_id', '=', bank_st_record.id)])[0]
  64. self.assertEqual(line.ref, '219378')
  65. self.assertEqual(line.date, datetime.date(2013, 8, 24))
  66. def test_check_journal_bank_account(self):
  67. ofx_file_path = get_module_resource(
  68. 'account_bank_statement_import_ofx',
  69. 'tests/test_ofx_file/', 'test_ofx_iban.ofx')
  70. ofx_file = base64.b64encode(open(ofx_file_path, 'rb').read())
  71. bank_st = self.absi_model.create(
  72. dict(data_file=ofx_file))
  73. journal_iban_ofx = self.j_model.search([
  74. ('name', '=', 'FR7630001007941234567890185')])
  75. res = bank_st._check_journal_bank_account(journal_iban_ofx,
  76. '12345678901')
  77. self.assertTrue(res)
  78. bank_st.with_context(journal_id=journal_iban_ofx.id).import_file()