Table 99000752 Shop Calendar Working Days, source in 29

Source29

src/Layers/W1/BaseApp/Manufacturing/Capacity/ShopCalendarWorkingDays.Table.al153 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.Manufacturing.Capacity;

using Microsoft.Manufacturing.Setup;

table 99000752 "Shop Calendar Working Days"
{
    Caption = 'Shop Calendar Working Days';
    DataCaptionFields = "Shop Calendar Code";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Shop Calendar Code"; Code[10])
        {
            Caption = 'Shop Calendar Code';
            NotBlank = true;
            TableRelation = "Shop Calendar";
        }
        field(2; Day; Option)
        {
            Caption = 'Day';
            ToolTip = 'Specifies your working days of the week.';
            OptionCaption = 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday';
            OptionMembers = Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;
        }
        field(3; "Work Shift Code"; Code[10])
        {
            Caption = 'Work Shift Code';
            ToolTip = 'Specifies the work shift that this working day refers to.';
            NotBlank = true;
            TableRelation = "Work Shift";
        }
        field(4; "Starting Time"; Time)
        {
            Caption = 'Starting Time';
            ToolTip = 'Specifies the starting time of the shift for this working day.';

            trigger OnValidate()
            begin
                if ("Ending Time" = 0T) or
                   ("Ending Time" < "Starting Time")
                then begin
                    ShopCalendar.SetRange("Shop Calendar Code", "Shop Calendar Code");
                    ShopCalendar.SetRange(Day, Day);
                    ShopCalendar.SetRange("Starting Time", "Starting Time", 235959T);
                    if ShopCalendar.FindFirst() then
                        "Ending Time" := ShopCalendar."Starting Time"
                    else
                        "Ending Time" := 235959T;
                end;
                CheckRedundancy();
            end;
        }
        field(5; "Ending Time"; Time)
        {
            Caption = 'Ending Time';
            ToolTip = 'Specifies the ending time of the shift for this working day.';

            trigger OnValidate()
            begin
                if ("Ending Time" < "Starting Time") and
                   ("Ending Time" <> 000000T)
                then
                    Error(Text000, FieldCaption("Ending Time"), FieldCaption("Starting Time"));

                CheckRedundancy();
            end;
        }
    }

    keys
    {
        key(Key1; "Shop Calendar Code", Day, "Starting Time", "Ending Time", "Work Shift Code")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    trigger OnInsert()
    begin
        CheckRedundancy();
    end;

    trigger OnRename()
    begin
        CheckRedundancy();
    end;

    var
        ShopCalendar: Record "Shop Calendar Working Days";

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label '%1 must be higher than %2.';
        Text001: Label 'There is redundancy in the Shop Calendar. Actual work shift %1 from : %2 to %3. Conflicting work shift %4 from : %5 to %6.';
#pragma warning restore AA0470
#pragma warning restore AA0074

    local procedure CheckRedundancy()
    var
        ShopCalendar2: Record "Shop Calendar Working Days";
        TempShopCalendar: Record "Shop Calendar Working Days" temporary;
    begin
        ShopCalendar2.SetRange("Shop Calendar Code", "Shop Calendar Code");
        ShopCalendar2.SetRange(Day, Day);
        if ShopCalendar2.Find('-') then
            repeat
                TempShopCalendar := ShopCalendar2;
                TempShopCalendar.Insert();
            until ShopCalendar2.Next() = 0;

        TempShopCalendar := xRec;
        if TempShopCalendar.Delete() then;

        TempShopCalendar.SetRange("Shop Calendar Code", "Shop Calendar Code");
        TempShopCalendar.SetRange(Day, Day);
        TempShopCalendar.SetRange("Starting Time", 0T, "Ending Time" - 1);
        TempShopCalendar.SetRange("Ending Time", "Starting Time" + 1, 235959T);
        OnCheckRedundancyOnAfterTempShopCalendarSetFilters(Rec, TempShopCalendar);

        if TempShopCalendar.FindFirst() then begin
            if (TempShopCalendar."Starting Time" = "Starting Time") and
               (TempShopCalendar."Ending Time" = "Ending Time") and
               (TempShopCalendar."Work Shift Code" = "Work Shift Code")
            then
                exit;

            Error(
              Text001,
              "Work Shift Code",
              "Starting Time",
              "Ending Time",
              TempShopCalendar."Work Shift Code",
              TempShopCalendar."Starting Time",
              TempShopCalendar."Ending Time");
        end;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnCheckRedundancyOnAfterTempShopCalendarSetFilters(ShopCalendarWorkingDays: Record "Shop Calendar Working Days"; var TempShopCalendarWorkingDays: Record "Shop Calendar Working Days" temporary)
    begin
    end;
}