Table 1572 Approval Entry Buffer, source in 29
Source29
src/Layers/W1/BaseApp/OtherCapabilities/Approvals/ApprovalEntryBuffer.Table.al310 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 System.Automation;
using Microsoft.CRM.Team;
using Microsoft.Finance.Currency;
using Microsoft.Utilities;
using System.Reflection;
using System.Security.AccessControl;
table 1572 "Approval Entry Buffer"
{
Caption = 'Approval Entry Buffer';
ReplicateData = false;
TableType = Temporary;
DataClassification = CustomerContent;
InherentEntitlements = RIMDX;
InherentPermissions = RIMDX;
fields
{
field(1; "Table ID"; Integer)
{
Caption = 'Table ID';
}
field(2; "Document Type"; Enum "Approval Document Type")
{
Caption = 'Document Type';
}
field(3; "Document No."; Code[20])
{
Caption = 'Document No.';
}
field(4; "Sequence No."; Integer)
{
Caption = 'Sequence No.';
}
field(5; "Approval Code"; Code[20])
{
Caption = 'Approval Code';
}
field(6; "Sender ID"; Code[50])
{
Caption = 'Sender ID';
DataClassification = EndUserIdentifiableInformation;
TableRelation = User."User Name";
}
field(7; "Salespers./Purch. Code"; Code[20])
{
Caption = 'Salespers./Purch. Code';
}
field(8; "Approver ID"; Code[50])
{
Caption = 'Approver ID';
DataClassification = EndUserIdentifiableInformation;
TableRelation = User."User Name";
}
field(9; Status; Enum "Approval Status")
{
Caption = 'Status';
}
field(10; "Date-Time Sent for Approval"; DateTime)
{
Caption = 'Date-Time Sent for Approval';
}
field(11; "Last Date-Time Modified"; DateTime)
{
Caption = 'Last Date-Time Modified';
}
field(12; "Last Modified By ID"; Code[50])
{
Caption = 'Last Modified By ID';
DataClassification = EndUserIdentifiableInformation;
TableRelation = User."User Name";
}
field(13; Comment; Boolean)
{
Caption = 'Comment';
Editable = false;
}
field(14; "Due Date"; Date)
{
Caption = 'Due Date';
}
field(15; Amount; Decimal)
{
AutoFormatExpression = Rec."Currency Code";
AutoFormatType = 1;
Caption = 'Amount';
}
field(16; "Amount (LCY)"; Decimal)
{
AutoFormatType = 1;
AutoFormatExpression = '';
Caption = 'Amount (LCY)';
}
field(17; "Currency Code"; Code[10])
{
Caption = 'Currency Code';
TableRelation = Currency;
}
field(18; "Approval Type"; Enum "Workflow Approval Type")
{
Caption = 'Approval Type';
}
field(19; "Limit Type"; Enum "Workflow Approval Limit Type")
{
Caption = 'Limit Type';
}
field(20; "Available Credit Limit (LCY)"; Decimal)
{
Caption = 'Available Credit Limit (LCY)';
AutoFormatType = 1;
AutoFormatExpression = '';
}
field(21; "Pending Approvals"; Integer)
{
CalcFormula = count("Approval Entry" where("Record ID to Approve" = field("Record ID"),
Status = filter(Created | Open),
"Workflow Step Instance ID" = field("Workflow Step Instance ID")));
Caption = 'Pending Approvals';
FieldClass = FlowField;
}
field(22; "Record ID"; RecordID)
{
Caption = 'Record ID';
DataClassification = CustomerContent;
}
field(23; "Delegation Date Formula"; DateFormula)
{
Caption = 'Delegation Date Formula';
}
field(26; "Number of Approved Requests"; Integer)
{
CalcFormula = count("Approval Entry" where("Record ID to Approve" = field("Record ID"),
Status = filter(Approved),
"Workflow Step Instance ID" = field("Workflow Step Instance ID")));
Caption = 'Number of Approved Requests';
FieldClass = FlowField;
}
field(27; "Number of Rejected Requests"; Integer)
{
CalcFormula = count("Approval Entry" where("Record ID to Approve" = field("Record ID"),
Status = filter(Rejected),
"Workflow Step Instance ID" = field("Workflow Step Instance ID")));
Caption = 'Number of Rejected Requests';
FieldClass = FlowField;
}
field(28; "Iteration No."; Integer)
{
Caption = 'Iteration No.';
}
field(29; "Entry No."; Integer)
{
AutoIncrement = true;
Caption = 'Entry No.';
}
field(30; "Workflow Step Instance ID"; Guid)
{
Caption = 'Workflow Step Instance ID';
}
field(31; "Related to Change"; Boolean)
{
CalcFormula = exist("Workflow - Record Change" where("Workflow Step Instance ID" = field("Workflow Step Instance ID"),
"Record ID" = field("Record ID")));
Caption = 'Related to Change';
FieldClass = FlowField;
}
field(32; "Approver Full Name"; Text[80])
{
Caption = 'Approver Full Name';
CalcFormula = lookup(User."Full Name" where("User Name" = field("Approver ID")));
FieldClass = FlowField;
Editable = false;
}
field(33; "Sender Full Name"; Text[80])
{
Caption = 'Sender Full Name';
CalcFormula = lookup(User."Full Name" where("User Name" = field("Sender ID")));
FieldClass = FlowField;
Editable = false;
}
field(34; "Salespers./Purch. Name"; Text[80])
{
Caption = 'Salespers./Purch. Full Name';
CalcFormula = lookup("Salesperson/Purchaser".Name where("Code" = field("Salespers./Purch. Code")));
FieldClass = FlowField;
Editable = false;
}
field(35; Posted; Boolean)
{
Caption = 'Posted';
Editable = false;
}
}
keys
{
key(Key1; "Entry No.", Posted)
{
Clustered = true;
}
key(Key2; "Last Date-Time Modified")
{
}
}
fieldgroups
{
}
procedure ShowRecord()
var
PageManagement: Codeunit "Page Management";
RecRef: RecordRef;
begin
if not RecRef.Get("Record ID") then
exit;
RecRef.SetRecFilter();
PageManagement.PageRun(RecRef);
end;
procedure ShowComments()
var
PostedApprovalCommentLine: Record "Posted Approval Comment Line";
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
RecRef: RecordRef;
begin
if Rec.Posted then begin
PostedApprovalCommentLine.FilterGroup(2);
PostedApprovalCommentLine.SetRange("Posted Record ID", Rec."Record ID");
PostedApprovalCommentLine.FilterGroup(0);
Page.Run(Page::"Posted Approval Comments", PostedApprovalCommentLine);
end else begin
RecRef.Get(Rec."Record ID");
ApprovalsMgmt.GetApprovalCommentForWorkflowStepInstanceID(RecRef, Rec."Workflow Step Instance ID");
end;
end;
procedure CopyFiltersAndFillBuffer()
var
ApprovalEntry: Record "Approval Entry";
PostedApprovalEntry: Record "Posted Approval Entry";
BufferFields: Record Field;
ApprovalEntryBufferRecRef: RecordRef;
ApprovalEntryRecRef: RecordRef;
PostedApprovalEntryRecRef: RecordRef;
ApprovalEntryBufferFieldRef: FieldRef;
ApprovalEntryFieldRef: FieldRef;
PostedApprovalEntryFieldRef: FieldRef;
PostedFilterText: Text;
begin
//Improve API performance by copying filters from Approval Entry Buffer to Approval Entry and Posted Approval Entry
ApprovalEntryBufferRecRef.GetTable(Rec);
ApprovalEntryRecRef.GetTable(ApprovalEntry);
PostedApprovalEntryRecRef.GetTable(PostedApprovalEntry);
BufferFields.SetRange(TableNo, Database::"Approval Entry Buffer");
if BufferFields.FindSet() then
repeat
ApprovalEntryBufferFieldRef := ApprovalEntryBufferRecRef.Field(BufferFields."No.");
if ApprovalEntryRecRef.FieldExist(BufferFields."No.") then begin
ApprovalEntryFieldRef := ApprovalEntryRecRef.Field(BufferFields."No.");
ApprovalEntryFieldRef.SetFilter(ApprovalEntryBufferFieldRef.GetFilter());
end;
if PostedApprovalEntryRecRef.FieldExist(BufferFields."No.") then begin
PostedApprovalEntryFieldRef := PostedApprovalEntryRecRef.Field(BufferFields."No.");
PostedApprovalEntryFieldRef.SetFilter(ApprovalEntryBufferFieldRef.GetFilter());
end;
until BufferFields.Next() = 0;
ApprovalEntryRecRef.SetTable(ApprovalEntry);
PostedApprovalEntryRecRef.SetTable(PostedApprovalEntry);
FillBuffer(ApprovalEntry);
PostedFilterText := ApprovalEntryBufferRecRef.Field(Rec.FieldNo(Posted)).GetFilter();
if (PostedFilterText = '') or (PostedFilterText = 'Yes') then
FillBuffer(PostedApprovalEntry);
end;
procedure FillBuffer(var ApprovalEntry: Record "Approval Entry")
begin
ApprovalEntry.SetAutoCalcFields(Comment);
if ApprovalEntry.FindSet() then
repeat
Rec.Init();
Rec.TransferFields(ApprovalEntry);
Rec.Comment := ApprovalEntry.Comment;
Rec.Posted := false;
Rec.Insert();
until ApprovalEntry.Next() = 0;
end;
procedure FillBuffer(var PostedApprovalEntry: Record "Posted Approval Entry")
begin
PostedApprovalEntry.SetAutoCalcFields(Comment);
if PostedApprovalEntry.FindSet() then
repeat
Rec.Init();
Rec.TransferFields(PostedApprovalEntry);
Rec."Document Type" := Rec."Document Type"::" ";
Rec.Comment := PostedApprovalEntry.Comment;
Rec.Posted := true;
Rec.Insert();
until PostedApprovalEntry.Next() = 0;
end;
}