+invoice_total(){
+ local id="$1" sender client date number vat vatrate \
+ total=0 caddress hourly time work hours
+
+ if [ -f "invoices/$id" ]; then
+ read -r sender client date number vat vatrate hourly x<<-EOF
+ $(sed q "invoices/$id")
+ EOF
+
+ [ "${hourly#hourly=}" -gt 0 ] 2>&- \
+ && hourly="${hourly#hourly=}" \
+ || hourly=0
+ [ "${vatrate#vatrate=}" -ge 0 ] 2>&- \
+ && vatrate="${vatrate#vatrate=}" \
+ || vatrate=19
+
+ sed 1d "invoices/$id" \
+ | { while read -r time work hours; do
+ [ "${hours#hours=}" -gt 0 ] 2>&- \
+ && hours="${hours#hours=}" \
+ || hours=0
+ total=$((total + hours * hourly))
+ done
+ case $vat in
+ vat=nett)
+ awk "BEGIN {
+ printf \"nett %.2f %.2f %.2f\",
+ $total, int($total * $vatrate + .5) / 100,
+ $total + int($total * $vatrate + .5) / 100
+ }" ;;
+ vat=gross)
+ awk "BEGIN {
+ printf \"gross %.2f %.2f %.2f\",
+ $total - int($total / (100 + $vatrate) * $vatrate * 100 + .5) / 100,
+ int($total / (100 + $vatrate) * $vatrate * 100 + .5) / 100, $total
+ }" ;;
+ *)
+ awk "BEGIN {
+ printf \"notax %.2f %.2f %.2f\",
+ $total, 0, $total
+ }" ;;
+ esac
+ }
+ else
+ printf %.2f\\n 0
+ fi
+}
+