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.

86 lines
3.6 KiB

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