Page 9048 Acc. Payable Activities

App
Base Application
Namespace
Microsoft.Finance.RoleCenters
Versions
27-28
Source table
9046

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Finance/RoleCenters/AccPayableActivities.Page.al197 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.Finance.RoleCenters;

using Microsoft.Bank.Reconciliation;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Purchases.Document;
using Microsoft.Purchases.History;
using Microsoft.Purchases.Payables;
using Microsoft.RoleCenters;

page 9048 "Acc. Payable Activities"
{
    ApplicationArea = Basic, Suite;
    Caption = 'Activities';
    PageType = CardPart;
    SourceTable = "Account Payable Cue";

    InherentEntitlements = X;
    InherentPermissions = X;

    layout
    {
        area(Content)
        {
            cuegroup(WideCues)
            {
                CueGroupLayout = Wide;
                ShowCaption = false;

                field("Purchase This Month"; Rec."Purchase This Month")
                {
                }
                field("A/P Accounts Balance"; this.ActivitiesMgt.CalcAPAccountsBalance())
                {
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'A/P Accounts Balance';
                    ToolTip = 'The total balance of all A/P accounts.';

                    trigger OnDrillDown()
                    begin
                        this.ActivitiesMgt.DrillDownCalcAPAccountsBalances();
                    end;
                }
                field("Payments On Hold Amount"; this.PaymentsOnHoldAmountCue)
                {
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Payments On Hold';
                    ToolTip = 'The total amount of payments that are currently on hold.';

                    trigger OnDrillDown()
                    var
                        VendorLedgerEntry: Record "Vendor Ledger Entry";
                    begin
                        VendorLedgerEntry.SetRange("Document Type", Enum::"Gen. Journal Document Type"::Payment);
                        VendorLedgerEntry.SetFilter("On Hold", '<>%1', '');
                        VendorLedgerEntry.SetFilter("Due Date", Format(Rec."Overdue Date Filter"));
                        Page.Run(Page::"Vendor Ledger Entries", VendorLedgerEntry);
                    end;
                }
                field("Overdue Purchase Documents"; Rec."Overdue Purchase Documents")
                {
                }
            }
            cuegroup(OngoingPurchase)
            {
                Caption = 'Ongoing Purchase';

                field("Purchase Quotes"; Rec."Purchase Quotes")
                {
                    DrillDownPageID = "Purchase Quotes";
                }
                field("Purchase Orders"; Rec."Purchase Orders")
                {
                    DrillDownPageID = "Purchase Order List";
                }
                field("Ongoing Purchase Invoices"; Rec."Ongoing Purchase Invoices")
                {
                    DrillDownPageID = "Purchase Invoices";
                }
                field("Purch. Invoices Due Next Week"; Rec."Purch. Invoices Due Next Week")
                {
                }
                field("Posted Purch. Inv. This Month"; Rec."Posted Purch. Inv. This Month")
                {
                    DrillDownPageId = "Posted Purchase Invoices";
                }
                field("Posted Purch. Cr. Memo TM"; Rec."Posted Purch. Cr. Memo TM")
                {
                    DrillDownPageId = "Posted Purchase Credit Memos";
                }
            }
            cuegroup(Payments)
            {
                Caption = 'Payments';

                field("Purchase Documents Due Today"; Rec."Purchase Documents Due Today")
                {
                }
                field("Purch. Documents Due Next Week"; Rec."Purch. Documents Due Next Week")
                {
                }
                field("Purchase Discounts Next Week"; Rec."Purchase Discounts Next Week")
                {
                }
                field("Unprocessed Payments"; Rec."Unprocessed Payments")
                {
                    trigger OnDrillDown()
                    begin
                        Codeunit.Run(Codeunit::"Pmt. Rec. Journals Launcher");
                    end;
                }
                field("Payments On Hold Count"; this.PaymentsOnHoldCountCue)
                {
                    Caption = 'Payments On Hold';
                    ToolTip = 'The number of payments that are currently on hold.';

                    trigger OnDrillDown()
                    var
                        VendorLedgerEntry: Record "Vendor Ledger Entry";
                    begin
                        VendorLedgerEntry.SetRange("Document Type", Enum::"Gen. Journal Document Type"::Payment);
                        VendorLedgerEntry.SetFilter("On Hold", '<>%1', '');
                        VendorLedgerEntry.SetFilter("Due Date", Format(Rec."Overdue Date Filter"));
                        Page.Run(Page::"Vendor Ledger Entries", VendorLedgerEntry);
                    end;
                }
                field("Outstanding Vendor Invoices"; Rec."Outstanding Vendor Invoices")
                {
                }
            }
            cuegroup(DocumentApprovals)
            {
                Caption = 'Document Approvals';

                field("POs Pending Approval"; Rec."POs Pending Approval")
                {
                    DrillDownPageId = "Purchase Order List";
                }
                field("Approved Purchase Orders"; Rec."Approved Purchase Orders")
                {
                    DrillDownPageId = "Purchase Order List";
                }
            }
        }
    }

    trigger OnOpenPage()
    begin
        Rec.Reset();
        if not Rec.Get() then begin
            Rec.Init();
            Rec.Insert(false);
        end;

        Rec.SetFilter("Overdue Date Filter", '<=%1', Rec.GetDefaultWorkDate());
        Rec.SetRange("Posting Date Filter", CalcDate('<-CM>', Rec.GetDefaultWorkDate()), Rec.GetDefaultWorkDate());
        Rec.SetFilter("Due Next Week Filter", '%1..%2', CalcDate('<1D>', Rec.GetDefaultWorkDate()), CalcDate('<1W>', Rec.GetDefaultWorkDate()));

        this.GetPaymentsOnHoldAmountCue();
        this.GetPaymentsOnHoldCountCue();
    end;

    var
        ActivitiesMgt: Codeunit "Activities Mgt.";
        PaymentsOnHoldAmountCue: Decimal;
        PaymentsOnHoldCountCue: Integer;

    local procedure GetPaymentsOnHoldAmountCue()
    var
        VendorLedgerEntry: Record "Vendor Ledger Entry";
    begin
        this.PaymentsOnHoldAmountCue := 0;
        VendorLedgerEntry.SetAutoCalcFields("Remaining Amount");
        VendorLedgerEntry.SetRange("Document Type", Enum::"Gen. Journal Document Type"::Payment);
        VendorLedgerEntry.SetFilter("On Hold", '<>%1', '');
        VendorLedgerEntry.SetFilter("Due Date", Format(Rec."Overdue Date Filter"));
        if VendorLedgerEntry.FindSet() then
            repeat
                this.PaymentsOnHoldAmountCue += VendorLedgerEntry."Remaining Amount";
            until VendorLedgerEntry.Next() = 0;
    end;

    local procedure GetPaymentsOnHoldCountCue()
    var
        VendorLedgerEntry: Record "Vendor Ledger Entry";
    begin
        VendorLedgerEntry.SetRange("Document Type", Enum::"Gen. Journal Document Type"::Payment);
        VendorLedgerEntry.SetFilter("On Hold", '<>%1', '');
        VendorLedgerEntry.SetFilter("Due Date", Format(Rec."Overdue Date Filter"));
        PaymentsOnHoldCountCue := VendorLedgerEntry.Count();
    end;
}