Import auf dem GNUCash System

Die GNUCash Installation sollte aus Gründen der Vereinfachung auf MySQL/MariaDB laufen bzw. umgestellt werden. Der Import der Daten auf dem GNUCash System geht einfach mit

wget -q --http-user=[htpasswd user] --http-password=[das sichere Kennwort] https://deine.server.domain/invoiceplane/ip_exporter/open_balance.csv -O open_balance.csv

weiter und wird dann in die GNUCash Datenbank in die Tabelle ip_open_balance übertragen. Zuvor wird die Tabelle ip_open_balance erstellt bzw. geleert, da der aktuelle Stand eingefügt werden soll:

CREATE TABLE IF NOT EXISTS ip_open_balance (
  id int(11) NOT NULL AUTO_INCREMENT,
  invoice_id int(11) NOT NULL,
  invoice_number varchar(16) COLLATE utf8_bin NOT NULL,
  invoice_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  client_id int(11) NOT NULL,
  amount int(9) NOT NULL,
  custno varchar(32) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY invoice_id (invoice_id),
  UNIQUE KEY invoice_number (invoice_number),
  KEY client_id (client_id),
  KEY custno (custno),
  KEY amount (amount),
  KEY invoice_date (invoice_date)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
TRUNCATE ip_open_balance;

Wenn die Datenbank auf einem anderen System liegt einfach mit bash hinein skripten:

#!/bin/bash
while IFS=$'\t' read invoice_id, invoice_number, invoice_date, client_id, amount, custno
do
    amount=`echo ${amount} | tr -d '.'` # using integer numbers in gnucash
# import into sql
cat << SQL | mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} ${DB}
INSERT INTO ip_open_balance
        SET invoice_id=${invoice_id},
            invoice_number="${invoice_number}",
            invoice_date="${invoice_date}",
            client_id=${client_id},
            amount=${amount},
            custno="${custno}";
SQL
done < open_balance.csv