Files
Beancount-importer/postbank_csv_importer.py

48 lines
1.5 KiB
Python
Raw Normal View History

2025-08-01 08:09:25 +00:00
from beancount.ingest import importer
from beancount.core import data
from beancount.core.number import D
import csv
class MyCSVImporter(importer.ImporterProtocol):
"""A Beancount importer for CSV files"""
def identify(self, file):
return file.name.endswith('.csv')
def file_account(self, file):
return "Assets:Bank:POSTBANK"
def file_date(self, file):
"""Returns the unique date of the file, if any."""
# Optioneel: als je bestandsnaam een datum bevat
return None
def file_name(self, file):
"""Returns the unique name of the file, if any."""
# Optioneel: als je een unieke naam wilt baseren op het bestand
return None
def extract(self, file, existing_entries=None):
entries = []
print(f"Start extracting from: {file.name}")
print(f"Content will be processed from: {file.contents}")
meta = data.new_metadata(file.name, 0)
transaction = data.Transaction(
meta=meta,
date=data.D(2025, 7, 29),
flag='*',
payee="Dummy Payee",
narration="Dummy narration - REPLACE this",
tags=data.frozenset(['test']),
links=data.frozenset(),
postings=[
data.Postings("Assets:Bank:POSTBANK", D("-100.00"), data.get_currency_meta('EUR'), None, None, None),
data.Postings("Expenses:Food", D("100.00"), data.get_currency_meta('EUR'), None, None, None),
]
)
entries.append(transaction)
return entries