Codeunit 5913 FaultResolRelation-Calculate, source in 29

Source29

src/Layers/W1/BaseApp/Service/Maintenance/FaultResolRelationCalculate.Codeunit.al204 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.Maintenance;

using Microsoft.Service.History;
using Microsoft.Service.Setup;

codeunit 5913 "FaultResolRelation-Calculate"
{

    trigger OnRun()
    begin
    end;

    var
        TempFaultResolutionRelation: Record "Fault/Resol. Cod. Relationship" temporary;
        FaultResolutionRelation: Record "Fault/Resol. Cod. Relationship";
        ServShptHeader: Record "Service Shipment Header";
        ServShptItemLine: Record "Service Shipment Item Line";
        ServShptLine: Record "Service Shipment Line";
        ResolutionCode: Record "Resolution Code";
        ServMgtSetup: Record "Service Mgt. Setup";
        Window: Dialog;
        AreaFlag: Boolean;
        SymptomFlag: Boolean;

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label 'Searching Posted Service Order No.  #1###########';
#pragma warning restore AA0470
#pragma warning restore AA0074

    procedure CopyResolutionRelationToTable(FromDate: Date; ToDate: Date; ServiceItemGroupRelation: Boolean; RetainManuallyInserted: Boolean)
    begin
        TempFaultResolutionRelation.Reset();
        if RetainManuallyInserted then
            FaultResolutionRelation.SetRange("Created Manually", false);

        FaultResolutionRelation.DeleteAll();

        Clear(FaultResolutionRelation);
        if FaultResolutionRelation.Find('-') then
            repeat
                TempFaultResolutionRelation.Init();
                TempFaultResolutionRelation."Fault Code" := FaultResolutionRelation."Fault Code";
                TempFaultResolutionRelation."Fault Area Code" := FaultResolutionRelation."Fault Area Code";
                TempFaultResolutionRelation."Symptom Code" := FaultResolutionRelation."Symptom Code";
                TempFaultResolutionRelation."Resolution Code" := FaultResolutionRelation."Resolution Code";
                TempFaultResolutionRelation."Service Item Group Code" := FaultResolutionRelation."Service Item Group Code";
                TempFaultResolutionRelation.Occurrences := FaultResolutionRelation.Occurrences;
                TempFaultResolutionRelation.Description := FaultResolutionRelation.Description;
                TempFaultResolutionRelation."Created Manually" := FaultResolutionRelation."Created Manually";
                TempFaultResolutionRelation.Insert();
            until FaultResolutionRelation.Next() = 0;

        Clear(FaultResolutionRelation);
        FaultResolutionRelation.DeleteAll();
        Window.Open(
          Text000);
        ServShptHeader.SetCurrentKey("Posting Date");
        ServShptHeader.SetRange("Posting Date", FromDate, ToDate);
        if ServShptHeader.Find('-') then begin
            ServMgtSetup.Get();
            case ServMgtSetup."Fault Reporting Level" of
                ServMgtSetup."Fault Reporting Level"::Fault:
                    begin
                        AreaFlag := false;
                        SymptomFlag := false;
                    end;
                ServMgtSetup."Fault Reporting Level"::"Fault+Symptom":
                    begin
                        AreaFlag := false;
                        SymptomFlag := true;
                    end;
                ServMgtSetup."Fault Reporting Level"::"Fault+Symptom+Area (IRIS)":
                    begin
                        AreaFlag := true;
                        SymptomFlag := true;
                    end;
            end;

            repeat
                Window.Update(1, ServShptHeader."No.");
                ServShptItemLine.SetRange("No.", ServShptHeader."No.");
                if ServShptItemLine.Find('-') then
                    repeat
                        ServShptLine.SetRange("Document No.", ServShptHeader."No.");
                        ServShptLine.SetRange("Service Item Line No.", ServShptItemLine."Line No.");
                        ServShptLine.SetFilter("Resolution Code", '<>%1', '');
                        if ServShptLine.Find('-') then
                            repeat
                                TempFaultResolutionRelation.Init();
                                TempFaultResolutionRelation."Fault Code" := ServShptLine."Fault Code";
                                if ServiceItemGroupRelation then
                                    TempFaultResolutionRelation."Service Item Group Code" := ServShptItemLine."Service Item Group Code"
                                else
                                    TempFaultResolutionRelation."Service Item Group Code" := '';
                                if AreaFlag then
                                    TempFaultResolutionRelation."Fault Area Code" := ServShptLine."Fault Area Code"
                                else
                                    TempFaultResolutionRelation."Fault Area Code" := '';
                                if SymptomFlag then
                                    TempFaultResolutionRelation."Symptom Code" := ServShptLine."Symptom Code"
                                else
                                    TempFaultResolutionRelation."Symptom Code" := '';
                                TempFaultResolutionRelation."Resolution Code" := ServShptLine."Resolution Code";
                                if ResolutionCode.Get(ServShptLine."Resolution Code") then
                                    TempFaultResolutionRelation.Description := ResolutionCode.Description;
                                if not TempFaultResolutionRelation.Insert() then begin
                                    FaultResolutionRelation.SetRange("Fault Code", ServShptLine."Fault Code");
                                    if AreaFlag then
                                        FaultResolutionRelation.SetRange("Fault Area Code", ServShptLine."Fault Area Code")
                                    else
                                        FaultResolutionRelation.SetRange("Fault Area Code");
                                    if ServiceItemGroupRelation then
                                        FaultResolutionRelation.SetRange("Service Item Group Code", ServShptItemLine."Service Item Group Code")
                                    else
                                        FaultResolutionRelation.SetRange("Service Item Group Code");
                                    if SymptomFlag then
                                        FaultResolutionRelation.SetRange("Symptom Code", ServShptLine."Symptom Code")
                                    else
                                        FaultResolutionRelation.SetRange("Symptom Code");
                                    FaultResolutionRelation.SetRange("Resolution Code", ServShptLine."Resolution Code");
                                    if FaultResolutionRelation.Find('-') then begin
                                        FaultResolutionRelation.Occurrences := FaultResolutionRelation.Occurrences + 1;
                                        FaultResolutionRelation.Modify();
                                    end else begin
                                        FaultResolutionRelation.Init();
                                        FaultResolutionRelation."Fault Code" := ServShptLine."Fault Code";
                                        if AreaFlag then
                                            FaultResolutionRelation."Fault Area Code" := ServShptLine."Fault Area Code"
                                        else
                                            FaultResolutionRelation."Fault Area Code" := '';
                                        if SymptomFlag then
                                            FaultResolutionRelation."Symptom Code" := ServShptLine."Symptom Code"
                                        else
                                            FaultResolutionRelation."Symptom Code" := '';
                                        if ServiceItemGroupRelation then
                                            FaultResolutionRelation."Service Item Group Code" := ServShptItemLine."Service Item Group Code"
                                        else
                                            FaultResolutionRelation."Service Item Group Code" := '';
                                        FaultResolutionRelation."Resolution Code" := ServShptLine."Resolution Code";
                                        if ResolutionCode.Get(ServShptLine."Resolution Code") then
                                            FaultResolutionRelation.Description := ResolutionCode.Description;
                                        FaultResolutionRelation.Occurrences := 1;
                                        FaultResolutionRelation.Insert();
                                    end;
                                end;
                            until ServShptLine.Next() = 0;

                    until ServShptItemLine.Next() = 0;

            until ServShptHeader.Next() = 0;
        end;
        if TempFaultResolutionRelation.Find('-') then
            repeat
                FaultResolutionRelation.SetRange("Fault Code", TempFaultResolutionRelation."Fault Code");
                if ServiceItemGroupRelation then
                    FaultResolutionRelation.SetRange("Service Item Group Code", TempFaultResolutionRelation."Service Item Group Code")
                else
                    FaultResolutionRelation.SetRange("Service Item Group Code");
                if AreaFlag then
                    FaultResolutionRelation.SetRange("Fault Area Code", TempFaultResolutionRelation."Fault Area Code")
                else
                    FaultResolutionRelation.SetRange("Fault Area Code");
                if SymptomFlag then
                    FaultResolutionRelation.SetRange("Symptom Code", TempFaultResolutionRelation."Symptom Code")
                else
                    FaultResolutionRelation.SetRange("Symptom Code");
                FaultResolutionRelation.SetRange("Resolution Code", TempFaultResolutionRelation."Resolution Code");
                if FaultResolutionRelation.Find('-') then begin
                    FaultResolutionRelation.Occurrences := FaultResolutionRelation.Occurrences + 1;
                    FaultResolutionRelation.Modify();
                end else begin
                    FaultResolutionRelation.Init();
                    FaultResolutionRelation."Fault Code" := TempFaultResolutionRelation."Fault Code";
                    if AreaFlag then
                        FaultResolutionRelation."Fault Area Code" := TempFaultResolutionRelation."Fault Area Code"
                    else
                        FaultResolutionRelation."Fault Area Code" := '';
                    if SymptomFlag then
                        FaultResolutionRelation."Symptom Code" := TempFaultResolutionRelation."Symptom Code"
                    else
                        FaultResolutionRelation."Symptom Code" := '';
                    FaultResolutionRelation."Resolution Code" := TempFaultResolutionRelation."Resolution Code";
                    if ServiceItemGroupRelation then
                        FaultResolutionRelation."Service Item Group Code" := TempFaultResolutionRelation."Service Item Group Code"
                    else
                        FaultResolutionRelation."Service Item Group Code" := '';
                    if ResolutionCode.Get(TempFaultResolutionRelation."Resolution Code") then
                        FaultResolutionRelation.Description := ResolutionCode.Description;
                    FaultResolutionRelation."Created Manually" := TempFaultResolutionRelation."Created Manually";
                    FaultResolutionRelation.Occurrences := 1;
                    FaultResolutionRelation.Insert();
                end;
            until TempFaultResolutionRelation.Next() = 0;

        Window.Close();
    end;
}