#!/bin/bash

# File Seperator, change to 💩, if you want
FS=','

# FIXME - use a real language, not that:
q() {
  local v="$1"
  if [[ "$v" == *"$FS"* || "$v" == *'"'* || "$v" == *$'\n'* ]]; then
    v="${v//\"/\"\"}"
    printf '"%s"' "$v"
  else
    printf '%s' "$v"
  fi
}

if [[ "$1" == "--header" ]]; then
  echo "Beleg${FS}Art${FS}Mandant${FS}Anwender${FS}Haushaltsstelle${FS}Buchungsschluessel${FS}Betrag${FS}Faelligkeitsdatum${FS}BLZ${FS}KontoNr${FS}Vorname${FS}Name${FS}Zahlungsgrund${FS}Zahlungsart${FS}Belegart${FS}Unterkostenstelle${FS}Kostentraeger${FS}Unterkostenart${FS}Datum${FS}Anordnungsnummer${FS}Mitteilung${FS}Hauptkostenstelle${FS}Hauptkostenart${FS}Menge${FS}Projekt${FS}MwStBetrag${FS}MwStProzent${FS}ArchivNr${FS}PLZ${FS}Ort${FS}Strasse${FS}AdrId${FS}Sachkonto${FS}Kostenstelle${FS}Kostenart${FS}BIC${FS}IBAN${FS}Buchungskreis${FS}KontoFinRe${FS}Jahr${FS}MwStMonat${FS}MwStJahr${FS}Sammelbeleg${FS}Erlaeuterungen${FS}RechnungsNr"
  exit 0
fi

BELEG="" ART="" MAN_NR="" ANW_NR="" HHST="" BUCHSCHL="" BETRAG="" FAELTERM=""
BLZ="" KONTO_NR="" VORNAME="" NAME="" ZAHLGRUND="" ZAHLUNGSART="" BELEGART=""
KOSTELLE="" KOTRAEGER="" KOART="" DATUM="" ANO_NR="" MITTEIL="" HKOSTELLE=""
HKOART="" MENGE="" PROJEKT="" MWST_BETRAG="" MWST_PROZ="" ARCHIV_NR="" PLZ=""
ORT="" STRASSE="" ADR_ID="" SACHKONTO="" KOSTENSTELLE="" KOSTENART="" BIC=""
IBAN="" BUCHUNGSKREIS="" KONTO_FINRE="" JAHR="" MWST_MONAT="" MWST_JAHR=""
SAMMELBELEG="" ERLAEUT="" RECHNUNGS_NR=""

while [[ $# -gt 0 ]]; do
  case "$1" in
    -b|--beleg)              BELEG="$2";        shift 2;;
    -a|--art)                ART="$2";          shift 2;;
    -m|--mandantennummer)    MAN_NR="$2";       shift 2;;
    -n|--anwendernummer)     ANW_NR="$2";       shift 2;;
    -h|--haushaltsstelle)    HHST="$2";         shift 2;;
    -k|--buchungsschluessel) BUCHSCHL="$2";     shift 2;;
    -g|--betrag)             BETRAG="$2";       shift 2;;
    -f|--faelterm)           FAELTERM="$2";     shift 2;;
    -z|--bankleitzahl)       BLZ="$2";          shift 2;;
    -o|--kontonummer)        KONTO_NR="$2";     shift 2;;
    -v|--vorname)            VORNAME="$2";      shift 2;;
    -w|--name)               NAME="$2";         shift 2;;
    -r|--zahlungsgrund)      ZAHLGRUND="$2";    shift 2;;
    -y|--zahlungsart)        ZAHLUNGSART="$2";  shift 2;;
    -l|--belegart)           BELEGART="$2";     shift 2;;
    -s|--unterkostenstelle)  KOSTELLE="$2";     shift 2;;
    -t|--kostentraeger)      KOTRAEGER="$2";    shift 2;;
    -i|--unterkostenart)     KOART="$2";        shift 2;;
    -d|--datum)              DATUM="$2";        shift 2;;
    -p|--anordnungsnummer)   ANO_NR="$2";       shift 2;;
    -c|--mitteilung)         MITTEIL="$2";      shift 2;;
    -j|--hauptkostenstelle)  HKOSTELLE="$2";    shift 2;;
    -x|--hauptkostenart)     HKOART="$2";       shift 2;;
    -q|--menge)              MENGE="$2";        shift 2;;
    -P|--projekt)            PROJEKT="$2";      shift 2;;
    -M|--mwst_betrag)        MWST_BETRAG="$2";  shift 2;;
    -Q|--mwst_proz)          MWST_PROZ="$2";    shift 2;;
    -A|--archiv_nr)          ARCHIV_NR="$2";    shift 2;;
    -L|--postleitzahl)       PLZ="$2";          shift 2;;
    -O|--ort)                ORT="$2";          shift 2;;
    -S|--strasse)            STRASSE="$2";      shift 2;;
    -I|--adr_id)             ADR_ID="$2";       shift 2;;
    -X|--sachkonto)          SACHKONTO="$2";    shift 2;;
    -K|--kostenstelle)       KOSTENSTELLE="$2"; shift 2;;
    -E|--kostenart)          KOSTENART="$2";    shift 2;;
    -B|--bic)                BIC="$2";          shift 2;;
    -N|--iban)               IBAN="$2";         shift 2;;
    -C|--buchungskreis)      BUCHUNGSKREIS="$2"; shift 2;;
    -F|--konto_finre)        KONTO_FINRE="$2";  shift 2;;
    -J|--jahr)               JAHR="$2";         shift 2;;
    -U|--mwst_monat)         MWST_MONAT="$2";   shift 2;;
    -Y|--mwst_jahr)          MWST_JAHR="$2";    shift 2;;
    -D|--sammelbeleg)        SAMMELBELEG="$2";  shift 2;;
    -R|--erlaeut)            ERLAEUT="$2";      shift 2;;
    -V|--rechnungs_nr)       RECHNUNGS_NR="$2"; shift 2;;
    *) echo "Ungültige Option: $1" >&2; exit 1;;
  esac
done

printf '%s\n' "$(q "$BELEG")${FS}$(q "$ART")${FS}$(q "$MAN_NR")${FS}$(q "$ANW_NR")${FS}$(q "$HHST")${FS}$(q "$BUCHSCHL")${FS}$(q "$BETRAG")${FS}$(q "$FAELTERM")${FS}$(q "$BLZ")${FS}$(q "$KONTO_NR")${FS}$(q "$VORNAME")${FS}$(q "$NAME")${FS}$(q "$ZAHLGRUND")${FS}$(q "$ZAHLUNGSART")${FS}$(q "$BELEGART")${FS}$(q "$KOSTELLE")${FS}$(q "$KOTRAEGER")${FS}$(q "$KOART")${FS}$(q "$DATUM")${FS}$(q "$ANO_NR")${FS}$(q "$MITTEIL")${FS}$(q "$HKOSTELLE")${FS}$(q "$HKOART")${FS}$(q "$MENGE")${FS}$(q "$PROJEKT")${FS}$(q "$MWST_BETRAG")${FS}$(q "$MWST_PROZ")${FS}$(q "$ARCHIV_NR")${FS}$(q "$PLZ")${FS}$(q "$ORT")${FS}$(q "$STRASSE")${FS}$(q "$ADR_ID")${FS}$(q "$SACHKONTO")${FS}$(q "$KOSTENSTELLE")${FS}$(q "$KOSTENART")${FS}$(q "$BIC")${FS}$(q "$IBAN")${FS}$(q "$BUCHUNGSKREIS")${FS}$(q "$KONTO_FINRE")${FS}$(q "$JAHR")${FS}$(q "$MWST_MONAT")${FS}$(q "$MWST_JAHR")${FS}$(q "$SAMMELBELEG")${FS}$(q "$ERLAEUT")${FS}$(q "$RECHNUNGS_NR")"
