Table 31 Item Picture Buffer
- App
- Base Application
- Namespace
- Microsoft.Inventory.Item.Picture
- Versions
- 17-28
Fields, 10Keys, 1Procedures, 6
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Item/Picture/ItemPictureBuffer.Table.al238 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.Inventory.Item.Picture;
using Microsoft.Inventory.Item;
using System.IO;
using System.Utilities;
table 31 "Item Picture Buffer"
{
Caption = 'Item Picture Buffer';
ReplicateData = false;
DataClassification = CustomerContent;
fields
{
field(1; "File Name"; Text[260])
{
Caption = 'File Name';
ToolTip = 'Specifies the name of the picture file. It must be the same as the item number.';
}
field(2; Picture; Media)
{
Caption = 'Picture';
}
field(3; "Item No."; Code[20])
{
Caption = 'Item No.';
ToolTip = 'Specifies the number of the item that the picture is for.';
TableRelation = Item;
}
field(4; "Item Description"; Text[100])
{
CalcFormula = lookup(Item.Description where("No." = field("Item No.")));
Caption = 'Item Description';
ToolTip = 'Specifies the description of the item that the picture is for.';
FieldClass = FlowField;
}
field(5; "Import Status"; Option)
{
Caption = 'Import Status';
ToolTip = 'Specifies if the last import of the picture was been skipped, is pending, or is completed.';
Editable = false;
OptionCaption = 'Skip,Pending,Completed';
OptionMembers = Skip,Pending,Completed;
}
field(6; "Picture Already Exists"; Boolean)
{
Caption = 'Picture Already Exists';
ToolTip = 'Specifies if a picture already exists for the item card.';
}
field(7; "File Size (KB)"; BigInteger)
{
Caption = 'File Size (KB)';
}
field(8; "File Extension"; Text[30])
{
Caption = 'File Extension';
ToolTip = 'Specifies the format of the picture file.';
}
field(9; "Modified Date"; Date)
{
Caption = 'Modified Date';
}
field(10; "Modified Time"; Time)
{
Caption = 'Modified Time';
ToolTip = 'Specifies when the picture was last modified.';
}
}
keys
{
key(Key1; "File Name")
{
Clustered = true;
}
}
fieldgroups
{
fieldgroup(Brick; "File Name", "Item No.", "Item Description", Picture)
{
}
}
var
SelectZIPFileMsg: Label 'Select ZIP File';
[Scope('OnPrem')]
procedure LoadZIPFile(ZipFileName: Text; var TotalCount: Integer; ReplaceMode: Boolean): Text
var
Item: Record Item;
FileMgt: Codeunit "File Management";
DataCompression: Codeunit "Data Compression";
TempBlob: Codeunit "Temp Blob";
Window: Dialog;
EntryList: List of [Text];
EntryListKey: Text;
ServerFile: File;
InStream: InStream;
EntryOutStream: OutStream;
EntryInStream: InStream;
ServerFileOpened: Boolean;
Length: Integer;
begin
if ZipFileName <> '' then begin
ServerFileOpened := ServerFile.Open(ZipFileName);
ServerFile.CreateInStream(InStream)
end else
if not UploadIntoStream(SelectZIPFileMsg, '', 'Zip Files|*.zip', ZipFileName, InStream) then
Error('');
DataCompression.OpenZipArchive(InStream, false);
DataCompression.GetEntryList(EntryList);
Window.Open('#1##############################');
TotalCount := 0;
DeleteAll();
foreach EntryListKey in EntryList do begin
Init();
"File Name" := CopyStr(FileMgt.GetFileNameWithoutExtension(EntryListKey), 1, MaxStrLen("File Name"));
"File Extension" := CopyStr(FileMgt.GetExtension(EntryListKey), 1, MaxStrLen("File Extension"));
if StrLen("File Name") <= MaxStrLen(Item."No.") then
if Item.Get("File Name") then begin
TempBlob.CreateOutStream(EntryOutStream);
Length := DataCompression.ExtractEntry(EntryListKey, EntryOutStream);
TempBlob.CreateInStream(EntryInStream);
if not IsNullGuid(Picture.ImportStream(EntryInStream, FileMgt.GetFileName(EntryListKey))) then begin
Window.Update(1, "File Name");
"File Size (KB)" := Length;
TotalCount += 1;
"Item No." := Item."No.";
if Item.Picture.Count > 0 then begin
"Picture Already Exists" := true;
if ReplaceMode then
"Import Status" := "Import Status"::Pending;
end else
"Import Status" := "Import Status"::Pending;
end;
Insert();
end;
end;
DataCompression.CloseZipArchive();
Window.Close();
if ServerFileOpened then
ServerFile.Close();
exit(ZipFileName);
end;
[Scope('OnPrem')]
procedure ImportPictures(ReplaceMode: Boolean)
var
Item: Record Item;
Window: Dialog;
ImageID: Guid;
begin
Window.Open('#1############################################');
if FindSet(true) then
repeat
if "Import Status" = "Import Status"::Pending then
if ("Item No." <> '') and ShouldImport(ReplaceMode, "Picture Already Exists") then begin
Window.Update(1, "Item No.");
Item.Get("Item No.");
ImageID := Picture.MediaId;
if "Picture Already Exists" then
Clear(Item.Picture);
Item.Picture.Insert(ImageID);
Item.Modify();
"Import Status" := "Import Status"::Completed;
Modify();
end;
until Next() = 0;
Window.Close();
end;
local procedure ShouldImport(ReplaceMode: Boolean; PictureExists: Boolean): Boolean
begin
if not ReplaceMode and PictureExists then
exit(false);
exit(true);
end;
[Scope('OnPrem')]
procedure GetAddCount(): Integer
var
TempItemPictureBuffer2: Record "Item Picture Buffer" temporary;
begin
TempItemPictureBuffer2.Copy(Rec, true);
TempItemPictureBuffer2.SetRange("Import Status", TempItemPictureBuffer2."Import Status"::Pending);
TempItemPictureBuffer2.SetRange("Picture Already Exists", false);
exit(TempItemPictureBuffer2.Count);
end;
[Scope('OnPrem')]
procedure GetAddedCount(): Integer
var
TempItemPictureBuffer2: Record "Item Picture Buffer" temporary;
begin
TempItemPictureBuffer2.Copy(Rec, true);
TempItemPictureBuffer2.SetRange("Import Status", TempItemPictureBuffer2."Import Status"::Completed);
TempItemPictureBuffer2.SetRange("Picture Already Exists", false);
exit(TempItemPictureBuffer2.Count);
end;
[Scope('OnPrem')]
procedure GetReplaceCount(): Integer
var
TempItemPictureBuffer2: Record "Item Picture Buffer" temporary;
begin
TempItemPictureBuffer2.Copy(Rec, true);
TempItemPictureBuffer2.SetRange("Import Status", TempItemPictureBuffer2."Import Status"::Pending);
TempItemPictureBuffer2.SetRange("Picture Already Exists", true);
exit(TempItemPictureBuffer2.Count);
end;
[Scope('OnPrem')]
procedure GetReplacedCount(): Integer
var
TempItemPictureBuffer2: Record "Item Picture Buffer" temporary;
begin
TempItemPictureBuffer2.Copy(Rec, true);
TempItemPictureBuffer2.SetRange("Import Status", TempItemPictureBuffer2."Import Status"::Completed);
TempItemPictureBuffer2.SetRange("Picture Already Exists", true);
exit(TempItemPictureBuffer2.Count);
end;
}