diff --git a/bnp_pdf_statement_parser.py b/bnp_pdf_statement_parser.py index 2d3e314..9a12116 100755 --- a/bnp_pdf_statement_parser.py +++ b/bnp_pdf_statement_parser.py @@ -14,55 +14,38 @@ PRINT_TRANSACTIONS = False MAIN_BANK_ACCOUNT = 'compte_de_cheques' -# As far as I know there was no debit yet. -otherBankAccountsCredits = {} +debits = [] +credits_ = [] +# Precise bank account +allTransactions = [] -for folder in os.listdir():#[-2:]: +def appendTransactions() + +for folder in os.listdir(): if folder != MAIN_BANK_ACCOUNT: print(folder) - for file in os.listdir(folder):#[-1:]: + for file in os.listdir(folder): print(file) filePath = f'{folder}/{file}' - initialAmount, totalMonthlyDebit, totalMonthlyCredit, transactions, fileDatetime = readPdfBankStatement(filePath) - #print(totalMonthlyCredit) - #import json - #print(json.dumps(transactions, indent = 4)) - otherBankAccountsCredits[fileDatetime] = otherBankAccountsCredits.get(fileDatetime, 0) + totalMonthlyCredit + _initialAmount, _totalMonthlyDebit, _totalMonthlyCredit, transactions, fileDatetime = readPdfBankStatement(filePath) + for transaction in transactions: + transaction['bank account'] = folder + allTransactions += [transaction] #exit(1) os.chdir(f'{MAIN_BANK_ACCOUNT}/') -totalMonthlyDebits = [] -totalMonthlyCredits = [] -totalMonthlyDifferences = [] -totals = [] -firstDatetime = None -lastDatetime = None for folder in sorted(os.listdir()): for file in sorted(os.listdir(folder)): filePath = f'{folder}/{file}' print(filePath) initialAmount, totalMonthlyDebit, totalMonthlyCredit, transactions, fileDatetime = readPdfBankStatement(filePath) - print('Initial amount', initialAmount) - print() - totals += [initialAmount] - print(f'Total monthly debit: {totalMonthlyDebit}') - print(f'Total monthly credit: {totalMonthlyCredit}') - totalMonthlyDebits += [totalMonthlyDebit] - otherBankAccountsCredit = otherBankAccountsCredits.get(fileDatetime, 0) - print(f'{otherBankAccountsCredit=}') - totalMonthlyCredit += otherBankAccountsCredit - totalMonthlyCredits += [totalMonthlyCredit] - totalMonthlyDifference = totalMonthlyCredit - totalMonthlyDebit - totalMonthlyDifferences += [totalMonthlyDifference] + for transaction in transactions: + transaction['bank account'] = MAIN_BANK_ACCOUNT + allTransactions += [transaction] if PRINT_TRANSACTIONS: for transaction in transactions: - # , transaction['currentAmount'] - print(transaction['date'], transaction['valeur'], transaction['amount']) - print(transaction['comment']) - print() - if firstDatetime is None: - firstDatetime = fileDatetime + printTransaction(transaction) #break #break lastDatetime = getDatetimeFromFileName(file) diff --git a/utils.py b/utils.py index 5a3b870..7011c67 100644 --- a/utils.py +++ b/utils.py @@ -29,12 +29,10 @@ def toFloat(group): return float(group.replace(',', '.').replace(' ', '')) def getDateFollowing(date, initialDate): - #print(f'start {date}') date = datetime.strptime(date, '%d.%m').replace(year = initialDate.year) # To support new year. if date < initialDate: date = date.replace(year = date.year + 1) - #print(f'end {date}') return date def readPdfBankStatement(filePath): @@ -57,8 +55,6 @@ def readPdfBankStatement(filePath): if soldeCrediteurAuRegexMatch is not None or (line.startswith('Date Nature des opérations Valeur Débit Crédit') and not firstPage): if soldeCrediteurAuRegexMatch is not None: initialDate = datetime.strptime(soldeCrediteurAuRegexMatch.group(1), '%d.%m.%Y') - print(f'{initialDate=}') - #exit(1) initialAmount = toFloat(soldeCrediteurAuRegexMatch.group(2)) #currentAmount = initialAmount started = True @@ -105,4 +101,10 @@ def readPdfBankStatement(filePath): #'currentAmount': currentAmount, 'comment': '\n'.join(comment) }] - return initialAmount, totalMonthlyDebit, totalMonthlyCredit, transactions, fileDatetime \ No newline at end of file + return initialAmount, totalMonthlyDebit, totalMonthlyCredit, transactions, fileDatetime + +def printTransaction(transaction): + # , transaction['currentAmount'] + print(transaction['date'], transaction['valeur'], transaction['amount']) + print(transaction['comment']) + print() \ No newline at end of file