From 0fe87f9b9cbec0660a48585500062054c411d18f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Fri, 25 Jul 2025 00:22:00 +0200 Subject: [PATCH] fix repeat of empty unit code / vat code, force due date if missing --- factur-x.sh | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) mode change 100644 => 100755 factur-x.sh 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) -- 2.39.5