Arbeiten mit XRechnung
Events
Wir bieten Ihnen die Möglichkeit sich mit Events in unsere Programmierlogik einzuklinken, hier beschreiben wir Ihnen wie dies geht.
Um ein Event fĂĽr Verkaufsrechnungen bzw. Servicerechnungen zu subscriben, muss der XML-Port BEL365 S. Inv. XRechnung 2.0 in einem EventSubscriber angegeben werden.
Beispiel:
1
|
[EventSubscriber(ObjectType::XmlPort, XmlPort::"BEL365 S. Inv. XRechnung 2.0", 'OnAfterGetLineInvoicePeriodInfo', "", true, true)]
|
FĂĽr Verkaufsgutschriften bzw. Servicegutschriften ist als folgender XML-Port einzutragen: BEL365 S. Cr. M. XRechnung 2.0.
Beispiel:
1
|
[EventSubscriber(ObjectType::XmlPort, XmlPort::"BEL365 S. Cr. M. XRechnung 2.0", 'OnAfterGetLineInvoicePeriodInfo', "", true, true)]
|
Einige der Business Terms, welche im folgenden aufgelistet werden, können nicht über die beiden oben genannten XML-Ports verändert werden.
Connector 365 XRechnung bedient sich teilweise aus Funktionen der Microsoft Standard-Codeunit: PEPPOL Management (1605).
Die betroffenden Events werden in dieser Dokumentation mit einer Hinweis-Box versehen.
Die XRechnung-Events bieten die Möglichkeit, Business Terms zu „füllen“ nachdem Sie standardmäßig gesetzt werden und noch bevor Sie weiterverarbeitet, also in die resultierende XML-Datei eingefügt werden. Die Business Terms werden dabei jeweils als Text-Variable übergeben. Vorangestellt an diesen Variablen steht das Schlüsselwort VAR, welches angibt, dass die Variablen Referenzen auf die ursprünglichen Variablen sind.
Nachdem Sie eine Funktion als Subscriber definiert haben, so können Sie die übergebenen Variablen beliebig und nach eigener Logik füllen.
Beispiel
1
2
3
4
5
6
7
8
9
10
|
[EventSubscriber(ObjectType::XmlPort, XmlPort::"BEL365 S. Inv. XRechnung 2.0", 'OnAfterGetLineInvoicePeriodInfo', "", true, true)]
local procedure SubAfterGetLineInvoicePeriodInfo (
var Sender: XmlPort "BEL365 S. Inv. XRechnung 2.0";
SalesLine: Record "Sales Line";
var InvLineInvoicePeriodStartDate: Text;
var InvLineInvoicePeriodEndDate: Text);
begin
InvLineInvoicePeriodStartDate := format(SalesLine."Posting Date");
InvLineInvoicePeriodEndDate := '2021-04-15';
end;
|
Die Funktion SubAfterGetLineInvoicePeriod ist hier ein Subscriber fĂĽr das Event OnAfterGetLineInvoicePeriodInfo.
Unabhängig von der Standardmäßigen Logik der Füllung der Variablen, enthält InvLineInvoicePeriodEndDate nach Erzeugung der XRechnung nun den Wert „2021-04-15“ und erscheint so in der resultierenden XML-Datei. Gleiche Vorgehensweise gilt für alle weiteren Events.
Im Folgenden eine Auflistung der verfügbaren Events und die damit zu verändernden Variablen.
Zu Beginn des XML-Ports wird überprüft, ob es sich um einen Verkaufsbeleg bzw. um einen Servicebeleg handelt. Anschließend werden die zugehörigen Record-Variablen in die Variablen „Sales Header“ und „Sales Line“ transferiert, welche von dort an über den gesamten XML-Port verwendet werden. Beispiel für Verkaufsrechnungen:
„Sales Invoice Header“ -> „Sales Header“,
„Sales Invoice Line“ -> „Sales Line“.
Dies ist der Grund, weshalb alle folgenden Events mit „Sales Header“ oder mit „Sales Line“ arbeiten.
GetGeneralInfoBIS
Dieses Event stammt aus der Codeunit: PEPPOL Management (1605).
1
2
3
4
5
6
7
8
|
. SalesHeader: Record "Sales Header"
. var ID: Text (BT-1)
. var IssueDate: Text (BT-2)
. var InvoiceTypeCode: Text (BT-3)
. var Note: Text (BT-22)
. var TaxPointDate: Text (BT-7)
. var DocumentCurrencyCode: Text (BT-5)
. var AccountingCost: Text (BT-19)
|
Name |
Business Term |
Semantischer Datentyp |
Invoice number |
BT-1 |
Identifier |
Eine eindeutige Kennung der Rechnung, die diese im System des Verkäufers identifiziert. |
Invoice issue date |
BT-2 |
Date |
Das Datum, an dem die Rechnung ausgestellt wurde. |
Invoice type code |
BT-3 |
Code |
Ein Code, der den Funktionstyp der Rechnung angibt.
Anmerkung: Der Rechnungstyp muss gemäß UNTDID 1001 spezifiert werden. |
Invoice currency code |
BT-5 |
Code |
Die Währung, in der alle Rechnungsbeträge angegeben werden, ausgenommen ist der Umsatzsteuer-Gesamtbetrag, der in der Abrechnungswährung anzugeben ist. |
Value added tax point date |
BT-7 |
Date |
Das Datum, zu dem die Umsatzsteuer für den Verkäufer und für den Erwerber abrechnungsrelevant wird. Die Anwednung von BT-7 und 8 schließen sich gegenseitig aus. |
Buyer accounting reference |
BT-19 |
Text |
Ein Textwert, der angibt, an welcher Stelle die betreffenden Daten in den Finanzkosten des Erwerbers zu buchen sind. |
Invoice note |
BT-22 |
Text |
Ein Textvermerk, der unstrukturierte Informationen enthält, die für die Rechnung als Ganzes maßgeblich sind. |
OnGetInvoicePeriod
1
2
3
|
. SalesHeader: Record "Sales Header"
. VAR InvoicePeriodStartDate : Text (BT-73)
. VAR InvoicePeriodEndDate : Text (BT-74)
|
Name |
Business Term |
Semantischer Datentyp |
Invoicing period start date |
BT-73 |
Date |
Das Datum, an dem der Abrechnungszeitraum beginnt. |
Invoicing period end date |
BT-74 |
Date |
Das Datum, an dem der Abrechnungszeitraum endet.
|
Das Event OnGetInvoicePeriod kann genutzt werden, um das Leistungsdatum bzw. ein Leistungszeitraum für eine Rechnung festzulegen. Dabei wird ein Zeitraum durch einen Start- und einen Endzeitpunkt definiert, die jeweils folgendes Format erhalten sollen: „YYYY-MM-DD“. Beispiel: 2017-10-01
OnAfterGetLineInvoicePeriodInfo
1
2
3
|
. SalesLine : Record „Sales Line“
. VAR InvLineInvoicePeriodStartDate : Text
. VAR InvLineInvoicePeriodEndDate : Text
|
Dieses Event setzt das Leistungsdatum ähnlich wie bei OnGetInvoicePeriod fest, jedoch auf Zeilenebene.
1
2
3
4
5
|
. SalesHeader : Record “Sales Header”
. VAR ContactName : Text (BT-41)
. VAR Telephone : Text (BT-42)
. VAR Telefax : Text
. VAR ElectronicMail : Text (BT-43)
|
Name |
Business Term |
Semantischer Datentyp |
Seller Contact Point |
BT-41 |
Text |
Angaben zu Ansprechpartner oder Kontaktstelle (wie z.B. Name einer Person, Abteilungs- oder BĂĽrobezeichnung |
Seller contact telephone number |
BT-42 |
Text |
Telefonnummer des Ansprechpartners oder der Kontaktstelle |
Seller contact email address |
BT-43 |
Text |
Eine E-Mail-Adresse des Ansprechpartners oder der Kontaktstelle |
Business Rules:
BR-DE-2: Die Gruppe „SELLER CONTACT“ (BG-6) ist zwingend zu übermitteln.
BR-DE-5: Das Element „SELLER CONTACT POINT“ (BT-41) ist zwingend zu übermitteln.
BR-DE-6: Das Element „SELLER CONTACT TELEPHONE NUMBER“ (BT-42) ist zwingend zu übermitteln.
BR-DE-7: Das Element „SELLER CONTACT EMAIL ADDRESS“ (BT-43) ist zwingend zu übermitteln.
OnAfterGetPaymentTermsInfo
1
2
|
. SalesHeader : Record „Sales Header“
. VAR PaymentTermsNote : Text (BT-20)
|
Eine Textbeschreibung der Zahlungsbedingungen, die für den fälligen Zahlungsbetrag gelten (einschließlich Beschreibung möglicher Skonto- und Verzugsbedingungen.) Dieses Informationselement kann mehrere Zeilen und mehrere Angaben zu Zahlungsbedingungen beinhalten und sowohl unstrukturierten als strukturierten Text enthalten. Der unstrukturierte Text darf dabei keine # enthalten.
Spezifikation XRechnung Standard und Extension
Version XRechnung 2.0.0 | Fassung vom 16.12.2020
OnGetOrderLineReference
1
2
|
. SalesLine : Record „Sales Line“
. VAR OrderLineReferenceLineID : Text (BT-132)
|
Referenced purchase oder line reference
Eine vom Erwerber ausgegebene Kennung fĂĽr eine referenzierte Position einer Bestellung / eines Auftrags.
Anmerkung: Auf den Auftrag wird auf Rechnungsebene Bezug genommen.
Spezifikation XRechnung Standard und Extension
Version XRechnung 2.0.0 | Fassung vom 16.12.2020
OnAfterGetPaymentMeansInfo (BG-16)
1
2
3
4
5
6
|
. Sales Header : Record „Sales Header“
. VAR PaymentMeansCode : Text (BT-81)
. VAR PaymentChannelCode : Text (BT-82)
. VAR PaymentID : Text (BT-83)
. VAR PrimaryAccountNumberID : Text (BT-87)
. VAR NetworkID : Text
|
Name |
Business Term |
Semantischer Datentyp |
Payment means type code |
BT-81 |
Code |
Das als Code ausgedrĂĽckte erwartete oder genutzte Zahlungsmittel. Hierzu wird auf die Codeliste UN/ECE 4461 verwiesen |
Payment means text |
BT-82 |
Text |
Das in Textform ausgedrĂĽckte erwartete oder genutzte Zahlungsmittel |
Remittance information |
BT-83 |
Text |
Ein Textwert, der zur Verknüpfung der Zahlung mit der vom Verkäufer ausgestellten Rechnung verwendet wird |
Payment card primary account number |
BT-87 |
Text |
Die Nummer der Kreditkarte, die fĂĽr die Zahlung genutzt wurde |
Business Rules:
BR-DE-1: Eine Rechnung (INVOICE) muss Angaben zu „PAYMENT INSTRUCTIONS“ (BG-16) enthalten.
BR-DE-13: In der Rechnung müssen Angaben zu einer der drei Gruppen „CREDIT TRANSFER“ (BG-17), „PAYMENT CARD INFORMATION“ (BG-18) oder „DIRECT DEBIT“ (BG-19) gemacht werden.
OnAfterGetContractDocRefInfo
1
2
3
4
5
|
. SalesHeader : Record „Sales Header“
. VAR ContractDocumentReferenceID : Text (BT-12)
. VAR DocumentTypeCode : Text
. VAR ContractRefDocTypeCodeListID : Text
. VAR DocumentType : Text
|
Name |
Business Term |
Semantischer Datentyp |
Contract reference |
BT-12 |
Document Reference |
Eine eindeutige Bezeichnung des Vertrages (z.B: Vertragsnummer). |
OnAfterGetAccountingCustomerPartyInfoBIS
1
2
3
4
5
6
|
. SalesHeader: Record "Sales Header"
. VAR CustomerEndpointID: Text (BT-49)
. VAR CustomerSchemeID: Text (BT-49-1)
. VAR CustomerPartyIdentificationID: Text (BT-46)
. VAR CustomerPartyIDSchemeID: Text (BT-46-1)
. VAR CustomerName: Text (BT-45)
|
Name |
Business Term |
Semantischer Datentyp |
Buyer electronic address |
BT-49 |
Identifier |
Gibt eine elektronische Adresse des Erwerbers an, an die eine Rechnung gesendet werden sollte. |
Buyer electronic address/Scheme identifier |
Das Bildungsmuster fĂĽr Buyer electronic address.
Es ist die Codeliste Electronic Address Scheme code list (EAS) zu verwenden.
Die Codeliste wird von der Connecing Eruope Facility gepflegt und herausgegeben. |
Buyer identifier |
BT-46 |
Identifier |
Eine (i.d.R. vom Verkäufer vergebene) Kennung des Erwerbers, wie z.b. die Debitorennummer für die Buchhaltung oder die Kundennummer für die Auftragsverwaltung.
Anmerkung: FĂĽr die Bildung des Buyer Identifier ist kein einheitliches Schema erforderlich |
Die Kennungs des Bildungsschemas fĂĽr den "Buyer identifier".
|
Anmerkung: Wenn das Element verwendet wird, ist der Eintrag aus der von der ISO/IEC 6523 maintenance agency veröffentlichten Liste zu wählen.
|
Buyer trading name |
BT-45 |
Text |
Ein Name, unter dem der Erwerber bekannt ist, sofern abweichend vom Namen des Erwerbers. |
OnAfterGetPaymentMeansPayeeFinancialAccBIS (BG-17)
1
2
3
|
. VAR PayeeFinancialAccountID : Text (BT-84)
. VAR FinancialInstitutionBranchID : Text (BT-86)
. VAR PayeeFinancialAccountName : Text (BT-85)
|
Name |
Business Term |
Semantischer Datentyp |
Payment account identifier |
BT-84 |
Identifier |
Die Kennung des Kontos, auf das die Zahlung erfolgen soll: IBAN fĂĽr Zahlungen im SEPA-Raum, Kontonummer oder IBAN im Fall von Auslandszahlungen |
Payment account name |
BT-85 |
Text |
Name des Kontos bei einem Zahlungsdienstleister, auf das die Zahlunge erfolgeng soll. (z.B. Kontoinhaber) |
OnAfterGetLineGeneralInfo
1
2
3
4
5
6
7
8
|
. SalesLine : Record „Sales Line“
. SalesHeader : Record „Sales Header“
. VAR InvoiceLineID : Text
. VAR InvoiceLineNote : Text
. VAR InvoicedQuantity : Text
. VAR InvoiceLineExtensionAmount : Text
. VAR LineExtensionAmountCurrencyID : Text
. VAR InvoiceLineAccountingCost : Text
|
OnAfterGetLineItemInfo
1
2
3
4
5
6
7
8
|
. SalesLine: Record "Sales Line"
. VAR Description: Text
. VAR Name: Text
. VAR SellersItemIdentificationID: Text
. VAR StandardItemIdentificationID: Text
. VAR StdItemIdIDSchemeID: Text
. VAR OriginCountryIdCode: Text
. VAR OriginCountryIdCodeListID: Text
|
OnAfterGetAccountingSupplierPartyLegalEntityBIS
1
2
3
4
5
6
7
|
. SalesHeader: record "Sales Header"
. var PartyLegalEntityRegName: Text
. var PartyLegalEntityCompanyID: Text
. var PartyLegalEntitySchemeID: Text
. var SupplierRegAddrCityName: Text
. var SupplierRegAddrCountryIdCode: Text
. var SupplRegAddrCountryIdListId: Text
|
OnAfterGetAccountingSupplierPartyTaxSchemeBIS
1
2
3
4
5
|
. SalesHeader: record "Sales Header"
. var TempVATAmountLine: record "VAT Amount Line"
. var CompanyID: text
. var CompanyIDSchemeID: text
. var TaxSchemeID: text
|
OnAfterGetAccountingSupplierPartyPostalAddr
1
2
3
4
5
6
7
|
. SalesHeader: record "Sales Header"
. var StreetName: text
. var SupplierAdditionalStreetName: text
. var CityName: text
. var PostalZone: text
. var CountrySubentity: text
. var IdentificationCoder: text
|
OnAfterGetAccountingSupplierPartyInfoBIS
1
2
3
|
. SalesHeader: record "Sales Header"
. var SupplierEndpointID: text (BT-34)
. var SupplierName: text (BT-28)
|
Name |
Business Term |
Semantischer Datentyp |
Seller electronic address |
BT-34 |
Identifier |
Gibt die elektronische Adresse des Verkäufers an, an die die Antwort der Anwendungsebene auf eine Rechnung gesendet werden kann. |
Seller trading name |
BT-28 |
Text |
Ein Name, unter dem der Verkäufer bekannst ist, sofern abweichend vom Namen des Verkäufers. |
OnAfterGetAccountingCustomerPartyPostalAddr
1
2
3
4
5
6
7
|
. SalesHeader: record "Sales Header"
. var CustomerStreetName: text (BT-35)
. var CustomerAdditionalStreetName: text (BT-36)
. var CustomerCityName: text (BT-37)
. var CustomerPostalZone: text (BT-38)
. var CustomerCountrySubentity: text (BT-39)
. var CustomerIdentificationCode: text (BT-40)
|
OnAfterGetAccountingCustomerPartyTaxSchemeBIS(
1
2
3
4
|
. SalesHeader: record "Sales Header"
. var CustPartyTaxSchemeCompanyID: text
. var CustPartyTaxSchemeCompIDSchID: text
. var CustTaxSchemeID: text
|
OnAfterGetAccountingCustomerPartyLegalEntityBIS
1
2
3
4
|
. SalesHeader: record "Sales Header"
. var CustPartyLegalEntityRegName: text
. var CustPartyLegalEntityCompanyID: text
. var CustPartyLegalEntityIDSchemeID: text
|
1
2
3
4
5
|
. var SalesHeader: record "Sales Header"
. var CustContactName: text
. var CustContactTelephone: text
. var CustContactTelefax: text
. var CustContactElectronicMail: text
|
OnAfterGetGLNDeliveryInfo
1
2
3
4
|
. SalesHeader: record "Sales Header"
. var ActualDeliveryDate: text
. var DeliveryID: text
. var DeliveryIDSchemeID: text
|
OnAfterGetDeliveryAddress
1
2
3
4
5
6
7
|
. SalesHeader: record "Sales Header"
. var DeliveryStreetName: text
. var DeliveryAdditionalStreetName: text
. var DeliveryCityName: text
. var DeliveryPostalZone: text
. var DeliveryCountrySubentity: text
. var DeliveryCountryIdCode: text
|
OnAfterGetLineItemClassfiedTaxCategoryBIS
1
2
3
4
5
|
. SalesLine: record "Sales Line"
. var ClassifiedTaxCategoryID: text
. var ItemSchemeID: text
. var InvoiceLineTaxPercent: Text
. var ClassifiedTaxCategorySchemeID: text
|
OnAfterGetLineAllowanceChargeInfo
1
2
3
4
5
6
|
. SalesLine: record "Sales Line"
. SalesHeader: record "Sales Header"
. var InvLnAllowanceChargeIndicator: text
. var InvLnAllowanceChargeReason: text
. var InvLnAllowanceChargeAmount: text
. var InvLnAllowanceChargeAmtCurrID: text
|
OnAterGetLineDeliveryInfo
1
2
3
4
5
|
. SalesLine: record "Sales Line"
. SalesHeader: record "Sales Header"
. var InvoiceLineActualDeliveryDate: text
. var InvoiceLineDeliveryID: text
. var InvoiceLineDeliveryIDSchemeID: text
|
OnAfterGetLineDeliveryPostalAddr
1
2
3
4
5
6
7
8
9
|
. SalesLine: record "Sales Line"
. SalesHeader: record "Sales Header"
. var InvoiceLineDeliveryStreetName: text
. var InvLineDeliveryAddStreetName: text
. var InvoiceLineDeliveryCityName: text
. var InvoiceLineDeliveryPostalZone: text
. var InvLnDeliveryCountrySubentity: text
. var InvLnDeliveryCountryIdCode: text
. var InvLineDeliveryCountryListID: text
|
OnAfterGetTaxRepresentativePartyInfo
1
2
3
4
5
|
. SalesHeader: record "Sales Header"
. var TaxRepPartyNameName: text
. var PayeePartyTaxSchemeCompanyID: text
. var PayeePartyTaxSchCompIDSchemeID: text
. var PayeePartyTaxSchemeTaxSchemeID: text
|
OnAfterGetAllowanceChargeInfo
1
2
3
4
5
6
7
8
9
10
11
|
. TempVATAmountLine: record "VAT Amount Line"
. SalesHeader: record "Sales Header"
. var ChargeIndicator: text
. var AllowanceChargeReasonCode: text
. var AllowanceChargeReason: text
. var Amount: text
. var AllowanceChargeCurrencyID: text
. var TaxCategoryID: text
. var TaxCategorySchemeID: text
. var Percent: text
. var AllowanceChargeTaxSchemeID: text
|
OnAfterGetTaxExemptionReason
1
2
3
4
|
. SalesHeader: record "Sales Header"
. TempVATProductPostingGroup: record "VAT Product Posting Group"
. var TaxExemptionReason: text
. var TaxTotalTaxCategoryID: text
|
OnAfterGetLineAdditionalItemPropertyInfo
1
2
3
4
|
. SalesLine: record "Sales Line"
. SalesHeader: record "Sales Header"
. var AdditionalItemPropertyName: Text
. var AdditionalItemPropertyValue: Text
|
OnAfterGetLinePriceAllowanceChargeInfo
1
2
3
4
5
6
|
. SalesHeader: record "Sales Header"
. var PriceChargeIndicator: text
. var PriceAllowanceChargeAmount: text
. var PriceAllowanceAmountCurrencyID: text
. var PriceAllowanceChargeBaseAmount: text
. var PriceAllowChargeBaseAmtCurrID: text
|