Codeunit 6761 Create Aut. Event Handler
- App
- Base Application
- Namespace
- Microsoft.Sales.Reminder
- Versions
- 24-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Sales/Reminder/Automation/Actions/CreateReminders/CreateAutEventHandler.Codeunit.al82 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.Sales.Customer;
using Microsoft.Sales.Receivables;
/// <summary>
/// Handles events during automated reminder creation to track progress and log results.
/// </summary>
codeunit 6761 "Create Aut. Event Handler"
{
EventSubscriberInstance = Manual;
var
GlobalReminderAction: Record "Reminder Action";
RemindersCreatedTxt: Label '%1 reminders were created.', Comment = '%1 number of reminders created';
NoRemindersCreatedTxt: Label 'No reminders were created.';
NumberOfRemindersCreated: Integer;
/// <summary>
/// Sets the reminder action record used for tracking reminder creation progress.
/// </summary>
/// <param name="ReminderAction">Specifies the reminder action to set as the global context.</param>
procedure SetReminderAction(var ReminderAction: Record "Reminder Action")
begin
GlobalReminderAction := ReminderAction;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Reminders Action Job", 'OnCreateReminderSafe', '', false, false)]
local procedure CreateReminderSafeHandler(var Customer: Record Customer; var CustLedgEntry: Record "Cust. Ledger Entry"; var ReminderHeader: Record "Reminder Header"; OverdueEntriesOnly: Boolean; IncludeEntriesOnHold: Boolean; var FeeCustLedgEntryLine: Record "Cust. Ledger Entry"; var Success: Boolean)
begin
CreateReminders(Customer, CustLedgEntry, ReminderHeader, OverdueEntriesOnly, IncludeEntriesOnHold, FeeCustLedgEntryLine, Success);
end;
[CommitBehavior(CommitBehavior::Ignore)]
local procedure CreateReminders(var Customer: Record Customer; var CustLedgEntry: Record "Cust. Ledger Entry"; var ReminderHeader: Record "Reminder Header"; OverdueEntriesOnly: Boolean; IncludeEntriesOnHold: Boolean; var FeeCustLedgEntryLine: Record "Cust. Ledger Entry"; var Success: Boolean)
var
ReminderMake: Codeunit "Reminder-Make";
begin
ReminderMake.Set(Customer, CustLedgEntry, ReminderHeader, OverdueEntriesOnly, IncludeEntriesOnHold, FeeCustLedgEntryLine);
ReminderMake.Code();
Success := true;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Reminder-Make", 'OnMakeReminderOnBeforeReminderHeaderModify', '', false, false)]
local procedure HandlerReminderCreated(var ReminderHeader: Record "Reminder Header"; var ReminderLine: Record "Reminder Line"; var NextLineNo: Integer; MaxReminderLevel: Integer)
var
ReminderActionProgress: Codeunit "Reminder Action Progress";
begin
NumberOfRemindersCreated += 1;
ReminderActionProgress.UpdateStatusAndTotalRecordsProcessed(GlobalReminderAction, NumberOfRemindersCreated, StrSubstNo(RemindersCreatedTxt, NumberOfRemindersCreated));
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Reminder-Make", 'OnBeforeReminderHeaderModify', '', false, false)]
local procedure BeforeReminderHeaderModify(var ReminderHeader: Record "Reminder Header"; var ReminderHeaderReq: Record "Reminder Header"; HeaderExists: Boolean; ReminderTerms: Record "Reminder Terms"; Customer: Record Customer; ReminderLevel: Record "Reminder Level"; var CustLedgerEntry: Record "Cust. Ledger Entry")
begin
ReminderHeader."Reminder Automation Code" := GlobalReminderAction."Reminder Action Group Code";
ReminderHeader.Modify();
end;
/// <summary>
/// Updates the action log status and summary after the reminder creation 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 NumberOfRemindersCreated = 0 then
ReminderActionLog."Status summary" := NoRemindersCreatedTxt
else
ReminderActionLog."Status summary" := CopyStr(StrSubstNo(RemindersCreatedTxt, NumberOfRemindersCreated), 1, MaxStrLen(ReminderActionLog."Status summary"));
ReminderActionLog.Modify();
end;
}