Report 311 Vendor - Top 10 List, source in 29

Source29

src/Layers/W1/BaseApp/Purchases/Reports/VendorTop10List.Report.al277 lines, Copyright (c) Microsoft Corporation. MIT

#if not CLEAN28
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Purchases.Reports;

using Microsoft.Purchases.Vendor;
using Microsoft.Utilities;
using System.Utilities;

report 311 "Vendor - Top 10 List"
{
    ApplicationArea = Suite;
    Caption = 'Vendor - Top 10 List (Obsolete)';
    UsageCategory = ReportsAndAnalysis;
    DataAccessIntent = ReadOnly;
    ObsoleteState = Pending;
    ObsoleteReason = 'This report has been replaced by the report Vendor - Top List (Excel). This report will be removed in a future release.';
    ObsoleteTag = '28.0';
    DefaultRenderingLayout = RDLCLayout;

    dataset
    {
        dataitem(Vendor; Vendor)
        {
            DataItemTableView = sorting("No.");
            RequestFilterFields = "No.", "Vendor Posting Group", "Currency Code", "Date Filter";

            trigger OnAfterGetRecord()
            begin
                WindowDialog.Update(1, "No.");
                CalcFields("Purchases (LCY)", "Balance (LCY)");
                if ("Purchases (LCY)" = 0) and ("Balance (LCY)" = 0) then
                    CurrReport.Skip();
                TempVendorAmount.Init();
                TempVendorAmount."Vendor No." := "No.";
                if ShowType = ShowType::"Purchases (LCY)" then begin
                    TempVendorAmount."Amount (LCY)" := -"Purchases (LCY)";
                    TempVendorAmount."Amount 2 (LCY)" := -"Balance (LCY)";
                end else begin
                    TempVendorAmount."Amount (LCY)" := -"Balance (LCY)";
                    TempVendorAmount."Amount 2 (LCY)" := -"Purchases (LCY)";
                end;
                TempVendorAmount.Insert();
                if (NoOfRecordsToPrint = 0) or (i < NoOfRecordsToPrint) then
                    i := i + 1
                else begin
                    TempVendorAmount.Find('+');
                    TempVendorAmount.Delete();
                end;

                TotalVenPurchases += "Purchases (LCY)";
                TotalVenBalance += "Balance (LCY)";
            end;

            trigger OnPreDataItem()
            begin
                WindowDialog.Open(SortingVendorsTxt);
                TempVendorAmount.DeleteAll();
                i := 0;
            end;
        }
        dataitem("Integer"; "Integer")
        {
            DataItemTableView = sorting(Number) where(Number = filter(1 ..));
            column(STRSUBSTNO_Text001_VendDateFilter_; StrSubstNo(PeriodTxt, VendDateFilter))
            {
            }
            column(COMPANYNAME; COMPANYPROPERTY.DisplayName())
            {
            }
            column(STRSUBSTNO_Text002_SELECTSTR_ShowType_1_Text004__; StrSubstNo(RankAccordingToTxt, SelectStr(ShowType + 1, AmountTypeTxt)))
            {
            }
            column(STRSUBSTNO___1___2__Vendor_TABLECAPTION_VendFilter_; StrSubstNo(TableFilterTxt, Vendor.TableCaption(), VendFilter))
            {
            }
            column(VendFilter; VendFilter)
            {
            }
            column(STRSUBSTNO_Text003_SELECTSTR_ShowType_1_Text004__; StrSubstNo(PortionOfTxt, SelectStr(ShowType + 1, AmountTypeTxt)))
            {
            }
            column(Integer_Number; Number)
            {
            }
            column(Vendor__No__; Vendor."No.")
            {
            }
            column(Vendor_Name; Vendor.Name)
            {
            }
            column(Vendor__Purchases__LCY__; Vendor."Purchases (LCY)")
            {
            }
            column(Vendor__Balance__LCY__; Vendor."Balance (LCY)")
            {
            }
            column(BarText; BarText)
            {
            }
            column(Vendor__Purchases__LCY___Control23; Vendor."Purchases (LCY)")
            {
            }
            column(VendPurchLCY; VendPurchLCY)
            {
                AutoFormatType = 1;
            }
            column(PurchPct; PurchPct)
            {
                DecimalPlaces = 1 : 1;
            }
            column(TotalVenBalance; TotalVenBalance)
            {
            }
            column(TotalVenPurchases; TotalVenPurchases)
            {
            }
            column(Vendor___Top_10_ListCaption; Vendor___Top_10_ListCaptionLbl)
            {
            }
            column(CurrReport_PAGENOCaption; CurrReport_PAGENOCaptionLbl)
            {
            }
            column(Integer_NumberCaption; Integer_NumberCaptionLbl)
            {
            }
            column(Vendor__No__Caption; Vendor.FieldCaption("No."))
            {
            }
            column(Vendor_NameCaption; Vendor.FieldCaption(Name))
            {
            }
            column(Vendor__Purchases__LCY__Caption; Vendor.FieldCaption("Purchases (LCY)"))
            {
            }
            column(Vendor__Balance__LCY__Caption; Vendor.FieldCaption("Balance (LCY)"))
            {
            }
            column(Vendor__Purchases__LCY___Control23Caption; Vendor__Purchases__LCY___Control23CaptionLbl)
            {
            }
            column(VendPurchLCYCaption; VendPurchLCYCaptionLbl)
            {
            }
            column(PurchPctCaption; PurchPctCaptionLbl)
            {
            }

            trigger OnAfterGetRecord()
            begin
                if Number = 1 then begin
                    if not TempVendorAmount.Find('-') then
                        CurrReport.Break();
                end else
                    if TempVendorAmount.Next() = 0 then
                        CurrReport.Break();
                TempVendorAmount."Amount (LCY)" := -TempVendorAmount."Amount (LCY)";
                Vendor.Get(TempVendorAmount."Vendor No.");
                Vendor.CalcFields("Purchases (LCY)", "Balance (LCY)");
                if MaxAmount = 0 then
                    MaxAmount := TempVendorAmount."Amount (LCY)";
                if (MaxAmount > 0) and (TempVendorAmount."Amount (LCY)" > 0) then
                    BarText := PadStr('', Round(TempVendorAmount."Amount (LCY)" / MaxAmount * 45, 1), '*')
                else
                    BarText := '';
                TempVendorAmount."Amount (LCY)" := -TempVendorAmount."Amount (LCY)";
            end;

            trigger OnPreDataItem()
            begin
                VendPurchLCY := Vendor."Purchases (LCY)";
                WindowDialog.Close();
            end;
        }
    }

    requestpage
    {
        AboutTitle = 'About Vendor - Top 10 List (Obsolete)';
        AboutText = 'Review a summary of vendors with the most transactions within a selected period to monitor supplier relationships, plan upcoming payments and identify potential cashflow issues.** This report is obsolete and will be removed in a future release.** Please refer to the report documentation for alternative ways to retrieve this information.';
        SaveValues = true;

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    field(Show; ShowType)
                    {
                        ApplicationArea = Suite;
                        Caption = 'Show';
                        OptionCaption = 'Purchases (LCY),Balance (LCY)';
                        ToolTip = 'Specifies how the report will sort the vendors: Purchases, to sort by purchase volume; or Balance, to sort by balance. In either case, the vendors with the largest amounts will be shown first.';
                    }
                    field(Quantity; NoOfRecordsToPrint)
                    {
                        ApplicationArea = Suite;
                        Caption = 'Quantity';
                        ToolTip = 'Specifies the number of vendors that will be included in the report.';
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnOpenPage()
        begin
            if NoOfRecordsToPrint = 0 then
                NoOfRecordsToPrint := 10;
        end;
    }

    rendering
    {
        layout(RDLCLayout)
        {
            Type = RDLC;
            LayoutFile = './Purchases/Reports/VendorTop10List.rdlc';
            Summary = 'Report layout made in the legacy RDLC format. Use an RDLC editor to modify the layout.';
        }
    }

    labels
    {
    }

    trigger OnPreReport()
    var
        FormatDocument: Codeunit "Format Document";
    begin
        VendFilter := FormatDocument.GetRecordFiltersWithCaptions(Vendor);
        VendDateFilter := Vendor.GetFilter("Date Filter");
    end;

    var
        TempVendorAmount: Record "Vendor Amount" temporary;
        WindowDialog: Dialog;
        VendFilter: Text;
        VendDateFilter: Text;
        ShowType: Option "Purchases (LCY)","Balance (LCY)";
        NoOfRecordsToPrint: Integer;
        VendPurchLCY: Decimal;
        PurchPct: Decimal;
        MaxAmount: Decimal;
        BarText: Text;
        i: Integer;
        TotalVenPurchases: Decimal;
        TotalVenBalance: Decimal;
        Vendor___Top_10_ListCaptionLbl: Label 'Vendor - Top 10 List';
        CurrReport_PAGENOCaptionLbl: Label 'Page';
        Integer_NumberCaptionLbl: Label 'Rank';
        Vendor__Purchases__LCY___Control23CaptionLbl: Label 'Total';
        VendPurchLCYCaptionLbl: Label 'Total Purchases';
        PurchPctCaptionLbl: Label '% of Total Purchases';

        SortingVendorsTxt: Label 'Sorting vendors       #1##########', Comment = '%1 - progress bar';
        PeriodTxt: Label 'Period: %1', Comment = '%1 - period text';
        RankAccordingToTxt: Label 'Rank according to %1', Comment = '%1 - ranking type';
        PortionOfTxt: Label 'Portion of %1', Comment = '%1 - type amount';
        AmountTypeTxt: Label 'Purchases (LCY),Balance (LCY)';
        TableFilterTxt: Label '%1: %2', Locked = true;

    procedure InitializeRequest(NewShowType: Option; NewNoOfRecordsToPrint: Integer)
    begin
        ShowType := NewShowType;
        NoOfRecordsToPrint := NewNoOfRecordsToPrint;
    end;
}

#endif