edit_invoice(){
local id="$1" sender client date number vat vatrate caddress hourly \
- taxtype nett tax gross status
+ taxtype nett tax gross status novatreason
if [ -f "invoices/$id" ]; then
- read -r sender client date number vat vatrate hourly status x<<-EOF
+ read -r sender client date number vat vatrate hourly status novatreason x<<-EOF
$(sed q "invoices/$id")
EOF
fi
&& hourly="${hourly#hourly=}" \
|| hourly="${chourly}"
+ novatreason="$(UNSTRING "${novatreason#novatreason=}")"
+
tid="$(transid "invoices/$id")"
read -r taxtype nett tax gross x<<-EOF
$(invoice_total "$id")
EOF
+
cat <<-EOF
[form method="POST" action="/update_invoice"
[hidden "id" "$(HTML "$id")"]
<!--
[radio "vat" "smallbusiness" #vatsb $([ "${vat#vat=}" = smallbusiness ] && printf checked) ]
[label for=vatsb Small business exemption from VAT]
- -->
[radio "vat" "youthwork" #vatyw $([ "${vat#vat=}" = youthwork ] && printf checked) ]
[label for=vatyw Umsatzsteuerbefreiung für Jugendhilfe, §4 Abs. 25 UStG.]
+ -->
+ [radio "vat" "novat" #vatfree $([ "${vat#vat=}" = novat ] && printf checked) ]
+ [label for=vatfree [input type="text" name=novatreason value="${novatreason:-"Der Rechnungsbetrag ist nach §4 Abs. 25 UStG. umsatzsteuerfrei"}"]]
[radio "vat" "nett" #vatnett $([ "${vat#vat=}" = nett ] && printf checked)]
[label for=vatnett Netto]
[radio "vat" "gross" #vatgross $([ "${vat#vat=}" = gross ] && printf checked)]
update_invoice(){
local id="$(POST id |checkid)" extra=0 tid
tid="$(transid invoices/$id)"
+ printf "Update\n" >&2
if [ "$(POST update)" = "$tid" ] || [ "$(POST genpdf)" = "$tid" ]; then
mkdir -p invoices
[ "$n" -gt "$extra" ] && extra="$n"
done
- { printf 'sender=%s client=%s date=%s number=%s vat=%s vatrate=%s hourly=%s status=%s\n' \
+ { printf 'sender=%s client=%s date=%s number=%s vat=%s vatrate=%s hourly=%s status=%s novatreason=%s\n' \
"$(POST sender)" "$(POST client)" \
"$(date -d "$(POST date)" +%s)" \
"$(POST number |STRING)" \
- "$(POST vat |grep -m1 -xE 'smallbusiness|youthwork|gross|nett')" \
+ "$(POST vat |grep -m1 -xE 'smallbusiness|youthwork|gross|nett|novat')" \
"$(POST vatrate |grep -m1 -xE '[0-9]+')" \
"$(POST hourly |grep -m1 -xE '[0-9]+')" \
- "$(POST status |grep -m1 -xE 'open|sent|resent|paid|cancelled')"
+ "$(POST status |grep -m1 -xE 'open|sent|resent|paid|cancelled')" \
+ "$(POST novatreason |STRING)"
for n in $(seq 1 $extra); do
printf 'time=%s work=%s hours=%s pcs=%s ppp=%s\n' \
"$(POST time $n |STRING)" "$(POST work $n |STRING)" \
git add "invoices/$id"
git commit -m 'Update invoice info for "'"$(POST number)"'"' -- "invoices/$id"
} >/dev/null
+ else
+ printf "TID mismatch\n" >&2
fi
if [ "$(POST genpdf)" ]; then
read -r sender client date x<"invoices/$id"
<p align="left" style="line-height: 100%; margin-top: 1.1cm; background: transparent; page-break-before: auto; page-break-after: auto">
<font color="#000000"><font face="Cabin"><font size="3" style="font-size: 12pt"><b>Rechnung
SI $(date -d @${date} +%y) ${number}</b></font></font></font></p>
- <p align="left" style="font-weight: normal; line-height: 100%; margin-left: 12.375cm; background: transparent; page-break-before: auto; page-break-after: auto">
+ <p align="left" style="font-weight: normal; line-height: 100%; margin-left: 12.375cm; margin-top: 2cm; background: transparent; page-break-before: auto; page-break-after: auto">
<font color="#000000"><font face="Cabin"><font size="2" style="font-size: 10pt">$(date -d @${date} +%d.%m.%Y)</font></font></font></p>
- <p align="left" style="font-weight: normal; line-height: 100%; margin-top: 2.5cm; background: transparent; page-break-before: auto; page-break-after: auto">
+ <p align="left" style="font-weight: normal; line-height: 100%; margin-top: .5cm; background: transparent; page-break-before: auto; page-break-after: auto">
<font color="#000000"><font face="Cabin"><font size="2" style="font-size: 11pt">Sehr
- geehrte Damen und Herren,</font></font></font></p>
+ geehrte Damen und Herren,<br />Liebe Alle*,</font></font></font></p>
<p><br/>
<br/>
</p>
$([ $taxtype = notax ] && cat <<-EOF
<p style="font-weight: normal; line-height: 100%"><a name="__DdeLink__15_3552620450"></a>
- <font face="Cabin"><font size="2" style="font-size: 9pt"><i>Der
- Rechnungsbetrag ist nach § 4 Abs. 25 UStG umsatzsteuerfrei</i></font></font></p>
+ <font face="Cabin"><font size="2" style="font-size: 9pt"><i>${novatreason}</i></font></font></p>
EOF
)
</body>
local id="$1"
mkdir -p "export/"
- read -r sender client date number vat vatrate hourly x<<-EOF
+ read -r sender client date number vat vatrate hourly status novatreason x<<-EOF
$(sed q "invoices/$id")
EOF
read -r sender iban bic x<"senders/${sender#sender=}"
"$(UNSTRING "${number#number=}")" \
"${vat#vat=}" "${vatrate#vatrate=}" \
"${hourly#hourly=}" \
+ "$(UNSTRING "${novatreason#novatreason=}")" \
>"export/$id.html"
}