@@ -90,6 +90,7 @@ TXRechnungHelper = class(TObject)
9090 XRechnungVersion_230_UNCEFACT_Deprecated,
9191 XRechnungVersion_30x_UBL,
9292 XRechnungVersion_30x_UNCEFACT,
93+ ZUGFeRDExtendedVersion_232,
9394 XRechnungVersion_ReadingSupport_ZUGFeRDFacturX);
9495
9596 TXRechnungValidationHelper = class (TObject)
@@ -331,6 +332,7 @@ class function TXRechnungInvoiceAdapter.LoadFromXMLDocument(
331332 XRechnungVersion_230_UNCEFACT_Deprecated : Result := TXRechnungInvoiceAdapter230.LoadDocumentUNCEFACT(_Invoice,_XmlDocument,_Error);
332333 XRechnungVersion_30x_UNCEFACT : Result := TXRechnungInvoiceAdapter301.LoadDocumentUNCEFACT(_Invoice,_XmlDocument,_Error);
333334 { $IFNDEF ZUGFeRD_Support}
335+ ZUGFeRDExtendedVersion_232,
334336 XRechnungVersion_ReadingSupport_ZUGFeRDFacturX : Result := TXRechnungInvoiceAdapter301.LoadDocumentUNCEFACT(_Invoice,_XmlDocument,_Error);
335337 else exit;
336338 { $ELSE}
@@ -368,7 +370,8 @@ class procedure TXRechnungInvoiceAdapter.SaveDocument(_Invoice: TInvoice;
368370 XRechnungVersion_230_UBL_Deprecated : TXRechnungInvoiceAdapter230.SaveDocumentUBL(_Invoice,_Xml);
369371 XRechnungVersion_30x_UBL : TXRechnungInvoiceAdapter301.SaveDocumentUBL(_Invoice,_Xml);
370372 XRechnungVersion_230_UNCEFACT_Deprecated : TXRechnungInvoiceAdapter230.SaveDocumentUNCEFACT(_Invoice,_Xml);
371- XRechnungVersion_30x_UNCEFACT : TXRechnungInvoiceAdapter301.SaveDocumentUNCEFACT(_Invoice,_Xml);
373+ XRechnungVersion_30x_UNCEFACT : TXRechnungInvoiceAdapter301.SaveDocumentUNCEFACT(_Invoice,_Xml,true);
374+ ZUGFeRDExtendedVersion_232 : TXRechnungInvoiceAdapter301.SaveDocumentUNCEFACT(_Invoice,_Xml,false);
372375 else raise Exception.Create(' XRechnung - wrong version' );
373376 end ;
374377end ;
@@ -713,6 +716,9 @@ class function TXRechnungHelper.InvoicePaymentMeansCodeFromStr(
713716 if SameText(_Val,' 59' ) then
714717 Result := ipmc_SEPADirectDebit
715718 else
719+ if SameText(_Val,' 68' ) then
720+ Result := ipmc_OnlinePaymentService
721+ else
716722 if SameText(_Val,' ZZZ' ) then
717723 Result := ipmc_MutuallyDefined
718724 else
@@ -731,6 +737,7 @@ class function TXRechnungHelper.InvoicePaymentMeansCodeToStr(_Val: TInvoicePayme
731737 ipmc_CreditCard: Result := ' 54' ;
732738 ipmc_SEPACreditTransfer: Result := ' 58' ;
733739 ipmc_SEPADirectDebit: Result := ' 59' ;
740+ ipmc_OnlinePaymentService: Result := ' 68' ;
734741 ipmc_MutuallyDefined: Result := ' ZZZ' ;
735742 else Result := ' 1' ; // ipmc_InstrumentNotDefined
736743 end ;
@@ -1071,7 +1078,8 @@ class function TXRechnungValidationHelper.GetXRechnungVersion(
10711078 if Pos(' xrechnung_3.0' ,AnsiLowerCase(node.Text))>0 then
10721079 Result := XRechnungVersion_30x_UBL;
10731080 end else
1074- if (SameText(_XML.DocumentElement.NodeName,' CrossIndustryInvoice' ) or SameText(_XML.DocumentElement.NodeName,' rsm:CrossIndustryInvoice' )) then
1081+ if (SameText(_XML.DocumentElement.NodeName,' CrossIndustryInvoice' ) or
1082+ SameText(_XML.DocumentElement.NodeName,' rsm:CrossIndustryInvoice' )) then
10751083 begin
10761084 if not (TXRechnungXMLHelper.FindChild(_XML.DocumentElement,' rsm:ExchangedDocumentContext' ,node) or
10771085 TXRechnungXMLHelper.FindChild(_XML.DocumentElement,' ExchangedDocumentContext' ,node)) then
@@ -1086,7 +1094,10 @@ class function TXRechnungValidationHelper.GetXRechnungVersion(
10861094 if Pos(' xrechnung_3.0' ,AnsiLowerCase(node.Text))>0 then
10871095 Result := XRechnungVersion_30x_UNCEFACT
10881096 else
1089- if Pos(' urn:cen.eu:en16931:2017' ,AnsiLowerCase(node.Text))=1 then
1097+ if SameText(node.Text,' urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended' ) then
1098+ Result := ZUGFeRDExtendedVersion_232
1099+ else
1100+ if Pos(' urn:cen.eu:en16931:2017' ,AnsiLowerCase(node.Text))>0 then
10901101 Result := XRechnungVersion_ReadingSupport_ZUGFeRDFacturX;
10911102 end ;
10921103end ;
@@ -1459,6 +1470,7 @@ class function TZUGFeRDInvoiceAdapter.LoadFromInvoiceDescriptor(
14591470 SEPACreditTransfer: lPaymentMeansCode := ipmc_SEPACreditTransfer;
14601471 SEPADirectDebit: lPaymentMeansCode := ipmc_SEPADirectDebit;
14611472 NotDefined: lPaymentMeansCode := ipmc_InstrumentNotDefined;
1473+ // TODO Fehlt 68
14621474 // AutomatedClearingHouseDebit: ;
14631475 // DebitTransfer: ;
14641476 // PaymentToBankAccount: ;
0 commit comments