Report 1195 Adjust Resource Costs/Prices, source in 29

Source29

src/Layers/W1/BaseApp/Projects/Resources/Resource/AdjustResourceCostsPrices.Report.al154 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.Projects.Resources.Resource;

using Microsoft.Utilities;

report 1195 "Adjust Resource Costs/Prices"
{
    ApplicationArea = Basic, Suite;
    Caption = 'Adjust Resource Costs/Prices';
    ToolTip = 'Adjust one or more fields on the resource card. For example, you can change the direct unit cost by 10 percent on all resources from a specific resource group. The changes are processed immediately after the batch job is started. The fields on the resource card that are dependent on the adjusted field are also changed.';
    ProcessingOnly = true;
    UsageCategory = Tasks;

    dataset
    {
        dataitem(Resource; Resource)
        {
            DataItemTableView = sorting("No.");
            RequestFilterFields = "No.", "Resource Group No.";

            trigger OnAfterGetRecord()
            begin
                Window.Update(1, "No.");

                case Selection of
                    Selection::"Direct Unit Cost":
                        OldFieldNo := "Direct Unit Cost";
                    Selection::"Indirect Cost %":
                        OldFieldNo := "Indirect Cost %";
                    Selection::"Unit Cost":
                        OldFieldNo := "Unit Cost";
                    Selection::"Profit %":
                        OldFieldNo := "Profit %";
                    Selection::"Unit Price":
                        OldFieldNo := "Unit Price";
                end;

                NewFieldNo := OldFieldNo * AdjFactor;

                if RoundingMethod.Code <> '' then begin
                    RoundingMethod."Minimum Amount" := NewFieldNo;
                    if RoundingMethod.Find('=<') then begin
                        NewFieldNo := NewFieldNo + RoundingMethod."Amount Added Before";
                        if RoundingMethod.Precision > 0 then
                            NewFieldNo := Round(NewFieldNo, RoundingMethod.Precision, CopyStr('=><', RoundingMethod.Type + 1, 1));
                        NewFieldNo := NewFieldNo + RoundingMethod."Amount Added After";
                    end;
                end;

                case Selection of
                    Selection::"Direct Unit Cost":
                        Validate("Direct Unit Cost", NewFieldNo);
                    Selection::"Indirect Cost %":
                        Validate("Indirect Cost %", NewFieldNo);
                    Selection::"Unit Cost":
                        Validate("Unit Cost", NewFieldNo);
                    Selection::"Profit %":
                        Validate("Profit %", NewFieldNo);
                    Selection::"Unit Price":
                        Validate("Unit Price", NewFieldNo);
                end;

                Modify();
            end;

            trigger OnPreDataItem()
            begin
                Window.Open(Text000);
            end;
        }
    }

    requestpage
    {

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    field(Selection; Selection)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Adjust Field';
                        OptionCaption = 'Direct Unit Cost,Indirect Cost %,Unit Cost,Profit %,Unit Price';
                        ToolTip = 'Specifies the type of cost or price to be adjusted.';
                    }
                    field(AdjFactor; AdjFactor)
                    {
                        ApplicationArea = Jobs;
                        AutoFormatType = 0;
                        Caption = 'Adjustment Factor';
                        DecimalPlaces = 0 : 5;
                        ToolTip = 'Specifies an adjustment factor to multiply the amounts that you want suggested. By entering an adjustment factor, you can increase or decrease the amounts that are suggested.';
                    }
                    field("RoundingMethod.Code"; RoundingMethod.Code)
                    {
                        ApplicationArea = Jobs;
                        Caption = 'Rounding Method';
                        TableRelation = "Rounding Method";
                        ToolTip = 'Specifies a code for the rounding method that you want to apply to costs or prices that you adjust.';
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnOpenPage()
        begin
            if AdjFactor = 0 then
                AdjFactor := 1;
        end;
    }

    labels
    {
    }

    trigger OnPreReport()
    begin
        RoundingMethod.SetRange(Code, RoundingMethod.Code);
    end;

    var
        RoundingMethod: Record "Rounding Method";
        Window: Dialog;
        NewFieldNo: Decimal;
        OldFieldNo: Decimal;
        AdjFactor: Decimal;
        Selection: Option "Direct Unit Cost","Indirect Cost %","Unit Cost","Profit %","Unit Price";

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label 'Processing resources  #1##########';
#pragma warning restore AA0470
#pragma warning restore AA0074

    procedure InitializeRequest(SelectionFrom: Option; AdjFactorFrom: Decimal; RoundingMethodCode: Code[10])
    begin
        Selection := SelectionFrom;
        AdjFactor := AdjFactorFrom;
        RoundingMethod.Code := RoundingMethodCode;
    end;
}