From: Paul Hänsch Date: Thu, 24 Jul 2025 22:22:00 +0000 (+0200) Subject: fix repeat of empty unit code / vat code, force due date if missing X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=0fe87f9b9cbec0660a48585500062054c411d18f;p=invoices fix repeat of empty unit code / vat code, force due date if missing --- diff --git a/factur-x.sh b/factur-x.sh old mode 100644 new mode 100755 index 43aa2ed..42ba581 --- a/factur-x.sh +++ b/factur-x.sh @@ -10,15 +10,14 @@ yield_xml() { bic="$(DB3 get sender 9)" duedate="$(DB3 get duedate)" - DB3 check invnum || return 1 - [ -n "$date" ] || return 1 - DB3 check sender 2 || return 1 - DB3 check rcpt 2 || return 1 - [ -n "$tnfc" -o -n "$tnva" ] || return 1 + DB3 check invnum || { debug "Missing invnum"; return 1; } + [ -n "$date" ] || { debug "Missing date"; return 1; } + DB3 check sender 2 || { debug "Missing sender"; return 1; } + DB3 check rcpt 2 || { debug "Missing rcpt"; return 1; } + [ -n "$tnfc" -o -n "$tnva" ] || { debug "Missing taxnum"; return 1; } - # date_due="$(date -d "$date" +%s)" - # date_due="$((date_due + 28 * 86400))" - # date_due="$(date -d @${date_due} +%Y%m%d)" + date_due="$(date -d "$date" +%s)" + date_due="$((date_due + 42 * 86400))" date="$(date -d "$date" +%Y%m%d)" cat <<-ZUGFERD @@ -54,8 +53,8 @@ yield_xml() { pcs="$(DB3 get tb_pcs $seq |grep -m1 -xE '[0-9]+(\.00?|\.25|\.50?|\.75)?' || printf 1)" ppp="$(DB3 get tb_ppp $seq |grep -m1 -xEe '-?(\.[0-9]+|[0-9]+\.?[0-9]*)' || printf 0)" desc="$(DB3 get tb_desc $seq)" - uc="$(DB3 get tb_uc $seq |grep -m1 -xE 'HUR|DAY|KMT|NAR|LS' || printf LS)" - vat="$(DB3 get tb_vat $seq |grep -m1 -xE 'S|Z|E|AE|K|G|O|L|M' || printf O)" + uc="$(DB3 get tb_uc $seq |grep -m1 -xE 'HUR|DAY|KMT|NAR|LS' || printf %s "${uc:-LS}")" + vat="$(DB3 get tb_vat $seq |grep -m1 -xE 'S|Z|E|AE|K|G|O|L|M' || printf %s "${vat:-O}")" if [ "$pcs" = 1 -a "$ppp" = 0 -a -z "$desc" ]; then skip=$((skip + 1)) @@ -98,7 +97,7 @@ yield_xml() { $(DB3 get sender 1 |HTML) $(DB3 get sender 3 |HTML) - $(DB3 get rcpt 2 \ + $(DB3 get sender 2 \ | sed -E '/^\r?$/d;' \ | for n in One Two Three; do read -r l || break @@ -108,7 +107,7 @@ yield_xml() { $(DB3 get sender 5 |HTML) - $([ -n "$tnfc" ] && cat cat <<-TNFC + $([ -n "$tnfc" ] && cat <<-TNFC $(HTML "$tnfc") @@ -225,12 +224,20 @@ yield_xml() { DUEDATE - else + elif [ -n "$duedate" ]; then cat <<-DUEDATE ${duedate} DUEDATE + else + cat <<-DUEDATE + + + $(date -d @"$date_due" +%Y%m%d) + + + DUEDATE fi)