Table 7334 Whse. Internal Pick Line
- App
- Base Application
- Namespace
- Microsoft.Warehouse.InternalDocument
- Versions
- 17-28
Fields, 25Keys, 7Procedures, 6Events, 4
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Warehouse/InternalDocument/WhseInternalPickLine.Table.al768 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.Warehouse.InternalDocument;
using Microsoft.Foundation.UOM;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Tracking;
using Microsoft.Warehouse.Activity;
using Microsoft.Warehouse.Journal;
using Microsoft.Warehouse.Request;
using Microsoft.Warehouse.Structure;
using Microsoft.Warehouse.Tracking;
using Microsoft.Warehouse.Worksheet;
table 7334 "Whse. Internal Pick Line"
{
Caption = 'Whse. Internal Pick Line';
LookupPageID = "Whse. Internal Pick Lines";
DataClassification = CustomerContent;
fields
{
field(1; "No."; Code[20])
{
Caption = 'No.';
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
Editable = false;
}
field(2; "Line No."; Integer)
{
Caption = 'Line No.';
ToolTip = 'Specifies the number of the line.';
Editable = false;
}
field(10; "Location Code"; Code[10])
{
Caption = 'Location Code';
ToolTip = 'Specifies the code of the location of the internal pick line.';
Editable = false;
TableRelation = Location;
}
field(11; "Shelf No."; Code[10])
{
Caption = 'Shelf No.';
ToolTip = 'Specifies the shelf number of the item for informational use.';
}
field(12; "To Bin Code"; Code[20])
{
Caption = 'To Bin Code';
ToolTip = 'Specifies the code of the bin into which the items should be placed when they are picked.';
TableRelation = if ("To Zone Code" = filter('')) Bin.Code where("Location Code" = field("Location Code"))
else
if ("To Zone Code" = filter(<> '')) Bin.Code where("Location Code" = field("Location Code"),
"Zone Code" = field("To Zone Code"));
trigger OnValidate()
begin
TestReleased();
if xRec."To Bin Code" <> "To Bin Code" then
if "To Bin Code" <> '' then begin
GetLocation("Location Code");
Location.TestField("Bin Mandatory");
if Location."Directed Put-away and Pick" then begin
if "To Bin Code" = Location."Adjustment Bin Code" then
FieldError(
"To Bin Code",
StrSubstNo(
Text004, Location.FieldCaption("Adjustment Bin Code"),
Location.TableCaption()));
CheckBin(true);
end;
end;
end;
}
field(13; "To Zone Code"; Code[10])
{
Caption = 'To Zone Code';
ToolTip = 'Specifies the To Zone Code of the zone where items should be placed once they are picked.';
TableRelation = Zone.Code where("Location Code" = field("Location Code"));
trigger OnValidate()
begin
TestReleased();
if xRec."To Zone Code" <> "To Zone Code" then begin
if "To Zone Code" <> '' then begin
GetLocation("Location Code");
Location.TestField("Directed Put-away and Pick");
end;
"To Bin Code" := '';
end;
end;
}
field(14; "Item No."; Code[20])
{
Caption = 'Item No.';
ToolTip = 'Specifies the number of the item that should be picked.';
TableRelation = Item;
trigger OnValidate()
begin
if "Item No." <> xRec."Item No." then
"Variant Code" := '';
GetInternalPickHeader("No.");
"Location Code" := WhseInternalPickHeader."Location Code";
if WhseInternalPickHeader."To Zone Code" <> '' then
"To Zone Code" := WhseInternalPickHeader."To Zone Code";
if WhseInternalPickHeader."To Bin Code" <> '' then
"To Bin Code" := WhseInternalPickHeader."To Bin Code";
InitItemFields();
end;
}
field(15; Quantity; Decimal)
{
AutoFormatType = 0;
Caption = 'Quantity';
ToolTip = 'Specifies the quantity that should be picked.';
DecimalPlaces = 0 : 5;
MinValue = 0;
trigger OnValidate()
var
DocStatus: Option;
begin
TestReleased();
CalcFields("Pick Qty.");
if Quantity < "Qty. Picked" + "Pick Qty." then
FieldError(Quantity, StrSubstNo(Text001, "Qty. Picked" + "Pick Qty."));
Validate("Qty. Outstanding", (Quantity - "Qty. Picked"));
"Qty. (Base)" :=
UOMMgt.CalcBaseQty("Item No.", "Variant Code", "Unit of Measure Code", Quantity, "Qty. per Unit of Measure");
CheckBin(true);
Status := CalcStatusPickLine();
if Status <> xRec.Status then begin
GetInternalPickHeader("No.");
DocStatus := WhseInternalPickHeader.GetDocumentStatus(0);
if DocStatus <> WhseInternalPickHeader."Document Status" then begin
WhseInternalPickHeader.Validate("Document Status", DocStatus);
WhseInternalPickHeader.Modify();
end;
end;
end;
}
field(16; "Qty. (Base)"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. (Base)';
DecimalPlaces = 0 : 5;
Editable = false;
}
field(19; "Qty. Outstanding"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. Outstanding';
ToolTip = 'Specifies the quantity that still needs to be handled.';
DecimalPlaces = 0 : 5;
Editable = false;
trigger OnValidate()
var
WMSMgt: Codeunit "WMS Management";
begin
"Qty. Outstanding (Base)" :=
UOMMgt.CalcBaseQty("Item No.", "Variant Code", "Unit of Measure Code", "Qty. Outstanding", "Qty. per Unit of Measure");
WMSMgt.CalcCubageAndWeight(
"Item No.", "Unit of Measure Code", "Qty. Outstanding", Cubage, Weight);
end;
}
field(20; "Qty. Outstanding (Base)"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. Outstanding (Base)';
DecimalPlaces = 0 : 5;
Editable = false;
}
field(23; "Qty. Picked"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. Picked';
ToolTip = 'Specifies the quantity of the line that is registered as picked.';
DecimalPlaces = 0 : 5;
Editable = false;
FieldClass = Normal;
trigger OnValidate()
begin
"Qty. Picked (Base)" :=
UOMMgt.CalcBaseQty("Item No.", "Variant Code", "Unit of Measure Code", "Qty. Picked", "Qty. per Unit of Measure");
end;
}
field(24; "Qty. Picked (Base)"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. Picked (Base)';
DecimalPlaces = 0 : 5;
Editable = false;
}
field(27; "Pick Qty."; Decimal)
{
AutoFormatType = 0;
CalcFormula = sum("Warehouse Activity Line"."Qty. Outstanding" where("Activity Type" = const(Pick),
"Whse. Document Type" = const("Internal Pick"),
"Whse. Document No." = field("No."),
"Whse. Document Line No." = field("Line No."),
"Action Type" = filter(" " | Place),
"Unit of Measure Code" = field("Unit of Measure Code"),
"Original Breakbulk" = const(false),
"Breakbulk No." = const(0)));
Caption = 'Pick Qty.';
ToolTip = 'Specifies the quantity of the item in pick instructions that are assigned to be picked for the line.';
DecimalPlaces = 0 : 5;
Editable = false;
FieldClass = FlowField;
}
field(28; "Pick Qty. (Base)"; Decimal)
{
AutoFormatType = 0;
CalcFormula = sum("Warehouse Activity Line"."Qty. Outstanding (Base)" where("Activity Type" = const(Pick),
"Whse. Document Type" = const("Internal Pick"),
"Whse. Document No." = field("No."),
"Whse. Document Line No." = field("Line No."),
"Action Type" = filter(" " | Place),
"Original Breakbulk" = const(false),
"Breakbulk No." = const(0)));
Caption = 'Pick Qty. (Base)';
DecimalPlaces = 0 : 5;
Editable = false;
FieldClass = FlowField;
}
field(29; "Unit of Measure Code"; Code[10])
{
Caption = 'Unit of Measure Code';
ToolTip = 'Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted.';
NotBlank = true;
TableRelation = "Item Unit of Measure".Code where("Item No." = field("Item No."));
trigger OnValidate()
begin
if "Item No." <> '' then begin
GetItemUnitOfMeasure();
"Qty. per Unit of Measure" := ItemUnitofMeasure."Qty. per Unit of Measure";
end else
"Qty. per Unit of Measure" := 1;
Validate(Quantity);
Validate("Qty. Outstanding");
end;
}
field(30; "Qty. per Unit of Measure"; Decimal)
{
AutoFormatType = 0;
Caption = 'Qty. per Unit of Measure';
ToolTip = 'Specifies the number of base units of measure, that are in the unit of measure, specified for the item on the line.';
DecimalPlaces = 0 : 5;
Editable = false;
InitValue = 1;
}
field(31; "Variant Code"; Code[10])
{
Caption = 'Variant Code';
ToolTip = 'Specifies the variant of the item on the line.';
TableRelation = "Item Variant".Code where("Item No." = field("Item No."));
trigger OnValidate()
var
ItemVariant: Record "Item Variant";
begin
if Rec."Variant Code" = '' then
Validate("Item No.")
else begin
ItemVariant.Get("Item No.", "Variant Code");
Description := ItemVariant.Description;
end;
end;
}
field(32; Description; Text[100])
{
Caption = 'Description';
ToolTip = 'Specifies the description of the item in the line.';
}
field(33; "Description 2"; Text[50])
{
Caption = 'Description 2';
ToolTip = 'Specifies a second description of the item on the line.';
}
field(34; Status; Option)
{
Caption = 'Status';
ToolTip = 'Specifies if the status is Blank, Partially Picked, or Completely Picked.';
Editable = false;
OptionCaption = ' ,Partially Picked,Completely Picked';
OptionMembers = " ","Partially Picked","Completely Picked";
}
field(35; "Sorting Sequence No."; Integer)
{
Caption = 'Sorting Sequence No.';
Editable = false;
}
field(36; "Due Date"; Date)
{
Caption = 'Due Date';
ToolTip = 'Specifies the date when the warehouse activity must be completed.';
}
field(37; Cubage; Decimal)
{
AutoFormatType = 0;
Caption = 'Cubage';
DecimalPlaces = 0 : 5;
}
field(38; Weight; Decimal)
{
AutoFormatType = 0;
Caption = 'Weight';
DecimalPlaces = 0 : 5;
}
}
keys
{
key(Key1; "No.", "Line No.")
{
Clustered = true;
}
key(Key2; "No.", "Sorting Sequence No.")
{
}
key(Key3; "No.", "Item No.")
{
MaintainSQLIndex = false;
}
key(Key4; "No.", "Shelf No.")
{
MaintainSQLIndex = false;
}
key(Key5; "No.", "To Bin Code")
{
MaintainSQLIndex = false;
}
key(Key6; "No.", "Due Date")
{
MaintainSQLIndex = false;
}
key(Key7; "To Bin Code", "Location Code")
{
IncludedFields = "Qty. Outstanding", Cubage, Weight;
}
}
fieldgroups
{
}
trigger OnDelete()
var
ItemTrackingMgt: Codeunit "Item Tracking Management";
DocStatus: Option;
begin
TestReleased();
if ("Qty. Picked" > 0) and (Quantity > "Qty. Picked") then
if not HideValidationDialog then
if not Confirm(
StrSubstNo(
Text002,
FieldCaption("Qty. Picked"), "Qty. Picked",
FieldCaption(Quantity), Quantity, TableCaption), false)
then
Error(Text003);
ItemTrackingMgt.DeleteWhseItemTrkgLines(
Database::"Whse. Internal Pick Line", 0, "No.", '', 0, "Line No.", "Location Code", true);
DocStatus :=
WhseInternalPickHeader.GetDocumentStatus("Line No.");
if DocStatus <> WhseInternalPickHeader."Document Status" then begin
WhseInternalPickHeader.Validate("Document Status", DocStatus);
WhseInternalPickHeader.Modify();
end;
end;
trigger OnInsert()
begin
"Sorting Sequence No." := GetSortSeqNo();
end;
trigger OnModify()
begin
"Sorting Sequence No." := GetSortSeqNo();
end;
trigger OnRename()
begin
Error(Text000, TableCaption);
end;
var
Location: Record Location;
Item: Record Item;
ItemUnitofMeasure: Record "Item Unit of Measure";
WhseInternalPickHeader: Record "Whse. Internal Pick Header";
UOMMgt: Codeunit "Unit of Measure Management";
#pragma warning disable AA0074
#pragma warning disable AA0470
Text000: Label 'You cannot rename a %1.';
Text001: Label 'must not be less than %1 units';
Text002: Label '%1 = %2 is less than the %3 = %4.\Do you really want to delete the %5?';
#pragma warning restore AA0470
Text003: Label 'Cancelled.';
#pragma warning disable AA0470
Text004: Label 'must not be the %1 of the %2';
#pragma warning restore AA0470
#pragma warning restore AA0074
LastLineNo: Integer;
#pragma warning disable AA0074
Text005: Label 'Nothing to handle.';
#pragma warning restore AA0074
protected var
HideValidationDialog: Boolean;
procedure SetUpNewLine(LastWhseInternalPickLine: Record "Whse. Internal Pick Line")
var
WhseInternalPickLine: Record "Whse. Internal Pick Line";
begin
if GetInternalPickHeader("No.") then begin
WhseInternalPickLine.SetRange("No.", WhseInternalPickHeader."No.");
if not WhseInternalPickLine.IsEmpty() then
LastLineNo := LastWhseInternalPickLine."Line No."
else
LastLineNo := 0;
"Line No." := GetNextLineNo();
"To Zone Code" := WhseInternalPickHeader."To Zone Code";
"To Bin Code" := WhseInternalPickHeader."To Bin Code";
"Due Date" := WhseInternalPickHeader."Due Date";
end;
"Location Code" := WhseInternalPickHeader."Location Code";
end;
local procedure GetLocation(LocationCode: Code[10])
begin
if LocationCode = '' then
Clear(Location)
else
if Location.Code <> LocationCode then
Location.Get(LocationCode);
end;
local procedure TestReleased()
begin
TestField("No.");
GetInternalPickHeader("No.");
WhseInternalPickHeader.TestField(Status, WhseInternalPickHeader.Status::Open);
end;
procedure CalcStatusPickLine(): Integer
begin
if (Quantity <> 0) and (Quantity = "Qty. Picked") then
exit(Status::"Completely Picked");
if "Qty. Picked" > 0 then
exit(Status::"Partially Picked");
exit(Status::" ");
end;
procedure SetHideValidationDialog(NewHideValidationDialog: Boolean)
begin
HideValidationDialog := NewHideValidationDialog;
end;
local procedure GetItem()
begin
if Item."No." <> "Item No." then
Item.Get("Item No.");
end;
local procedure GetItemUnitOfMeasure()
begin
GetItem();
Item.TestField("No.");
if (Item."No." <> ItemUnitofMeasure."Item No.") or
("Unit of Measure Code" <> ItemUnitofMeasure.Code)
then
if not ItemUnitofMeasure.Get(Item."No.", "Unit of Measure Code") then
ItemUnitofMeasure.Get(Item."No.", Item."Base Unit of Measure");
end;
local procedure GetInternalPickHeader(InternalPickNo: Code[20]): Boolean
begin
if not WhseInternalPickHeader.Get(InternalPickNo) then
exit(false);
exit(true);
end;
local procedure InitItemFields()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeInitItemFields(Rec, IsHandled);
if IsHandled then
exit;
if "Item No." <> '' then begin
GetItemUnitOfMeasure();
Description := Item.Description;
"Description 2" := Item."Description 2";
"Shelf No." := Item."Shelf No.";
Validate("Unit of Measure Code", ItemUnitofMeasure.Code);
end else begin
Description := '';
"Description 2" := '';
"Variant Code" := '';
"Shelf No." := '';
Validate("Unit of Measure Code", '');
end;
end;
procedure CreatePickDoc(var WhseInternalPickLine: Record "Whse. Internal Pick Line"; WhseInternalPickHeader2: Record "Whse. Internal Pick Header")
begin
WhseInternalPickHeader2.CheckPickRequired(WhseInternalPickHeader2."Location Code");
WhseInternalPickHeader2.TestField(Status, WhseInternalPickHeader2.Status::Released);
WhseInternalPickLine.SetFilter(Quantity, '>0');
WhseInternalPickLine.SetFilter(
Status, '<>%1', WhseInternalPickLine.Status::"Completely Picked");
if WhseInternalPickLine.Find('-') then
RunCreatePickFromWhseSource(WhseInternalPickLine, WhseInternalPickHeader2)
else
if not HideValidationDialog then
Message(Text005);
end;
local procedure RunCreatePickFromWhseSource(var WhseInternalPickLine: Record "Whse. Internal Pick Line"; WhseInternalPickHeader2: Record "Whse. Internal Pick Header")
var
CreatePickFromWhseSource: Report "Whse.-Source - Create Document";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeRunCreatePickFromWhseSource(WhseInternalPickLine, WhseInternalPickHeader2, HideValidationDialog, IsHandled);
if IsHandled then
exit;
CreatePickFromWhseSource.SetWhseInternalPickLine(
WhseInternalPickLine, WhseInternalPickHeader2."Assigned User ID");
CreatePickFromWhseSource.SetHideValidationDialog(HideValidationDialog);
CreatePickFromWhseSource.UseRequestPage(not HideValidationDialog);
CreatePickFromWhseSource.RunModal();
CreatePickFromWhseSource.GetResultMessage(2);
end;
procedure OpenItemTrackingLines()
var
WhseWorksheetLine: Record "Whse. Worksheet Line";
WhseItemTrackingLines: Page "Whse. Item Tracking Lines";
begin
TestField("Item No.");
TestField("Qty. (Base)");
WhseWorksheetLine.Init();
WhseWorksheetLine."Whse. Document Type" :=
WhseWorksheetLine."Whse. Document Type"::"Internal Pick";
WhseWorksheetLine."Whse. Document No." := "No.";
WhseWorksheetLine."Whse. Document Line No." := "Line No.";
WhseWorksheetLine."Location Code" := "Location Code";
WhseWorksheetLine."Item No." := "Item No.";
WhseWorksheetLine."Qty. (Base)" := "Qty. (Base)";
WhseWorksheetLine."Qty. to Handle (Base)" :=
"Qty. (Base)" - "Qty. Picked (Base)" - "Pick Qty. (Base)";
OnOpenItemTrackingLinesOnBeforeSetSource(Rec, WhseWorksheetLine);
WhseItemTrackingLines.SetSource(WhseWorksheetLine, Database::"Whse. Internal Pick Line");
WhseItemTrackingLines.RunModal();
Clear(WhseItemTrackingLines);
end;
procedure CheckBin(CalcDeduction: Boolean)
var
Bin: Record Bin;
BinContent: Record "Bin Content";
WhseInternalPickLine: Record "Whse. Internal Pick Line";
begin
if "To Bin Code" <> '' then begin
GetLocation("Location Code");
if Location."Bin Capacity Policy" = Location."Bin Capacity Policy"::"Never Check Capacity" then begin
if Location."Check Whse. Class" then
if BinContent.Get("Location Code", "To Bin Code", "Item No.", "Variant Code", "Unit of Measure Code") then
BinContent.CheckWhseClass(false)
else begin
Bin.Get("Location Code", "To Bin Code");
Bin.CheckWhseClass("Item No.", false);
end;
exit;
end;
if (Location."Bin Capacity Policy" in
[Location."Bin Capacity Policy"::"Allow More Than Max. Capacity",
Location."Bin Capacity Policy"::"Prohibit More Than Max. Cap."]) and
CalcDeduction
then begin
WhseInternalPickLine.SetCurrentKey("To Bin Code", "Location Code");
WhseInternalPickLine.SetRange("To Bin Code", "To Bin Code");
WhseInternalPickLine.SetRange("Location Code", "Location Code");
WhseInternalPickLine.SetRange("No.", "No.");
WhseInternalPickLine.SetRange("Line No.", "Line No.");
WhseInternalPickLine.CalcSums("Qty. Outstanding", Cubage, Weight);
end;
if BinContent.Get(
"Location Code", "To Bin Code", "Item No.", "Variant Code", "Unit of Measure Code")
then begin
if Location."Directed Put-away and Pick" then
BinContent.TestField("Bin Type Code");
BinContent.CheckIncreaseBinContent(
"Qty. Outstanding", WhseInternalPickLine.Quantity,
WhseInternalPickLine.Cubage, WhseInternalPickLine.Weight,
Cubage, Weight, false, false);
"To Zone Code" := BinContent."Zone Code";
end else begin
Bin.Get("Location Code", "To Bin Code");
CheckIncreaseBin(Bin, WhseInternalPickLine);
if Location."Directed Put-away and Pick" then
Bin.TestField("Bin Type Code");
"To Zone Code" := Bin."Zone Code";
end;
end;
end;
local procedure CheckIncreaseBin(Bin: Record Bin; WhseInternalPickLine: Record "Whse. Internal Pick Line")
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckIncreaseBin(Rec, Bin, WhseInternalPickLine, IsHandled);
if IsHandled then
exit;
Bin.CheckIncreaseBin(
"To Bin Code", "Item No.", "Qty. Outstanding",
WhseInternalPickLine.Cubage, WhseInternalPickLine.Weight,
Cubage, Weight, false, false);
end;
local procedure GetNextLineNo(): Integer
var
WhseInternalPickLine: Record "Whse. Internal Pick Line";
HigherLineNo: Integer;
LowerLineNo: Integer;
begin
WhseInternalPickLine.SetRange("No.", WhseInternalPickHeader."No.");
if WhseInternalPickHeader."Sorting Method" <> WhseInternalPickHeader."Sorting Method"::"None" then
exit(GetLastLineNo() + 10000);
WhseInternalPickLine."No." := WhseInternalPickHeader."No.";
WhseInternalPickLine."Line No." := LastLineNo;
if WhseInternalPickLine.Find('<') then
LowerLineNo := WhseInternalPickLine."Line No."
else
if WhseInternalPickLine.Find('>') then
exit(LastLineNo div 2)
else
exit(LastLineNo + 10000);
WhseInternalPickLine."No." := WhseInternalPickHeader."No.";
WhseInternalPickLine."Line No." := LastLineNo;
if WhseInternalPickLine.Find('>') then
HigherLineNo := LastLineNo
else
exit(LastLineNo + 10000);
exit(LowerLineNo + (HigherLineNo - LowerLineNo) div 2);
end;
local procedure GetLastLineNo(): Integer
var
WhseInternalPickLine: Record "Whse. Internal Pick Line";
begin
WhseInternalPickLine.SetRange("No.", WhseInternalPickHeader."No.");
if WhseInternalPickLine.FindLast() then
exit(WhseInternalPickLine."Line No.");
exit(0);
end;
local procedure GetSortSeqNo(): Integer
var
WhseInternalPickLine: Record "Whse. Internal Pick Line";
HigherSeqNo: Integer;
LowerSeqNo: Integer;
LastSeqNo: Integer;
begin
GetInternalPickHeader("No.");
WhseInternalPickLine.SetRange("No.", "No.");
case WhseInternalPickHeader."Sorting Method" of
WhseInternalPickHeader."Sorting Method"::"None":
WhseInternalPickLine.SetCurrentKey("No.", "Line No.");
WhseInternalPickHeader."Sorting Method"::Item:
WhseInternalPickLine.SetCurrentKey("No.", "Item No.");
WhseInternalPickHeader."Sorting Method"::"Shelf or Bin":
begin
GetLocation("Location Code");
if Location."Bin Mandatory" then
WhseInternalPickLine.SetCurrentKey("No.", "To Bin Code")
else
WhseInternalPickLine.SetCurrentKey("No.", "Shelf No.");
end;
WhseInternalPickHeader."Sorting Method"::"Due Date":
WhseInternalPickLine.SetCurrentKey("No.", "Due Date");
else
exit("Line No.")
end;
WhseInternalPickLine := Rec;
LastSeqNo := GetLastSeqNo(WhseInternalPickLine);
if WhseInternalPickLine.Find('<') then
LowerSeqNo := WhseInternalPickLine."Sorting Sequence No."
else
if WhseInternalPickLine.Find('>') then
exit(WhseInternalPickLine."Sorting Sequence No." div 2)
else
LowerSeqNo := 10000;
WhseInternalPickLine := Rec;
if WhseInternalPickLine.Find('>') then
HigherSeqNo := WhseInternalPickLine."Sorting Sequence No."
else
if WhseInternalPickLine.Find('<') then
exit(LastSeqNo + 10000)
else
HigherSeqNo := LastSeqNo;
exit(LowerSeqNo + (HigherSeqNo - LowerSeqNo) div 2);
end;
local procedure GetLastSeqNo(WhseInternalPickLine: Record "Whse. Internal Pick Line"): Integer
begin
WhseInternalPickLine.SetRecFilter();
WhseInternalPickLine.SetRange("Line No.");
WhseInternalPickLine.SetCurrentKey("No.", "Sorting Sequence No.");
if WhseInternalPickLine.FindLast() then
exit(WhseInternalPickLine."Sorting Sequence No.");
exit(0);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckIncreaseBin(var RecWhseInternalPickLine: Record "Whse. Internal Pick Line"; var Bin: Record Bin; WhseInternalPickLine: Record "Whse. Internal Pick Line"; var IsHandled: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeInitItemFields(var RecWhseInternalPickLine: Record "Whse. Internal Pick Line"; var IsHandled: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeRunCreatePickFromWhseSource(var WhseInternalPickLine: Record "Whse. Internal Pick Line"; var WhseInternalPickHeader2: Record "Whse. Internal Pick Header"; HideValidationDialog: Boolean; var IsHandled: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnOpenItemTrackingLinesOnBeforeSetSource(var WhseInternalPickLine: Record "Whse. Internal Pick Line"; var WhseWorksheetLine: Record "Whse. Worksheet Line");
begin
end;
}