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)
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)
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
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
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
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, 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))
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 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
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): """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))
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 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_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))
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 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_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))