Finale - Daten zurück übertragen und importieren

Die Ausgabe wurde in der Komma separierten payments.csv gefangen, welche direkt von InvoicePlane importiert werden kann.

Vorher werden die Daten auf das Zielsystem (InvoicePlane) übertragen.

#!/bin/bash
curl --user [htpasswd user]:[das sichere Kennwort] \
                --upload-file payments.csv \
                https://deine.server.domain/invoiceplane/ip_exporter/ip_payment_import.php

Wer doppelte Zahlungseingänge (besonders beim Testen) vermeiden will, kann das rigoros tun:

/* Avoid duplicates - a just in case */
ALTER TABLE ip_payment_methods ADD UNIQUE ( payment_method_name );
/* could be a problem if one sends equal amounts on the same day for the same invoice -> choose your poison */
ALTER TABLE ip_payments ADD UNIQUE ( payment_unique (invoice_id,payment_method_id,payment_date,payment_amount,payment_note(255));

Das Empfänger Skript auf dem InvoicePlane Server, ip_payment_import.php, stark vereinfacht (Beispiel aus php.net):

\<\?php
/* PUT data comes in on the stdin stream */

$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("/var/www/invoiceplane/uploads/import/payments.csv", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
\?\>

Leider ist in InvoicePlane derzeit der Import mit Befehlszeile noch nicht vorgesehen und erfordert nun einen manuellen Eingriff in den Ablauf. Dazu wurde die payments.csv vorher auf das InvoicePlane Zielsystem in den Ordner ./uploads/import geladen um nun in Settings den Import auszuführen (https://deine.server.domain/invoiceplane/import/form).