Mise en oeuvre de la fonctionnalité Multimail
La mise en oeuvre de la fonctionnalité Multimail dans le Document Dispatch peut être étendue à d'autres pages. Vous trouverez ci-dessous un exemple d'intégration de la fonctionnalité Multimail. Cette implémentation particulière est adaptée à la page associée à l'enregistrement Sales Invoice Header. Veuillez noter les lignes surlignées dans l'extrait de code, ces lignes doivent être modifiées pour correspondre à l'enregistrement spécifique.
| 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;
}
|