Permalink
Browse files

Added script bksystem.sh for billing. incl doc

  • Loading branch information...
1 parent 2ad370c commit 6f2852c6036fe6fcc4c6dc177828c42f3a35f8ef @LeBlue LeBlue committed Aug 8, 2012
View

Large diffs are not rendered by default.

Oops, something went wrong.
View
@@ -0,0 +1,128 @@
+<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+ <head>
+ <title>Dokumentation bksystem scripte</title>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ </head>
+ <body>
+ <h1>Dokumentation bksystem script</h1>
+ <div id="toc_div">
+ <h3>Übersicht</h3>
+
+ <ol id="toc">
+ <li><a href=#general>allgemein</a></li>
+ <ul>
+ <li><a href=#shell>Shell</a></li>
+ <li><a href=#software>Software: sqlite3</a></li>
+ </ul>
+ <li><a href=#user_accounts>master script: all_bill_jobs.sh</a></li>
+ <ul>
+ <li><a href=#function_master>Function</a></li>
+ <li><a href=#config_paths>Pfade konfigurieren</a></li>
+ <li><a href=#active>einzelne script de/aktivieren</a></li>
+ <li><a href=#crontab>stand alone</a></li>
+ </ul>
+ <li><a href=#insert>Jetzt abrechnen: insert_bill_date.sh </a></li>
+ <ul>
+ <li><a href=#></a></li>
+ </ul>
+ <li><a href=#export>Export: export_bill_basic.sh</a></li>
+ <ul>
+ <li><a href=#></a></li>
+ </ul>
+ <li><a href=#pivot_table>pivot Tabelle generieren + export: export_bill_complete(_sep).sh</a></li>
+ <ul>
+ <li><a href=#></a></li>
+ </ul>
+ <li><a href=#cleanup>cleanup: export_bill_basic.sh</a></li>
+ <ul>
+ <li><a href=#></a></li>
+ </ul>
+ <li><a href=#backup>Backup: backup.sh und restore.sh</a></li>
+ <li><a href=#crontab>Crontab</a></li>
+ </ol>
+ </div>
+ <div id="content_div">
+ <ol id="content">
+ <h3 id="general"><li>allgemein</li></h3>
+ <ul>
+ <h4 id="shell"><li>Shell</li></h4>
+ <p>Es ist gedacht, dass alle Skripte regelmäßig automatisch mit Hilfe von <a href=#crontab title="zu Crontab springen">crontab</a> ausgeführt werden. </p>
+ <p><ul>
+ <li>BKS_DATE: Abrechnungsdatum</li>
+ <li>BKS_SCR_DIR: Verzeichnis der Skripte</li>
+ <li>BKS_DB_DIR: Pfad und Datenbankname</li>
+ <li>BKS_DB_NAME: Datenbankname</li>
+ <li>BKS_BILL_DIR: Pfad zum Verzeichnis für Abrechnungen</li>
+ <li>BKS_TMP_DIR: Pfad zum temporären Verzeichnis</li>
+ <li>BKS_BKP_DIR: Pfad zum Verzeichnis zum Backups schreiben oder lesen</li>
+ <li>BKS_LOG_DIR: Pfad zum Verzeichnis für log Datei</li>
+ <li>BKS_LOG_FILE:Log-Dateiname</li>
+ </ul></p>
+ <h4 id="software"><li>Software: sqlite3</li></h4>
+ <p>Alle Skripte benötigen das commandline tool sqlite3, um die Datenabfragen zu stellen.</p>
+ <p><a href="http://www.google.de/search?q=man+sqlite3&btnI=aufgutglück" title="Manual sqlite3 anzeigen">Manual sqlite3</a></p>
+ </ul>
+ <h3 id="all_jobs"><li>master script: bksystem.sh</li></h3>
+ <ul>
+ <h4 id="function_master"><li>Funktion</li></h4>
+ <p>In bksystem.sh sind alle Konfigurationen gespeichert. Das sind zum einen Defaultwerte für die Pfad und Dateiname. Zum anderen sind das die Funktionen, die automatisch, bzw. regelmäßig ausgeführt werden sollen. Des weiteren akzeptiert das script eine Reihe von Komandozeilen Optionen.</p>
+
+ <h4 id="config_paths"><li>Pfade konfigurieren</li></h4>
+ <p>Eigentlich sollte es reichen, nur das DEF_ROOT_DIR zu setzen e.g. /home/bierwart/bksystem. Alle anderen Pfade werden relativ dazu gesetzt</p>
+ <p><table border=1>
+ <tr><th>VARNAME</th> <th>Bedeutung</th> <th>initial Wert</th></tr>
+ <tr><th>DEF_ROOT_DIR</th> <th>Hauptverzeichnis</th><th>nicht gesetzt</th></tr>
+ <tr><th>DEF_DATE</th> <th>Abrechnungsdatum</th> <th>Setze auf "Jetzt"</th></tr>
+ <tr><th>DEF_SCR_DIR</th> <th>Verzeichnis der Skripte</th> <th>ROOT_DIR/scripts</th></tr>
+ <tr><th>DEF_DB_DIR</th> <th>Pfad zur Datenbank</th> <th>ROOT_DIR/</th></tr>
+ <tr><th>DEF_DB_NAME</th> <th>Datenbankname</th> <th>bksystem.sqlite</th></tr>
+ <tr><th>DEF_BILL_DIR</th> <th>Pfad zum Verzeichnis für Abrechnungen</th> <th>ROOT_DIR/bills</th></tr>
+ <tr><th>DEF_TMP_DIR</th> <th>Pfad zum temporären Verzeichnis</th> <th>ROOT_DIR/tmp</th></tr>
+ <tr><th>DEF_BKP_DIR</th> <th>Pfad zum Verzeichnis zum Backups schreiben oder lesen</th> <th>ROOT_DIR/bkp</th></tr>
+ <tr><th>DEF_LOG_DIR</th> <th>Pfad zum Verzeichnis für log Datei</th> <th>ROOT_DIR/log</th></tr>
+ <tr><th>DEF_LOG_FILE</th> <th>Log-Dateiname</th> <th>bill_script.log</th></tr>
+ </table></p>
+ <h4 id="active"><li>Konfiguration: einzelne scripte de/aktivieren</li></h4>
+ <p></p>
+ <h4 id="crontab"><li>stand alone</li></h4>
+ <h4 id="structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="subscripte">Sub-scripte</h3>
+ <p>Diese Scripte werden alle vom masterscript bksystem.sh aufgerufen. Es lassen sich aber auch alle in einer shell direkt ausführen. Dabei kann die Datenbank (evtl. mit Pfad) als erstes Argument angegeben werden. Alle Dateien werden dann ins/vom Arbeitsverzeichnis geschrieben/gelesen. Alternativ können folgende Pfadvariable gesetzt werden mit <a href="http://www.google.de/search?q=man+export&btnI=auf+gut+glück" title="Manual export">export</a>. Benutzte Variablen und dateien stehen bei den Skriptbeschreibungen.
+ <h3 id="insert"><li>Jetzt abrechnen: insert_bill_date.sh </li></h3>
+ <ul>
+ <h4 id="insert_func"><li>Funktion</li></h4>
+ <h4 id="insert_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="export"><li>Export: export_bill_basic.sh</li></h3>
+ <p></p>
+ <ul>
+ <h4 id="export_func"><li>Funktion</li></h4>
+ <h4 id="export_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="pivot_table"><li>pivot Tabelle generieren + export: export_bill_complete(_sep).sh</li></h3>
+ <ul>
+ <h4 id="pivot_table_func"><li>Fuinktion</li></h4>
+ <h4 id="pivot_table_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="pivot_table_html"><li>pivot Tabelle generieren + export als html mit layout: export_bill_html.sh</li></h3>
+ <ul>
+ <h4 id="pivot_table_html_func"><li>Fuinktion</li></h4>
+ <h4 id="pivot_table_html_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="cleanup"><li>cleanup: clean_old_sales.sh</li></h3>
+ <ul>
+ <h4 id="cleanup_func"><li>Funktionen</li></h4>
+ <h4 id="cleanup_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="backup"><li>Backup: backup.sh und restore.sh</li></h3>
+ <ul>
+ <h4 id="backup_func"><li>Funktionen</li></h4>
+ <h4 id="backup_structure"><li>Aufbau</li></h4>
+ </ul>
+ <h3 id="crontab"><li>Crontab</li></h3>
+ </ol>
+
+ </div>
+ </body>
View
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+
+echo ""
+echo "Executing script file:"
+echo "${0}:"
+
+if [ -z $DB ]; then
+ DB="./bksystem.sqlite"
+fi
+
+if [ -z $BKS_BKP_DIR ]; then
+ BKS_BKP_DIR="."
+fi
+
+SCHEM="${BKS_BKP_DIR}/bksystem_schema1.sql"
+USER="${BKS_BKP_DIR}/user_accounts.sql"
+PROD="${BKS_BKP_DIR}/products.sql"
+SALE="${BKS_BKP_DIR}/sales.sql"
+BDATES="${BKS_BKP_DIR}/bill_dates.sql"
+
+sqlite3 -batch $DB ".dump products" > $SCHEM
+if [ $? -eq 0 ]; then
+ echo " ${SCHEM} written"
+fi
+sqlite3 -batch $DB ".dump user_accounts" > $USER
+if [ $? -eq 0 ]; then
+ echo " ${USER} written"
+fi
+sqlite3 -batch $DB ".dump products" > $PROD
+if [ $? -eq 0 ]; then
+ echo " ${PROD} written"
+fi
+sqlite3 -batch $DB ".dump sales" > $SALE
+if [ $? -eq 0 ]; then
+ echo " ${SALE} written"
+fi
+sqlite3 -batch $DB ".dump bill_dates" > $BDATES
+#sqlite3 -batch $DB "SELECT * FROM bill_dates WHERE bill_id != 0;" > $BDATES
+if [ $? -eq 0 ]; then
+ echo " ${BDATES} written"
+fi
@@ -0,0 +1,65 @@
+#!/bin/sh
+# This script is intended to generate a bill from bksystem.sqlite database, export to csv.
+# 3 tables:
+# Account balance list
+# Consumption of products list
+# Consumption of each user list
+# Steps:
+# get current date and time
+# sqlite querry and export tables as .csv
+
+
+ echo ""
+ echo "Executing script file:"
+ echo "${0}:"
+
+# DB and date should be defined, but if not:
+ if [ -z $DB ]; then
+ DB="./bksystem.sqlite"
+ fi
+ if [ -z $BKS_DATE ]; then
+ BKS_DATE=$(date +"%0Y-%0m-%0d_%0k:%0M:%0S")
+ fi
+ # here go the exported files, should be defined, if not:
+ if [ -z $BKS_BILL_DIR ]; then
+ BKS_BILL_DIR="."
+ fi
+
+ if ! [ -e $DB ]; then
+ echo " Database missing or not found!"
+ exit 1
+ fi
+ echo " Started exporting to files"
+
+#filenames + paths
+ FILENAMEA="Kontostand"
+ FILENAMEC="Verbrauch"
+ FILENAMEL="Konsumliste"
+ CSVFA="${BKS_BILL_DIR}/${FILENAMEA}_${BKS_DATE}.csv"
+ CSVFC="${BKS_BILL_DIR}/${FILENAMEC}_${BKS_DATE}.csv"
+ CSVFL="${BKS_BILL_DIR}/${FILENAMEL}_${BKS_DATE}.csv"
+ #CSVFA="${BKS_BILL_DIR}/${FILENAMEA}.csv"
+ #CSVFC="${BKS_BILL_DIR}/${FILENAMEC}.csv"
+ #CSVFL="${BKS_BILL_DIR}/${FILENAMEL}.csv"
+
+# export bill and consumption table as csv
+ sqlite3 -csv -header $DB "SELECT * FROM previous_account_balance;" > $CSVFA
+ if [ $? -eq 0 ]; then
+ echo " ${CSVFA} written."
+ else
+ echo " ${CSVFA} writing failed"
+ fi
+
+ sqlite3 -csv -header $DB "SELECT * FROM previous_consumption;" > $CSVFC
+ if [ $? -eq 0 ]; then
+ echo " ${CSVFC} written."
+ else
+ echo " ${CSVFC} writing failed"
+ fi
+
+ sqlite3 -csv -header $DB "SELECT * FROM previous_account_list;" > $CSVFL
+ if [ $? -eq 0 ]; then
+ echo " ${CSVFL} written."
+ else
+ echo " ${CSVFL} writing failed"
+ fi
Oops, something went wrong.

0 comments on commit 6f2852c

Please sign in to comment.