Report 191 Create Finance Charge Memos

App
Base Application
Namespace
Microsoft.Sales.FinanceCharge
Versions
17-28

Procedures, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Sales/FinanceCharge/CreateFinanceChargeMemos.Report.al175 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.FinanceCharge;

using Microsoft.Sales.Customer;
using Microsoft.Sales.Receivables;
using System.Utilities;

/// <summary>
/// Creates finance charge memos for customers with overdue payments based on their finance charge terms configuration.
/// </summary>
report 191 "Create Finance Charge Memos"
{
    Caption = 'Create Finance Charge Memos';
    ToolTip = 'Issue finance charge memos to your customers as a consequence of late payment.';
    ProcessingOnly = true;

    dataset
    {
        dataitem(Customer; Customer)
        {
            DataItemTableView = sorting("No.");
            RequestFilterFields = "No.";

            trigger OnAfterGetRecord()
            begin
                RecordNo := RecordNo + 1;
                Clear(MakeFinChrgMemo);
                MakeFinChrgMemo.Set(Customer, CustLedgEntry, FinChrgMemoHeaderReq);
                if NoOfRecords = 1 then begin
                    MakeFinChrgMemo.Code();
                    Mark := false;
                end else begin
                    NewDateTime := CurrentDateTime;
                    if (NewDateTime - OldDateTime > 100) or (NewDateTime < OldDateTime) then begin
                        NewProgress := Round(RecordNo / NoOfRecords * 100, 1);
                        if NewProgress <> OldProgress then begin
                            Window.Update(1, NewProgress * 100);
                            OldProgress := NewProgress;
                        end;
                        OldDateTime := CurrentDateTime;
                    end;
                    Mark := not MakeFinChrgMemo.Code();
                end;
                Commit();
            end;

            trigger OnPostDataItem()
            var
                ConfirmManagement: Codeunit "Confirm Management";
            begin
                Window.Close();
                MarkedOnly := true;
                if FindFirst() then
                    if ConfirmManagement.GetResponse(Text003, true) then
                        PAGE.RunModal(0, Customer);
            end;

            trigger OnPreDataItem()
            begin
                if FinChrgMemoHeaderReq."Document Date" = 0D then
                    Error(Text000, FinChrgMemoHeaderReq.FieldCaption("Document Date"));
                FilterGroup := 2;
                SetFilter("Fin. Charge Terms Code", '<>%1', '');
                FilterGroup := 0;
                NoOfRecords := Count;
                if NoOfRecords = 1 then
                    Window.Open(Text001)
                else begin
                    Window.Open(Text002);
                    OldDateTime := CurrentDateTime;
                end;
            end;
        }
        dataitem(CustLedgEntry2; "Cust. Ledger Entry")
        {
            DataItemTableView = sorting("Customer No.");
            RequestFilterFields = "Document Type";

            trigger OnPreDataItem()
            begin
                CurrReport.Break();
            end;
        }
    }

    requestpage
    {
        SaveValues = true;

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
#pragma warning disable AA0100
                    field("FinChrgMemoHeaderReq.""Posting Date"""; FinChrgMemoHeaderReq."Posting Date")
#pragma warning restore AA0100
                    {
                        ApplicationArea = Basic, Suite;
                        Caption = 'Posting Date';
                        ToolTip = 'Specifies the date that will appear as the posting date on the header of the finance charge memo created by the batch job.';
                    }
                    field(DocumentDate; FinChrgMemoHeaderReq."Document Date")
                    {
                        ApplicationArea = Basic, Suite;
                        Caption = 'Document Date';
                        ToolTip = 'Specifies a document date for the finance charge memo. This date is also used to determine the due date for the finance charge memo. ';
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnOpenPage()
        begin
            if FinChrgMemoHeaderReq."Document Date" = 0D then begin
                FinChrgMemoHeaderReq."Document Date" := WorkDate();
                FinChrgMemoHeaderReq."Posting Date" := WorkDate();
            end;
        end;
    }

    labels
    {
    }

    trigger OnPreReport()
    begin
        CustLedgEntry.Copy(CustLedgEntry2);
    end;

    var
        CustLedgEntry: Record "Cust. Ledger Entry";
        MakeFinChrgMemo: Codeunit "FinChrgMemo-Make";
        Window: Dialog;
        NoOfRecords: Integer;
        RecordNo: Integer;
        NewProgress: Integer;
        OldProgress: Integer;
        NewDateTime: DateTime;
        OldDateTime: DateTime;

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label '%1 must be specified.';
#pragma warning restore AA0470
        Text001: Label 'Making finance charge memos...';
        Text002: Label 'Making finance charge memos @1@@@@@@@@@@@@@';
        Text003: Label 'It was not possible to create finance charge memos for some of the selected customers.\Do you want to see these customers?';
#pragma warning restore AA0074

    protected var
        FinChrgMemoHeaderReq: Record "Finance Charge Memo Header";

    /// <summary>
    /// Initializes the request parameters for creating finance charge memos.
    /// </summary>
    /// <param name="PostingDate">The posting date for the finance charge memos.</param>
    /// <param name="DocumentDate">The document date for the finance charge memos.</param>
    procedure InitializeRequest(PostingDate: Date; DocumentDate: Date)
    begin
        FinChrgMemoHeaderReq."Posting Date" := PostingDate;
        FinChrgMemoHeaderReq."Document Date" := DocumentDate;
    end;
}