Ejemplo n.º 1
0
    def test_optional_sorting_line(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Datum absteigend

                    In der CSV-Datei finden Sie alle bereits gebuchten Umsätze. Die vorgemerkten Umsätze werden nicht aufgenommen, auch wenn sie in Ihrem Internetbanking angezeigt werden.

                    {header}
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        self.assertEqual(len(transactions), 1)
Ejemplo n.º 2
0
    def test_extract_no_transactions(self):
        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    In der CSV-Datei finden Sie alle bereits gebuchten Umsätze. Die vorgemerkten Umsätze werden nicht aufgenommen, auch wenn sie in Ihrem Internetbanking angezeigt werden.

                    {header}
                    '''

                                  # NOQA
                                  ))

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        self.assertFalse(transactions)
    def test_bad_sorting_no_balances(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Betrag absteigend

                    {pre_header}

                    "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung"
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;USD;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        # 1 transaction + no balance assertion (not sorted by date)
        self.assertEqual(len(transactions), 1)
    def test_duplicate_waehrung_field_handled_correctly(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Datum absteigend

                    {pre_header}

                    "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung"
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;USD;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        # 1 transaction + 1 balance assertion
        # (opening balance cannot be calculated due to currency mismatch)
        self.assertEqual(len(transactions), 1 + 1)
        self.assertEqual(transactions[0].postings[0].units.currency, 'EUR')
    def test_optional_sorting_line(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Datum absteigend

                    {pre_header}

                    {header}
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        # 1 transaction + 2 balance assertions
        self.assertEqual(len(transactions), 1 + 2)
    def test_extract_no_transactions(self):
        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    {pre_header}

                    {header}
                    '''

                                  # NOQA
                                  ))

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        self.assertFalse(transactions)
    def test_ascending_by_date_single(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Datum aufsteigend

                    {pre_header}

                    "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung"
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            directives = importer.extract(fd)

        # 1 transaction + 2 balance assertions
        self.assertEqual(len(directives), 1 + 2)

        self.assertTrue(isinstance(directives[0], Transaction))

        # Test opening balance
        self.assertTrue(isinstance(directives[1], Balance))
        self.assertEqual(directives[1].date, date(2018, 6, 1))
        self.assertEqual(directives[1].amount.number, 1734.0)
        self.assertEqual(directives[1].amount.currency, 'EUR')

        # Test closing balance
        self.assertTrue(isinstance(directives[2], Balance))
        self.assertEqual(directives[2].date, date(2018, 7, 1))
        self.assertEqual(directives[2].amount.number, 1234.0)
        self.assertEqual(directives[2].amount.currency, 'EUR')
    def test_descending_by_date_multiple(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    Sortierung;Datum absteigend

                    {pre_header}

                    "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung"
                    15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.000,00;EUR;-100,00;EUR
                    15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.100,00;EUR;-100,00;EUR
                    08.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.200,00;EUR;-34,00;EUR
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        # 4 transactions + 2 balance assertions
        self.assertEqual(len(transactions), 4 + 2)
        # Test opening balance
        self.assertEqual(transactions[4].date, date(2018, 6, 1))
        self.assertEqual(transactions[4].amount.number, 1734.0)
        self.assertEqual(transactions[4].amount.currency, 'EUR')
        # Test closing balance
        self.assertEqual(transactions[5].date, date(2018, 7, 1))
        self.assertEqual(transactions[5].amount.number, 1000.0)
        self.assertEqual(transactions[5].amount.currency, 'EUR')
Ejemplo n.º 9
0
    def test_extract_transactions(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    In der CSV-Datei finden Sie alle bereits gebuchten Umsätze. Die vorgemerkten Umsätze werden nicht aufgenommen, auch wenn sie in Ihrem Internetbanking angezeigt werden.

                    {header}
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            transactions = importer.extract(fd)

        self.assertEqual(len(transactions), 1)

        self.assertEqual(transactions[0].date, datetime.date(2018, 6, 8))
        self.assertEqual(transactions[0].payee, 'REWE Filialen Voll')
        self.assertEqual(transactions[0].narration,
                         'Gutschrift REWE SAGT DANKE')

        self.assertEqual(len(transactions[0].postings), 1)
        self.assertEqual(transactions[0].postings[0].account,
                         'Assets:ING-DiBa:Extra')
        self.assertEqual(transactions[0].postings[0].units.currency, 'EUR')
        self.assertEqual(transactions[0].postings[0].units.number,
                         Decimal('-500.00'))
    def test_extract_transactions(self):
        with open(self.filename, 'wb') as fd:
            fd.write(
                self._format_data('''
                    Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00
                    ;Letztes Update: aktuell

                    IBAN;{formatted_iban}
                    Kontoname;Extra-Konto
                    Bank;ING-DiBa
                    Kunde;{user}
                    Zeitraum;01.06.2018 - 30.06.2018
                    Saldo;5.000,00;EUR

                    {pre_header}

                    {header}
                    08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR
                    '''

                                  # NOQA
                                  ))

        importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user)

        with open(self.filename) as fd:
            directives = importer.extract(fd)

        self.assertEqual(len(directives), 1)

        self.assertEqual(directives[0].date, datetime.date(2018, 6, 8))
        self.assertEqual(directives[0].payee, 'REWE Filialen Voll')
        self.assertEqual(directives[0].narration, 'Gutschrift REWE SAGT DANKE')

        self.assertEqual(len(directives[0].postings), 1)
        self.assertEqual(directives[0].postings[0].account,
                         'Assets:ING-DiBa:Extra')
        self.assertEqual(directives[0].postings[0].units.currency, 'EUR')
        self.assertEqual(directives[0].postings[0].units.number,
                         Decimal('-500.00'))