Page 7605 Customized Cal. Entries Subfm
- App
- Base Application
- Namespace
- Microsoft.Foundation.Calendar
- Versions
- 17-28
- Source table
- 7602
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Foundation/Calendar/CustomizedCalEntriesSubfm.Page.al237 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.Foundation.Calendar;
using Microsoft.Foundation.Enums;
using Microsoft.Foundation.Period;
using System.Utilities;
page 7605 "Customized Cal. Entries Subfm"
{
Caption = 'Lines';
DeleteAllowed = false;
Editable = true;
InsertAllowed = false;
LinksAllowed = false;
PageType = ListPart;
SourceTable = "Customized Calendar Change";
SourceTableTemporary = true;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field(CurrSourceType; Rec."Source Type")
{
ApplicationArea = Suite;
Caption = 'Current Source Type';
Visible = false;
}
field(CurrSourceCode; Rec."Source Code")
{
ApplicationArea = Suite;
Caption = 'Current Source Code';
Visible = false;
}
field(CurrAdditionalSourceCode; Rec."Additional Source Code")
{
ApplicationArea = Suite;
Caption = 'Current Additional Source Code';
Visible = false;
}
field(CurrCalendarCode; Rec."Base Calendar Code")
{
ApplicationArea = Suite;
Caption = 'Current Calendar Code';
Editable = false;
ToolTip = 'Specifies the calendar code.';
Visible = false;
}
field("Period Start"; Rec.Date)
{
ApplicationArea = Suite;
Caption = 'Date';
Editable = false;
}
field("Period Name"; Rec.Day)
{
ApplicationArea = Suite;
Caption = 'Day';
Editable = false;
}
field(WeekNo; Date2DWY(Rec.Date, 2))
{
ApplicationArea = Suite;
Caption = 'Week No.';
Editable = false;
ToolTip = 'Specifies the week number for the calendar entries.';
Visible = false;
}
field(Nonworking; Rec.Nonworking)
{
ApplicationArea = Suite;
Caption = 'Nonworking';
Editable = true;
trigger OnValidate()
begin
UpdateCusomizedCalendarChanges();
end;
}
field(Description; Rec.Description)
{
ApplicationArea = Suite;
Caption = 'Description';
trigger OnValidate()
begin
UpdateCusomizedCalendarChanges();
end;
}
}
}
}
actions
{
}
trigger OnAfterGetRecord()
begin
if DateRec.Get(DateRec."Period Type"::Date, Rec.Date) then;
end;
trigger OnFindRecord(Which: Text): Boolean
var
FoundDate: Boolean;
begin
FoundDate := PeriodPageMgt.FindDate(Which, DateRec, "Analysis Period Type"::Day);
if not FoundDate then
exit(false);
if not FindLine(DateRec."Period Start") then
exit(InsertLine());
exit(true);
end;
trigger OnNextRecord(Steps: Integer): Integer
var
ResultSteps: Integer;
begin
ResultSteps := PeriodPageMgt.NextDate(Steps, DateRec, "Analysis Period Type"::Day);
if ResultSteps = 0 then
exit(0);
if not FindLine(DateRec."Period Start") then
if not InsertLine() then
exit(0);
exit(ResultSteps);
end;
trigger OnOpenPage()
begin
DateRec.Reset();
DateRec.SetFilter("Period Start", '>=%1', 00000101D);
end;
var
DateRec: Record Date;
CalendarMgmt: Codeunit "Calendar Management";
PeriodPageMgt: Codeunit PeriodPageManagement;
protected var
CurrCalendarChange: Record "Customized Calendar Change";
local procedure FindLine(TargetDate: Date) FoundLine: Boolean;
begin
Rec.Reset();
Rec.SetRange(Date, TargetDate);
FoundLine := Rec.FindFirst();
Rec.Reset();
end;
local procedure InsertLine(): Boolean;
begin
Rec := CurrCalendarChange;
Rec.Date := DateRec."Period Start";
Rec.Day := DateRec."Period No.";
CalendarMgmt.CheckDateStatus(Rec);
exit(Rec.Insert());
end;
procedure SetCalendarSource(CustomizedCalendarEntry: record "Customized Calendar Entry")
begin
CalendarMgmt.SetSource(CustomizedCalendarEntry, CurrCalendarChange);
CurrPage.Update();
end;
protected procedure UpdateCusomizedCalendarChanges()
var
CustomizedCalendarChange: Record "Customized Calendar Change";
begin
CustomizedCalendarChange.Reset();
CustomizedCalendarChange.SetRange("Source Type", Rec."Source Type");
CustomizedCalendarChange.SetRange("Source Code", Rec."Source Code");
CustomizedCalendarChange.SetRange("Additional Source Code", Rec."Additional Source Code");
CustomizedCalendarChange.SetRange("Base Calendar Code", Rec."Base Calendar Code");
CustomizedCalendarChange.SetRange("Recurring System", CustomizedCalendarChange."Recurring System"::" ");
CustomizedCalendarChange.SetRange(Date, Rec.Date);
if CustomizedCalendarChange.FindFirst() then
CustomizedCalendarChange.Delete();
if not IsInBaseCalendar() then begin
CustomizedCalendarChange := Rec;
OnUpdateCusomizedCalendarChanges(CustomizedCalendarChange);
CustomizedCalendarChange.Insert();
end;
end;
local procedure IsInBaseCalendar(): Boolean
var
BaseCalendarChange: Record "Base Calendar Change";
IsHandled: Boolean;
Result: Boolean;
begin
IsHandled := false;
OnBeforeIsInBaseCalendar(Rec, Result, IsHandled);
if IsHandled then
exit(Result);
if BaseCalendarChange.Get(Rec."Base Calendar Code", Rec."Recurring System"::" ", Rec.Date, Rec.Day) then
exit(BaseCalendarChange.Nonworking = Rec.Nonworking);
if BaseCalendarChange.Get(Rec."Base Calendar Code", Rec."Recurring System"::"Weekly Recurring", 0D, Rec.Day) then
exit(BaseCalendarChange.Nonworking = Rec.Nonworking);
BaseCalendarChange.SetRange("Base Calendar Code", Rec."Base Calendar Code");
BaseCalendarChange.SetRange(Day, BaseCalendarChange.Day::" ");
BaseCalendarChange.SetRange("Recurring System", Rec."Recurring System"::"Annual Recurring");
if BaseCalendarChange.Find('-') then
repeat
if (Date2DMY(BaseCalendarChange.Date, 2) = Date2DMY(Rec.Date, 2)) and
(Date2DMY(BaseCalendarChange.Date, 1) = Date2DMY(Rec.Date, 1))
then
exit(BaseCalendarChange.Nonworking = Rec.Nonworking);
until BaseCalendarChange.Next() = 0;
exit(not CurrCalendarChange.Nonworking);
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateCusomizedCalendarChanges(var CustomizedCalendarChange: Record "Customized Calendar Change")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeIsInBaseCalendar(var CustomizedCalendarChange: Record "Customized Calendar Change"; var Result: Boolean; var IsHandled: Boolean)
begin
end;
}