Diese Seite beschreibt wie man einen automatisiertes Bericht mithilfe Cronjobs und CSV-Export.
55 19 * * 5 /opt/mercaware/mx023/src/mod_csvexport/bin/psql2xls -c "SELECT journal.zuordopnr, rek.rdat, ROUND(CAST(SUM(journal.saldowertmw) AS numeric), 2) AS wert FROM journal INNER JOIN rek ON journal.zuordopnr = rek.renr WHERE journal.kontokorrent = '100003' AND rek.lfd IN (SELECT rek.lfd FROM rek WHERE to_date(rek.rdat, 'YYYY-MM-DD') <= (current_date - 40)) GROUP BY journal.zuordopnr,rek.rdat HAVING (ROUND(CAST(SUM(journal.saldowertmw) AS numeric),2) <> 0) ORDER BY rek.rdat;" --from 'berichte@mercaware.de' --to 'stojicevic@mercaware.de' --subject 'Automasierter Bericht - Offene Posten' --output '/tmp/Offene Posten.xls' --host 'localhost' --user 'pg_mx007' --port '51007' --database 'MXDBS'
Die Hauptbefehl um eine XLS-Datei zu erstellen befindet sich im mod_csvexport:
/opt/mercaware/mx023/src/mod_csvexport/bin/psql2xls
Dieses Befehl ermöglicht die Erstellung eine XLS-Datei aus eine SQL-Abfrage, und als E-Mail schicken.
Um einen Bericht automatisch zu erstellen, benötigt man eine Cronjob. Die wurden normalerweise in der /etc/crontab Datei gespeichert. Allerdings, weil dieses Befehl als der Mandant-Benutzer ausgeführt werden soll, können wir nicht einfach uns als „root“ anmelden, und die Datei im „vi“ öffnen, um die Job einzurichten. Es muss so gemacht werden:
su - mx001
crontab -e
Da landet man im „vi“ für die „crontab“ Datei dieses Benutzer.
:wq
# ┌───────────── min (0 - 59) # │ ┌────────────── hour (0 - 23) # │ │ ┌─────────────── day of month (1 - 31) # │ │ │ ┌──────────────── month (1 - 12) # │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0) # │ │ │ │ │ # │ │ │ │ │ # * * * * * command to execute
Wie oben angezeigt, um einen Befehl im crontab anzulegen, benutzt man die vorgegebene Format.