hi,
have DEBUG it using HMG
#include <hmg.ch>
/* ============================================================================
Erweiterung: Steuerzusammenfassung (BT-95–BT-102) und Zahlungsbedingungen (BT-20/21)
============================================================================ */
* REQUEST HB_GT_WIN
* REQUEST HB_GT_WIN_DEFAULT
* REQUEST HB_FUN_HB_GTSYS
* REQUEST HB_GT_WIN_DEFAULT // Console
#require "hbwin"
PROCEDURE MAIN( cXmlFile )
ImportInvoice( cXmlFile )
PROCEDURE ImportInvoice( cXmlFile )
LOCAL cXml := MemoRead( cXmlFile )
LOCAL CTAX
// ------------------- Invoice Header -------------------
USE INVOICE NEW exclusiv
ZAP
APPEND BLANK
REPLACE INV_ID WITH win_UuidCreateString()
REPLACE INV_NUM WITH ExtractTag( cXml, "<ram:ID>", "</ram:ID>" )
REPLACE ISU_DATE WITH Ctod( SubStr( ExtractTag( cXml, "<udt:DateTimeString format=´102´>", "</udt:DateTimeString>" ), 1, 8 ) )
REPLACE DOC_TYPE WITH ExtractTag( cXml, "<ram:TypeCode>", "</ram:TypeCode>" )
REPLACE CURR WITH ExtractTag( cXml, "<ram:InvoiceCurrencyCode>", "</ram:InvoiceCurrencyCode>" )
REPLACE TOT_NET WITH Val( ExtractTag( cXml, "<ram:TaxBasisTotalAmount>", "</ram:TaxBasisTotalAmount>" ) )
REPLACE TOT_TAX WITH Val( ExtractTag( cXml, "<ram:TaxTotalAmount", "</ram:TaxTotalAmount>" ) )
REPLACE TOT_GROS WITH Val( ExtractTag( cXml, "<ram:GrandTotalAmount>", "</ram:GrandTotalAmount>" ) )
USE
// ------------------- Payment Terms (BT-20/21) -------------------
USE PAYMENT NEW exclusiv
ZAP
APPEND BLANK
REPLACE PAY_ID WITH win_UuidCreateString()
REPLACE PAYMENT->INV_ID WITH LastInvoiceId()
REPLACE PAYMENT->MEANS WITH ExtractTag( cXml, "<ram:SpecifiedTradeSettlementPaymentMeans><ram:TypeCode>", "</ram:TypeCode>" )
REPLACE PAYMENT->MEANS_TX WITH "Bank transfer"
REPLACE PAYMENT->DUE_DATE WITH Ctod( "20240607" ) // aus Text "Zahlbar bis 07.06.2024"
REPLACE PAYMENT->REF WITH ExtractTag( cXml, "<ram:SpecifiedTradePaymentTerms><ram:Description>", "</ram:Description>" )
USE
// ------------------- Tax Summary (BT-95–BT-102) -------------------
USE TAX_SUM NEW exclusiv
ZAP
FOR EACH cTax IN ExtractTaxes( cXml )
APPEND BLANK
REPLACE TS_ID WITH win_UuidCreateString()
REPLACE TAX_SUM->INV_ID WITH LastInvoiceId()
REPLACE TAX_SUM->VAT_TYP WITH ExtractTag( cTax, "<ram:TypeCode>", "</ram:TypeCode>" ) // BT-95
REPLACE TAX_SUM->VAT_CAT WITH ExtractTag( cTax, "<ram:CategoryCode>", "</ram:CategoryCode>" ) // BT-95
REPLACE TAX_SUM->RATE WITH Val( ExtractTag( cTax, "<ram:RateApplicablePercent>", "</ram:RateApplicablePercent>" ) ) // BT-96
REPLACE TAX_SUM->TAXABLE WITH Val( ExtractTag( cTax, "<ram:BasisAmount>", "</ram:BasisAmount>" ) ) // BT-101
REPLACE TAX_SUM->TAX_AMT WITH Val( ExtractTag( cTax, "<ram:CalculatedAmount>", "</ram:CalculatedAmount>" ) ) // BT-102
NEXT
USE
RETURN
/* ------------------- Helper functions ------------------- */
FUNCTION ExtractTag( cXml, cStart, cEnd )
LOCAL n1, n2
n1 := At( cStart, cXml )
IF n1 == 0
RETURN ""
ENDIF
n1 += Len( cStart )
n2 := HB_At( cEnd, cXml, n1 )
RETURN AllTrim( SubStr( cXml, n1, n2 - n1 ) )
RETURN ""
FUNCTION ExtractTaxes( cXml )
LOCAL aTaxes := {}
LOCAL nPos := 1, n1, n2
DO WHILE ( n1 := HB_At( "<ram:ApplicableTradeTax>", cXml, nPos ) ) > 0
n2 := HB_At( "</ram:ApplicableTradeTax>", cXml, n1 )
AAdd( aTaxes, SubStr( cXml, n1, n2 - n1 ) )
nPos := n2 + 1
ENDDO
RETURN aTaxes
RETURN {}
FUNCTION LastInvoiceId()
LOCAL cId := ""
USE INVOICE NEW
GO BOTTOM
cId := PAYMENT->INV_ID
USE
RETURN cId
RETURN ""
it seem to happend in second Loop of
45 USE TAX_SUM NEW exclusiv
46 ZAP
47 FOR EACH cTax IN ExtractTaxes( cXml )
48 APPEND BLANK
HMG Errorlog File
------------------------------------
Date:11/27/25 Time: 10:19:35
Error DBCMD/2001 Workarea not in use DBAPPEND
Called from DBAPPEND(0)
Called from IMPORTINVOICE(48)
Called from MAIN(13)
------------------------------------
any TIP ?