Individueller Objekt-Aufruf (Lohnabrechnung etc.) |
Task #6937 und #10748 | 5058.000
1.)Wie funktionieren Events? 2.)Ab welcher Version sind Events verfügbar? 3.)Anwendungsfälle welche SwissSalary publiziert hat Die Partner können dazu ein Subscriber-Event programmieren, welcher dann auf einen veröffentlichten Publisher-Event wartet und diesen dann abhandelt. Ein Subscriber ermöglicht es Partnern, sich in die Kernfunktionalität der Anwendung einzuklinken, ohne traditionelle Codeänderungen vornehmen zu müssen. -Anwendungsfall angepasste Lohnabrechung Angepasste Lohnabrechnung als PDF speichern Angepasste Lohnabrechnung an Direct versenden -Anwendungsfall angepasster Lohnausweis Angepassten Lohnausweis als PDF speichern Angepassten Lohnausweis an Direct versenden 4.)Code Beispiele für Subscriber-Events [EventSubscriber(ObjectType::Codeunit, Codeunit::"SwS Bulk Report Management", 'OnBeforeSavePaycheckAsPdf', '', false, false)] local procedure HandleOnBeforeSavePaycheckAsPdf(pPayrollHead: Record "SwS Payroll Head"; pReportID: Integer; pReportParams: Record "SwS Working Table"; var pDescription: Text[1024]; var pHandled: Boolean; var pPaycheckTempBlob: Record "SwS TempBlob") begin SaveCustomPaycheckAsPdf(pPayrollHead, pReportParams, pPaycheckTempBlob, pDescription); pHandled := true; end; local procedure SaveCustomPaycheckAsPdf(pPayrollHead: Record "SwS Payroll Head"; pReportParams: Record "SwS Working Table" temporary; var pPaycheckTempBlob: Record "SwS TempBlob"; var pDescription: Text[1024]) var CustomReport: Report "SwS Custom Paycheck"; Employee: Record "SwS Employee"; PayrollHeadWithNoFilters: Record "SwS Payroll Head"; FileTempBlobOutStream: OutStream; begin // Template for custom paycheck report if (pPayrollHead."Payroll No." = 0) or (pPayrollHead."Employee No." = '') then Error('Kein Lohnlauf gefunden. Fehlercode %1', 1005);
Clear(CustomReport); CustomReport.SetTableView(PayrollHeadWithNoFilters); // Set all user specific filters on DataItem back to empty CustomReport.UseRequestPage(false); CustomReport.SetReportParams(pReportParams); CustomReport.SetSinglePaycheckFilter(pPayrollHead."Payroll No.", pPayrollHead."Employee No.");
Clear(FileTempBlobOutStream); pPaycheckTempBlob.Blob.CreateOutStream(FileTempBlobOutStream); CustomReport.SaveAs('', REPORTFORMAT::Pdf, FileTempBlobOutStream); Employee.Get(pPayrollHead."Employee No."); pDescription := 'Lohnabrechnung Custom'; end;
5.)Weiteres Code Beispiele für Subscriber-Events Theoretisch gibt es so auch die Möglichkeit den Betreff oder den E-Mail Text (Body) anzupassen: local procedure HandleOnCreateMessageAuto(var pToRecipients: List of [Text]; var pSubject: Text; var pBody: Text; var pHandled: Boolean) begin pToRecipients.RemoveRange(1, pToRecipients.Count());
pToRecipients.Add('max.muster@gmail.com'); pToRecipients.Add('peter.mueller@kunde.ch'); end;
Da die gleiche Funktion auch vom Bericht «Lohnabrechnung PDF» verwendet wird, müsste man den Code ein wenig anpassen falls die Empfänger bei der Lohnabrechnung als Mail senden nicht geändert werden sollen. 6.)Microsoft Event-Publisher nutzen um Report Aufrufe zu ersetzen local procedure HandleOnAfterSubstitueReport(ReportId: Integer; var NewReportId: Integer) begin IF ReportId = REPORT::"SwS Paycheck" THEN NewReportId := REPORT::"SwS Custom Paycheck"; end;
|