Table 87 Date Compr. Register, source in 29
Source29
src/Layers/W1/BaseApp/Foundation/Period/DateComprRegister.Table.al230 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.Period;
using Microsoft.Bank.Ledger;
using Microsoft.Finance.GeneralLedger.Ledger;
using Microsoft.Finance.VAT.Ledger;
using Microsoft.FixedAssets.Insurance;
using Microsoft.FixedAssets.Ledger;
using Microsoft.FixedAssets.Maintenance;
using Microsoft.Foundation.AuditCodes;
using Microsoft.HumanResources.Payables;
using Microsoft.Inventory.Ledger;
using Microsoft.Projects.Project.Ledger;
using Microsoft.Projects.Resources.Ledger;
using Microsoft.Purchases.Payables;
using Microsoft.Sales.Receivables;
using Microsoft.Utilities;
using Microsoft.Warehouse.Ledger;
using System.Reflection;
using System.Security.AccessControl;
table 87 "Date Compr. Register"
{
Caption = 'Date Compr. Register';
DataCaptionFields = "No.";
LookupPageID = "Date Compr. Registers";
DataClassification = CustomerContent;
fields
{
field(1; "No."; Integer)
{
Caption = 'No.';
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
}
field(2; "Creation Date"; Date)
{
Caption = 'Creation Date';
ToolTip = 'Specifies the date that the date compression took place.';
}
field(3; "Table Caption"; Text[250])
{
CalcFormula = lookup(AllObjWithCaption."Object Caption" where("Object Type" = const(Table),
"Object ID" = field("Table ID")));
Caption = 'Table Caption';
ToolTip = 'Specifies the name of the table that was compressed.';
Editable = false;
FieldClass = FlowField;
}
field(4; "Period Length"; Option)
{
Caption = 'Period Length';
ToolTip = 'Specifies the time interval of entries combined into one for the period defined in the Starting Date and Ending Date fields in the batch job.';
OptionCaption = 'Day,Week,Month,Quarter,Year,Period';
OptionMembers = Day,Week,Month,Quarter,Year,Period;
}
field(5; "Ending Date"; Date)
{
Caption = 'Ending Date';
ToolTip = 'Specifies the last date in the period for which entries were compressed.';
ClosingDates = true;
}
field(6; "No. of New Records"; Integer)
{
Caption = 'No. of New Records';
ToolTip = 'Specifies the number of new entries that were created by the date compression.';
}
field(7; "No. Records Deleted"; Integer)
{
Caption = 'No. Records Deleted';
ToolTip = 'Specifies the number of entries that were deleted during the date compression.';
}
field(8; "User ID"; Code[50])
{
Caption = 'User ID';
ToolTip = 'Specifies the ID of the user who posted the entry, to be used, for example, in the change log.';
DataClassification = EndUserIdentifiableInformation;
TableRelation = User."User Name";
}
field(9; "Filter"; Text[250])
{
Caption = 'Filter';
ToolTip = 'Specifies the filters that were placed on the date compression.';
}
field(10; "Starting Date"; Date)
{
Caption = 'Starting Date';
ToolTip = 'Specifies the first date in the period for which entries were compressed.';
ClosingDates = true;
}
field(11; "Table ID"; Integer)
{
Caption = 'Table ID';
ToolTip = 'Specifies the number of the table that was compressed.';
TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Table));
}
field(12; "Register No."; Integer)
{
Caption = 'Register No.';
ToolTip = 'Specifies the number of the register that was created by the date compression and that contains the compressed entries.';
TableRelation = if ("Table ID" = const(17)) "G/L Register"
else
if ("Table ID" = const(21)) "G/L Register"
else
if ("Table ID" = const(25)) "G/L Register"
else
if ("Table ID" = const(254)) "G/L Register"
else
if ("Table ID" = const(32)) "Item Register"
else
if ("Table ID" = const(203)) "Resource Register"
else
if ("Table ID" = const(169)) "Job Register"
else
if ("Table ID" = const(5601)) "FA Register"
else
if ("Table ID" = const(5629)) "Insurance Register"
else
if ("Table ID" = const(5625)) "FA Register"
else
if ("Table ID" = const(7312)) "Warehouse Register";
}
field(13; "Source Code"; Code[10])
{
Caption = 'Source Code';
ToolTip = 'Specifies the source code that specifies where the entry was created.';
TableRelation = "Source Code";
}
field(14; "Retain Field Contents"; Text[80])
{
Caption = 'Retain Field Contents';
ToolTip = 'Specifies a list of the fields whose contents the user chose to retain in the date compression.';
}
field(15; "Retain Totals"; Text[80])
{
Caption = 'Retain Totals';
ToolTip = 'Specifies a list of the quantity fields that the user chose to retain when they ran the date compression batch job.';
}
}
keys
{
key(Key1; "No.")
{
Clustered = true;
}
key(Key2; "Table ID")
{
}
key(Key3; "Table ID", "Ending Date")
{
}
}
fieldgroups
{
}
var
#pragma warning disable AA0074
#pragma warning disable AA0470
Text000: Label 'The entry cannot be unapplied, because the %1 has been compressed.';
Text001: Label 'The transaction cannot be reversed, because the %1 has been compressed.';
#pragma warning restore AA0470
#pragma warning restore AA0074
procedure GetLastEntryNo(): Integer;
var
FindRecordManagement: Codeunit "Find Record Management";
begin
exit(FindRecordManagement.GetLastEntryIntFieldValue(Rec, FieldNo("No.")))
end;
procedure InitRegister(TableID: Integer; RegNo: Integer; StartingDate: Date; EndingDate: Date; PeriodLength: Integer; EntryFilter: Text[250]; RelatedRegNo: Integer; SourceCode: Code[10])
begin
Init();
"No." := RegNo;
"Table ID" := TableID;
"Creation Date" := Today;
"Starting Date" := StartingDate;
"Ending Date" := EndingDate;
"Period Length" := PeriodLength;
Filter := EntryFilter;
"Register No." := RelatedRegNo;
"Source Code" := SourceCode;
"User ID" := CopyStr(UserId(), 1, MaxStrLen("User ID"));
end;
local procedure CheckLedgerEntryCompressed(PostingDate: Date; TableID: Integer; Caption: Text[50]; Type: Option Unapply,Reversal)
begin
SetCurrentKey("Table ID", "Ending Date");
SetRange("Table ID", TableID);
if Find('+') then
if PostingDate <= "Ending Date" then
case Type of
Type::Unapply:
Error(Text000, Caption);
Type::Reversal:
Error(Text001, Caption);
end;
end;
procedure CheckMaxDateCompressed(MaxPostingDate: Date; Type: Option Unapply,Reversal)
var
GLEntry: Record "G/L Entry";
CustLedgEntry: Record "Cust. Ledger Entry";
VendLedgEntry: Record "Vendor Ledger Entry";
EmployeeLedgerEntry: Record "Employee Ledger Entry";
BankAccLedgEntry: Record "Bank Account Ledger Entry";
VATEntry: Record "VAT Entry";
FALedgEntry: Record "FA Ledger Entry";
MaintenanceLedgEntry: Record "Maintenance Ledger Entry";
begin
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"Cust. Ledger Entry", CustLedgEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"Vendor Ledger Entry", VendLedgEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"Employee Ledger Entry", EmployeeLedgerEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"Bank Account Ledger Entry", BankAccLedgEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"VAT Entry", VATEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"G/L Entry", GLEntry.TableCaption(), Type);
if Type = Type::Reversal then begin
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"FA Ledger Entry", FALedgEntry.TableCaption(), Type);
CheckLedgerEntryCompressed(MaxPostingDate, DATABASE::"Maintenance Ledger Entry", MaintenanceLedgEntry.TableCaption(), Type);
end;
end;
}