Report extension 99000781 Mfg. CalcInventoryValueTest, source in 29

Source29

src/Layers/W1/BaseApp/Manufacturing/Inventory/Reports/MfgCalcInventoryValueTest.ReportExt.al183 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.Inventory.Reports;

using Microsoft.Inventory.Costing;
using Microsoft.Inventory.Item;
using Microsoft.Manufacturing.ProductionBOM;
using Microsoft.Manufacturing.Routing;
using Microsoft.Manufacturing.StandardCost;

reportextension 99000781 "Mfg. CalcInventoryValueTest" extends "Calc. Inventory Value - Test"
{
    dataset
    {
        addafter(ItemLedgEntryErrBufLoop)
        {
            dataitem(ProdBOMVersionErrBufLoop; System.Utilities.Integer)
            {
                DataItemTableView = sorting(Number) where(Number = filter(1 ..));
                column(Text002; Text002Lbl)
                {
                }
                column(ProdBOMVersionErrBuf__Production_BOM_No__; TempProdBOMVersionErrBuf."Production BOM No.")
                {
                }
                column(ProdBOMVersionErrBuf__Version_Code_; TempProdBOMVersionErrBuf."Version Code")
                {
                }
                column(ProdBOMVersionErrBuf_Description; TempProdBOMVersionErrBuf.Description)
                {
                }
                column(ProdBOMVersionErrBuf__Starting_Date_; Format(TempProdBOMVersionErrBuf."Starting Date"))
                {
                }
                column(ProdBOMVersionErrBuf_Status; TempProdBOMVersionErrBuf.Status)
                {
                }
                column(Text002Caption; Text002CaptionLbl)
                {
                }
                column(ProdBOMVersionErrBuf_StatusCaption; ProdBOMVersionErrBuf_StatusCaptionLbl)
                {
                }
                column(ProdBOMVersionErrBuf__Starting_Date_Caption; ProdBOMVersionErrBuf__Starting_Date_CaptionLbl)
                {
                }
                column(ProdBOMVersionErrBuf_DescriptionCaption; ProdBOMVersionErrBuf_DescriptionCaptionLbl)
                {
                }
                column(ProdBOMVersionErrBuf__Version_Code_Caption; ProdBOMVersionErrBuf__Version_Code_CaptionLbl)
                {
                }
                column(ProdBOMVersionErrBuf__Production_BOM_No__Caption; ProdBOMVersionErrBuf__Production_BOM_No__CaptionLbl)
                {
                }

                trigger OnAfterGetRecord()
                var
                    OK: Boolean;
                begin
                    if Number = 1 then
                        OK := TempProdBOMVersionErrBuf.Find('-')
                    else
                        OK := TempProdBOMVersionErrBuf.Next() <> 0;
                    if not OK then
                        CurrReport.Break();

                    if TempProdBOMVersionErrBuf."Version Code" = '' then begin
                        ProdBOMHeader.Get(TempProdBOMVersionErrBuf."Production BOM No.");
                        TempProdBOMVersionErrBuf.Description := ProdBOMHeader.Description;
                        TempProdBOMVersionErrBuf.Status := ProdBOMHeader.Status;
                    end else begin
                        ProdBOMVersion.Get(TempProdBOMVersionErrBuf."Production BOM No.", TempProdBOMVersionErrBuf."Version Code");
                        TempProdBOMVersionErrBuf.Description := ProdBOMVersion.Description;
                        TempProdBOMVersionErrBuf."Starting Date" := ProdBOMVersion."Starting Date";
                        TempProdBOMVersionErrBuf.Status := ProdBOMVersion.Status;
                    end;
                    TempProdBOMVersionErrBuf.Modify();
                end;
            }
            dataitem(RtngVersionErrBufLoop; System.Utilities.Integer)
            {
                DataItemTableView = sorting(Number) where(Number = filter(1 ..));
                column(Text003; Text003Lbl)
                {
                }
                column(RtngVersionErrBuf_Status; TempRtngVersionErrBuf.Status)
                {
                }
                column(RtngVersionErrBuf__Starting_Date_; Format(TempRtngVersionErrBuf."Starting Date"))
                {
                }
                column(RtngVersionErrBuf_Description; TempRtngVersionErrBuf.Description)
                {
                }
                column(RtngVersionErrBuf__Version_Code_; TempRtngVersionErrBuf."Version Code")
                {
                }
                column(RtngVersionErrBuf__Routing_No__; TempRtngVersionErrBuf."Routing No.")
                {
                }
                column(Text003Caption; Text003CaptionLbl)
                {
                }
                column(RtngVersionErrBuf_StatusCaption; RtngVersionErrBuf_StatusCaptionLbl)
                {
                }
                column(RtngVersionErrBuf__Starting_Date_Caption; RtngVersionErrBuf__Starting_Date_CaptionLbl)
                {
                }
                column(RtngVersionErrBuf_DescriptionCaption; RtngVersionErrBuf_DescriptionCaptionLbl)
                {
                }
                column(RtngVersionErrBuf__Version_Code_Caption; RtngVersionErrBuf__Version_Code_CaptionLbl)
                {
                }
                column(RtngVersionErrBuf__Routing_No__Caption; RtngVersionErrBuf__Routing_No__CaptionLbl)
                {
                }

                trigger OnAfterGetRecord()
                var
                    OK: Boolean;
                begin
                    if Number = 1 then
                        OK := TempRtngVersionErrBuf.Find('-')
                    else
                        OK := TempRtngVersionErrBuf.Next() <> 0;
                    if not OK then
                        CurrReport.Break();

                    if TempRtngVersionErrBuf."Version Code" = '' then begin
                        RtngHeader.Get(TempRtngVersionErrBuf."Routing No.");
                        TempRtngVersionErrBuf.Description := RtngHeader.Description;
                        TempRtngVersionErrBuf.Status := RtngHeader.Status;
                    end else begin
                        RtngVersion.Get(TempRtngVersionErrBuf."Routing No.", TempRtngVersionErrBuf."Version Code");
                        TempRtngVersionErrBuf.Description := RtngVersion.Description;
                        TempRtngVersionErrBuf."Starting Date" := RtngVersion."Starting Date";
                        TempRtngVersionErrBuf.Status := RtngVersion.Status;
                    end;
                    TempRtngVersionErrBuf.Modify();
                end;
            }
        }
    }

    var
        ProdBOMHeader: Record "Production BOM Header";
        ProdBOMVersion: Record "Production BOM Version";
        RtngHeader: Record "Routing Header";
        RtngVersion: Record "Routing Version";
        CalcStdCost: Codeunit "Calculate Standard Cost";

        Text002Lbl: Label 'The standard cost cannot be calculated before the following production BOMs are certified.';
        Text002CaptionLbl: Label 'Warning!';
        ProdBOMVersionErrBuf_StatusCaptionLbl: Label 'Status';
        ProdBOMVersionErrBuf__Starting_Date_CaptionLbl: Label 'Starting Date';
        ProdBOMVersionErrBuf_DescriptionCaptionLbl: Label 'Description';
        ProdBOMVersionErrBuf__Version_Code_CaptionLbl: Label 'Version Code';
        ProdBOMVersionErrBuf__Production_BOM_No__CaptionLbl: Label 'No.';
        Text003Lbl: Label 'The standard cost cannot be calculated before the following production routings are certified.';
        Text003CaptionLbl: Label 'Warning!';
        RtngVersionErrBuf_StatusCaptionLbl: Label 'Status';
        RtngVersionErrBuf__Starting_Date_CaptionLbl: Label 'Starting Date';
        RtngVersionErrBuf_DescriptionCaptionLbl: Label 'Description';
        RtngVersionErrBuf__Version_Code_CaptionLbl: Label 'Version Code';
        RtngVersionErrBuf__Routing_No__CaptionLbl: Label 'Routing No.';

    protected var
        TempProdBOMVersionErrBuf: Record Microsoft.Manufacturing.ProductionBOM."Production BOM Version" temporary;
        TempRtngVersionErrBuf: Record Microsoft.Manufacturing.Routing."Routing Version" temporary;

    internal procedure CalculateStandardCost(var Item: Record Item; PostingDate: Date; CalcBase: Enum "Inventory Value Calc. Base")
    begin
        if CalcBase = CalcBase::"Standard Cost - Manufacturing" then begin
            CalcStdCost.SetProperties(PostingDate, true, false, true, '', true);
            CalcStdCost.TestPreconditions(Item, TempProdBOMVersionErrBuf, TempRtngVersionErrBuf);
        end;
    end;
}