Page 5914 Service Order Statistics, source in 29

Source29

src/Layers/W1/BaseApp/Service/Document/ServiceOrderStatistics.Page.al1628 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.Service.Document;

using Microsoft.Finance.Currency;
using Microsoft.Finance.VAT.Calculation;
using Microsoft.Sales.Customer;
using Microsoft.Sales.Pricing;
using Microsoft.Sales.Setup;
using Microsoft.Service.Posting;

page 5914 "Service Order Statistics"
{
    Caption = 'Service Order Statistics';
    DeleteAllowed = false;
    InsertAllowed = false;
    LinksAllowed = false;
    PageType = Card;
    SourceTable = "Service Header";

    layout
    {
        area(content)
        {
            group(General)
            {
                Caption = 'General';
                field(Amount_General; TotalServLine[1]."Line Amount")
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text002, false);
                    ToolTip = 'Specifies the line amount.';
                    Editable = false;
                }
                field("Inv. Discount Amount_General"; TotalServLine[1]."Inv. Discount Amount")
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    Caption = 'Inv. Discount Amount';
                    ToolTip = 'Specifies the invoice discount amount for the entire service order.';

                    trigger OnValidate()
                    begin
                        ActiveTab := ActiveTab::General;
                        UpdateInvDiscAmount(1);
                    end;
                }
                field("TotalAmount1[1]"; TotalAmount1[1])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text001, false);

                    trigger OnValidate()
                    begin
                        ActiveTab := ActiveTab::General;
                        UpdateTotalAmount(1);
                    end;
                }
                field("VAT Amount_General"; VATAmount[1])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = Format(VATAmountText[1]);
                    Caption = 'VAT Amount';
                    Editable = false;
                    ToolTip = 'Specifies the total VAT amount that has been calculated for all the lines in the service order.';
                }
                field("Total Incl. VAT_General"; TotalAmount2[1])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text001, true);
                    Editable = false;

                    trigger OnValidate()
                    begin
                        TotalAmount21OnAfterValidate();
                    end;
                }
                field("Sales (LCY)_General"; TotalServLineLCY[1].Amount)
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Sales (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies your total service sales turnover in the fiscal year. It is calculated from amounts excluding VAT on all completed and open service sales invoices and credit memos.';
                }
                field(Original_ProfitLCY_Gen; ProfitLCY[1])
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Original Profit (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items or resources.';
                }
                field(Adj_ProfitLCY_Gen; AdjProfitLCY[1])
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Adjusted Profit (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the amount of profit for the service order, in LCY, adjusted for any changes in the original item costs.';
                }
                field(Original_ProfitPct_Gen; ProfitPct[1])
                {
                    AutoFormatType = 0;
                    ApplicationArea = Service;
                    Caption = 'Original Profit %';
                    DecimalPlaces = 1 : 1;
                    Editable = false;
                    ToolTip = 'Specifies the profit percentage prior to any item cost adjustments on the service order.';
                }
                field(Adj_ProfitPct_Gen; AdjProfitPct[1])
                {
                    AutoFormatType = 0;
                    ApplicationArea = Service;
                    Caption = 'Adjusted Profit %';
                    DecimalPlaces = 1 : 1;
                    Editable = false;
                    ToolTip = 'Specifies the amount of the adjusted profit on the service order, expressed as percentage of the amount in the Amount Excl. VAT (Amount Incl. VAT) field.';
                }
                field("TotalServLine[1].Quantity"; TotalServLine[1].Quantity)
                {
                    ApplicationArea = Service;
                    Caption = 'Quantity';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[1].""Units per Parcel"""; TotalServLine[1]."Units per Parcel")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Parcels';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the quantity of parcels of the items specified on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[1].""Net Weight"""; TotalServLine[1]."Net Weight")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Net Weight';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the net weight of the items specified on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[1].""Gross Weight"""; TotalServLine[1]."Gross Weight")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Gross Weight';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the gross weight of the items on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[1].""Unit Volume"""; TotalServLine[1]."Unit Volume")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Volume';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the volume of the items on the service lines in the order.';
                }
                field(OriginalCostLCY; TotalServLineLCY[1]."Unit Cost (LCY)")
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Original Cost (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items.';
                }
                field(AdjustedCostLCY; TotalAdjCostLCY[1])
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Adjusted Cost (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the total cost, in LCY, of the items in the service order, adjusted for any changes in the original costs of these items';
                }
#pragma warning disable AA0100
                field("TotalAdjCostLCY[1] - TotalServLineLCY[1].""Unit Cost (LCY)"""; TotalAdjCostLCY[1] - TotalServLineLCY[1]."Unit Cost (LCY)")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Cost Adjmt. Amount (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the difference between the original cost and the total adjusted cost of the items in the service order.';

                    trigger OnDrillDown()
                    begin
                        Rec.LookupAdjmtValueEntries(0);
                    end;
                }
                field("No. of VAT Lines_General"; TempVATAmountLine1.Count)
                {
                    ApplicationArea = Service;
                    Caption = 'No. of VAT Lines';
                    DrillDown = true;
                    ToolTip = 'Specifies the number of service order lines that are associated with the VAT ledger line.';

                    trigger OnDrillDown()
                    begin
                        VATLinesDrillDown(TempVATAmountLine1, false);
                        UpdateHeaderInfo(1, TempVATAmountLine1);
                    end;
                }
                field("Reserved From Stock"; Rec.GetQtyReservedFromStockState())
                {
                    ApplicationArea = Reservation;
                    Editable = false;
                    Caption = 'Reserved from stock';
                    ToolTip = 'Specifies what part of the service order is reserved from inventory.';
                }
            }
            group(Details)
            {
                Caption = 'Details';
                fixed(Control1904230801)
                {
                    ShowCaption = false;
                    group(Invoicing)
                    {
                        Caption = 'Invoicing';
                        field("TotalServLine[2].Quantity"; TotalServLine[2].Quantity)
                        {
                            ApplicationArea = Service;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
                        field(Amount_Invoicing; TotalServLine[2]."Line Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Amount';
                            Editable = false;
                            ToolTip = 'Specifies the amount for the relevant service order.';
                        }
                        field("Inv. Discount Amount_Invoicing"; TotalServLine[2]."Inv. Discount Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Inv. Discount Amount';
                            ToolTip = 'Specifies the invoice discount amount for the entire service order.';

                            trigger OnValidate()
                            begin
                                ActiveTab := ActiveTab::Details;
                                UpdateInvDiscAmount(2);
                            end;
                        }
                        field(Total; TotalAmount1[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Total';
                            ToolTip = 'Specifies the total amount.';

                            trigger OnValidate()
                            begin
                                ActiveTab := ActiveTab::Details;
                                UpdateTotalAmount(2);
                            end;
                        }
                        field("VAT Amount_Invoicing"; VATAmount[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'VAT Amount';
                            Editable = false;
                            ToolTip = 'Specifies the total VAT amount that has been calculated for all the lines in the service order.';
                        }
                        field("Total Incl. VAT_Invoicing"; TotalAmount2[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Total Amount';
                            Editable = false;
                            ToolTip = 'Specifies the total amounts on the service order that result from adding the invoicing amounts to the consuming amounts.';
                        }
                        field("Sales (LCY)_Invoicing"; TotalServLineLCY[2].Amount)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Sales (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies your total service sales turnover in the fiscal year. It is calculated from amounts excluding VAT on all completed and open service sales invoices and credit memos.';
                        }
                        field("ProfitLCY[2]"; ProfitLCY[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Original Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items or resources.';
                        }
                        field("AdjProfitLCY[2]"; AdjProfitLCY[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of profit for the service order, in LCY, adjusted for any changes in the original item costs.';
                        }
                        field("ProfitPct[2]"; ProfitPct[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Original Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the profit percentage prior to any item cost adjustments on the service order.';
                        }
                        field("AdjProfitPct[2]"; AdjProfitPct[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Adjusted Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the amount of the adjusted profit on the service order, expressed as percentage of the amount in the Amount Excl. VAT (Amount Incl. VAT) field.';
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[2].""Unit Cost (LCY)"""; TotalServLineLCY[2]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Original Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items or resources.';
                        }
                        field("TotalAdjCostLCY[2]"; TotalAdjCostLCY[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the items in the service order, adjusted for any changes in the original costs of these items';
                        }
#pragma warning disable AA0100
                        field("TotalAdjCostLCY[2] - TotalServLineLCY[2].""Unit Cost (LCY)"""; TotalAdjCostLCY[2] - TotalServLineLCY[2]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Cost Adjmt. Amount (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the difference between the original cost and the total adjusted cost of the items in the service order.';

                            trigger OnDrillDown()
                            begin
                                Rec.LookupAdjmtValueEntries(1);
                            end;
                        }
                    }
                    group(Consuming)
                    {
                        Caption = 'Consuming';
                        field(Quantity_Consuming; TotalServLine[4].Quantity)
                        {
                            ApplicationArea = Service;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
                        field(Text006; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder2; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder3; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(placeholder5; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder6; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder7; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field("ProfitLCY[4]"; ProfitLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Original Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items or resources.';
                        }
                        field("AdjProfitLCY[4]"; AdjProfitLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of profit for the service order, in LCY, adjusted for any changes in the original item costs.';
                        }
                        field("ProfitPct[4]"; ProfitPct[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Original Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the amount of original profit for the service order (in LCY), prior to any item cost adjustment. The program calculates the amount as the difference between the values in the Amount Excl. VAT (Amount Incl. VAT) and the Original Cost (LCY) fields.';
                        }
                        field("AdjProfitPct[4]"; AdjProfitPct[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Adjusted Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the amount of the adjusted profit on the service order, expressed as percentage of the amount in the Amount Excl. VAT (Amount Incl. VAT) field.';
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[4].""Unit Cost (LCY)"""; TotalServLineLCY[4]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                        field("TotalAdjCostLCY[4]"; TotalAdjCostLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the items in the service order, adjusted for any changes in the original costs of these items';
                        }
#pragma warning disable AA0100
                        field("TotalAdjCostLCY[4] - TotalServLineLCY[4].""Unit Cost (LCY)"""; TotalAdjCostLCY[4] - TotalServLineLCY[4]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjustment Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the items in the service order, adjusted for any changes in the original costs of these items.';

                            trigger OnDrillDown()
                            begin
                                Rec.LookupAdjmtValueEntries(1);
                            end;
                        }
                    }
                    group(Control1906106001)
                    {
                        Caption = 'Total';
                        field("TotalServLine[2].Quantity + TotalServLine[4].Quantity"; TotalServLine[2].Quantity + TotalServLine[4].Quantity)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
#pragma warning disable AA0100
                        field("TotalServLine[2].""Line Amount"""; TotalServLine[2]."Line Amount")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text002, false);
                            Editable = false;
                        }
#pragma warning disable AA0100
                        field("TotalServLine[2].""Inv. Discount Amount"""; TotalServLine[2]."Inv. Discount Amount")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Inv. Discount Amount';
                            Editable = false;
                            ToolTip = 'Specifies the invoice discount amount for the entire service order.';

                            trigger OnValidate()
                            begin
                                ActiveTab := ActiveTab::Details;
                                UpdateInvDiscAmount(2);
                            end;
                        }
                        field("TotalAmount1[2]"; TotalAmount1[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, false);
                            Editable = false;

                            trigger OnValidate()
                            begin
                                ActiveTab := ActiveTab::Details;
                                UpdateTotalAmount(2);
                            end;
                        }
                        field("VATAmount[2]"; VATAmount[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Editable = false;
                            ShowCaption = false;
                        }
                        field("TotalAmount2[2]"; TotalAmount2[2])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, true);
                            Editable = false;
                        }
                        field("TotalServLineLCY[2].Amount"; TotalServLineLCY[2].Amount)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Amount (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of the ledger entry, in the local currency.';
                        }
                        field("AdjProfitLCY[2] + AdjProfitLCY[4]"; AdjProfitLCY[2] + AdjProfitLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field("ProfitLCY[2] + ProfitLCY[4]"; ProfitLCY[2] + ProfitLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field(DetailsTotalAmt; GetDetailsTotalAmt())
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the percent of profit related to the service order.';
                        }
                        field(AdjDetailsTotalAmt; GetAdjDetailsTotalAmt())
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the percent of profit related to the service order.';
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[2].""Unit Cost (LCY)"" + TotalServLineLCY[4].""Unit Cost (LCY)"""; TotalServLineLCY[2]."Unit Cost (LCY)" + TotalServLineLCY[4]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                        field("TotalAdjCostLCY[2] + TotalAdjCostLCY[4]"; TotalAdjCostLCY[2] + TotalAdjCostLCY[4])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                        field(DetailedTotalLCYCost; (TotalAdjCostLCY[2] - TotalServLineLCY[2]."Unit Cost (LCY)") + (TotalAdjCostLCY[4] - TotalServLineLCY[4]."Unit Cost (LCY)"))
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                    }
                }
            }
            group(Shipping)
            {
                Caption = 'Shipping';
                field(Amount_Shipping; TotalServLine[3]."Line Amount")
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text002, false);
                    Editable = false;
                }
                field("Inv. Discount Amount_Shipping"; TotalServLine[3]."Inv. Discount Amount")
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    Caption = 'Inv. Discount Amount';
                    Editable = false;
                    ToolTip = 'Specifies the invoice discount amount for the entire service order.';
                }
                field("TotalAmount1[3]"; TotalAmount1[3])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text001, false);
                    Editable = false;
                }
                field("VAT Amount_Shipping"; VATAmount[3])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = Format(VATAmountText[3]);
                    Editable = false;
                }
                field("Total Incl. VAT_Shipping"; TotalAmount2[3])
                {
                    ApplicationArea = Service;
                    AutoFormatExpression = Rec."Currency Code";
                    AutoFormatType = 1;
                    CaptionClass = GetCaptionClass(Text001, true);
                    Editable = false;
                }
                field("Sales (LCY)_Shipping"; TotalServLineLCY[3].Amount)
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Sales (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies your total service sales turnover in the fiscal year. It is calculated from amounts excluding VAT on all completed and open service sales invoices and credit memos.';
                }
#pragma warning disable AA0100
                field("TotalServLineLCY[3].""Unit Cost (LCY)"""; TotalServLineLCY[3]."Unit Cost (LCY)")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Cost (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the total cost of the service in LCY.';
                }
                field("ProfitLCY[3]"; ProfitLCY[3])
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    Caption = 'Profit (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the profit related to the service order, in local currency.';
                }
                field("ProfitPct[3]"; ProfitPct[3])
                {
                    ApplicationArea = Service;
                    AutoFormatType = 0;
                    Caption = 'Profit %';
                    DecimalPlaces = 1 : 1;
                    Editable = false;
                    ToolTip = 'Specifies the percent of profit related to the service order.';
                }
                field("TotalServLine[3].Quantity"; TotalServLine[3].Quantity)
                {
                    ApplicationArea = Service;
                    Caption = 'Quantity';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[3].""Units per Parcel"""; TotalServLine[3]."Units per Parcel")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Parcels';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the quantity of parcels of the items specified on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[3].""Net Weight"""; TotalServLine[3]."Net Weight")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Net Weight';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the net weight of the items specified on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[3].""Gross Weight"""; TotalServLine[3]."Gross Weight")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Gross Weight';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the gross weight of the items on the service lines in the order.';
                }
#pragma warning disable AA0100
                field("TotalServLine[3].""Unit Volume"""; TotalServLine[3]."Unit Volume")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    Caption = 'Volume';
                    DecimalPlaces = 0 : 5;
                    Editable = false;
                    ToolTip = 'Specifies the volume of the items on the service lines in the order.';
                }
                field("No. of VAT Lines_Shipping"; TempVATAmountLine3.Count)
                {
                    ApplicationArea = Service;
                    Caption = 'No. of VAT Lines';
                    DrillDown = true;
                    ToolTip = 'Specifies the number of service order lines that are associated with the VAT ledger line.';

                    trigger OnDrillDown()
                    begin
                        VATLinesDrillDown(TempVATAmountLine3, false);
                    end;
                }
            }
            group("Service Line")
            {
                Caption = 'Service Line';
                fixed(Control1903442601)
                {
                    ShowCaption = false;
                    group(Items)
                    {
                        Caption = 'Items';
                        field("TotalServLine[5].Quantity"; TotalServLine[5].Quantity)
                        {
                            ApplicationArea = Service;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
                        field(Amount_Items; TotalServLine[5]."Line Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Amount';
                            Editable = false;
                            ToolTip = 'Specifies the amount for the relevant service order.';
                        }
                        field("Inv. Discount Amount_Items"; TotalServLine[5]."Inv. Discount Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Inv. Discount Amount';
                            Editable = false;
                            ToolTip = 'Specifies the invoice discount amount for the entire service order.';
                        }
                        field(Total2; TotalAmount1[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Total';
                            Editable = false;
                            ToolTip = 'Specifies the total amount.';
                        }
                        field("VAT Amount_Items"; VATAmount[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'VAT Amount';
                            Editable = false;
                            ToolTip = 'Specifies the total VAT amount that has been calculated for all the lines in the service order.';
                        }
                        field("Total Incl. VAT_Items"; TotalAmount2[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Total Amount';
                            Editable = false;
                            ToolTip = 'Specifies the total amount minus any invoice discount amount for the service order. The value does not include VAT.';
                        }
                        field("Sales (LCY)_Items"; TotalServLineLCY[5].Amount)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Sales (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies your total service sales turnover in the fiscal year. It is calculated from amounts excluding VAT on all completed and open service sales invoices and credit memos.';
                        }
                        field("ProfitLCY[5]"; ProfitLCY[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Original Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items or resources.';
                        }
                        field("AdjProfitLCY[5]"; AdjProfitLCY[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of profit for the service order, in LCY, adjusted for any changes in the original item costs.';
                        }
                        field("ProfitPct[5]"; ProfitPct[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Original Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the amount of original profit for the service order (in LCY), prior to any item cost adjustment. The program calculates the amount as the difference between the values in the Amount Excl. VAT (Amount Incl. VAT) and the Original Cost (LCY) fields.';
                        }
                        field("AdjProfitPct[5]"; AdjProfitPct[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Adjusted Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the amount of the adjusted profit on the service order, expressed as percentage of the amount in the Amount Excl. VAT (Amount Incl. VAT) field.';
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[5].""Unit Cost (LCY)"""; TotalServLineLCY[5]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Original Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the G/L account entries, costs, items and/or resources in the service order. The cost is calculated as a product of unit cost multiplied by quantity of the relevant items.';
                        }
                        field("TotalAdjCostLCY[5]"; TotalAdjCostLCY[5])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Adjusted Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost, in LCY, of the items in the service order, adjusted for any changes in the original costs of these items';
                        }
#pragma warning disable AA0100
                        field("TotalAdjCostLCY[5] - TotalServLineLCY[5].""Unit Cost (LCY)"""; TotalAdjCostLCY[5] - TotalServLineLCY[5]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Cost Adjmt. Amount (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the difference between the original cost and the total adjusted cost of the items in the service order.';

                            trigger OnDrillDown()
                            begin
                                Rec.LookupAdjmtValueEntries(1);
                            end;
                        }
                    }
                    group(Resources)
                    {
                        Caption = 'Resources';
                        field("TotalServLine[6].Quantity"; TotalServLine[6].Quantity)
                        {
                            ApplicationArea = Service;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
                        field(Amount_Resources; TotalServLine[6]."Line Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text002, false);
                            Editable = false;
                        }
                        field("Inv. Discount Amount_Resources"; TotalServLine[6]."Inv. Discount Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Inv. Discount Amount';
                            Editable = false;
                            ToolTip = 'Specifies the invoice discount amount for the entire service order.';
                        }
                        field("TotalAmount1[6]"; TotalAmount1[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, false);
                            Editable = false;
                        }
                        field("VAT Amount_Resources"; VATAmount[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Editable = false;
                            ShowCaption = false;
                        }
                        field("Total Incl. VAT_Resources"; TotalAmount2[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, true);
                            Editable = false;
                        }
                        field("Sales (LCY)_Resources"; TotalServLineLCY[6].Amount)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Amount (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of the ledger entry, in the local currency.';
                        }
                        field("ProfitLCY[6]"; ProfitLCY[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field("AdjProfitLCY[6]"; AdjProfitLCY[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field("ProfitPct[6]"; ProfitPct[6])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the percent of profit related to the service order.';
                        }
                        field(Placeholder9; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[6].""Unit Cost (LCY)"""; TotalServLineLCY[6]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                        field(Placeholder10; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder11; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                    }
                    group("Costs && G/L Accounts")
                    {
                        Caption = 'Costs && G/L Accounts';
                        field("TotalServLine[7].Quantity"; TotalServLine[7].Quantity)
                        {
                            ApplicationArea = Service;
                            Caption = 'Quantity';
                            DecimalPlaces = 0 : 5;
                            Editable = false;
                            ToolTip = 'Specifies the quantity of all G/L account entries, costs, items and/or resource hours in the service order.';
                        }
                        field(Amount_Costs; TotalServLine[7]."Line Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text002, false);
                            Editable = false;
                        }
                        field("Inv. Discount Amount_Costs"; TotalServLine[7]."Inv. Discount Amount")
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Caption = 'Inv. Discount Amount';
                            Editable = false;
                            ToolTip = 'Specifies the invoice discount amount for the entire service order.';
                        }
                        field("TotalAmount1[7]"; TotalAmount1[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, false);
                            Editable = false;
                        }
                        field("VAT Amount_Costs"; VATAmount[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            Editable = false;
                            ShowCaption = false;
                        }
                        field("Total Incl. VAT_Costs"; TotalAmount2[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatExpression = Rec."Currency Code";
                            AutoFormatType = 1;
                            CaptionClass = GetCaptionClass(Text001, true);
                            Editable = false;
                        }
                        field("Sales (LCY)_Costs"; TotalServLineLCY[7].Amount)
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Amount (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the amount of the ledger entry, in the local currency.';
                        }
                        field("ProfitLCY[7]"; ProfitLCY[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field("AdjProfitLCY[7]"; AdjProfitLCY[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            AutoFormatExpression = '';
                            Caption = 'Profit (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the profit related to the service order, in local currency.';
                        }
                        field("ProfitPct[7]"; ProfitPct[7])
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 0;
                            Caption = 'Profit %';
                            DecimalPlaces = 1 : 1;
                            Editable = false;
                            ToolTip = 'Specifies the percent of profit related to the service order.';
                        }
                        field(Placeholder12; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
#pragma warning disable AA0100
                        field("TotalServLineLCY[7].""Unit Cost (LCY)"""; TotalServLineLCY[7]."Unit Cost (LCY)")
#pragma warning restore AA0100
                        {
                            ApplicationArea = Service;
                            AutoFormatType = 1;
                            Caption = 'Cost (LCY)';
                            Editable = false;
                            ToolTip = 'Specifies the total cost of the service in LCY.';
                        }
                        field(Placeholder14; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                        field(Placeholder15; Text006)
                        {
                            ApplicationArea = Service;
                            Visible = false;
                        }
                    }
                }
            }
            group(Customer)
            {
                Caption = 'Customer';
#pragma warning disable AA0100
                field("Cust.""Balance (LCY)"""; Cust."Balance (LCY)")
#pragma warning restore AA0100
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Balance (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the balance in LCY on the customer''s account.';
                }
                field("Credit Limit (LCY)_Customer"; Cust."Credit Limit (LCY)")
                {
                    ApplicationArea = Service;
                    AutoFormatType = 1;
                    Caption = 'Credit Limit (LCY)';
                    Editable = false;
                    ToolTip = 'Specifies the credit limit of the customer on the service document. The value 0 represents unlimited credit.';
                }
                field(CreditLimitLCYExpendedPct; CreditLimitLCYExpendedPct)
                {
                    ApplicationArea = Service;
                    AutoFormatType = 0;
                    Caption = 'Expended % of Credit Limit (LCY)';
                    ExtendedDatatype = Ratio;
                    ToolTip = 'Specifies the expended percentage of the credit limit in (LCY).';
                }
            }
        }
    }

    actions
    {
    }

    trigger OnAfterGetRecord()
    var
        ServLine: Record "Service Line";
        TempServLine: Record "Service Line" temporary;
        OptionValueOutOfRange: Integer;
    begin
        CurrPage.Caption(StrSubstNo(Text000, Rec."Document Type"));

        if PrevNo = Rec."No." then
            exit;
        PrevNo := Rec."No.";
        Rec.FilterGroup(2);
        Rec.SetRange("No.", PrevNo);
        Rec.FilterGroup(0);

        Clear(ServLine);
        Clear(TotalServLine);
        Clear(TotalServLineLCY);
        Clear(ServAmtsMgt);

        for i := 1 to 7 do begin
            TempServLine.DeleteAll();
            Clear(TempServLine);
            ServAmtsMgt.GetServiceLines(Rec, TempServLine, i - 1);

            case i of
                1:
                    ServLine.CalcVATAmountLines(0, Rec, TempServLine, TempVATAmountLine1, false);
                2:
                    ServLine.CalcVATAmountLines(0, Rec, TempServLine, TempVATAmountLine2, false);
                3:
                    ServLine.CalcVATAmountLines(0, Rec, TempServLine, TempVATAmountLine3, false);
            end;

            ServAmtsMgt.SumServiceLinesTemp(
              Rec, TempServLine, i - 1, TotalServLine[i], TotalServLineLCY[i],
              VATAmount[i], VATAmountText[i], ProfitLCY[i], ProfitPct[i], TotalAdjCostLCY[i]);

            if i = 3 then
                TotalAdjCostLCY[i] := TotalServLineLCY[i]."Unit Cost (LCY)";

            if TotalServLineLCY[i].Amount = 0 then
                ProfitPct[i] := 0
            else
                ProfitPct[i] := Round(100 * ProfitLCY[i] / TotalServLineLCY[i].Amount, 0.1);

            AdjProfitLCY[i] := TotalServLineLCY[i].Amount - TotalAdjCostLCY[i];

            if TotalServLineLCY[i].Amount <> 0 then
                AdjProfitPct[i] := Round(100 * AdjProfitLCY[i] / TotalServLineLCY[i].Amount, 0.1);

            OnBeforeCalcTotalAmount(TempServLine);
            if Rec."Prices Including VAT" then begin
                TotalAmount2[i] := TotalServLine[i].Amount;
                TotalAmount1[i] := TotalAmount2[i] + VATAmount[i];
                TotalServLine[i]."Line Amount" := TotalAmount1[i] + TotalServLine[i]."Inv. Discount Amount";
            end else begin
                TotalAmount1[i] := TotalServLine[i].Amount;
                TotalAmount2[i] := TotalServLine[i]."Amount Including VAT";
            end;
            OnAfterCalcTotalAmount();
        end;

        if Cust.Get(Rec."Bill-to Customer No.") then
            Cust.CalcFields("Balance (LCY)")
        else
            Clear(Cust);

        case true of
            Cust."Credit Limit (LCY)" = 0:
                CreditLimitLCYExpendedPct := 0;
            Cust."Balance (LCY)" / Cust."Credit Limit (LCY)" < 0:
                CreditLimitLCYExpendedPct := 0;
            Cust."Balance (LCY)" / Cust."Credit Limit (LCY)" > 1:
                CreditLimitLCYExpendedPct := 10000;
            else
                CreditLimitLCYExpendedPct := Round(Cust."Balance (LCY)" / Cust."Credit Limit (LCY)" * 10000, 1);
        end;

        TempVATAmountLine1.ModifyAll(Modified, false);
        TempVATAmountLine2.ModifyAll(Modified, false);
        TempVATAmountLine3.ModifyAll(Modified, false);

        OptionValueOutOfRange := -1;
        PrevTab := OptionValueOutOfRange;
    end;

    trigger OnOpenPage()
    var
        ServiceLine: Record "Service Line";
    begin
        SalesSetup.Get();

#if not CLEAN27
        if not Rec.SkipStatisticsPreparation() then
#endif
            if SalesSetup."Calc. Inv. Discount" then begin
                ServiceLine.SetRange("Document Type", Rec."Document Type");
                ServiceLine.SetRange("Document No.", Rec."No.");
                if ServiceLine.FindFirst() then begin
                    CODEUNIT.Run(CODEUNIT::"Service-Calc. Discount", ServiceLine);
                    Commit();
                end;
            end;
#if not CLEAN27
        Rec.ResetSkipStatisticsPreparationFlag();
#endif
        AllowInvDisc := not (SalesSetup."Calc. Inv. Discount" and CustInvDiscRecExists(Rec."Invoice Disc. Code"));
        AllowVATDifference := SalesSetup."Allow VAT Difference" and (Rec."Document Type" <> Rec."Document Type"::Quote);
        VATLinesFormIsEditable := AllowVATDifference or AllowInvDisc;
        CurrPage.Editable := VATLinesFormIsEditable;
    end;

    trigger OnQueryClosePage(CloseAction: Action): Boolean
    begin
        GetVATSpecification(PrevTab);
        if TempVATAmountLine1.GetAnyLineModified() or TempVATAmountLine2.GetAnyLineModified() then
            UpdateVATOnServLines();
        exit(true);
    end;

    var
#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label 'Service %1 Statistics';
#pragma warning restore AA0470
        Text001: Label 'Total';
        Text002: Label 'Amount';
#pragma warning disable AA0470
        Text003: Label '%1 must not be 0.';
        Text004: Label '%1 must not be greater than %2.';
        Text005: Label 'You cannot change the invoice discount because there is a %1 record for %2 %3.', Comment = 'You cannot change the invoice discount because there is a Cust. Invoice Disc. record for Invoice Disc. Code 10000.';
#pragma warning restore AA0470
#pragma warning restore AA0074
        Cust: Record Customer;
        SalesSetup: Record "Sales & Receivables Setup";
        ServAmtsMgt: Codeunit "Serv-Amounts Mgt.";
        AdjProfitLCY: array[7] of Decimal;
        AdjProfitPct: array[7] of Decimal;
        TotalAdjCostLCY: array[7] of Decimal;
        VATAmount: array[7] of Decimal;
        VATAmountText: array[7] of Text[30];
        ProfitLCY: array[7] of Decimal;
        ProfitPct: array[7] of Decimal;
        CreditLimitLCYExpendedPct: Decimal;
        PrevNo: Code[20];
        ActiveTab: Option General,Details,Shipping;
        PrevTab: Option General,Details,Shipping;
        AllowInvDisc: Boolean;
        AllowVATDifference: Boolean;
#pragma warning disable AA0074
        Text006: Label 'Placeholder';
#pragma warning restore AA0074

    protected var
        TempVATAmountLine1: Record "VAT Amount Line" temporary;
        TempVATAmountLine2: Record "VAT Amount Line" temporary;
        TempVATAmountLine3: Record "VAT Amount Line" temporary;
        TotalServLine: array[7] of Record "Service Line";
        TotalServLineLCY: array[7] of Record "Service Line";
        VATLinesForm: Page "VAT Amount Lines";
        TotalAmount1: array[7] of Decimal;
        TotalAmount2: array[7] of Decimal;
        i: Integer;
        VATLinesFormIsEditable: Boolean;

    protected procedure UpdateHeaderInfo(IndexNo: Integer; var VATAmountLine: Record "VAT Amount Line")
    var
        CurrExchRate: Record "Currency Exchange Rate";
        UseDate: Date;
    begin
        TotalServLine[IndexNo]."Inv. Discount Amount" := VATAmountLine.GetTotalInvDiscAmount();
        TotalAmount1[IndexNo] :=
          TotalServLine[IndexNo]."Line Amount" - TotalServLine[IndexNo]."Inv. Discount Amount";
        VATAmount[IndexNo] := VATAmountLine.GetTotalVATAmount();
        if Rec."Prices Including VAT" then begin
            TotalAmount1[IndexNo] := VATAmountLine.GetTotalAmountInclVAT();
            TotalAmount2[IndexNo] := TotalAmount1[IndexNo] - VATAmount[IndexNo];
            TotalServLine[IndexNo]."Line Amount" :=
              TotalAmount1[IndexNo] + TotalServLine[IndexNo]."Inv. Discount Amount";
        end else
            TotalAmount2[IndexNo] := TotalAmount1[IndexNo] + VATAmount[IndexNo];

        OnUpdateHeaderInfoOnAfterCalcTotalAmount2();
        if Rec."Prices Including VAT" then
            TotalServLineLCY[IndexNo].Amount := TotalAmount2[IndexNo]
        else
            TotalServLineLCY[IndexNo].Amount := TotalAmount1[IndexNo];
        if Rec."Currency Code" <> '' then
            if (Rec."Document Type" = Rec."Document Type"::Quote) and
               (Rec."Posting Date" = 0D)
            then
                UseDate := WorkDate()
            else
                UseDate := Rec."Posting Date";

        TotalServLineLCY[IndexNo].Amount :=
          CurrExchRate.ExchangeAmtFCYToLCY(
            UseDate, Rec."Currency Code", TotalServLineLCY[IndexNo].Amount, Rec."Currency Factor");

        ProfitLCY[IndexNo] := TotalServLineLCY[IndexNo].Amount - TotalServLineLCY[IndexNo]."Unit Cost (LCY)";

        if TotalServLineLCY[IndexNo].Amount = 0 then
            ProfitPct[IndexNo] := 0
        else
            ProfitPct[IndexNo] := Round(100 * ProfitLCY[IndexNo] / TotalServLineLCY[IndexNo].Amount, 0.1);

        AdjProfitLCY[IndexNo] := TotalServLineLCY[IndexNo].Amount - TotalAdjCostLCY[IndexNo];

        if TotalServLineLCY[IndexNo].Amount = 0 then
            AdjProfitPct[IndexNo] := 0
        else
            AdjProfitPct[IndexNo] := Round(100 * AdjProfitLCY[IndexNo] / TotalServLineLCY[IndexNo].Amount, 0.1);

        OnAfterUpdateHeaderInfo(TotalServLineLCY, IndexNo);
    end;

    local procedure GetVATSpecification(QtyType: Option General,Details,Shipping)
    begin
        case QtyType of
            QtyType::General:
                begin
                    VATLinesForm.GetTempVATAmountLine(TempVATAmountLine1);
                    UpdateHeaderInfo(1, TempVATAmountLine1);
                end;
            QtyType::Details:
                begin
                    VATLinesForm.GetTempVATAmountLine(TempVATAmountLine2);
                    UpdateHeaderInfo(2, TempVATAmountLine2);
                end;
            QtyType::Shipping:
                VATLinesForm.GetTempVATAmountLine(TempVATAmountLine3);
        end;
    end;

    local procedure UpdateTotalAmount(IndexNo: Integer)
    var
        SaveTotalAmount: Decimal;
    begin
        CheckAllowInvDisc();
        if Rec."Prices Including VAT" then begin
            SaveTotalAmount := TotalAmount1[IndexNo];
            UpdateInvDiscAmount(IndexNo);
            TotalAmount1[IndexNo] := SaveTotalAmount;
        end;

        TotalServLine[IndexNo]."Inv. Discount Amount" := TotalServLine[IndexNo]."Line Amount" - TotalAmount1[IndexNo];
        UpdateInvDiscAmount(IndexNo);
    end;

    local procedure UpdateInvDiscAmount(ModifiedIndexNo: Integer)
    var
        PartialInvoicing: Boolean;
        MaxIndexNo: Integer;
        IndexNo: array[2] of Integer;
        i: Integer;
        InvDiscBaseAmount: Decimal;
    begin
        CheckAllowInvDisc();
        if not (ModifiedIndexNo in [1, 2]) then
            exit;

        if ModifiedIndexNo = 1 then
            InvDiscBaseAmount := TempVATAmountLine1.GetTotalInvDiscBaseAmount(false, Rec."Currency Code")
        else
            InvDiscBaseAmount := TempVATAmountLine2.GetTotalInvDiscBaseAmount(false, Rec."Currency Code");

        if InvDiscBaseAmount = 0 then
            Error(Text003, TempVATAmountLine2.FieldCaption("Inv. Disc. Base Amount"));

        if TotalServLine[ModifiedIndexNo]."Inv. Discount Amount" / InvDiscBaseAmount > 1 then
            Error(
              Text004,
              TotalServLine[ModifiedIndexNo].FieldCaption("Inv. Discount Amount"),
              TempVATAmountLine2.FieldCaption("Inv. Disc. Base Amount"));

        PartialInvoicing := (TotalServLine[1]."Line Amount" <> TotalServLine[2]."Line Amount");

        IndexNo[1] := ModifiedIndexNo;
        IndexNo[2] := 3 - ModifiedIndexNo;
        if (ModifiedIndexNo = 2) and PartialInvoicing then
            MaxIndexNo := 1
        else
            MaxIndexNo := 2;

        if not PartialInvoicing then
            if ModifiedIndexNo = 1 then
                TotalServLine[2]."Inv. Discount Amount" := TotalServLine[1]."Inv. Discount Amount"
            else
                TotalServLine[1]."Inv. Discount Amount" := TotalServLine[2]."Inv. Discount Amount";

        for i := 1 to MaxIndexNo do begin
            if (i = 1) or not PartialInvoicing then
                if IndexNo[i] = 1 then
                    TempVATAmountLine1.SetInvoiceDiscountAmount(
                      TotalServLine[IndexNo[i]]."Inv. Discount Amount", TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", Rec."VAT Base Discount %")
                else
                    TempVATAmountLine2.SetInvoiceDiscountAmount(
                      TotalServLine[IndexNo[i]]."Inv. Discount Amount", TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", Rec."VAT Base Discount %");

            if (i = 2) and PartialInvoicing then
                if IndexNo[i] = 1 then begin
                    InvDiscBaseAmount := TempVATAmountLine2.GetTotalInvDiscBaseAmount(false, TotalServLine[IndexNo[i]]."Currency Code");
                    if InvDiscBaseAmount = 0 then
                        TempVATAmountLine1.SetInvoiceDiscountPercent(
                          0, TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", false, Rec."VAT Base Discount %")
                    else
                        TempVATAmountLine1.SetInvoiceDiscountPercent(
                          100 * TempVATAmountLine2.GetTotalInvDiscAmount() / InvDiscBaseAmount,
                          TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", false, Rec."VAT Base Discount %");
                end else begin
                    InvDiscBaseAmount := TempVATAmountLine1.GetTotalInvDiscBaseAmount(false, TotalServLine[IndexNo[i]]."Currency Code");
                    if InvDiscBaseAmount = 0 then
                        TempVATAmountLine2.SetInvoiceDiscountPercent(
                          0, TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", false, Rec."VAT Base Discount %")
                    else
                        TempVATAmountLine2.SetInvoiceDiscountPercent(
                          100 * TempVATAmountLine1.GetTotalInvDiscAmount() / InvDiscBaseAmount,
                          TotalServLine[IndexNo[i]]."Currency Code", Rec."Prices Including VAT", false, Rec."VAT Base Discount %");
                end;
        end;

        UpdateHeaderInfo(1, TempVATAmountLine1);
        UpdateHeaderInfo(2, TempVATAmountLine2);

        if ModifiedIndexNo = 1 then
            VATLinesForm.SetTempVATAmountLine(TempVATAmountLine1)
        else
            VATLinesForm.SetTempVATAmountLine(TempVATAmountLine2);

        Rec."Invoice Discount Calculation" := Rec."Invoice Discount Calculation"::Amount;
        Rec."Invoice Discount Value" := TotalServLine[1]."Inv. Discount Amount";
        Rec.Modify();

        UpdateVATOnServLines();
    end;

    local procedure GetCaptionClass(FieldCaption: Text[100]; ReverseCaption: Boolean): Text[80]
    begin
        if Rec."Prices Including VAT" xor ReverseCaption then
            exit('2,1,' + FieldCaption);
        exit('2,0,' + FieldCaption);
    end;

    local procedure UpdateVATOnServLines()
    var
        ServLine: Record "Service Line";
    begin
        GetVATSpecification(ActiveTab);
        if TempVATAmountLine1.GetAnyLineModified() then
            ServLine.UpdateVATOnLines(0, Rec, ServLine, TempVATAmountLine1);
        if TempVATAmountLine2.GetAnyLineModified() then
            ServLine.UpdateVATOnLines(1, Rec, ServLine, TempVATAmountLine2);
        PrevNo := '';
    end;

    local procedure CustInvDiscRecExists(InvDiscCode: Code[20]): Boolean
    var
        CustInvDisc: Record "Cust. Invoice Disc.";
    begin
        CustInvDisc.SetRange(Code, InvDiscCode);
        exit(CustInvDisc.FindFirst())
    end;

    local procedure CheckAllowInvDisc()
    var
        CustInvDisc: Record "Cust. Invoice Disc.";
    begin
        if not AllowInvDisc then
            Error(
              Text005,
              CustInvDisc.TableCaption(), Rec.FieldCaption("Invoice Disc. Code"), Rec."Invoice Disc. Code");
    end;

    local procedure GetDetailsTotalAmt(): Decimal
    begin
        if TotalServLineLCY[2].Amount = 0 then
            exit(0);
        exit(Round(100 * (ProfitLCY[2] + ProfitLCY[4]) / TotalServLineLCY[2].Amount, 0.01));
    end;

    local procedure GetAdjDetailsTotalAmt(): Decimal
    begin
        if TotalServLineLCY[2].Amount = 0 then
            exit(0);
        exit(Round(100 * (AdjProfitLCY[2] + AdjProfitLCY[4]) / TotalServLineLCY[2].Amount, 0.01));
    end;

    protected procedure VATLinesDrillDown(var VATLinesToDrillDown: Record "VAT Amount Line"; ThisTabAllowsVATEditing: Boolean)
    begin
        Clear(VATLinesForm);
        VATLinesForm.SetTempVATAmountLine(VATLinesToDrillDown);
        VATLinesForm.InitGlobals(
          Rec."Currency Code", AllowVATDifference, AllowVATDifference and ThisTabAllowsVATEditing,
          Rec."Prices Including VAT", AllowInvDisc, Rec."VAT Base Discount %");
        OnVATLinesDrillDownOnBeforeRunVATLinesForm();
        VATLinesForm.RunModal();
        VATLinesForm.GetTempVATAmountLine(VATLinesToDrillDown);
    end;

    local procedure TotalAmount21OnAfterValidate()
    begin
        if Rec."Prices Including VAT" then
            TotalServLine[1]."Inv. Discount Amount" := TotalServLine[1]."Line Amount" - TotalServLine[1]."Amount Including VAT"
        else
            TotalServLine[1]."Inv. Discount Amount" := TotalServLine[1]."Line Amount" - TotalServLine[1].Amount;
        ActiveTab := ActiveTab::General;
        UpdateInvDiscAmount(1);
    end;

    [IntegrationEvent(true, false)]
    local procedure OnAfterCalcTotalAmount()
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnAfterUpdateHeaderInfo(var TotalServLineLCY: array[7] of Record "Service Line"; var IndexNo: Integer)
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnBeforeCalcTotalAmount(var TempServLine: Record "Service Line" temporary)
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnVATLinesDrillDownOnBeforeRunVATLinesForm()
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnUpdateHeaderInfoOnAfterCalcTotalAmount2()
    begin
    end;
}