Fakturatexte¶
Die Fakturatexte sind über Events erweiterbar.
Achtung
Die nachfolgenden Erweiterungen benötigen mindestens die Version 17.6.
Beispiel: Erweiterung über Codeunit 5250260 "BSSSP LayoutCalculation"¶
Szenario: Wir wollen einen zusätzlichen Platzhalter für Gruppierungen und Ausgaben vom Typ Leistungsart durchführen. Dieser Platzhalter soll die Kundennummer der Leistung beinhalten.
Über das Event OnGetAvailableDocumentPlaceholders in der Codeunit "BSSSP LayoutCalculation" können wir folgenden Eventsubscriber erstellen, nachfolgend eine beispielhafte Implementierung:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"BSSSP LayoutCalculation", 'OnGetAvailableDocumentPlaceholders', '', true, false)]
local procedure OnGetAvailableDocumentPlaceholders(var DocumentLayoutLineBuffer: Record "BSSSP Document Layout Line"; var ReturnText: Text)
var
ContentLbl: Label '%%1 = %2\';
begin
if DocumentLayoutLineBuffer."Calculation Type" = DocumentLayoutLineBuffer."Calculation Type"::Service then begin
ReturnText += StrSubstNo(ContentLbl, 'KdNr', 'Kundennummer');
end;
end;
Über diese Implementierung sieht der Kunde schonmal den Platzhalter als "Vorschlag", der Platzhalter ist %KdNr mit der Beschreibung "Kundennummer".
Um den Platzhalter nun zu ersetzen, verwenden wir ein weiteres Event, OnGetDocumentText, nachfolgend eine beispielhafte Implementierung:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"BSSSP LayoutCalculation", 'OnGetDocumentText', '', true, false)]
local procedure OnGetDocumentTextCustomerNo(var DocumentLayoutLineBuffer: Record "BSSSP Document Layout Line"; SourceRecordVariant: Variant; var ReturnText: Text)
var
Service: Record "BSSSP Service";
begin
if DocumentLayoutLineBuffer."Calculation Type" = DocumentLayoutLineBuffer."Calculation Type"::Service then begin
if SourceRecordVariant.IsRecord() then begin
Service := SourceRecordVariant;
//Platzhalter suchen und durch Kundennummer in der Leistung ersetzen
ReturnText := ReturnText.Replace('%KdNr', Service."Sell-to Customer No.");
end;
end;
end;
Wichtig
Der "SourceRecordVariant: Variant" ist immer anhängig von dem aktuellen "Calculation Type" der Zeile, wenn die Ausgabe nach Einsatz erfolgen sollen, steht hier nur der Einsatz zur Verfügung.