Report 1087 Change Job Dates, source in 29

Source29

src/Layers/W1/BaseApp/Projects/Project/Job/ChangeJobDates.Report.al233 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.Project.Job;

using Microsoft.Projects.Project.Journal;

report 1087 "Change Job Dates"
{
    AdditionalSearchTerms = 'Change Job Planning Line Dates';
    ApplicationArea = Jobs;
    Caption = 'Change Project Planning Line Dates';
    ToolTip = 'Use a batch job to help you move planning lines on a project from one date interval to another.';
    ProcessingOnly = true;
    UsageCategory = Tasks;

    dataset
    {
        dataitem("Job Task"; "Job Task")
        {
            DataItemTableView = sorting("Job No.", "Job Task No.");
            RequestFilterFields = "Job No.", "Job Task No.";

            trigger OnAfterGetRecord()
            begin
                Clear(CalculateBatches);
                if ChangePlanningDate then
                    if Linetype2 <> Linetype2::" " then
                        CalculateBatches.ChangePlanningDates(
                          "Job Task", ScheduleLine2, ContractLine2, PeriodLength2, FixedDate2, StartingDate2, EndingDate2);
                Clear(CalculateBatches);
                if ChangeCurrencyDate then
                    if Linetype <> Linetype::" " then
                        CalculateBatches.ChangeCurrencyDates(
                          "Job Task", ScheduleLine, ContractLine,
                          PeriodLength, FixedDate, StartingDate, EndingDate);
            end;

            trigger OnPostDataItem()
            begin
                CalculateBatches.ChangeDatesEnd();
            end;
        }
    }

    requestpage
    {
        SaveValues = true;

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    group("Currency Date")
                    {
                        Caption = 'Currency Date';
                        field(ChangeCurrencyDate; ChangeCurrencyDate)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Change Currency Date';
                            ToolTip = 'Specifies that currencies will be updated on the projects that are included in the batch job.';
                        }
                        field(ChangeDateExpressionCurrency; PeriodLength)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Change Date Expression';
                            ToolTip = 'Specifies how the dates on the entries that are copied will be changed by using a date formula.';

                            trigger OnValidate()
                            begin
                                FixedDate := 0D;
                            end;
                        }
                        field(FixedDateCurrency; FixedDate)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Fixed Date';
                            ToolTip = 'Specifies a date that the currency date on all planning lines will be moved to.';

                            trigger OnValidate()
                            begin
                                Clear(PeriodLength);
                            end;
                        }
                        field(IncludeLineTypeCurrency; Linetype)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Line type';
                            OptionCaption = ' ,Budget,Billable,Budget+Billable';
                            ToolTip = 'Specifies the project planning line type you want to change the currency date for.';
                        }
                        field(IncludeCurrDateFrom; StartingDate)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Curr. Date From';
                            ToolTip = 'Specifies the starting date of the period for which you want currency dates to be moved. Only planning lines with a currency date on or after this date are included.';
                        }
                        field(IncludeCurrDateTo; EndingDate)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Curr. Date To';
                            ToolTip = 'Specifies the ending date of the period for which you want currency dates to be moved. Only planning lines with a currency date on or before this date are included.';
                        }
                    }
                    group("Planning Date")
                    {
                        Caption = 'Planning Date';
                        field(ChangePlanningDate; ChangePlanningDate)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Change Planning Date';
                            ToolTip = 'Specifies that planning dates will be changed on the projects that are included in the batch job.';
                        }
                        field(ChangeDateExpressionPlanning; PeriodLength2)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Change Date Expression';
                            ToolTip = 'Specifies how the dates on the entries that are copied will be changed by using a date formula.';

                            trigger OnValidate()
                            begin
                                FixedDate2 := 0D;
                            end;
                        }
                        field(FixedDatePlanning; FixedDate2)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Fixed Date';
                            ToolTip = 'Specifies a date that the planning date on all planning lines will be moved to.';

                            trigger OnValidate()
                            begin
                                Clear(PeriodLength2);
                            end;
                        }
                        field(IncludeLineTypePlanning; Linetype2)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Line type';
                            OptionCaption = ' ,Budget,Billable,Budget+Billable';
                            ToolTip = 'Specifies the project planning line type you want to change the planning date for.';
                        }
                        field(IncludePlanDateFrom; StartingDate2)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Plan. Date From';
                            ToolTip = 'Specifies the starting date of the period for which you want a Planning Date to be moved. Only planning lines with a Planning Date on or after this date are included.';
                        }
                        field(IncludePlanDateTo; EndingDate2)
                        {
                            ApplicationArea = Jobs;
                            Caption = 'Include Plan. Date To';
                            ToolTip = 'Specifies the ending date of the period for which you want a Planning Date to be moved. Only planning lines with a Planning Date on or before this date are included.';
                        }
                    }
                }
            }
        }

        actions
        {
        }
    }

    labels
    {
    }

    trigger OnPreReport()
    begin
        ScheduleLine := false;
        ContractLine := false;
        if Linetype = Linetype::Budget then
            ScheduleLine := true;
        if Linetype = Linetype::Billable then
            ContractLine := true;
        if Linetype = Linetype::"Budget+Billable" then begin
            ScheduleLine := true;
            ContractLine := true;
        end;

        ScheduleLine2 := false;
        ContractLine2 := false;
        if Linetype2 = Linetype2::Budget then
            ScheduleLine2 := true;
        if Linetype2 = Linetype2::Billable then
            ContractLine2 := true;
        if Linetype2 = Linetype2::"Budget+Billable" then begin
            ScheduleLine2 := true;
            ContractLine2 := true;
        end;
        if (Linetype = Linetype::" ") and (Linetype2 = Linetype2::" ") then
            Error(Text000);
        if not ChangePlanningDate and not ChangeCurrencyDate then
            Error(Text000);
        if ChangeCurrencyDate and (Linetype = Linetype::" ") then
            Error(Text001);
        if ChangePlanningDate and (Linetype2 = Linetype2::" ") then
            Error(Text002);
    end;

    var
        CalculateBatches: Codeunit "Job Calculate Batches";
        PeriodLength: DateFormula;
        PeriodLength2: DateFormula;
        ScheduleLine: Boolean;
        ContractLine: Boolean;
        ScheduleLine2: Boolean;
        ContractLine2: Boolean;
        Linetype: Option " ",Budget,Billable,"Budget+Billable";
        Linetype2: Option " ",Budget,Billable,"Budget+Billable";
        FixedDate: Date;
        FixedDate2: Date;
        StartingDate: Date;
        EndingDate: Date;
        StartingDate2: Date;
        EndingDate2: Date;
#pragma warning disable AA0074
        Text000: Label 'There is nothing to change.';
#pragma warning restore AA0074
        ChangePlanningDate: Boolean;
        ChangeCurrencyDate: Boolean;
#pragma warning disable AA0074
        Text001: Label 'You must specify a Line Type for changing the currency date.';
        Text002: Label 'You must specify a Line Type for changing the planning date.';
#pragma warning restore AA0074
}