From: Paul Hänsch Date: Wed, 8 Sep 2021 16:28:16 +0000 (+0200) Subject: support for fractional work hours X-Git-Url: http://git.plutz.net/?p=invoices;a=commitdiff_plain;h=af7737f425a9c32b53501fd9a72f8d1657c8aaf1 support for fractional work hours --- diff --git a/invoices.sh b/invoices.sh index a88bc7f..a1ec233 100755 --- a/invoices.sh +++ b/invoices.sh @@ -167,17 +167,19 @@ edit_invoice(){ [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="%.2g" 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 @@ -221,10 +223,10 @@ invoice_total(){ 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) diff --git a/odtgen.sh b/odtgen.sh index 177065a..1dfa5e8 100755 --- a/odtgen.sh +++ b/odtgen.sh @@ -190,10 +190,16 @@ odt_content(){ ${work} - ${hours} + $( awk "BEGIN { + if ( int(${hours}) == ${hours} ) + printf \"%i\", ${hours}; + else + printf \"%i:%i\", int(${hours}), int((${hours} - int(${hours})) * 60); + }" + ) - $((${hourly} * ${hours})) € + $(awk "BEGIN { printf \"%.2f\", ${hourly} * ${hours}; }" ) € TROW