I'm trying to make a system where the "LineReferenceNumber" in the Incoming Lot Table is passed to the "Incoming Lot Lines Page", and from there, that number is used to set the "LotReference" field. I want to basically connect all the new lines I'm making to its proper incoming lot page and I'm not sure how to.
table 50101 "Incoming Lot Line Tables"
{
Caption = 'Incoming Lot Line Tables';
DataClassification = ToBeClassified;
fields
{
field(1; "LineID"; Code[38])
{
Caption = 'LineID';
}
field(2; "LotReference"; Code[38])
{
Caption = 'LotReference';
}
field(3; "Metal Code"; Enum "MetalTypes")
{
Caption = 'Metal Code';
}
field(4; Weight; Decimal)
{
Caption = 'Weight';
trigger OnValidate()
var
WeightConversion: Codeunit "Weight Conversion";
begin
Rec."OZ T C" := WeightConversion.ConvertToOZ(Rec.Weight, Rec."Weight Standard");
end;
}
field(5; "Weight Standard"; Enum "Weight Standards")
{
Caption = 'Weight Standard';
trigger OnValidate()
var
WeightConversion: Codeunit "Weight Conversion";
begin
Rec."OZ T C" := WeightConversion.ConvertToOZ(Rec.Weight, Rec."Weight Standard");
end;
}
field(6; "OZ T C"; Decimal)
{
DecimalPlaces = 0 : 5;
Editable = false;
}
field(7; "Live Price"; Decimal)
{
Caption = 'Live Price In USD';
}
}
keys
{
key(PK; "LineID")
{
Clustered = true;
}
}
trigger OnInsert()
var
IDGeneration: Codeunit "ID Generation";
begin
if "LineID" = '' then
"LineID" := IDGeneration.GenerateUniqueID();
end;
}
table 50100 "Incoming Lot Table"
{
Caption = 'Incoming Lot Table';
DataClassification = ToBeClassified;
fields
{
field(1; "Lot No."; Code[20])
{
Caption = 'Lot No.';
}
field(2; "Client Name"; Text[45])
{
Caption = 'Client Name';
}
field(3; "Client Phone No."; Text[10])
{
Caption = 'Client Phone No.';
}
field(4; "Sent To Lab"; Boolean)
{
Caption = 'Sent To Lab';
}
field(5; "OZ T"; Decimal)
{
}
field(6; "LineReferenceNumber"; Code[38])
{
}
}
keys
{
key(PK; "Lot No.")
{
Clustered = true;
}
}
trigger OnInsert()
var
IDGeneration: Codeunit "ID Generation";
begin
if "LineReferenceNumber" = '' then
"LineReferenceNumber" := IDGeneration.GenerateUniqueID()
end;
}
page 50102 "Incoming Lot"
{
PageType = Document;
SourceTable = "Incoming Lot Table";
ApplicationArea = All;
Caption = 'Incoming Lot';
UsageCategory = Documents;
layout
{
area(Content)
{
group(General)
{
Caption = 'General';
field("Lot No."; Rec."Lot No.")
{
ToolTip = 'Specifies the value of the Lot No. field.', Comment = '%';
Editable = true;
NotBlank = true;
}
field("Client Name"; Rec."Client Name")
{
ToolTip = 'Specifies the value of the Client Name field.', Comment = '%';
Editable = true;
NotBlank = true;
}
field("Client Phone No."; Rec."Client Phone No.")
{
ToolTip = 'Specifies the value of the Client Phone No. field.', Comment = '%';
Editable = true;
}
field("Sent To Lab"; Rec."Sent To Lab")
{
ToolTip = 'Specifies the value of the Sent To Lab field.', Comment = '%';
Editable = true;
}
field(SystemCreatedAt; Rec.SystemCreatedAt)
{
ToolTip = 'Specifies the value of the SystemCreatedAt field.', Comment = '%';
Editable = true;
}
}
group("Lot Information")
{
part(Lines; "Incoming Lot Lines")
{
ApplicationArea = All;
SubPageLink = "LotReference" = FIELD("LineReferenceNumber");
}
}
}
}
actions
{
area(Processing)
{
action("Delete Data")
{
Caption = 'Delete All Lots';
ApplicationArea = All;
trigger OnAction()
begin
DeleteAllLots();
end;
}
action("Upload Lot")
{
Caption = 'Upload Lot';
ApplicationArea = All;
trigger OnAction()
begin
UploadLot();
end;
}
}
}
procedure DeleteAllLots()
var
IncomingLotRec: Record "Incoming Lot Table";
begin
IncomingLotRec.DeleteAll();
Message('All lots have been deleted.');
end;
procedure UploadLot()
var
IncomingLotRec: Record "Incoming Lot Table";
begin
IncomingLotRec.Init();
IncomingLotRec."Client Name" := Rec."Client Name";
IncomingLotRec."Client Phone No." := Rec."Client Phone No.";
IncomingLotRec."Sent To Lab" := Rec."Sent To Lab";
IncomingLotRec."LineReferenceNumber" := Rec."LineReferenceNumber";
IncomingLotRec.Insert(false, true);
end;
}
page 50124 "Incoming Lot Lines"
{
PageType = ListPart;
SourceTable = "Incoming Lot Line Tables";
ApplicationArea = All;
Editable = true;
layout
{
area(Content)
{
repeater(Group)
{
field("Metal Code"; Rec."Metal Code")
{
ApplicationArea = All;
Editable = true;
}
field("Weight Standard"; Rec."Weight Standard")
{
ApplicationArea = All;
}
field("Weight"; Rec."Weight")
{
ApplicationArea = All;
}
field("OZ T C"; Rec."OZ T C")
{
ApplicationArea = All;
DecimalPlaces = 0 : 5;
Editable = false;
}
}
}
}
trigger OnOpenPage()
begin
Rec.SetFilter("Metal Code", 'PLT');
end;
}
You already set the SubPageLink
on the Lines
page part:
SubPageLink = "LotReference" = FIELD("LineReferenceNumber");
This filter is stored in a FilterGroup
in which the filters are not visible by default. However you can change the currently selected FilterGroup
to be able to work with the filters set by SubPageLink
.
On your subpage (Incoming Lot Lines) you then retrieve the value of the filter of LotReference:
trigger OnOpenPage()
var
LotReferenceFilter: Text;
begin
Rec.FilterGroup(4);
LotReferenceFilter := Rec.GetFilter(LotReference);
Rec.FilterGroup(0);
end;
Two things to note:
OnOpenPage
to get the desired result.FilterGroup
back to 0!You can read more about FilterGroups in the documentation.