Table 137 Inc. Doc. Attachment Overview, source in 29
Source29
src/Layers/W1/BaseApp/eServices/EDocument/IncDocAttachmentOverview.Table.al298 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.EServices.EDocument;
using System.Environment;
table 137 "Inc. Doc. Attachment Overview"
{
Caption = 'Inc. Doc. Attachment Overview';
TableType = Temporary;
ReplicateData = false;
DataClassification = CustomerContent;
fields
{
field(1; "Incoming Document Entry No."; Integer)
{
Caption = 'Incoming Document Entry No.';
TableRelation = "Incoming Document";
}
field(2; "Line No."; Integer)
{
Caption = 'Line No.';
InitValue = 0;
}
field(3; "Created Date-Time"; DateTime)
{
Caption = 'Created Date-Time';
ToolTip = 'Specifies when the incoming document line was created.';
}
field(4; "Created By User Name"; Code[50])
{
Caption = 'Created By User Name';
ToolTip = 'Specifies the name of the user who created the incoming document line.';
DataClassification = EndUserIdentifiableInformation;
}
field(5; Name; Text[250])
{
Caption = 'Name';
ToolTip = 'Specifies the name of the record.';
Editable = false;
}
field(6; Type; Option)
{
Caption = 'Type';
ToolTip = 'Specifies the type of the attached file.';
Editable = false;
OptionCaption = ' ,Image,PDF,Word,Excel,PowerPoint,Email,XML,Other';
OptionMembers = " ",Image,PDF,Word,Excel,PowerPoint,Email,XML,Other;
}
field(7; "File Extension"; Text[30])
{
Caption = 'File Extension';
ToolTip = 'Specifies the file extension of the attached file.';
Editable = false;
}
field(100; "Attachment Type"; Option)
{
Caption = 'Attachment Type';
Editable = false;
OptionCaption = ',Group,Main Attachment,OCR Result,Supporting Attachment,Link';
OptionMembers = ,Group,"Main Attachment","OCR Result","Supporting Attachment",Link;
}
field(101; "Sorting Order"; Integer)
{
Caption = 'Sorting Order';
}
field(102; Indentation; Integer)
{
Caption = 'Indentation';
}
field(103; "Posting Date"; Date)
{
Caption = 'Posting Date';
Editable = false;
}
field(104; "Document No."; Code[20])
{
Caption = 'Document No.';
Editable = false;
}
}
keys
{
key(Key1; "Sorting Order", "Incoming Document Entry No.")
{
Clustered = true;
}
}
fieldgroups
{
fieldgroup(Brick; "Created Date-Time", Name, "File Extension")
{
}
}
trigger OnDelete()
var
IncomingDocumentAttachment: Record "Incoming Document Attachment";
begin
if IncomingDocumentAttachment.Get("Incoming Document Entry No.", "Line No.") then
IncomingDocumentAttachment.Delete(true);
end;
var
ClientTypeManagement: Codeunit "Client Type Management";
SupportingAttachmentsTxt: Label 'Supporting Attachments';
NotAvailableAttachmentMsg: Label 'The attachment is no longer available.';
internal procedure NameDrillDown()
begin
NameDrillDown(false)
end;
[Scope('OnPrem')]
procedure NameDrillDown(DownloadFilePreset: Boolean)
var
IncomingDocument: Record "Incoming Document";
IncomingDocumentAttachment: Record "Incoming Document Attachment";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeNameDrillDown(Rec, DownloadFilePreset, IsHandled);
if IsHandled then
exit;
case "Attachment Type" of
"Attachment Type"::Group:
exit;
"Attachment Type"::Link:
begin
IncomingDocument.Get("Incoming Document Entry No.");
HyperLink(IncomingDocument.GetURL());
end
else
if not IncomingDocumentAttachment.Get("Incoming Document Entry No.", "Line No.") then
Message(NotAvailableAttachmentMsg)
else
if (Type = Type::Image) and (ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::Phone) then
PAGE.Run(PAGE::"O365 Incoming Doc. Att. Pict.", IncomingDocumentAttachment)
else
if IncomingDocumentAttachment.SupportedByFileViewer() and not DownloadFilePreset then
ViewFile(IncomingDocumentAttachment, Name + '.' + "File Extension")
else
IncomingDocumentAttachment.Export(Name + '.' + "File Extension", true);
end;
end;
local procedure ViewFile(var IncomingDocumentAttachment: Record "Incoming Document Attachment"; FileName: Text)
var
FileInStream: InStream;
begin
IncomingDocumentAttachment.CalcFields(Content);
IncomingDocumentAttachment.Content.CreateInStream(FileInStream);
File.ViewFromStream(FileInStream, FileName, true);
end;
procedure GetStyleTxt(): Text
begin
case "Attachment Type" of
"Attachment Type"::Group,
"Attachment Type"::"Main Attachment",
"Attachment Type"::Link:
exit('Strong');
else
exit('Standard');
end;
end;
procedure InsertFromIncomingDocument(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary)
var
SortingOrder: Integer;
begin
InsertMainAttachment(IncomingDocument, TempIncDocAttachmentOverview, SortingOrder);
InsertLinkAddress(IncomingDocument, TempIncDocAttachmentOverview, SortingOrder);
InsertSupportingAttachments(
IncomingDocument, TempIncDocAttachmentOverview, SortingOrder,
IncomingDocument."Document Type" <> IncomingDocument."Document Type"::"Sales Invoice");
OnAfterInsertFromIncomingDocument(IncomingDocument, TempIncDocAttachmentOverview, SortingOrder);
end;
procedure InsertSupportingAttachmentsFromIncomingDocument(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary)
var
SortingOrder: Integer;
begin
InsertSupportingAttachments(IncomingDocument, TempIncDocAttachmentOverview, SortingOrder, false);
end;
local procedure InsertMainAttachment(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; var SortingOrder: Integer)
var
IncomingDocumentAttachment: Record "Incoming Document Attachment";
begin
if not IncomingDocument.GetMainAttachment(IncomingDocumentAttachment) then
exit;
if IncomingDocument."Document Type" = IncomingDocument."Document Type"::"Sales Invoice" then
InsertFromIncomingDocumentAttachment(
TempIncDocAttachmentOverview, IncomingDocumentAttachment, SortingOrder,
TempIncDocAttachmentOverview."Attachment Type"::"Supporting Attachment", 0)
else
InsertFromIncomingDocumentAttachment(
TempIncDocAttachmentOverview, IncomingDocumentAttachment, SortingOrder,
TempIncDocAttachmentOverview."Attachment Type"::"Main Attachment", 0);
end;
local procedure InsertSupportingAttachments(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; var SortingOrder: Integer; IncludeGroupCaption: Boolean)
var
IncomingDocumentAttachment: Record "Incoming Document Attachment";
Indentation2: Integer;
begin
if not IncomingDocument.GetAdditionalAttachments(IncomingDocumentAttachment) then
exit;
if IncludeGroupCaption then
InsertGroup(TempIncDocAttachmentOverview, IncomingDocument, SortingOrder, SupportingAttachmentsTxt);
if IncomingDocument."Document Type" = IncomingDocument."Document Type"::"Sales Invoice" then
Indentation2 := 0
else
Indentation2 := 1;
repeat
InsertFromIncomingDocumentAttachment(
TempIncDocAttachmentOverview, IncomingDocumentAttachment, SortingOrder,
TempIncDocAttachmentOverview."Attachment Type"::"Supporting Attachment", Indentation2);
until IncomingDocumentAttachment.Next() = 0;
end;
local procedure InsertLinkAddress(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; var SortingOrder: Integer)
var
URL: Text;
begin
URL := IncomingDocument.GetURL();
if URL = '' then
exit;
Clear(TempIncDocAttachmentOverview);
TempIncDocAttachmentOverview.Init();
TempIncDocAttachmentOverview."Incoming Document Entry No." := IncomingDocument."Entry No.";
AssignSortingNo(TempIncDocAttachmentOverview, SortingOrder);
TempIncDocAttachmentOverview.Name := CopyStr(URL, 1, MaxStrLen(TempIncDocAttachmentOverview.Name));
TempIncDocAttachmentOverview."Attachment Type" := TempIncDocAttachmentOverview."Attachment Type"::Link;
TempIncDocAttachmentOverview.Insert(true);
end;
local procedure InsertFromIncomingDocumentAttachment(var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; IncomingDocumentAttachment: Record "Incoming Document Attachment"; var SortingOrder: Integer; AttachmentType: Option; Indentation2: Integer)
begin
Clear(TempIncDocAttachmentOverview);
TempIncDocAttachmentOverview.Init();
TempIncDocAttachmentOverview.TransferFields(IncomingDocumentAttachment);
AssignSortingNo(TempIncDocAttachmentOverview, SortingOrder);
TempIncDocAttachmentOverview."Attachment Type" := AttachmentType;
TempIncDocAttachmentOverview.Indentation := Indentation2;
TempIncDocAttachmentOverview.Insert(true);
end;
local procedure InsertGroup(var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; IncomingDocument: Record "Incoming Document"; var SortingOrder: Integer; Description: Text[50])
begin
Clear(TempIncDocAttachmentOverview);
TempIncDocAttachmentOverview.Init();
TempIncDocAttachmentOverview."Incoming Document Entry No." := IncomingDocument."Entry No.";
AssignSortingNo(TempIncDocAttachmentOverview, SortingOrder);
TempIncDocAttachmentOverview."Attachment Type" := TempIncDocAttachmentOverview."Attachment Type"::Group;
TempIncDocAttachmentOverview.Type := Type::" ";
TempIncDocAttachmentOverview.Name := Description;
TempIncDocAttachmentOverview.Insert(true);
end;
local procedure AssignSortingNo(var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; var SortingOrder: Integer)
begin
SortingOrder += 1;
TempIncDocAttachmentOverview."Sorting Order" := SortingOrder;
end;
procedure IsGroupOrLink(): Boolean
begin
exit(("Attachment Type" = "Attachment Type"::Group) or ("Attachment Type" = "Attachment Type"::Link));
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInsertFromIncomingDocument(IncomingDocument: Record "Incoming Document"; var TempIncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview" temporary; var SortingOrder: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeNameDrillDown(var IncDocAttachmentOverview: Record "Inc. Doc. Attachment Overview"; DownloadFilePreset: Boolean; var IsHandled: Boolean)
begin
end;
}