…
python qbo_to_finicast.py export.csv ledger.csv to flatten QuickBooks' grouped layout into one row per ledger line.ledger.csv into the ledger table in upsert mode. Row ids come from each line's contents, so re-importing an overlapping month updates rather than duplicates.Every report here reads the ledger through the two mapping tables below: accounts (cost code, P&L line and cash category for each QuickBooks account) and customers (QuickBooks Customer:Project to job). A new account or job needs one row in a mapping table, nothing else.