#!/usr/bin/env bash scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" iid="$(basename "$scriptdir")" tmptex="$(mktemp).tex" function commanum { num="$1" whole="$(echo "$num" | cut -d'.' -f1)" decimal="$(echo "$num" | cut -d'.' -f2)" comma=`echo "$whole" | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'` echo "$comma.$decimal" } cd "$scriptdir" inv="$(cat invoice.tex)" echo "$inv" \ | sed "s/%iid%/$iid/g" > "$tmptex" inv="$(cat "$tmptex")" itotal=0 while read -r line do if [[ "$line" == "" ]] then continue fi itemdate="$(echo "$line" | awk -F'\t' '{print $1}')" itemdesc="$(echo "$line" | awk -F'\t' '{print $2}')" itemqty="$(echo "$line" | awk -F'\t' '{print $3}')" itemunit="$(echo "$line" | awk -F'\t' '{print $4}')" itemprice="$(echo "$line" | awk -F'\t' '{print $5}')" itemtotal="$(echo "scale=2; $itemqty * $itemprice" | bc -l)" itempricecomma="$(commanum "$itemprice")" itemtotalcomma="$(commanum "$itemtotal")" itemunitsingular="$(echo "$itemunit" | cut -d'/' -f1)" itemunitplural="$(echo "$itemunit" | cut -d'/' -f2)" itemunit="$itemunitplural" if [[ "$itemqty" == "1" ]] then itemunit="$itemunitsingular" fi texitem="{{\\\it %itemdate%, %itemdesc%\\\\\\\(%itemqty% %itemunit% $\\\times$ \\\\$%itemprice%/%itemunitsingular%)\\\dotfill \\\\$%itemtotal%}}" texitem="$(echo "$texitem" | sed "s/%itemdate%/$itemdate/g")" texitem="$(echo "$texitem" | sed "s/%itemdesc%/$itemdesc/g")" texitem="$(echo "$texitem" | sed "s/%itemqty%/$itemqty/g")" texitem="$(echo "$texitem" | sed "s/%itemprice%/$itempricecomma/g")" texitem="$(echo "$texitem" | sed "s/%itemtotal%/$itemtotalcomma/g")" texitem="$(echo "$texitem" | sed "s/%itemunit%/$itemunit/g")" texitem="$(echo "$texitem" | sed "s/%itemunitsingular%/$itemunitsingular/g")" texitem="$texitem\\"$'\n'"\\"$'\n'"%iitems%" # newlines parsed with sed inv="$(echo "$inv" | sed "s#%iitems%#$texitem%#")" itotal="$(echo "scale=2; $itotal + $itemtotal" | bc -l)" done < items.txt itotalcomma="$(commanum "$itotal")" echo "$inv" \ | sed "s/%itotal%/$itotalcomma/g" > "$tmptex" inv="$(cat "$tmptex")" pdflatex -output-directory="$scriptdir" -jobname="$iid" "$tmptex" latexmk -c rm *.aux *.log *.out cd -