Page 7504 Item Attribute Value List
- App
- Base Application
- Namespace
- Microsoft.Inventory.Item.Attribute
- Versions
- 17-28
- Source table
- 7504
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Item/Attribute/ItemAttributeValueList.Page.al194 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.Attribute;
using Microsoft.Inventory.Item;
page 7504 "Item Attribute Value List"
{
Caption = 'Item Attribute Values';
DelayedInsert = true;
LinksAllowed = false;
PageType = ListPart;
SourceTable = "Item Attribute Value Selection";
SourceTableTemporary = true;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field("Attribute Name"; Rec."Attribute Name")
{
ApplicationArea = Basic, Suite;
AssistEdit = false;
Caption = 'Attribute';
TableRelation = "Item Attribute".Name where(Blocked = const(false));
trigger OnValidate()
var
ItemAttributeValue: Record "Item Attribute Value";
ItemAttribute: Record "Item Attribute";
begin
OnBeforeCheckAttributeName(Rec, RelatedRecordCode);
if xRec."Attribute Name" <> '' then begin
xRec.FindItemAttributeByName(ItemAttribute);
DeleteItemAttributeValueMapping(ItemAttribute.ID);
end;
if (Rec.Value <> '') and not Rec.FindAttributeValue(ItemAttributeValue) then
Rec.InsertItemAttributeValue(ItemAttributeValue, Rec);
InsertItemAttributeValueMapping(ItemAttributeValue);
end;
}
field(Value; Rec.Value)
{
ApplicationArea = Basic, Suite;
Caption = 'Value';
TableRelation = if ("Attribute Type" = const(Option)) "Item Attribute Value".Value where("Attribute ID" = field("Attribute ID"),
Blocked = const(false));
trigger OnValidate()
var
ItemAttributeValue: Record "Item Attribute Value";
ItemAttributeValueMapping: Record "Item Attribute Value Mapping";
ItemAttribute: Record "Item Attribute";
begin
if not Rec.FindAttributeValue(ItemAttributeValue) then
Rec.InsertItemAttributeValue(ItemAttributeValue, Rec);
InsertItemAttributeValueMapping(ItemAttributeValue);
ItemAttributeValueMapping.SetRange("Table ID", Database::Item);
ItemAttributeValueMapping.SetRange("No.", RelatedRecordCode);
ItemAttributeValueMapping.SetRange("Item Attribute ID", ItemAttributeValue."Attribute ID");
if ItemAttributeValueMapping.FindFirst() then begin
ItemAttributeValueMapping."Item Attribute Value ID" := ItemAttributeValue.ID;
OnBeforeItemAttributeValueMappingModify(ItemAttributeValueMapping, ItemAttributeValue, RelatedRecordCode);
ItemAttributeValueMapping.Modify();
OnAfterItemAttributeValueMappingModify(ItemAttributeValueMapping, Rec);
end;
ItemAttribute.Get(Rec."Attribute ID");
if ItemAttribute.Type <> ItemAttribute.Type::Option then
if Rec.FindAttributeValueFromRecord(ItemAttributeValue, xRec) then
if not ItemAttributeValue.HasBeenUsed() then
ItemAttributeValue.Delete();
end;
}
field("Unit of Measure"; Rec."Unit of Measure")
{
ApplicationArea = Basic, Suite;
}
}
}
}
actions
{
}
trigger OnDeleteRecord(): Boolean
begin
DeleteItemAttributeValueMapping(Rec."Attribute ID");
end;
trigger OnOpenPage()
begin
CurrPage.Editable(true);
end;
protected var
RelatedRecordCode: Code[20];
procedure LoadAttributes(ItemNo: Code[20])
var
ItemAttributeValueMapping: Record "Item Attribute Value Mapping";
TempItemAttributeValue: Record "Item Attribute Value" temporary;
ItemAttributeValue: Record "Item Attribute Value";
begin
RelatedRecordCode := ItemNo;
ItemAttributeValueMapping.SetRange("Table ID", Database::Item);
ItemAttributeValueMapping.SetRange("No.", ItemNo);
if ItemAttributeValueMapping.FindSet() then
repeat
ItemAttributeValue.Get(ItemAttributeValueMapping."Item Attribute ID", ItemAttributeValueMapping."Item Attribute Value ID");
TempItemAttributeValue.TransferFields(ItemAttributeValue);
OnLoadAttributesOnBeforeTempItemAttributeValueInsert(TempItemAttributeValue, ItemAttributeValueMapping, RelatedRecordCode);
TempItemAttributeValue.Insert();
until ItemAttributeValueMapping.Next() = 0;
Rec.PopulateItemAttributeValueSelection(TempItemAttributeValue, Database::Item, ItemNo);
end;
local procedure DeleteItemAttributeValueMapping(AttributeToDeleteID: Integer)
var
ItemAttributeValueMapping: Record "Item Attribute Value Mapping";
ItemAttribute: Record "Item Attribute";
begin
ItemAttributeValueMapping.SetRange("Table ID", Database::Item);
ItemAttributeValueMapping.SetRange("No.", RelatedRecordCode);
ItemAttributeValueMapping.SetRange("Item Attribute ID", AttributeToDeleteID);
if ItemAttributeValueMapping.FindFirst() then begin
ItemAttributeValueMapping.Delete();
OnAfterItemAttributeValueMappingDelete(AttributeToDeleteID, RelatedRecordCode, Rec);
end;
ItemAttribute.Get(AttributeToDeleteID);
ItemAttribute.RemoveUnusedArbitraryValues();
end;
local procedure InsertItemAttributeValueMapping(ItemAttributeValue: Record "Item Attribute Value")
var
ItemAttributeValueMapping: Record "Item Attribute Value Mapping";
begin
if not ItemAttributeValue.Get(ItemAttributeValue."Attribute ID", ItemAttributeValue.ID) or
ItemAttributeValueMapping.Get(Database::Item, RelatedRecordCode, ItemAttributeValue."Attribute ID") then
exit;
ItemAttributeValueMapping.Reset();
ItemAttributeValueMapping.Init();
ItemAttributeValueMapping."Table ID" := Database::Item;
ItemAttributeValueMapping."No." := RelatedRecordCode;
ItemAttributeValueMapping."Item Attribute ID" := ItemAttributeValue."Attribute ID";
ItemAttributeValueMapping."Item Attribute Value ID" := ItemAttributeValue.ID;
OnBeforeItemAttributeValueMappingInsert(ItemAttributeValueMapping, ItemAttributeValue, Rec);
ItemAttributeValueMapping.Insert();
end;
[IntegrationEvent(false, false)]
local procedure OnAfterItemAttributeValueMappingDelete(AttributeToDeleteID: Integer; RelatedRecordCode: Code[20]; ItemAttributeValueSelection: Record "Item Attribute Value Selection")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterItemAttributeValueMappingModify(var ItemAttributeValueMapping: Record "Item Attribute Value Mapping"; ItemAttributeValueSelection: Record "Item Attribute Value Selection")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeItemAttributeValueMappingInsert(var ItemAttributeValueMapping: Record "Item Attribute Value Mapping"; ItemAttributeValue: Record "Item Attribute Value"; ItemAttributeValueSelection: Record "Item Attribute Value Selection")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeItemAttributeValueMappingModify(var ItemAttributeValueMapping: Record "Item Attribute Value Mapping"; ItemAttributeValue: Record "Item Attribute Value"; RelatedRecordCode: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnLoadAttributesOnBeforeTempItemAttributeValueInsert(var TempItemAttributeValue: Record "Item Attribute Value" temporary; ItemAttributeValueMapping: Record "Item Attribute Value Mapping"; RelatedRecordCode: Code[20]);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckAttributeName(var ItemAttributeValueSelection: Record "Item Attribute Value Selection"; RelatedRecordCode: Code[20]);
begin
end;
}