for n in resent:Resent sent:Sent paid:Paid cancelled:Cancelled; do
printf '[h1 %s]' "${n#*:}"
- for i in invoices/*; do case "$(sed 1q <$i)" in
+ printf "%s\n" invoices/* \
+ | sort -r \
+ | while read i; do case "$(sed 1q <$i)" in
*status=${n%:*}*) list_invoice "$i";;
esac; done
done
[tr [th Date] [th Work] [th Hours] [th Price] ]
$({ sed 1d "invoices/$id"; printf 'time= work= hours=\n'; } \
| while read -r time work hours x; do
- hours="$(UNSTRING "${hours#hours=}" |grep -m1 -xE '[0-9]+' || printf 0)"
+ hours="$(UNSTRING "${hours#hours=}" \
+ |grep -m1 -xE '\.[0-9]+|[0-9]+\.?[0-9]*' || printf 0)"
printf '[tr
[td [textarea name=time
%s] ]
[td [textarea name=work
%s] ]
- [td [input type=number name=hours value="%s"] ]
+ [td [input type=number name=hours value="%g" step=any] ]
[td %s]
]' "$(UNSTRING "${time#time=}" |HTML)" \
"$(UNSTRING "${work#work=}" |HTML)" \
- "$hours" "$((hours * hourly)) €"
+ "$hours" \
+ "$(awk "BEGIN { printf \"%.2f €\", ${hours} * ${hourly}; }")"
done
)
[tr [td colspan=4
sed 1d "invoices/$id" \
| { while read -r time work hours; do
- [ "${hours#hours=}" -gt 0 ] 2>&- \
+ [ "${hours#hours=}" ] 2>&- \
&& hours="${hours#hours=}" \
|| hours=0
- total=$((total + hours * hourly))
+ total=$(awk "BEGIN { printf \"%.2f\", ${total} + ${hours} * ${hourly}; }")
done
case $vat in
vat=nett)
printf 'time=%s work=%s hours=%s\n' \
"$(POST time $n |STRING)" "$(POST work $n |STRING)" \
"$(POST hours $n |STRING)" \
- | grep -xvF 'time= work= hours=0'
+ | grep -xvF 'time=\ work=\ hours=0'
done
} >"invoices/$id"