Zum Inhalt

Implementierung der Multimail-Funktionalität

Die Implementierung der Multimail-Funktionalität innerhalb des Document Dispatch kann auf weitere Seiten ausgeweitet werden. Im Folgenden wird ein Beispiel für die Integration der Multimail-Funktion gezeigt. Diese spezielle Implementierung ist auf die Seite zugeschnitten, die mit dem Datensatz Sales Invoice Header verbunden ist. Bitte beachten Sie die hervorgehobenen Zeilen im Codeschnipsel. Diese Zeilen sollten an den jeweiligen Datensatz angepasst werden.

AL
action(SIM_EDS_Multimail)
{
    Caption = 'Multimail';
    ToolTip = 'This button sends all marked entries via email. The entries will be sent in case an active dispatch profile is configured for the respective entries.';
    Ellipsis = true;
    Image = SendTo;
    ApplicationArea = All;

    trigger OnAction()
    var
        LocalRecordSIMEDSSetup: Record "SIM_EDS Setup";
        LocalRecordSalesInvoiceHeader: Record "Sales Invoice Header";
        TempLocalRecordSIMEDSRecord: Record "SIM_EDS Record" temporary;
        TempLocalRecordSIMEDSBusinessPartner: Record "SIM_EDS Business Partner" temporary;
        TempLocalRecordSIMEDSDynamicBP: Record "SIM_EDS Dynamic BP" temporary;
        LocalRecordSIMEDSMultimailPreview: Record "SIM_EDS Multimail Preview";
        LocalCodeunitSIMEDSMgt: Codeunit "SIM_EDS Mgt";
        LocalCodeunitSIMEDSQueueMgt: Codeunit "SIM_EDS Queue Mgt";
        LocalCodeunitSIMEDSSI: Codeunit "SIM_EDS SI";
        LocalCodeunitSIMEDSMailMgt: Codeunit "SIM_EDS Mail Mgt";
        LocalRecordRef: RecordRef;
        LocalDynamicBusinessMappingExistsBoolean: Boolean;
        LocalNotAllEntriesPossible: Boolean;
        LocalExtendedBusinessMappingExistsBoolean: Boolean;
        LocalEntryNoListOfInteger: List of [Integer];
    begin
        LocalRecordSIMEDSMultimailPreview.DeleteAll();
        LocalCodeunitSIMEDSSI.ClearListsForMultimail();

        CurrPage.SetSelectionFilter(LocalRecordSalesInvoiceHeader);
        if not LocalRecordSIMEDSSetup.Get() then exit;

        if LocalRecordSalesInvoiceHeader.FindSet() then
            repeat
                LocalRecordRef.GetTable(LocalRecordSalesInvoiceHeader);

                LocalCodeunitSIMEDSMgt.GetRecords(LocalRecordRef, TempLocalRecordSIMEDSRecord);

                LocalCodeunitSIMEDSMgt.GetRecordAssignedData(
                    LocalRecordRef,
                    true,
                    LocalDynamicBusinessMappingExistsBoolean,
                    LocalExtendedBusinessMappingExistsBoolean,
                    TempLocalRecordSIMEDSRecord,
                    TempLocalRecordSIMEDSBusinessPartner,
                    TempLocalRecordSIMEDSDynamicBP,
                    true);

                TempLocalRecordSIMEDSRecord.SetRange("Table No.", LocalRecordRef.Number());
                TempLocalRecordSIMEDSRecord.SetRange("Output Type", TempLocalRecordSIMEDSRecord."Output Type"::"Mail");
                if not TempLocalRecordSIMEDSRecord.IsEmpty then
                    LocalCodeunitSIMEDSQueueMgt.SendEDS(LocalRecordRef, true, false, '', false, false, true)
                else begin
                    LocalNotAllEntriesPossible := true;
                    LocalCodeunitSIMEDSSI.AddFailedMultimailRecordToList(LocalRecordSalesInvoiceHeader.RecordId);
                    LocalCodeunitSIMEDSSI.AddFailedMultimailEntryNoToList(0);
                end;
            until LocalRecordSalesInvoiceHeader.Next() = 0;

        LocalEntryNoListOfInteger := LocalCodeunitSIMEDSSI.GetEntryNoList();

        if LocalEntryNoListOfInteger.Count <> 0 then begin
            if LocalCodeunitSIMEDSMgt.CheckCreatedMultimailEntries(LocalEntryNoListOfInteger) then begin
                LocalCodeunitSIMEDSMailMgt.SetMultimailDocuments(true);
                LocalCodeunitSIMEDSMailMgt.CheckEmailFilled(LocalEntryNoListOfInteger);
                LocalCodeunitSIMEDSMgt.Multimail(LocalEntryNoListOfInteger);
            end;
            if LocalNotAllEntriesPossible and not LocalRecordSIMEDSSetup."Use Multimail Preview" then
                Message(GlobalSelectedEnrtiesMultimailNotPossibleLabelTxt);
        end else
            Message(GlobalMultimailNotPossibleLabelMsg);

        LocalCodeunitSIMEDSSI.ClearListsForMultimail();

        LocalRecordSIMEDSMultimailPreview.Reset();
        LocalRecordSIMEDSMultimailPreview.DeleteAll();
    end;
}