Codeunit 6756 Issue Reminder Event Handler, source in 29
Source29
src/Layers/W1/BaseApp/Sales/Reminder/Automation/Actions/IssueReminders/IssueReminderEventHandler.Codeunit.al81 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.Reminder;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Finance.GeneralLedger.Posting;
/// <summary>
/// Handles events during automated reminder issuing to track progress and log results.
/// </summary>
codeunit 6756 "Issue Reminder Event Handler"
{
Permissions = tabledata "Issued Reminder Header" = rmid;
EventSubscriberInstance = Manual;
var
GlobalReminderAction: Record "Reminder Action";
GlobalReminderActionProgress: Codeunit "Reminder Action Progress";
NoRemindersIssuedTxt: Label 'No reminders were issued.';
RemindersIssuedTxt: Label '%1 reminders were issued.', Comment = '%1 number of reminders issued';
NumberOfIssuedReminders: Integer;
internal procedure SetReminderAction(ReminderAction: Record "Reminder Action")
begin
GlobalReminderAction.Copy(ReminderAction);
end;
internal procedure SetReminderActionProgress(ReminderActionProgress: Codeunit "Reminder Action Progress")
begin
GlobalReminderActionProgress := ReminderActionProgress;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Issue Reminder Action Job", 'OnIssueReminderSafe', '', false, false)]
local procedure HandleIssueReminderSafe(var ReminderHeader: Record "Reminder Header"; ReplacePostingDate: Boolean; NewPostingDate: Date; ReplaceVATDate: Boolean; NewVATDate: Date; var GenJournalBatch: Record "Gen. Journal Batch"; var Success: Boolean)
begin
IssueReminderSafe(ReminderHeader, ReplacePostingDate, NewPostingDate, ReplaceVATDate, NewVATDate, GenJournalBatch, Success);
end;
[CommitBehavior(CommitBehavior::Ignore)]
local procedure IssueReminderSafe(var ReminderHeader: Record "Reminder Header"; ReplacePostingDate: Boolean; NewPostingDate: Date; ReplaceVATDate: Boolean; NewVATDate: Date; var GenJournalBatch: Record "Gen. Journal Batch"; var Success: Boolean)
var
IssueReminder: Codeunit "Reminder-Issue";
begin
IssueReminder.Set(ReminderHeader, ReplacePostingDate, NewPostingDate, ReplaceVATDate, NewVATDate);
IssueReminder.SetGenJnlBatch(GenJournalBatch);
IssueReminder.Run();
Success := true;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Reminder-Issue", 'OnAfterIssueReminder', '', false, false)]
local procedure UpdateStatusWhenReminderIsIssued(var ReminderHeader: Record "Reminder Header"; IssuedReminderNo: Code[20]; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line")
var
IssuedReminderHeader: Record "Issued Reminder Header";
begin
NumberOfIssuedReminders += 1;
GlobalReminderActionProgress.UpdateStatusAndTotalRecordsProcessed(GlobalReminderAction, NumberOfIssuedReminders, StrSubstNo(RemindersIssuedTxt, NumberOfIssuedReminders));
IssuedReminderHeader.Get(IssuedReminderNo);
IssuedReminderHeader."Reminder Automation Code" := GlobalReminderAction."Reminder Action Group Code";
IssuedReminderHeader.Modify();
end;
/// <summary>
/// Updates the action log status and summary after the reminder issuing process completes.
/// </summary>
procedure UpdateStatusAfterRun()
var
ReminderActionLog: Record "Reminder Action Log";
ReminderActionProgress: Codeunit "Reminder Action Progress";
begin
if not ReminderActionProgress.GetLastActionEntry(GlobalReminderAction, ReminderActionLog) then
ReminderActionProgress.CreateNewActionEntry(GlobalReminderAction, Enum::"Reminder Log Status"::Completed, ReminderActionLog);
if NumberOfIssuedReminders = 0 then
ReminderActionLog."Status summary" := NoRemindersIssuedTxt
else
ReminderActionLog."Status summary" := CopyStr(StrSubstNo(RemindersIssuedTxt, NumberOfIssuedReminders), 1, MaxStrLen(ReminderActionLog."Status summary"));
ReminderActionLog.Modify();
end;
}