SwissSalary | Publisher Events

Task #6937 und #10748 | 5058.000 

1.)Come funzionano gli eventi?
Il principio fondamentale prevede che nell’applicazione si sono programmati i publisher-events per inserire un comportamento personalizzato.

 

2.)A partire da quale versione sono disponibili gli eventi?
Gli eventi sono supportati dalla versione NAV 2016 fino alla nuovissima versione BC compresa.

 

3.)I casi di applicazione che SwissSalary ha pubblicato
SwissSalary ha pubblicato due casi di applicazione.
I partner potranno usufruire dei vantaggi dei Publisher-Events pubblicati nelle loro soluzioni.

I partner potranno anche programmare un subscriber-event che aspetta un publisher-event pubblicato per poi modificarlo. Un subscriber permette ai partner di entrare nella funzionalità centrale dell’applicazione senza dover riprendere le tradizionali modifiche dei codici.

-Caso d’applicazione al conteggio salario adattato

Salvare il conteggio salario adattato in PDF

Inviare a Direct il conteggio salario adattato

-Caso d’applicazione al certificato di salario adattato

Salvare certificato di salario adattato in PDF

Inviare il certificato di salario adattato a Direct

 

4.)Esempi di codici per 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.)Utilizzare Microsoft Event-Publisher per sostituire i richiami delle relazioni
Microsoft offre questo Publisher a partire dalla versione BC13.
Se il partner vuole cambiare tutti i richiami dei calcoli di salario con il calcolo di salario personalizzato, può utilizzare il seguente Publisher di Microsoft:
 
[EventSubscriber(ObjectType::Codeunit, Codeunit::ReportManagement, 'OnAfterSubstituteReport', '', false, false)]

local procedure HandleOnAfterSubstitueReport(ReportId: Integer; var NewReportId: Integer)

begin

   IF ReportId = REPORT::"SwS Paycheck" THEN

       NewReportId := REPORT::"SwS Custom Paycheck";

end;