Beispiel #1
0
    def test_generate_transaction_id_idempotent(self):
        # GIVEN
        stl = statement.StatementLine(
            "one", date(2020, 3, 25), memo='123', amount=Decimal("12.43"))
        tid1 = statement.generate_transaction_id(stl)

        # WHEN
        # Subsequent calls with the same data generates exactly the same
        # transaction id
        tid2 = statement.generate_transaction_id(stl)

        # THEN
        self.assertEqual(tid1, tid2)
Beispiel #2
0
    def test_generate_transaction_id_identifying(self):
        # GIVEN
        stl = statement.StatementLine(
            "one", date(2020, 3, 25), memo='123', amount=Decimal("12.43"))
        tid1 = statement.generate_transaction_id(stl)

        # WHEN
        # Different data generates different transaction id
        stl.amount = Decimal("1.01")
        tid2 = statement.generate_transaction_id(stl)

        # THEN
        self.assertNotEqual(tid1, tid2)
Beispiel #3
0
 def to_statement_line(self, raw_records):
     ret =[]
     for record in raw_records:
         date = dateparser.parse(record['Data'])
         memo = record['Detalii tranzactie']
         line = StatementLine(date=date, memo=memo)
         if 'Credit' in  record:
             line.amount = D(record['Credit'].replace('.','').replace(',','.'))
             line.trntype = 'CREDIT'
         elif 'Debit' in record:
             line.amount = D(record['Debit'].replace('.','').replace(',','.'))
             line.trntype='DEBIT'
         else:
             raise ArgumentError
         if line.trntype=='CREDIT':
             r = re.compile('ordonator:?(?P<payee>.*)$', re.MULTILINE| re.IGNORECASE)
             m = r.search( memo)
             if m:
                 d = m.groupdict()
                 line.payee = d['payee']
                 line.trntype='XFER'
             #r = re.compile('din contul:?(?P<payee>.*)$', re.MULTILINE| re.IGNORECASE)
             #m = r.search( memo)
             #if m:
             #    d = m.groupdict()
             #    line.payee = d['payee']
             r = re.compile('referinta:?(?P<refnum>.*)$', re.MULTILINE| re.IGNORECASE)
             m = r.search( memo)
             if m:
                 d = m.groupdict()
                 line.refnum = line.check_no = d['refnum']
         line.id= generate_transaction_id(line)
         ret.append(line)
     return ret
Beispiel #4
0
    def parse_record(self, line):
        """Parse given transaction line and return StatementLine object
        """
        transaction = statement.StatementLine()

        transaction.date_user = datetime.strptime(line['operation_date'],
                                                  operation_date_format)
        if line['status'] != statuses['PROCESSING']:
            if self.user_date:
                transaction.date = transaction.date_user
            else:
                transaction.date = self.parse_datetime(line['processing_date'])
        transaction.memo = line['reason']
        transaction.amount = self._parse_decimal(line['account_amount'])
        transaction.payee = self.parse_payee(line['reason'])
        transaction.trntype = self.parse_type(transaction.amount)

        # as csv file does not contain explicit id of transaction, generating artificial one
        # using operation date as main date in all cases
        transaction.id = statement.generate_transaction_id(
            statement.StatementLine(date=transaction.date_user,
                                    memo=transaction.memo,
                                    amount=transaction.amount))

        return transaction
Beispiel #5
0
 def test_line1_interest_paid(self):
     l = self.statement.lines[1]
     self.assertEqual(l.amount, -34.56)
     self.assertEqual(l.memo, "Kapitalertragsteuer")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 12, 31, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
    def parse_record(self, line):
        """Parse a single record."""
        # Skip header line
        if self.cur_record == 1:
            return None

        # Skip lines without amount
        if line[7] == "0,00":
            return None

        # Account id
        if not self.statement.account_id:
            self.statement.account_id = line[0]

        # Currency
        if not self.statement.currency:
            self.statement.currency = line[6]

        # Cleanup parts
        line[7] = fix_amount_string(line[7])
        line[9] = clean_multiple_whitespaces(", ".join(line[9:]))

        # Create statement and fixup missing parts
        stmtline = super(LivebankCsvParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        return stmtline
Beispiel #7
0
    def parse_record(self, line):
        if self.cur_record == 1:
            return None

        if not getattr(self.statement, 'currency', None):
            self.statement.currency = line[6]

        sl = super(RaiffeisenPolbankParser, self).parse_record(line)
        sl.date_user = datetime.strptime(sl.date_user, self.date_format)

        if line[4]:
            sl.memo += " - " + line[4]

        sl.id = statement.generate_transaction_id(sl)

        if line[2].startswith("Polecenie przelewu"):
            sl.trntype = "XFER"
        elif line[2].startswith("Podatek"):
            sl.trntype = "FEE"
        elif line[2].startswith("Opłata"):
            sl.trntype = "SRVCHG"
        elif line[2].startswith("Odsetki"):
            sl.trntype = "INT"
        else:
            sl.trntype = "XFER"

        if getattr(self, 'swap_payee_and_memo', True):
            sl.memo, sl.payee = sl.payee, sl.memo

        return sl
 def test_line2_credit(self):
     line = self.statement.lines[2]
     self.assertEqual(line.amount, Decimal('500.00'))
     self.assertEqual(line.memo, "Eingang: XXX")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 12, 23, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line5_debit(self):
     l = self.statement.lines[5]
     self.assertEqual(l.amount, -100)
     self.assertEqual(l.memo, "Lastschrift Auftraggeber: A company Kundendaten: 000000000000 111111111111 Verwendungszweck: reason")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 7, 1, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line6_credit(self):
     l = self.statement.lines[6]
     self.assertEqual(l.amount, 123.60)
     self.assertEqual(l.memo, "Gutschrift Auftraggeber: A person Kundendaten: reason")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 7, 4, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line5_bonus(self):
     l = self.statement.lines[5]
     self.assertEqual(l.amount, 10.00)
     self.assertEqual(l.memo, "Prämie Foo")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 8, 13, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line4_elba_payment(self):
     l = self.statement.lines[4]
     self.assertEqual(l.amount, -175.16)
     self.assertEqual(l.memo, "ELBA-INTERNET VOM 29.06 UM 09:16 Empfänger: A person Verwendungszweck: Invoice number 10")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 7, 1, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line3_transfer_credit(self):
     l = self.statement.lines[3]
     self.assertEqual(l.amount, 20.30)
     self.assertEqual(l.memo, "Umbuchung von 003")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 9, 25, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line4_debit(self):
     l = self.statement.lines[4]
     self.assertEqual(l.amount, -1500)
     self.assertEqual(l.memo, "Auszahlung - XXX")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 8, 27, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line2_credit(self):
     l = self.statement.lines[2]
     self.assertEqual(l.amount, 500.00)
     self.assertEqual(l.memo, "Eingang: XXX")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 12, 23, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line0_interest_earned(self):
     l = self.statement.lines[0]
     self.assertEqual(l.amount, 12.23)
     self.assertEqual(l.memo, "Habenzinsen")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 12, 31, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
    def parse_record(self, line):
        """Parse a single record."""
        # Skip header line
        if self.cur_record == 1:
            return None

        # Skip lines without amount
        if line[7] == "0,00":
            return None

        # Account id
        if not self.statement.account_id:
            self.statement.account_id = line[0]

        # Currency
        if not self.statement.currency:
            self.statement.currency = line[6]

        # Cleanup parts
        line[7] = fix_amount_string(line[7])
        line[9] = clean_multiple_whitespaces(", ".join(line[9:]))

        # Create statement and fixup missing parts
        stmtline = super(LivebankCsvParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        return stmtline
Beispiel #18
0
    def parse_record(self, row):
        row = take(5, row)

        stmt_line = StatementLine()
        stmt_line.date = self.parse_datetime(row[0])
        _ = self.parse_datetime(row[1])  # TODO: ???
        stmt_line.refnum = row[2]
        stmt_line.memo = row[3]
        stmt_line.amount = row[4]

        #
        # Looks like SEB formats description for card transactions so it includes the actual purchase date
        # within e.g. 'WIRSTRÖMS PU/14-12-31' and it means that description is 'WIRSTRÖMS PU' while the actual
        # card operation is 2014-12-31.
        #
        # P.S. Wirströms Irish Pub is our favorite pub in Stockholm: http://www.wirstromspub.se
        #
        m = re.match('(.*)/([0-9]{2}-[0-9]{2}-[0-9]{2})$', stmt_line.memo)
        if m:
            card_memo, card_date = m.groups()
            if self.brief:
                stmt_line.memo = card_memo
            stmt_line.date_user = datetime.strptime(card_date, '%y-%m-%d')

        stmt_line.id = generate_transaction_id(stmt_line)
        return stmt_line
    def parse_record(self, line):
        """Parse a single record."""
        # Skip initial header
        if line[0] == 'Data':
            return None
        # Currency
        amount, currency = line[4].rsplit(" ", 1)
        line[4] = amount
        line.append(currency)
        if not self.statement.currency:
            self.statement.currency = currency

        # Create statement and fixup missing parts
        # line[9] = line[9].replace(',','.')
        stmtline = super(TMobilePLCSVParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        # Set global statement values
        self.statement.start_date = datetime.strptime(line[0],
                                                      self.date_format)
        # self.statement.start_balance = float(line[11].replace(',','.'))
        if not self.statement.end_date:
            self.statement.end_date = datetime.strptime(
                line[0], self.date_format)
        # if not self.statement.end_balance:
        # self.statement.end_balance = float(line[11].replace(',','.'))

        return stmtline
 def test_line3_service_fee(self):
     l = self.statement.lines[3]
     self.assertEqual(l.amount, -6.65)
     self.assertEqual(l.memo, "Entgelt Kontoführung")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
Beispiel #21
0
    def parse_record(self, line):
        """Parse a single record."""
        # Skip header line
        if self.cur_record == 1:
            return None

        # Account id
        if not self.statement.account_id:
            self.statement.account_id = line[0]

        # Currency
        if not self.statement.currency:
            self.statement.currency = line[3]

        # Save credit/debit on line[4]
        if line[4] == "0,00":
            line[4] = fix_amount_string(line[5])
        else:
            line[4] = "-{}".format(fix_amount_string(line[4]))

        # Create statement and fixup missing parts
        stmtline = super(IngDiBaCsvParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        return stmtline
Beispiel #22
0
    def parse_record(self, df_row):
        """Parse given transaction line and return StatementLine object
        """
        stmt_line = StatementLine()        

        # date field
        stmt_line.date = self.xls_date(
            self.df['Data Contabile'][self.df_row_idx])

        # amount field
        stmt_line.amount = self.df['Importo'][self.df_row_idx]
        
        # transaction type field
        if(stmt_line.amount < 0):
            stmt_line.trntype = "DEBIT"
        else:
            stmt_line.trntype = "CREDIT"

        # memo field        
        stmt_line.memo = self.df['Causale / Descrizione'][self.df_row_idx]
        if(pd.isnull(stmt_line.memo)):
            stmt_line.memo = ''

        # id field
        stmt_line.id = generate_transaction_id(stmt_line)
        #print(str(stmt_line))
        return stmt_line
Beispiel #23
0
    def parse_record(self, line):
        transaction = statement.StatementLine()

        transaction.date = datetime.strptime(
            line[('op_time' if line['op_time'] else 'tr_time')],
            av_time_format)

        transaction.amount = (float(line['debit']) if line['debit'] else 0) - (
            float(line['credit']) if line['credit'] else 0)

        transaction.trntype = parse_type(line['type'], transaction.amount)

        transaction.memo = line['description'] if line[
            'description'] else line['type']

        if line['MCC']:
            transaction.memo = "%s, %s" % (transaction.memo, line['MCC'])

        if line['card']:
            transaction.memo = "%s, %s" % (transaction.memo, line['card'])

        # as csv file does not contain explicit id of transaction, generating artificial one
        transaction.id = statement.generate_transaction_id(transaction)

        if transaction.trntype:
            return transaction
        else:
            return None
    def parse_record(self, line):
        """Parse a single record."""
        # Skip initial header
        if line[0] == 'Data':
            return None
        # Currency
        amount, currency = line[4].rsplit(" ", 1)
        line[4] = amount
        line.append(currency)
        if not self.statement.currency:
            self.statement.currency = currency

        # Create statement and fixup missing parts
        # line[9] = line[9].replace(',','.')
        stmtline = super(TMobilePLCSVParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        # Set global statement values
        self.statement.start_date = datetime.strptime(line[0], self.date_format)
        # self.statement.start_balance = float(line[11].replace(',','.'))
        if not self.statement.end_date:
            self.statement.end_date = datetime.strptime(line[0], self.date_format)
        # if not self.statement.end_balance:
            # self.statement.end_balance = float(line[11].replace(',','.'))

        return stmtline
    def parse_record(self, line):
        if self.cur_record == 1:
            return None
        
        if not getattr(self.statement, 'currency', None):
            self.statement.currency = line[6]
        
        sl = super(RaiffeisenPolbankParser, self).parse_record(line)
        sl.date_user = datetime.strptime(sl.date_user, self.date_format)

        if line[4]:
            sl.memo += " - " + line[4]  

        sl.id = statement.generate_transaction_id(sl)
        
        if line[2].startswith("Polecenie przelewu"):
            sl.trntype = "XFER"
        elif line[2].startswith("Podatek"):
            sl.trntype = "FEE"
        elif line[2].startswith("Opłata"):
            sl.trntype = "SRVCHG"
        elif line[2].startswith("Odsetki"):
            sl.trntype = "INT"
        else:
            sl.trntype = "XFER"

        if getattr(self, 'swap_payee_and_memo', True):
            sl.memo, sl.payee = sl.payee, sl.memo
            
        return sl
    def parse_record(self, line):
        """Parse a single record."""
        # Extract check_no/id
        description = line[1]
        del line[1]

        # Get check_no from description
        line.insert(1, self.extract_check_no(description))

        # Get memo and payee from description
        tt = self.extract_description(description)
        line.insert(2, tt[0])
        line.insert(3, tt[1])
        # line.insert(2, self.extract_description(description))

        # Account id
        if not self.statement.account_id:
            self.statement.account_id = line[0]

        # Currency
        if not self.statement.currency:
            self.statement.currency = line[7]

        # Cleanup parts
        line[6] = fix_amount_string(line[6])
        line[2] = clean_multiple_whitespaces(line[2])
        line[3] = clean_multiple_whitespaces(line[3])

        # Create statement and fixup missing parts
        stmtline = super(EasybankGiroCsvParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        return stmtline
 def test_line0_interest_earned(self):
     line = self.statement.lines[0]
     self.assertEqual(line.amount, Decimal('12.23'))
     self.assertEqual(line.memo, "Habenzinsen")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 12, 31, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line5_bonus(self):
     line = self.statement.lines[5]
     self.assertEqual(line.amount, Decimal('10.00'))
     self.assertEqual(line.memo, "Prämie Foo")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 8, 13, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
Beispiel #29
0
    def parse_record(self, line):
        transaction = statement.StatementLine()

        if not line['status'] == 'OK':
            print("Notice: Skipping line %d: Transaction time %s status is %s." % (
                self.cur_record, line['op_time'], line['status']))
            return None

        if not self.statement.currency:
            self.statement.currency = line['currency']

        if not line['currency'] == self.statement.currency:
            print("Transaction %s currency '%s' differ from account currency '%s'." % (
                line['op_time'], line['currency'], self.statement.currency))
            return None

        transaction.date = datetime.strptime(line['op_time'], t_time_format)

        transaction.amount = Decimal(line['amount'].replace(',', '.'))

        transaction.trntype = parse_type(line['description'], transaction.amount)

        transaction.memo = "%s: %s" % (line['category'], line['description'])

        self._append_to_memo(transaction, line, 'MCC')
        self._append_to_memo(transaction, line, 'card')

        # as csv file does not contain explicit id of transaction, generating artificial one
        transaction.id = statement.generate_transaction_id(transaction)

        if transaction.trntype:
            return transaction
        else:
            return None
 def test_line2_service_fee_print_statement(self):
     l = self.statement.lines[2]
     self.assertEqual(l.amount, -0.11)
     self.assertEqual(l.memo, "Entgelt Kontoauszug")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line0_interest_earned(self):
     l = self.statement.lines[0]
     self.assertEqual(l.amount, 0.58)
     self.assertEqual(l.memo, "0,125 % p.a. Habenzinsen ab 01.04.13")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line1_interest_paid(self):
     l = self.statement.lines[1]
     self.assertEqual(l.amount, -0.15)
     self.assertEqual(l.memo, "Kapitalertragsteuer")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line0_interest_earned(self):
     line = self.statement.lines[0]
     self.assertEqual(line.amount, Decimal('0.58'))
     self.assertEqual(line.memo, "0,125 % p.a. Habenzinsen ab 01.04.13")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
    def parse_record(self, line):
        """Parse a single record."""
        # Skip header line
        if self.cur_record == 1:
            return None

        # Account id
        if not self.statement.account_id:
            self.statement.account_id = line[0]

        # Currency
        if not self.statement.currency:
            self.statement.currency = line[3]

        # Save credit/debit on line[4]
        if line[4] == "0,00":
            line[4] = fix_amount_string(line[5])
        else:
            line[4] = "-{}".format(fix_amount_string(line[4]))

        # Create statement and fixup missing parts
        stmtline = super(IngDiBaCsvParser, self).parse_record(line)
        stmtline.trntype = 'DEBIT' if stmtline.amount < 0 else 'CREDIT'
        stmtline.id = generate_transaction_id(stmtline)

        return stmtline
 def test_line4_credeit(self):
     l = self.statement.lines[4]
     self.assertEqual(l.amount, 10.0)
     self.assertEqual(l.memo, "Empfängername, SCOR, Verwendungszweck")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2017, 3, 15, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line1_interest_paid(self):
     line = self.statement.lines[1]
     self.assertEqual(line.amount, Decimal('-0.15'))
     self.assertEqual(line.memo, "Kapitalertragsteuer")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line3_service_fee(self):
     line = self.statement.lines[3]
     self.assertEqual(line.amount, Decimal('-6.65'))
     self.assertEqual(line.memo, "Entgelt Kontoführung")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line2_service_fee_print_statement(self):
     line = self.statement.lines[2]
     self.assertEqual(line.amount, Decimal('-0.11'))
     self.assertEqual(line.memo, "Entgelt Kontoauszug")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 6, 28, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line4_credeit(self):
     l = self.statement.lines[4]
     self.assertEqual(l.amount, 10.0)
     self.assertEqual(l.memo, "Empfängername, SCOR, Verwendungszweck")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2017, 3, 15, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line4_debit(self):
     line = self.statement.lines[4]
     self.assertEqual(line.amount, Decimal('-1500'))
     self.assertEqual(line.memo, "Auszahlung - XXX")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 8, 27, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line3_transfer_credit(self):
     line = self.statement.lines[3]
     self.assertEqual(line.amount, Decimal('20.30'))
     self.assertEqual(line.memo, "Umbuchung von 003")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 9, 25, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line2_payment_description_end2end(self):
     l = self.statement.lines[2]
     self.assertEqual(l.amount, -9.0)
     self.assertEqual(
         l.memo, "End2EndID, Empfängername, Adresszeile1, Adresszeile2")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2017, 3, 15, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
Beispiel #43
0
 def test_line1_debit(self):
     l = self.statement.lines[1]
     self.assertEqual(l.amount, -100)
     self.assertEqual(l.memo, "Internetauftrag")
     self.assertEqual(l.payee, "A text, A reference, A text")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 10, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
Beispiel #44
0
 def parse_record(self, row):
     stmt_line = StatementLine()
     stmt_line.date = self.parse_datetime(row[0])
     stmt_line.date_user = self.parse_datetime(row[1])
     stmt_line.memo = row[2]
     stmt_line.amount = self.parse_float(row[3])
     stmt_line.id = generate_transaction_id(stmt_line)
     return stmt_line
 def test_line6_credit(self):
     line = self.statement.lines[6]
     self.assertEqual(line.amount, Decimal('123.60'))
     self.assertEqual(
         line.memo, "Gutschrift Auftraggeber: A person Kundendaten: reason")
     self.assertEqual(line.trntype, "CREDIT")
     self.assertEqual(line.date, datetime.datetime(2013, 7, 4, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line5_debit(self):
     line = self.statement.lines[5]
     self.assertEqual(line.amount, Decimal('-100'))
     self.assertEqual(
         line.memo, "Lastschrift Auftraggeber: A company "
         "Kundendaten: 000000000000 111111111111 Verwendungszweck: reason")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 7, 1, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line2_debit_with_iban_bic(self):
     l = self.statement.lines[2]
     self.assertEqual(l.check_no, "3")
     self.assertEqual(l.amount, -123.45)
     self.assertEqual(l.memo, "Usage, specific reason")
     self.assertEqual(l.payee, "Payment receiver (AT098765432109876543 ABCDEF1G235)")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 4, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line0_payment_description_reference(self):
     l = self.statement.lines[0]
     self.assertEqual(l.amount, -11.0)
     self.assertEqual(
         l.memo,
         "Zahlungsreferenz, Empfängername, Adresszeile1, Adresszeile2")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2017, 3, 15, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line4_elba_payment(self):
     line = self.statement.lines[4]
     self.assertEqual(line.amount, Decimal('-175.16'))
     self.assertEqual(
         line.memo, "ELBA-INTERNET VOM 29.06 UM 09:16 Empfänger: A person "
         "Verwendungszweck: Invoice number 10")
     self.assertEqual(line.trntype, "DEBIT")
     self.assertEqual(line.date, datetime.datetime(2013, 7, 1, 0, 0))
     self.assertEqual(line.id, generate_transaction_id(line))
 def test_line1_debit(self):
     l = self.statement.lines[1]
     self.assertEqual(l.amount, -100)
     self.assertEqual(l.memo, "Internetauftrag")
     self.assertEqual(
         l.payee, "A text, A reference, A text")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 10, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line2_payment_description_end2end(self):
     l = self.statement.lines[2]
     self.assertEqual(l.amount, -9.0)
     self.assertEqual(
         l.memo,
         "End2EndID, Empfängername, Adresszeile1, Adresszeile2")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2017, 3, 15, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line3_debit_legacy_bank_account(self):
     l = self.statement.lines[3]
     self.assertEqual(l.check_no, "4")
     self.assertEqual(l.amount, -32)
     self.assertEqual(l.memo, "Abbuchung Einzugsermächtigung")
     self.assertEqual(l.payee, "Amazon *Mktplce EU-AT (01234567890 01234)")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 8, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line2_credit(self):
     l = self.statement.lines[2]
     self.assertEqual(l.amount, 5000)
     self.assertEqual(l.memo, "Datenträger-Umsatz")
     self.assertEqual(
         l.payee, "A name, A text, REF: XXXXXXXXXXXXXXXXXXXXXXXXXXXX")
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2013, 6, 5, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line1_interest_earned(self):
     l = self.statement.lines[1]
     self.assertEqual(l.check_no, "2")
     self.assertEqual(l.amount, 1.23)
     self.assertEqual(l.memo, "Zinsen HABEN")
     self.assertEqual(l.payee, l.memo)
     self.assertEqual(l.trntype, "CREDIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 1, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line0_interest_paid(self):
     l = self.statement.lines[0]
     self.assertEqual(l.check_no, "1")
     self.assertEqual(l.amount, -0.42)
     self.assertEqual(l.memo, "Einbehaltene KESt")
     self.assertEqual(l.payee, l.memo)
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 1, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line7_debit_with_more_text_before_check_no_and_without_banking_infos(self):    # NOQA
     l = self.statement.lines[7]
     self.assertEqual(l.check_no, "8")
     self.assertEqual(l.amount, -8.4)
     self.assertEqual(l.memo, "AT 8,40 DEBIT POS 18.0 5.14 10.08K1")
     self.assertEqual(l.payee, "Somebody someony somewhere")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 2, 21, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line5_debit_withdraw(self):
     l = self.statement.lines[5]
     self.assertEqual(l.check_no, "6")
     self.assertEqual(l.amount, -400)
     self.assertEqual(l.memo, "Auszahlung Maestro 10.01")
     self.assertEqual(l.payee, "AUTOMAT 01234567 K1 27.07.UM 18.57")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 28, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))
 def test_line4_debit_iban_only(self):
     l = self.statement.lines[4]
     self.assertEqual(l.check_no, "5")
     self.assertEqual(l.amount, -1001.00)
     self.assertEqual(l.memo, "CustomerNo: XXXXX OrderNr: YYYYYYYY")
     self.assertEqual(l.payee, "Payment receiver (AT098765432109876543)")
     self.assertEqual(l.trntype, "DEBIT")
     self.assertEqual(l.date, datetime.datetime(2014, 1, 19, 0, 0))
     self.assertEqual(l.id, generate_transaction_id(l))