Export Aufbereitung für den Import in InvoicePlane

Die matching Records werden jetzt für den Export aufbereitet. Gut beschrieben stehen die Importformate für InvoicePlane im Netz. Und wir wollen die Informationen (Verwendungszweck u.a.) aus den Buchungen auch in InvoicePlane wiederfinden.

CREATE TABLE IF NOT EXISTS ip_payment_exporter (
  invoice_number varchar(16) COLLATE utf8_bin NOT NULL,
  payment_method varchar(16) COLLATE utf8_bin NOT NULL DEFAULT 'IMPORTER',
  payment_date date NOT NULL,
  payment_amount decimal(11,2) NOT NULL,
  payment_note varchar(2048) COLLATE utf8_bin NOT NULL,
  KEY payment_date (payment_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO ip_payment_exporter 
        (invoice_number,payment_method,payment_date,payment_amount,payment_note) 
        (SELECT invoice_number,
                CONCAT('GC-Konto ', account),
                post_date,
                ROUND(value/100,2),
                CONCAT(description, '; ', from_account) 
         FROM ip_matching_records);

In diesem Fall läuft die Datenbank auf einem anderen System daher ist ein einfacher Export nicht möglich, er würde auf dem DB System landen. Wir behelfen uns mit einem kleinen Trick in bash und bereiten es selbst auf:

#!/bin/bash
echo "SELECT   '\"',
         CONCAT_WS('\",\"',invoice_number, payment_method, payment_date, payment_amount, payment_note),
         '\"'
    FROM ip_payment_exporter" \
    | mysql -r -h${DB_HOST} -u${DB_USER} -p${DB_PASS} ${DB} \
    | sed -e 's/"\t/"/g' -e 's/\t"/"/g' -e 's/ "/"/g' -e 's/" /"/g' >> payments.csv