SwissSalary | Événements d'éditeur |
Task #6937 und #10748 | 5058.000
1.)Comment fonctionnent les événements ? 1.)À partir de quelle version les événements sont-ils disponibles ? 2.)Cas d’application publiés par SwissSalary Les partenaires peuvent aussi programmer un événement d’abonné (Subscriber event), qui attendra ensuite un événement d’éditeur publié, puis le traitera. Un abonné permet aux partenaires de s’enclencher au cœur de la fonctionnalité de l’application, sans avoir à procéder à la classique modification de code. -cas d’application de décompte salaire ajusté Enregistrer le décompte salaire ajusté comme PDF Envoyer le décompte salaire ajusté à Direct -cas d’application du certificat de salaire ajusté Enregistrer le certificat de salaire remanié en PDF Envoyer le certificat de salaire ajusté à Direct 3.)Exemples de code pour les événements d’abonné (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('Aucun traitement de salaire n’a été trouvé. Code d’erreur %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;
4.)Autres exemples de code pour les événements d’abonné (Subscriber-Events) Théoriquement, il est également possible de personnaliser l’objet ou le corps du message (Body) : 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('aziz.mulaj@swisssalary.ch'); end;
Étant donné que la même fonction est aussi utilisée par le rapport « Décompte salaire PDF », il a fallu transformer un peu le code au cas où les destinataires ne devraient pas être modifiés lors de l’envoi du décompte salaire par courrier électronique. 5.)Utiliser Microsoft Event Publisher pour remplacer les consultations de rapport local procedure HandleOnAfterSubstitueReport(ReportId: Integer; var NewReportId: Integer) begin IF ReportId = REPORT::"SwS Paycheck" THEN NewReportId := REPORT::"SwS Custom Paycheck"; end;
|