Report 99000758 Compare List, source in 29

Source29

src/Layers/W1/BaseApp/Manufacturing/Reports/CompareList.Report.al295 lines, Copyright (c) Microsoft Corporation. MIT

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

using Microsoft.Inventory.Item;
using Microsoft.Manufacturing.ProductionBOM;
using System.Utilities;

report 99000758 "Compare List"
{
    ApplicationArea = Manufacturing;
    Caption = 'Item BOM Compare List (Obsolete)';
    UsageCategory = ReportsAndAnalysis;
    ObsoleteState = Pending;
    ObsoleteReason = 'This report has been replaced by the "Compare Production Cost Shares" report and will be removed in a future release.';
    ObsoleteTag = '27.0';
    DefaultRenderingLayout = RDLCLayout;

    dataset
    {
        dataitem(ItemLoop; "Integer")
        {
            DataItemTableView = sorting(Number);
            MaxIteration = 1;

            trigger OnPreDataItem()
            begin
                for i := 1 to 2 do begin
                    Item[i].Get(Item[i]."No.");
                    Item[i].TestField("Production BOM No.");
                end;
                BOMMatrixMgt.CompareTwoItems(
                  Item[1],
                  Item[2],
                  CalculateDate,
                  true,
                  VersionCode1,
                  VersionCode2,
                  UnitOfMeasure1, UnitOfMeasure2);
            end;
        }
        dataitem(BOMLoop; "Integer")
        {
            DataItemTableView = sorting(Number);
            column(CompanyName; COMPANYPROPERTY.DisplayName())
            {
            }
            column(AsOfCalcDate; Text000 + Format(CalculateDate))
            {
            }
            column(TodayFormatted; Format(Today, 0, 4))
            {
            }
            column(Item1No; Item[1]."No.")
            {
            }
            column(Item2No; Item[2]."No.")
            {
            }
            column(BOMMatrixListItemNo; BOMMatrixList."Item No.")
            {
            }
            column(BOMMatrixListDesc; BOMMatrixList.Description)
            {
            }
            column(CompItemUnitCost; CompItem."Unit Cost")
            {
                AutoFormatType = 2;
            }
            column(Qty1; Qty1)
            {
                DecimalPlaces = 0 : 5;
            }
            column(Cost1; Cost1)
            {
                AutoFormatType = 1;
            }
            column(Qty2; Qty2)
            {
                DecimalPlaces = 0 : 5;
            }
            column(Cost2; Cost2)
            {
                AutoFormatType = 1;
            }
            column(CostDiff; CostDiff)
            {
                AutoFormatType = 1;
            }
            column(CurrReportPageNoCaption; CurrReportPageNoCaptionLbl)
            {
            }
            column(CompareListCaption; CompareListCaptionLbl)
            {
            }
            column(BOMMatrixListItemNoCapt; BOMMatrixListItemNoCaptLbl)
            {
            }
            column(BOMMatrixListDescCapt; BOMMatrixListDescCaptLbl)
            {
            }
            column(CompItemUnitCostCapt; CompItemUnitCostCaptLbl)
            {
            }
            column(CostDiffCaption; CostDiffCaptionLbl)
            {
            }
            column(Item1NoCaption; Item1NoCaptionLbl)
            {
            }
            column(Item2NoCaption; Item2NoCaptionLbl)
            {
            }
            column(TotalCostDifferenceCapt; TotalCostDifferenceCaptLbl)
            {
            }

            trigger OnAfterGetRecord()
            begin
                if First then begin
                    if not BOMMatrixMgt.FindRecord('-', BOMMatrixList) then
                        CurrReport.Break();
                    First := false;
                end else
                    if BOMMatrixMgt.NextRecord(1, BOMMatrixList) = 0 then
                        CurrReport.Break();

                Qty1 := BOMMatrixMgt.GetComponentNeed(BOMMatrixList."Item No.", BOMMatrixList."Variant Code", Item[1]."No.");
                Qty2 := BOMMatrixMgt.GetComponentNeed(BOMMatrixList."Item No.", BOMMatrixList."Variant Code", Item[2]."No.");

                CompItem.Get(BOMMatrixList."Item No.");

                Cost1 := CompItem."Unit Cost" * Qty1;
                Cost2 := CompItem."Unit Cost" * Qty2;
                CostDiff := Cost1 - Cost2;
            end;

            trigger OnPreDataItem()
            begin
                Clear(CostDiff);
                First := true;
            end;
        }
    }

    requestpage
    {
        AboutTitle = 'About Item BOM Compare List (Obsolete)';
        AboutText = 'Compare the costs of similar final products. ** This report is obsolete and will be removed in a later release.** Please consult the report documentation for alternative ways to get to this data.';
        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    field(ItemNo1; Item[1]."No.")
                    {
                        ApplicationArea = Manufacturing;
                        Caption = 'Item No. 1';
                        DrillDownPageID = "Item List";
                        LookupPageID = "Item List";
                        NotBlank = true;
                        TableRelation = Item;
                        ToolTip = 'Specifies the number of the first item you want to compare, when comparing components for two items.';

                        trigger OnLookup(var Text: Text): Boolean
                        begin
                            Item[1].SetCurrentKey("Production BOM No.");
                            Item[1].SetFilter("Production BOM No.", '<>%1', '');
                            if PAGE.RunModal(PAGE::"Item List", Item[1]) = ACTION::LookupOK then begin
                                Text := Item[1]."No.";
                                exit(true);
                            end;
                            exit(false);
                        end;

                        trigger OnValidate()
                        begin
                            Item[1].Get(Item[1]."No.");
                            Item[1].TestField("Production BOM No.");

                            if Item[1]."No." = Item[2]."No." then
                                Item[1].FieldError("No.");
                        end;
                    }
                    field(ItemNo2; Item[2]."No.")
                    {
                        ApplicationArea = Manufacturing;
                        Caption = 'Item No. 2';
                        LookupPageID = "Item List";
                        NotBlank = true;
                        TableRelation = Item;
                        ToolTip = 'Specifies the number of the second item you want to compare, when comparing components for two items.';

                        trigger OnLookup(var Text: Text): Boolean
                        begin
                            Item[2].SetCurrentKey("Production BOM No.");
                            Item[2].SetFilter("Production BOM No.", '<>%1', '');
                            if PAGE.RunModal(PAGE::"Item List", Item[2]) = ACTION::LookupOK then begin
                                Text := Item[2]."No.";
                                exit(true);
                            end;
                            exit(false);
                        end;

                        trigger OnValidate()
                        begin
                            Item[2].Get(Item[2]."No.");
                            Item[2].TestField("Production BOM No.");

                            if Item[1]."No." = Item[2]."No." then
                                Item[2].FieldError("No.");
                        end;
                    }
                    field(CalculationDt; CalculateDate)
                    {
                        ApplicationArea = Manufacturing;
                        Caption = 'Calculation Date';
                        ToolTip = 'Specifies the date for which you want to make the comparison. The program automatically enters the working date.';
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnInit()
        begin
            CalculateDate := WorkDate();
        end;
    }

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

    labels
    {
        Qty1Caption = 'Exploded Quantity';
        Cost1Caption = 'Cost Share';
    }

    var
        CompItem: Record Item;
        BOMMatrixList: Record "Production Matrix BOM Line";
        BOMMatrixMgt: Codeunit "BOM Matrix Management";
        CalculateDate: Date;
        i: Integer;
        First: Boolean;
        VersionCode1: Code[20];
        VersionCode2: Code[20];
        UnitOfMeasure1: Code[10];
        UnitOfMeasure2: Code[10];
        Qty1: Decimal;
        Qty2: Decimal;
        Cost1: Decimal;
        Cost2: Decimal;
        CostDiff: Decimal;

#pragma warning disable AA0074
        Text000: Label 'As of ';
#pragma warning restore AA0074
        CurrReportPageNoCaptionLbl: Label 'Page';
        CompareListCaptionLbl: Label 'Compare List';
        BOMMatrixListItemNoCaptLbl: Label 'No.';
        BOMMatrixListDescCaptLbl: Label 'Description';
        CompItemUnitCostCaptLbl: Label 'Unit Cost';
        CostDiffCaptionLbl: Label 'Difference Cost';
        Item1NoCaptionLbl: Label 'Item No. 1';
        Item2NoCaptionLbl: Label 'Item No. 2';
        TotalCostDifferenceCaptLbl: Label 'Total Cost Difference';

    protected var
        Item: array[2] of Record Item;

    procedure InitializeRequest(NewItem1: Code[20]; NewItem2: Code[20]; NewCalculateDate: Date)
    begin
        Item[1]."No." := NewItem1;
        Item[2]."No." := NewItem2;
        CalculateDate := NewCalculateDate;
    end;
}
#endif