]> git.plutz.net Git - invoices/commitdiff
fix repeat of empty unit code / vat code, force due date if missing v2
authorPaul Hänsch <paul@plutz.net>
Thu, 24 Jul 2025 22:22:00 +0000 (00:22 +0200)
committerPaul Hänsch <paul@plutz.net>
Thu, 24 Jul 2025 22:22:00 +0000 (00:22 +0200)
factur-x.sh [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 43aa2ed..42ba581
@@ -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() {
                <ram:Name>$(DB3 get sender 1 |HTML)</ram:Name>
                <ram:PostalTradeAddress>
                  <ram:PostcodeCode>$(DB3 get sender 3 |HTML)</ram:PostcodeCode>
-                 $(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() {
                  <ram:CountryID>$(DB3 get sender 5 |HTML)</ram:CountryID>
                </ram:PostalTradeAddress>
 
-               $([ -n "$tnfc" ] && cat cat <<-TNFC
+               $([ -n "$tnfc" ] && cat <<-TNFC
                <ram:SpecifiedTaxRegistration>
                  <ram:ID schemeID="FC">$(HTML "$tnfc")</ram:ID>
                </ram:SpecifiedTaxRegistration>
@@ -225,12 +224,20 @@ yield_xml() {
                  </ram:DueDateDateTime>
                </ram:SpecifiedTradePaymentTerms>
                DUEDATE
-             else
+             elif [ -n "$duedate" ]; then
                cat <<-DUEDATE
                <ram:SpecifiedTradePaymentTerms>
                  <ram:Description>${duedate}</ram:Description>
                </ram:SpecifiedTradePaymentTerms>
                DUEDATE
+             else
+               cat <<-DUEDATE
+               <ram:SpecifiedTradePaymentTerms>
+                 <ram:DueDateDateTime>
+                   <udt:DateTimeString format="102">$(date -d @"$date_due" +%Y%m%d)</udt:DateTimeString>
+                 </ram:DueDateDateTime>
+               </ram:SpecifiedTradePaymentTerms>
+               DUEDATE
              fi)
 
              <ram:SpecifiedTradeSettlementHeaderMonetarySummation>