Table 5740 Transfer Header, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Transfer/TransferHeader.Table.al1973 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.Transfer;
using Microsoft.Finance.Dimension;
using Microsoft.Foundation.Address;
using Microsoft.Foundation.AuditCodes;
using Microsoft.Foundation.NoSeries;
using Microsoft.Foundation.Shipping;
using Microsoft.Inventory.Comment;
using Microsoft.Inventory.Intrastat;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Ledger;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Setup;
using Microsoft.Inventory.Tracking;
using Microsoft.Purchases.Document;
using Microsoft.Purchases.History;
using Microsoft.Warehouse.Request;
using System.Security.User;
using System.Text;
using System.Utilities;
table 5740 "Transfer Header"
{
Caption = 'Transfer Header';
DataCaptionFields = "No.";
LookupPageID = "Transfer Orders";
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.';
trigger OnValidate()
var
NoSeries: Codeunit "No. Series";
begin
if "No." <> xRec."No." then begin
GetInventorySetup();
NoSeries.TestManual(GetNoSeriesCode());
"No. Series" := '';
end;
end;
}
field(2; "Transfer-from Code"; Code[10])
{
Caption = 'Transfer-from Code';
ToolTip = 'Specifies the code of the location that items are transferred from.';
TableRelation = Location where("Use As In-Transit" = const(false));
trigger OnValidate()
var
Location: Record Location;
Confirmed: Boolean;
IsHandled: Boolean;
InTransitCode: Code[10];
ShippingAgentCode: Code[10];
ShippingAgentServiceCode: Code[10];
begin
TestStatusOpen();
IsHandled := false;
OnBeforeValidateTransferFromCode(Rec, xRec, IsHandled, HideValidationDialog);
if IsHandled then
exit;
if "Transfer-from Code" <> '' then
CheckTransferFromAndToCodesNotTheSame();
if xRec."Transfer-from Code" <> "Transfer-from Code" then begin
if HideValidationDialog or
(xRec."Transfer-from Code" = '')
then
Confirmed := true
else
Confirmed := Confirm(Text002, false, FieldCaption("Transfer-from Code"));
if Confirmed then begin
if Location.Get("Transfer-from Code") then begin
InitFromTransferFromLocation(Location);
"Outbound Whse. Handling Time" := Location."Outbound Whse. Handling Time";
TransferRoute.GetTransferRoute(
"Transfer-from Code", "Transfer-to Code", InTransitCode,
ShippingAgentCode, ShippingAgentServiceCode, "Direct Transfer", "Direct Transfer Posting");
if not "Direct Transfer" then begin
"In-Transit Code" := InTransitCode;
"Shipping Agent Code" := ShippingAgentCode;
"Shipping Agent Service Code" := ShippingAgentServiceCode;
OnAfterGetTransferRoute(Rec, TransferRoute);
TransferRoute.GetShippingTime(
"Transfer-from Code", "Transfer-to Code",
"Shipping Agent Code", "Shipping Agent Service Code",
"Shipping Time");
CalcReceiptDate();
end;
TransLine.LockTable();
TransLine.SetRange("Document No.", "No.");
end;
OnValidateTransferFromCodeOnBeforeUpdateTransLines(Rec);
UpdateTransLines(Rec, FieldNo("Transfer-from Code"));
end else
"Transfer-from Code" := xRec."Transfer-from Code";
end;
CreateDimFromDefaultDim(FieldNo("Transfer-from Code"));
end;
}
field(3; "Transfer-from Name"; Text[100])
{
Caption = 'Transfer-from Name';
ToolTip = 'Specifies the name of the sender at the location that the items are transferred from.';
}
field(4; "Transfer-from Name 2"; Text[50])
{
Caption = 'Transfer-from Name 2';
ToolTip = 'Specifies an additional part of the name of the sender at the location that the items are transferred from.';
}
field(5; "Transfer-from Address"; Text[100])
{
Caption = 'Transfer-from Address';
ToolTip = 'Specifies the address of the location that the items are transferred from.';
}
field(6; "Transfer-from Address 2"; Text[50])
{
Caption = 'Transfer-from Address 2';
ToolTip = 'Specifies an additional part of the address of the location that items are transferred from.';
}
field(7; "Transfer-from Post Code"; Code[20])
{
Caption = 'Transfer-from Post Code';
ToolTip = 'Specifies the postal code of the location that the items are transferred from.';
TableRelation = if ("Trsf.-from Country/Region Code" = const('')) "Post Code"
else
if ("Trsf.-from Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Trsf.-from Country/Region Code"));
ValidateTableRelation = false;
trigger OnLookup()
begin
PostCode.LookupPostCode(
"Transfer-from City", "Transfer-from Post Code", "Transfer-from County", "Trsf.-from Country/Region Code");
end;
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateTransferFromPostCode(Rec, PostCode, CurrFieldNo, IsHandled);
if not IsHandled then
PostCode.ValidatePostCode(
"Transfer-from City", "Transfer-from Post Code",
"Transfer-from County", "Trsf.-from Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
end;
}
field(8; "Transfer-from City"; Text[30])
{
Caption = 'Transfer-from City';
ToolTip = 'Specifies the city of the location that the items are transferred from.';
TableRelation = if ("Trsf.-from Country/Region Code" = const('')) "Post Code".City
else
if ("Trsf.-from Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Trsf.-from Country/Region Code"));
ValidateTableRelation = false;
trigger OnLookup()
begin
PostCode.LookupPostCode(
"Transfer-from City", "Transfer-from Post Code", "Transfer-from County", "Trsf.-from Country/Region Code");
end;
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateTransferFromCity(Rec, PostCode, CurrFieldNo, IsHandled);
if not IsHandled then
PostCode.ValidateCity(
"Transfer-from City", "Transfer-from Post Code",
"Transfer-from County", "Trsf.-from Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
end;
}
field(9; "Transfer-from County"; Text[30])
{
CaptionClass = '5,7,' + "Trsf.-from Country/Region Code";
Caption = 'Transfer-from County';
}
field(10; "Trsf.-from Country/Region Code"; Code[10])
{
Caption = 'Trsf.-from Country/Region Code';
TableRelation = "Country/Region";
trigger OnValidate()
begin
PostCode.CheckClearPostCodeCityCounty(
"Transfer-from City", "Transfer-from Post Code", "Transfer-from County",
"Trsf.-from Country/Region Code", xRec."Trsf.-from Country/Region Code");
end;
}
field(11; "Transfer-to Code"; Code[10])
{
Caption = 'Transfer-to Code';
ToolTip = 'Specifies the code of the location that the items are transferred to.';
TableRelation = Location where("Use As In-Transit" = const(false));
trigger OnValidate()
var
Location: Record Location;
Confirmed: Boolean;
IsHandled: Boolean;
InTransitCode: Code[10];
ShippingAgentCode: Code[10];
ShippingAgentServiceCode: Code[10];
begin
TestStatusOpen();
IsHandled := false;
OnBeforeValidateTransferToCode(Rec, xRec, IsHandled, HideValidationDialog);
if IsHandled then
exit;
if "Transfer-to Code" <> '' then
CheckTransferFromAndToCodesNotTheSame();
if "Direct Transfer" then
VerifyNoInboundWhseHandlingOnLocation("Transfer-to Code");
if xRec."Transfer-to Code" <> "Transfer-to Code" then begin
if HideValidationDialog or (xRec."Transfer-to Code" = '') then
Confirmed := true
else
Confirmed := Confirm(Text002, false, FieldCaption("Transfer-to Code"));
if Confirmed then begin
if Location.Get("Transfer-to Code") then begin
InitFromTransferToLocation(Location);
TransferRoute.GetTransferRoute(
"Transfer-from Code", "Transfer-to Code", InTransitCode,
ShippingAgentCode, ShippingAgentServiceCode, "Direct Transfer", "Direct Transfer Posting");
if not "Direct Transfer" then begin
"Inbound Whse. Handling Time" := Location."Inbound Whse. Handling Time";
"In-Transit Code" := InTransitCode;
"Shipping Agent Code" := ShippingAgentCode;
"Shipping Agent Service Code" := ShippingAgentServiceCode;
OnAfterGetTransferRoute(Rec, TransferRoute);
TransferRoute.GetShippingTime(
"Transfer-from Code", "Transfer-to Code",
"Shipping Agent Code", "Shipping Agent Service Code",
"Shipping Time");
CalcReceiptDate();
end;
TransLine.LockTable();
TransLine.SetRange("Document No.", "No.");
end;
UpdateTransLines(Rec, FieldNo("Transfer-to Code"));
end else
"Transfer-to Code" := xRec."Transfer-to Code";
end;
CreateDimFromDefaultDim(FieldNo("Transfer-to Code"));
end;
}
field(12; "Transfer-to Name"; Text[100])
{
Caption = 'Transfer-to Name';
ToolTip = 'Specifies the name of the recipient at the location that the items are transferred to.';
}
field(13; "Transfer-to Name 2"; Text[50])
{
Caption = 'Transfer-to Name 2';
ToolTip = 'Specifies an additional part of the name of the recipient at the location that the items are transferred to.';
}
field(14; "Transfer-to Address"; Text[100])
{
Caption = 'Transfer-to Address';
ToolTip = 'Specifies the address of the location that the items are transferred to.';
}
field(15; "Transfer-to Address 2"; Text[50])
{
Caption = 'Transfer-to Address 2';
ToolTip = 'Specifies an additional part of the address of the location that the items are transferred to.';
}
field(16; "Transfer-to Post Code"; Code[20])
{
Caption = 'Transfer-to Post Code';
ToolTip = 'Specifies the postal code of the location that the items are transferred to.';
TableRelation = "Post Code";
ValidateTableRelation = false;
trigger OnLookup()
begin
PostCode.LookupPostCode(
"Transfer-to City", "Transfer-to Post Code", "Transfer-to County", "Trsf.-to Country/Region Code");
end;
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateTransferToPostCode(Rec, PostCode, CurrFieldNo, IsHandled);
if not IsHandled then
PostCode.ValidatePostCode(
"Transfer-to City", "Transfer-to Post Code", "Transfer-to County",
"Trsf.-to Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
end;
}
field(17; "Transfer-to City"; Text[30])
{
Caption = 'Transfer-to City';
ToolTip = 'Specifies the city of the location that items are transferred to.';
TableRelation = if ("Trsf.-to Country/Region Code" = const('')) "Post Code".City
else
if ("Trsf.-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Trsf.-to Country/Region Code"));
ValidateTableRelation = false;
trigger OnLookup()
begin
PostCode.LookupPostCode(
"Transfer-to City", "Transfer-to Post Code", "Transfer-to County", "Trsf.-to Country/Region Code");
end;
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateTransferToCity(Rec, PostCode, CurrFieldNo, IsHandled);
if not IsHandled then
PostCode.ValidateCity(
"Transfer-to City", "Transfer-to Post Code", "Transfer-to County",
"Trsf.-to Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
end;
}
field(18; "Transfer-to County"; Text[30])
{
CaptionClass = '5,8,' + "Trsf.-to Country/Region Code";
Caption = 'Transfer-to County';
}
field(19; "Trsf.-to Country/Region Code"; Code[10])
{
Caption = 'Trsf.-to Country/Region Code';
TableRelation = "Country/Region";
trigger OnValidate()
begin
PostCode.CheckClearPostCodeCityCounty(
"Transfer-to City", "Transfer-to Post Code", "Transfer-to County",
"Trsf.-to Country/Region Code", xRec."Trsf.-to Country/Region Code");
end;
}
field(20; "Posting Date"; Date)
{
Caption = 'Posting Date';
ToolTip = 'Specifies the posting date of the transfer order.';
}
field(21; "Shipment Date"; Date)
{
Caption = 'Shipment Date';
ToolTip = 'Specifies when items on the document are shipped or were shipped. A shipment date is usually calculated from a requested delivery date plus lead time.';
trigger OnValidate()
var
IsHandled: Boolean;
begin
TestStatusOpen();
IsHandled := false;
OnValidateShipmentDateOnBeforeCalcReceiptDate(IsHandled, Rec);
if not IsHandled then
CalcReceiptDate();
UpdateTransLines(Rec, FieldNo("Shipment Date"));
end;
}
field(22; "Receipt Date"; Date)
{
Caption = 'Receipt Date';
ToolTip = 'Specifies the date that you expect the transfer-to location to receive the shipment.';
trigger OnValidate()
var
IsHandled: Boolean;
begin
TestStatusOpen();
IsHandled := false;
OnValidateReceiptDateOnBeforeCalcShipmentDate(IsHandled, Rec);
if not IsHandled then
CalcShipmentDate();
UpdateTransLines(Rec, FieldNo("Receipt Date"));
end;
}
field(23; Status; Option)
{
Caption = 'Status';
ToolTip = 'Specifies whether the transfer order is open or has been released for warehouse handling.';
Editable = false;
OptionCaption = 'Open,Released';
OptionMembers = Open,Released;
trigger OnValidate()
begin
UpdateTransLines(Rec, FieldNo(Status));
end;
}
field(24; Comment; Boolean)
{
CalcFormula = exist("Inventory Comment Line" where("Document Type" = const("Transfer Order"),
"No." = field("No.")));
Caption = 'Comment';
Editable = false;
FieldClass = FlowField;
}
field(25; "Shortcut Dimension 1 Code"; Code[20])
{
CaptionClass = '1,2,1';
Caption = 'Shortcut Dimension 1 Code';
ToolTip = 'Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup window.';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(1),
Blocked = const(false));
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(1, "Shortcut Dimension 1 Code");
end;
}
field(26; "Shortcut Dimension 2 Code"; Code[20])
{
CaptionClass = '1,2,2';
Caption = 'Shortcut Dimension 2 Code';
ToolTip = 'Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window.';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(2),
Blocked = const(false));
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(2, "Shortcut Dimension 2 Code");
end;
}
field(27; "In-Transit Code"; Code[10])
{
Caption = 'In-Transit Code';
ToolTip = 'Specifies the in-transit code for the transfer order, such as a shipping agent.';
TableRelation = Location where("Use As In-Transit" = const(true));
trigger OnValidate()
begin
TestStatusOpen();
UpdateTransLines(Rec, FieldNo("In-Transit Code"));
end;
}
field(28; "No. Series"; Code[20])
{
Caption = 'No. Series';
TableRelation = "No. Series";
}
field(29; "Last Shipment No."; Code[20])
{
Caption = 'Last Shipment No.';
Editable = false;
TableRelation = "Transfer Shipment Header";
}
field(30; "Last Receipt No."; Code[20])
{
Caption = 'Last Receipt No.';
Editable = false;
TableRelation = "Transfer Receipt Header";
}
field(31; "Transfer-from Contact"; Text[100])
{
Caption = 'Transfer-from Contact';
ToolTip = 'Specifies the name of the contact person at the location that the items are transferred from.';
}
field(32; "Transfer-to Contact"; Text[100])
{
Caption = 'Transfer-to Contact';
ToolTip = 'Specifies the name of the contact person at the location that items are transferred to.';
}
field(33; "External Document No."; Code[35])
{
Caption = 'External Document No.';
trigger OnValidate()
var
WhseTransferRelease: Codeunit "Whse.-Transfer Release";
begin
if (xRec."External Document No." <> "External Document No.") and (Status = Status::Released) then
WhseTransferRelease.UpdateExternalDocNoForReleasedOrder(Rec);
end;
}
field(34; "Shipping Agent Code"; Code[10])
{
AccessByPermission = TableData "Shipping Agent Services" = R;
Caption = 'Shipping Agent Code';
ToolTip = 'Specifies the code for the shipping agent who is transporting the items.';
TableRelation = "Shipping Agent";
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateShippingAgentCode(Rec, IsHandled);
if IsHandled then
exit;
TestStatusOpen();
if "Shipping Agent Code" <> xRec."Shipping Agent Code" then
Validate("Shipping Agent Service Code", '');
UpdateTransLines(Rec, FieldNo("Shipping Agent Code"));
end;
}
field(35; "Shipping Agent Service Code"; Code[10])
{
Caption = 'Shipping Agent Service Code';
ToolTip = 'Specifies the code for the service, such as a one-day delivery, that is offered by the shipping agent.';
TableRelation = "Shipping Agent Services".Code where("Shipping Agent Code" = field("Shipping Agent Code"));
trigger OnValidate()
begin
TestStatusOpen();
TransferRoute.GetShippingTime(
"Transfer-from Code", "Transfer-to Code",
"Shipping Agent Code", "Shipping Agent Service Code",
"Shipping Time");
CalcReceiptDate();
UpdateTransLines(Rec, FieldNo("Shipping Agent Service Code"));
end;
}
field(36; "Shipping Time"; DateFormula)
{
AccessByPermission = TableData "Shipping Agent Services" = R;
Caption = 'Shipping Time';
ToolTip = 'Specifies how long it takes from when the items are shipped from the warehouse to when they are delivered.';
trigger OnValidate()
begin
TestStatusOpen();
CalcReceiptDate();
UpdateTransLines(Rec, FieldNo("Shipping Time"));
end;
}
field(37; "Shipment Method Code"; Code[10])
{
Caption = 'Shipment Method Code';
ToolTip = 'Specifies the delivery conditions of the related shipment, such as free on board (FOB).';
TableRelation = "Shipment Method";
}
field(47; "Transaction Type"; Code[10])
{
Caption = 'Transaction Type';
ToolTip = 'Specifies the type of transaction that the document represents, for the purpose of reporting to INTRASTAT.';
TableRelation = "Transaction Type";
}
field(48; "Transport Method"; Code[10])
{
Caption = 'Transport Method';
ToolTip = 'Specifies the transport method, for the purpose of reporting to INTRASTAT.';
TableRelation = "Transport Method";
}
field(49; "Partner VAT ID"; Code[20])
{
Caption = 'Partner VAT ID';
ToolTip = 'Specifies the counter party''s VAT number.';
}
field(59; "Entry/Exit Point"; Code[10])
{
Caption = 'Entry/Exit Point';
ToolTip = 'Specifies the code of either the port of entry at which the items passed into your country/region, or the port of exit.';
TableRelation = "Entry/Exit Point";
}
field(63; "Area"; Code[10])
{
Caption = 'Area';
ToolTip = 'Specifies the area of the customer or vendor, for the purpose of reporting to INTRASTAT.';
TableRelation = Area;
}
field(64; "Transaction Specification"; Code[10])
{
Caption = 'Transaction Specification';
ToolTip = 'Specifies a specification of the document''s transaction, for the purpose of reporting to INTRASTAT.';
TableRelation = "Transaction Specification";
}
field(70; "Direct Transfer"; Boolean)
{
Caption = 'Direct Transfer';
ToolTip = 'Specifies that the transfer does not use an in-transit location.';
trigger OnValidate()
var
IsHandled: Boolean;
begin
if "Direct Transfer" then begin
OnValidateDirectTransferOnBeforeValidateInTransitCode(Rec, IsHandled);
if not IsHandled then
Validate("In-Transit Code", '');
Rec.Validate("Direct Transfer Posting", GetDirectTransferPosting(Rec));
end else
Rec.Validate("Direct Transfer Posting", Rec."Direct Transfer Posting"::" ");
Modify(true);
VerifyNoInboundWhseHandlingOnLocation("Transfer-to Code");
UpdateTransLines(Rec, FieldNo("Direct Transfer"));
end;
}
field(5858; "Direct Transfer Posting"; Enum "Direct Transfer Posting Type")
{
Caption = 'Direct Transfer Posting';
ToolTip = 'Specifies the posting type for direct transfer. The posting type determines how inventory is updated for the transfer order.';
trigger OnValidate()
begin
if Rec."Direct Transfer Posting" <> Rec."Direct Transfer Posting"::" " then
Rec.TestField("Direct Transfer", true);
if not (Rec."Direct Transfer Posting" in [Rec."Direct Transfer Posting"::"Direct Transfer", Rec."Direct Transfer Posting"::"Shipment and Receipt"]) then
Rec.TestField("Direct Transfer", false);
if Rec."Direct Transfer" and (Rec."Direct Transfer Posting" = Rec."Direct Transfer Posting"::"Direct Transfer") then
if Rec."In-Transit Code" <> '' then
Rec.Validate("In-Transit Code", '');
if Rec."Direct Transfer" then
VerifyNoInboundWhseHandlingOnLocation(Rec."Transfer-to Code");
end;
}
field(480; "Dimension Set ID"; Integer)
{
Caption = 'Dimension Set ID';
Editable = false;
TableRelation = "Dimension Set Entry";
trigger OnLookup()
begin
Rec.ShowDocDim();
end;
trigger OnValidate()
begin
DimMgt.UpdateGlobalDimFromDimSetID("Dimension Set ID", "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");
end;
}
field(5750; "Shipping Advice"; Enum "Sales Header Shipping Advice")
{
Caption = 'Shipping Advice';
ToolTip = 'Specifies an instruction to the warehouse that ships the items, for example, that it is acceptable to do partial shipment.';
trigger OnValidate()
var
TransferWarehouseMgt: Codeunit "Transfer Warehouse Mgt.";
begin
if "Shipping Advice" <> xRec."Shipping Advice" then begin
TestStatusOpen();
TransferWarehouseMgt.TransHeaderVerifyChange(Rec, xRec);
end;
end;
}
field(5751; "Posting from Whse. Ref."; Integer)
{
Caption = 'Posting from Whse. Ref.';
}
field(5752; "Completely Shipped"; Boolean)
{
CalcFormula = min("Transfer Line"."Completely Shipped" where("Document No." = field("No."),
"Shipment Date" = field("Date Filter"),
"Transfer-from Code" = field("Location Filter"),
"Derived From Line No." = const(0)));
Caption = 'Completely Shipped';
Editable = false;
FieldClass = FlowField;
}
field(5753; "Completely Received"; Boolean)
{
CalcFormula = min("Transfer Line"."Completely Received" where("Document No." = field("No."),
"Receipt Date" = field("Date Filter"),
"Transfer-to Code" = field("Location Filter"),
"Derived From Line No." = const(0)));
Caption = 'Completely Received';
Editable = false;
FieldClass = FlowField;
}
field(5754; "Location Filter"; Code[10])
{
Caption = 'Location Filter';
FieldClass = FlowFilter;
TableRelation = Location;
}
field(5793; "Outbound Whse. Handling Time"; DateFormula)
{
Caption = 'Outbound Whse. Handling Time';
ToolTip = 'Specifies a date formula for the time it takes to get items ready to ship from this location. The time element is used in the calculation of the delivery date as follows: Shipment Date + Outbound Warehouse Handling Time = Planned Shipment Date + Shipping Time = Planned Delivery Date.';
trigger OnValidate()
begin
TestStatusOpen();
CalcReceiptDate();
UpdateTransLines(Rec, FieldNo("Outbound Whse. Handling Time"));
end;
}
field(5794; "Inbound Whse. Handling Time"; DateFormula)
{
Caption = 'Inbound Whse. Handling Time';
ToolTip = 'Specifies the time it takes to make items part of available inventory, after the items have been posted as received.';
trigger OnValidate()
begin
TestStatusOpen();
CalcReceiptDate();
UpdateTransLines(Rec, FieldNo("Inbound Whse. Handling Time"));
end;
}
field(5796; "Date Filter"; Date)
{
Caption = 'Date Filter';
FieldClass = FlowFilter;
}
field(8000; "Has Shipped Lines"; Boolean)
{
CalcFormula = exist("Transfer Line" where("Document No." = field("No."),
"Quantity Shipped" = filter(> 0)));
Caption = 'Has Shipped Lines';
FieldClass = FlowField;
}
field(9000; "Assigned User ID"; Code[50])
{
Caption = 'Assigned User ID';
ToolTip = 'Specifies the ID of the user who is responsible for the document.';
DataClassification = EndUserIdentifiableInformation;
TableRelation = "User Setup";
}
}
keys
{
key(Key1; "No.")
{
Clustered = true;
}
}
fieldgroups
{
fieldgroup(DropDown; "No.", "Transfer-from Code", "Transfer-to Code", "Shipment Date", Status)
{
}
}
trigger OnDelete()
var
InvtCommentLine: Record "Inventory Comment Line";
ReservMgt: Codeunit "Reservation Management";
begin
TestField(Status, Status::Open);
WhseRequest.SetRange("Source Type", DATABASE::"Transfer Line");
WhseRequest.SetRange("Source No.", "No.");
if not WhseRequest.IsEmpty() then
WhseRequest.DeleteAll(true);
ReservMgt.DeleteDocumentReservation(DATABASE::"Transfer Line", 0, "No.", HideValidationDialog);
DeleteTransferLines();
InvtCommentLine.SetRange("Document Type", InvtCommentLine."Document Type"::"Transfer Order");
InvtCommentLine.SetRange("No.", "No.");
InvtCommentLine.DeleteAll();
end;
trigger OnInsert()
begin
GetInventorySetup();
InitInsert();
Validate("Shipment Date", WorkDate());
end;
trigger OnRename()
begin
Error(Text000, TableCaption);
end;
var
TransferRoute: Record "Transfer Route";
TransHeader: Record "Transfer Header";
TransLine: Record "Transfer Line";
PostCode: Record "Post Code";
InvtSetup: Record "Inventory Setup";
WhseRequest: Record "Warehouse Request";
DimMgt: Codeunit DimensionManagement;
ErrorMessageMgt: Codeunit "Error Message Management";
HasInventorySetup: Boolean;
CalledFromWhse: Boolean;
#pragma warning disable AA0074
#pragma warning disable AA0470
Text000: Label 'You cannot rename a %1.';
Text001: Label '%1 and %2 cannot be the same in %3 %4.';
Text002: Label 'Do you want to change %1?';
#pragma warning restore AA0470
#pragma warning restore AA0074
SameLocationErr: Label 'Transfer order %1 cannot be posted because %2 and %3 are the same.', Comment = '%1 - order number, %2 - location from, %3 - location to';
#pragma warning disable AA0074
TransferOrderPostedMsg1: Label 'Transfer order %1 was successfully posted and is now deleted.', Comment = '%1 = transfer order number e.g. Transfer order 1003 was successfully posted and is now deleted ';
Text007: Label 'You may have changed a dimension.\\Do you want to update the lines?';
#pragma warning restore AA0074
CheckTransferLineMsg: Label 'Check transfer document line.';
protected var
HideValidationDialog: Boolean;
procedure InitRecord()
begin
if "Posting Date" = 0D then
Validate("Posting Date", WorkDate());
OnAfterInitRecord(Rec);
end;
local procedure InitFromTransferToLocation(Location: Record Location)
begin
"Transfer-to Name" := Location.Name;
"Transfer-to Name 2" := Location."Name 2";
"Transfer-to Address" := Location.Address;
"Transfer-to Address 2" := Location."Address 2";
"Transfer-to Post Code" := Location."Post Code";
"Transfer-to City" := Location.City;
"Transfer-to County" := Location.County;
"Trsf.-to Country/Region Code" := Location."Country/Region Code";
"Transfer-to Contact" := Location.Contact;
OnAfterInitFromTransferToLocation(Rec, Location);
end;
local procedure InitFromTransferFromLocation(Location: Record Location)
begin
"Transfer-from Name" := Location.Name;
"Transfer-from Name 2" := Location."Name 2";
"Transfer-from Address" := Location.Address;
"Transfer-from Address 2" := Location."Address 2";
"Transfer-from Post Code" := Location."Post Code";
"Transfer-from City" := Location.City;
"Transfer-from County" := Location.County;
"Trsf.-from Country/Region Code" := Location."Country/Region Code";
"Transfer-from Contact" := Location.Contact;
OnAfterInitFromTransferFromLocation(Rec, Location);
end;
procedure AssistEdit(OldTransHeader: Record "Transfer Header"): Boolean
var
NoSeries: Codeunit "No. Series";
begin
TransHeader := Rec;
GetInventorySetup();
TestNoSeries();
if NoSeries.LookupRelatedNoSeries(GetNoSeriesCode(), OldTransHeader."No. Series", TransHeader."No. Series") then begin
TransHeader."No." := NoSeries.GetNextNo(TransHeader."No. Series");
Rec := TransHeader;
exit(true);
end;
end;
local procedure CalcReceiptDate()
begin
TransferRoute.CalcReceiptDate(
"Shipment Date",
"Receipt Date",
"Shipping Time",
"Outbound Whse. Handling Time",
"Inbound Whse. Handling Time",
"Transfer-from Code",
"Transfer-to Code",
"Shipping Agent Code",
"Shipping Agent Service Code");
end;
local procedure CalcShipmentDate()
begin
TransferRoute.CalcShipmentDate(
"Shipment Date",
"Receipt Date",
"Shipping Time",
"Outbound Whse. Handling Time",
"Inbound Whse. Handling Time",
"Transfer-from Code",
"Transfer-to Code",
"Shipping Agent Code",
"Shipping Agent Service Code");
end;
local procedure DeleteTransferLines()
var
TransLine: Record "Transfer Line";
IsHandled: Boolean;
begin
OnBeforeDeleteTransferLines(IsHandled, Rec);
if IsHandled then
exit;
TransLine.SetRange("Document No.", "No.");
TransLine.DeleteAll(true);
end;
local procedure TestNoSeries()
var
IsHandled: Boolean;
begin
GetInventorySetup();
IsHandled := false;
OnBeforeTestNoSeries(Rec, InvtSetup, IsHandled);
if IsHandled then
exit;
InvtSetup.TestField("Transfer Order Nos.");
end;
local procedure GetNoSeriesCode(): Code[20]
var
NoSeriesCode: Code[20];
IsHandled: Boolean;
begin
GetInventorySetup();
IsHandled := false;
OnBeforeGetNoSeriesCode(Rec, InvtSetup, NoSeriesCode, IsHandled);
if IsHandled then
exit(NoSeriesCode);
NoSeriesCode := InvtSetup."Transfer Order Nos.";
OnAfterGetNoSeriesCode(Rec, NoSeriesCode);
exit(NoSeriesCode);
end;
procedure GetHideValidationDialog(): Boolean
begin
exit(HideValidationDialog);
end;
procedure SetHideValidationDialog(NewHideValidationDialog: Boolean)
begin
HideValidationDialog := NewHideValidationDialog;
end;
procedure ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])
var
OldDimSetID: Integer;
begin
OnBeforeValidateShortcutDimCode(Rec, xRec, FieldNumber, ShortcutDimCode);
OldDimSetID := "Dimension Set ID";
DimMgt.ValidateShortcutDimValues(FieldNumber, ShortcutDimCode, "Dimension Set ID");
if OldDimSetID <> "Dimension Set ID" then begin
Modify();
if TransferLinesExist() then
UpdateAllLineDim("Dimension Set ID", OldDimSetID);
end;
OnAfterValidateShortcutDimCode(Rec, xRec, FieldNumber, ShortcutDimCode);
end;
local procedure GetInventorySetup()
begin
if not HasInventorySetup then begin
InvtSetup.Get();
HasInventorySetup := true;
end;
end;
procedure UpdateTransLines(TransferHeader: Record "Transfer Header"; FieldID: Integer)
var
TransferLine: Record "Transfer Line";
TempTransferLine: Record "Transfer Line" temporary;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeUpdateTransLines(TransferHeader, FieldID, IsHandled);
if IsHandled then
exit;
TransferLine.SetRange("Document No.", "No.");
TransferLine.SetFilter("Item No.", '<>%1', '');
if TransferLine.FindSet() then begin
TransferLine.LockTable();
repeat
case FieldID of
FieldNo("In-Transit Code"):
TransferLine.Validate("In-Transit Code", TransferHeader."In-Transit Code");
FieldNo("Transfer-from Code"):
begin
TransferLine.Validate("Transfer-from Code", TransferHeader."Transfer-from Code");
TransferLine.Validate("Shipping Agent Code", TransferHeader."Shipping Agent Code");
TransferLine.Validate("Shipping Agent Service Code", TransferHeader."Shipping Agent Service Code");
TransferLine.Validate("Shipment Date", TransferHeader."Shipment Date");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
end;
FieldNo("Transfer-to Code"):
begin
TransferLine.Validate("Transfer-to Code", TransferHeader."Transfer-to Code");
TransferLine.Validate("Shipping Agent Code", TransferHeader."Shipping Agent Code");
TransferLine.Validate("Shipping Agent Service Code", TransferHeader."Shipping Agent Service Code");
TransferLine.Validate("Shipment Date", TransferHeader."Shipment Date");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
end;
FieldNo("Shipping Agent Code"):
begin
TransferLine.Validate("Shipping Agent Code", TransferHeader."Shipping Agent Code");
TransferLine.BlockDynamicTracking(true);
TransferLine.Validate("Shipping Agent Service Code", TransferHeader."Shipping Agent Service Code");
TransferLine.Validate("Shipment Date", TransferHeader."Shipment Date");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
OnUpdateTransLinesOnShippingAgentCodeOnBeforeBlockDynamicTracking(TransferLine, TransferHeader);
TransferLine.BlockDynamicTracking(false);
TransferLine.DateConflictCheck();
end;
FieldNo("Shipping Agent Service Code"):
begin
TransferLine.BlockDynamicTracking(true);
TransferLine.Validate("Shipping Agent Service Code", TransferHeader."Shipping Agent Service Code");
TransferLine.Validate("Shipment Date", TransferHeader."Shipment Date");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
TransferLine.BlockDynamicTracking(false);
TransferLine.DateConflictCheck();
end;
FieldNo("Shipment Date"):
begin
TransferLine.BlockDynamicTracking(true);
TransferLine.Validate("Shipment Date", TransferHeader."Shipment Date");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
TransferLine.BlockDynamicTracking(false);
TransferLine.DateConflictCheck();
end;
FieldNo("Receipt Date"), FieldNo("Shipping Time"):
begin
TransferLine.BlockDynamicTracking(true);
TransferLine.Validate("Shipping Time", TransferHeader."Shipping Time");
TransferLine.Validate("Receipt Date", TransferHeader."Receipt Date");
TransferLine.BlockDynamicTracking(false);
TransferLine.DateConflictCheck();
end;
FieldNo("Outbound Whse. Handling Time"):
TransferLine.Validate("Outbound Whse. Handling Time", TransferHeader."Outbound Whse. Handling Time");
FieldNo("Inbound Whse. Handling Time"):
TransferLine.Validate("Inbound Whse. Handling Time", TransferHeader."Inbound Whse. Handling Time");
FieldNo(Status):
TransferLine.Validate(Status, TransferHeader.Status);
FieldNo("Direct Transfer"):
begin
TransferLine.Validate("In-Transit Code", TransferHeader."In-Transit Code");
TempTransferLine := TransferLine;
TransferLine.Validate("Item No.", TempTransferLine."Item No.");
TransferLine.Validate("Variant Code", TempTransferLine."Variant Code");
TransferLine.Validate("Dimension Set ID", TempTransferLine."Dimension Set ID");
OnUpdateTransLinesOnAfterUpdateFromDirectTransfer(TransferLine, TempTransferLine);
end;
else
OnUpdateTransLines(TransferLine, TransferHeader, FieldID);
end;
OnUpdateTransLinesOnBeforeModifyTransferLine(TransferHeader, TransferLine);
TransferLine.Modify(true);
OnUpdateTransLinesOnAfterModifyTransferLine(TransferHeader, TransferLine);
until TransferLine.Next() = 0;
end;
end;
procedure ShouldDeleteOneTransferOrder(var TransLine2: Record "Transfer Line"): Boolean
var
IsHandled: Boolean;
ShouldDelete: Boolean;
begin
IsHandled := false;
OnBeforeShouldDeleteOneTransferOrder(TransLine2, ShouldDelete, IsHandled);
if IsHandled then
exit(ShouldDelete);
if TransLine2.Find('-') then
repeat
if (TransLine2.Quantity <> TransLine2."Quantity Shipped") or
(TransLine2.Quantity <> TransLine2."Quantity Received") or
(TransLine2."Quantity (Base)" <> TransLine2."Qty. Shipped (Base)") or
(TransLine2."Quantity (Base)" <> TransLine2."Qty. Received (Base)") or
(TransLine2."Quantity Shipped" <> TransLine2."Quantity Received") or
(TransLine2."Qty. Shipped (Base)" <> TransLine2."Qty. Received (Base)")
then
exit(false);
until TransLine2.Next() = 0;
exit(true);
end;
procedure DeleteOneTransferOrder(var TransHeader2: Record "Transfer Header"; var TransLine2: Record "Transfer Line")
var
ItemChargeAssgntPurch: Record "Item Charge Assignment (Purch)";
WhseRequest: Record "Warehouse Request";
InvtCommentLine: Record "Inventory Comment Line";
No: Code[20];
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeDeleteOneTransferOrder(TransHeader2, TransLine2, IsHandled);
if IsHandled then
exit;
No := TransHeader2."No.";
WhseRequest.SetRange("Source Type", DATABASE::"Transfer Line");
WhseRequest.SetRange("Source No.", No);
if not WhseRequest.IsEmpty() then
WhseRequest.DeleteAll(true);
InvtCommentLine.SetRange("Document Type", InvtCommentLine."Document Type"::"Transfer Order");
InvtCommentLine.SetRange("No.", No);
InvtCommentLine.DeleteAll();
ItemChargeAssgntPurch.SetCurrentKey(
"Applies-to Doc. Type", "Applies-to Doc. No.", "Applies-to Doc. Line No.");
ItemChargeAssgntPurch.SetRange("Applies-to Doc. Type", ItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt");
ItemChargeAssgntPurch.SetRange("Applies-to Doc. No.", TransLine2."Document No.");
ItemChargeAssgntPurch.DeleteAll();
OnBeforeTransLineDeleteAll(TransHeader2, TransLine2);
if TransLine2.Find('-') then
TransLine2.DeleteAll();
OnDeleteOneTransferOrderOnBeforeTransHeaderDelete(TransHeader2, HideValidationDialog);
TransHeader2.Delete();
if not HideValidationDialog then
Message(TransferOrderPostedMsg1, No);
end;
procedure TestStatusOpen()
begin
if not CalledFromWhse then
TestField(Status, Status::Open);
end;
internal procedure PerformManualRelease()
var
IsHandled: Boolean;
begin
OnBeforePerformManualRelease(Rec, IsHandled);
if not IsHandled then
if Rec.Status <> Rec.Status::Released then begin
CODEUNIT.Run(CODEUNIT::"Release Transfer Document", Rec);
Commit();
end;
end;
procedure CalledFromWarehouse(CalledFromWhse2: Boolean)
begin
CalledFromWhse := CalledFromWhse2;
end;
procedure CreateInvtPutAwayPick()
var
WhseRequest: Record "Warehouse Request";
begin
TestField(Status, Status::Released);
WhseRequest.Reset();
WhseRequest.SetCurrentKey("Source Document", "Source No.");
WhseRequest.SetFilter(
"Source Document", '%1|%2',
WhseRequest."Source Document"::"Inbound Transfer",
WhseRequest."Source Document"::"Outbound Transfer");
WhseRequest.SetRange("Source No.", "No.");
REPORT.RunModal(REPORT::"Create Invt Put-away/Pick/Mvmt", true, false, WhseRequest);
end;
procedure CreateDimFromDefaultDim(FieldNo: Integer)
var
DefaultDimSource: List of [Dictionary of [Integer, Code[20]]];
IsHandled: Boolean;
begin
IsHandled := false;
OnCreateDimFromDefaultDimOnBeforeCreateDim(Rec, FieldNo, IsHandled);
if IsHandled then
exit;
InitDefaultDimensionSources(DefaultDimSource, FieldNo);
CreateDim(DefaultDimSource);
end;
local procedure InitDefaultDimensionSources(var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)
begin
DimMgt.AddDimSource(DefaultDimSource, Database::Location, Rec."Transfer-from Code", FieldNo = Rec.FieldNo("Transfer-from Code"));
DimMgt.AddDimSource(DefaultDimSource, Database::Location, Rec."Transfer-to Code", FieldNo = Rec.FieldNo("Transfer-to Code"));
OnAfterInitDefaultDimensionSources(Rec, DefaultDimSource, FieldNo);
end;
procedure CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])
var
SourceCodeSetup: Record "Source Code Setup";
OldDimSetID: Integer;
begin
SourceCodeSetup.Get();
"Shortcut Dimension 1 Code" := '';
"Shortcut Dimension 2 Code" := '';
OldDimSetID := "Dimension Set ID";
"Dimension Set ID" :=
DimMgt.GetRecDefaultDimID(
Rec, CurrFieldNo, DefaultDimSource, SourceCodeSetup.Transfer, "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code", 0, 0);
if (OldDimSetID <> "Dimension Set ID") and (OldDimSetID <> 0) then
DimMgt.UpdateGlobalDimFromDimSetID("Dimension Set ID", "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");
OnCreateDimOnBeforeUpdateLines(Rec, xRec, CurrFieldNo, OldDimSetID, DefaultDimSource);
if (OldDimSetID <> "Dimension Set ID") and TransferLinesExist() then begin
Modify();
UpdateAllLineDim("Dimension Set ID", OldDimSetID);
end;
end;
procedure ShowDocDim()
var
OldDimSetID: Integer;
begin
OldDimSetID := "Dimension Set ID";
"Dimension Set ID" :=
DimMgt.EditDimensionSet(
Rec, "Dimension Set ID", StrSubstNo('%1 %2', TableCaption(), "No."),
"Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");
OnShowDocDimOnAfterAssignDimensionSetID(Rec);
if OldDimSetID <> "Dimension Set ID" then begin
Modify();
if TransferLinesExist() then
UpdateAllLineDim("Dimension Set ID", OldDimSetID);
end;
end;
procedure TransferLinesExist(): Boolean
begin
TransLine.Reset();
TransLine.SetRange("Document No.", "No.");
exit(TransLine.FindFirst());
end;
procedure UpdateAllLineDim(NewParentDimSetID: Integer; OldParentDimSetID: Integer)
var
ConfirmManagement: Codeunit "Confirm Management";
NewDimSetID: Integer;
ShippedLineDimChangeConfirmed: Boolean;
begin
// Update all lines with changed dimensions.
if NewParentDimSetID = OldParentDimSetID then
exit;
if not HideValidationDialog and GuiAllowed then
if not ConfirmManagement.GetResponseOrDefault(Text007, true) then
exit;
TransLine.Reset();
TransLine.SetRange("Document No.", "No.");
TransLine.LockTable();
if TransLine.Find('-') then
repeat
NewDimSetID := DimMgt.GetDeltaDimSetID(TransLine."Dimension Set ID", NewParentDimSetID, OldParentDimSetID);
if TransLine."Dimension Set ID" <> NewDimSetID then begin
TransLine."Dimension Set ID" := NewDimSetID;
VerifyShippedLineDimChange(ShippedLineDimChangeConfirmed);
DimMgt.UpdateGlobalDimFromDimSetID(
TransLine."Dimension Set ID", TransLine."Shortcut Dimension 1 Code", TransLine."Shortcut Dimension 2 Code");
OnUpdateAllLineDimOnBeforeTransLineModify(TransLine);
TransLine.Modify();
end;
until TransLine.Next() = 0;
end;
local procedure VerifyShippedLineDimChange(var ShippedLineDimChangeConfirmed: Boolean)
begin
if TransLine.IsShippedDimChanged() then
if not ShippedLineDimChangeConfirmed then
ShippedLineDimChangeConfirmed := TransLine.ConfirmShippedDimChange();
end;
procedure CheckBeforePost()
begin
TestField("Transfer-from Code");
TestField("Transfer-to Code");
CheckTransferFromAndToCodesNotTheSame();
if not "Direct Transfer" then
TestField("In-Transit Code")
else
VerifyNoInboundWhseHandlingOnLocation("Transfer-to Code");
TestField(Status, Status::Released);
TestField("Posting Date");
OnAfterCheckBeforePost(Rec);
end;
procedure CheckBeforeTransferPost()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckBeforeTransferPost(Rec, IsHandled);
if IsHandled then
exit;
TestField("Transfer-from Code");
TestField("Transfer-to Code");
TestField("Direct Transfer");
if ("Transfer-from Code" <> '') and
("Transfer-from Code" = "Transfer-to Code")
then
Error(
SameLocationErr,
"No.", FieldCaption("Transfer-from Code"), FieldCaption("Transfer-to Code"));
TestField("In-Transit Code", '');
TestField(Status, Status::Released);
TestField("Posting Date");
OnAfterCheckBeforeTransferPost(Rec);
end;
local procedure CheckTransferFromAndToCodesNotTheSame()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckTransferFromAndToCodesNotTheSame(Rec, IsHandled);
if IsHandled then
exit;
if "Transfer-from Code" = "Transfer-to Code" then
Error(
Text001,
FieldCaption("Transfer-from Code"), FieldCaption("Transfer-to Code"),
TableCaption, "No.");
end;
procedure CheckInvtPostingSetup()
var
InventoryPostingSetup: Record "Inventory Posting Setup";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckInvtPostingSetup(Rec, IsHandled);
if IsHandled then
exit;
InventoryPostingSetup.SetRange("Location Code", "Transfer-from Code");
InventoryPostingSetup.FindFirst();
InventoryPostingSetup.SetRange("Location Code", "Transfer-to Code");
InventoryPostingSetup.FindFirst();
end;
procedure HasShippedItems(): Boolean
var
TransferLine: Record "Transfer Line";
begin
TransferLine.SetRange("Document No.", "No.");
TransferLine.SetFilter("Item No.", '<>%1', '');
TransferLine.SetFilter("Quantity Shipped", '>%1', 0);
exit(not TransferLine.IsEmpty);
end;
procedure HasTransferLines(): Boolean
var
TransferLine: Record "Transfer Line";
begin
TransferLine.SetRange("Document No.", "No.");
TransferLine.SetFilter("Item No.", '<>%1', '');
exit(not TransferLine.IsEmpty);
end;
procedure GetReceiptLines()
var
PurchRcptHeader: Record "Purch. Rcpt. Header";
TempPurchRcptHeader: Record "Purch. Rcpt. Header" temporary;
PostedPurchaseReceipts: Page "Posted Purchase Receipts";
begin
FindPurchRcptHeader(PurchRcptHeader);
PostedPurchaseReceipts.SetTableView(PurchRcptHeader);
PostedPurchaseReceipts.LookupMode := true;
if PostedPurchaseReceipts.RunModal() = ACTION::LookupOK then begin
PostedPurchaseReceipts.GetSelectedRecords(TempPurchRcptHeader);
CreateTransferLinesFromSelectedPurchReceipts(TempPurchRcptHeader);
end;
end;
local procedure CreateTransferLinesFromSelectedPurchReceipts(var TempPurchRcptHeader: Record "Purch. Rcpt. Header" temporary)
var
PurchRcptLine: Record "Purch. Rcpt. Line";
TempPurchRcptLine: Record "Purch. Rcpt. Line" temporary;
SelectionFilterManagement: Codeunit SelectionFilterManagement;
PostedPurchaseReceiptLines: Page "Posted Purchase Receipt Lines";
RecRef: RecordRef;
begin
RecRef.GetTable(TempPurchRcptHeader);
PurchRcptLine.SetFilter(
"Document No.",
SelectionFilterManagement.GetSelectionFilter(RecRef, TempPurchRcptHeader.FieldNo("No.")));
PurchRcptLine.SetRange(Type, PurchRcptLine.Type::Item);
PurchRcptLine.SetRange("Location Code", "Transfer-from Code");
PostedPurchaseReceiptLines.SetTableView(PurchRcptLine);
PostedPurchaseReceiptLines.LookupMode := true;
if PostedPurchaseReceiptLines.RunModal() = ACTION::LookupOK then begin
PostedPurchaseReceiptLines.GetSelectedRecords(TempPurchRcptLine);
CreateTransferLinesFromSelectedReceiptLines(TempPurchRcptLine);
end;
end;
local procedure CreateTransferLinesFromSelectedReceiptLines(var PurchRcptLine: Record "Purch. Rcpt. Line")
var
TransferLine: Record "Transfer Line";
LineNo: Integer;
begin
TransferLine.SetRange("Document No.", "No.");
if TransferLine.FindLast() then;
LineNo := TransferLine."Line No.";
if PurchRcptLine.FindSet() then begin
OnBeforeCreateTransferLinesFromSelectedReceiptLines(PurchRcptLine, LineNo, Rec);
repeat
LineNo := LineNo + 10000;
AddTransferLineFromReceiptLine(PurchRcptLine, LineNo);
until PurchRcptLine.Next() = 0;
OnAfterCreateTransferLinesFromSelectedReceiptLines(PurchRcptLine, LineNo, Rec);
end;
end;
local procedure AddTransferLineFromReceiptLine(PurchRcptLine: Record "Purch. Rcpt. Line"; LineNo: Integer)
var
TransferLine: Record "Transfer Line";
ItemLedgerEntry: Record "Item Ledger Entry";
TempItemLedgerEntry: Record "Item Ledger Entry" temporary;
ItemTrackingDocMgt: Codeunit "Item Tracking Doc. Management";
ItemTrackingMgt: Codeunit "Item Tracking Management";
begin
OnBeforeAddTransferLineFromReceiptLine(TransferLine, PurchRcptLine, Rec);
TransferLine."Document No." := "No.";
TransferLine."Line No." := LineNo;
TransferLine.Validate("Item No.", PurchRcptLine."No.");
TransferLine.Validate("Variant Code", PurchRcptLine."Variant Code");
TransferLine.Validate(Quantity, PurchRcptLine.Quantity);
TransferLine.Validate("Unit of Measure Code", PurchRcptLine."Unit of Measure Code");
TransferLine."Shortcut Dimension 1 Code" := PurchRcptLine."Shortcut Dimension 1 Code";
TransferLine."Shortcut Dimension 2 Code" := PurchRcptLine."Shortcut Dimension 2 Code";
TransferLine."Dimension Set ID" := PurchRcptLine."Dimension Set ID";
OnAddTransferLineFromReceiptLineOnBeforeTransferLineInsert(TransferLine, PurchRcptLine, Rec);
TransferLine.Insert(true);
PurchRcptLine.FilterPstdDocLnItemLedgEntries(ItemLedgerEntry);
ItemTrackingDocMgt.CopyItemLedgerEntriesToTemp(TempItemLedgerEntry, ItemLedgerEntry);
ItemTrackingMgt.CopyItemLedgEntryTrkgToTransferLine(TempItemLedgerEntry, TransferLine);
TransferLine."Appl.-to Item Entry" := ItemLedgerEntry."Entry No.";
TransferLine.Modify(true);
OnAfterAddTransferLineFromReceiptLine(TransferLine, PurchRcptLine, TempItemLedgerEntry, Rec);
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateTransLines(var TransferLine: Record "Transfer Line"; TransferHeader: Record "Transfer Header"; FieldID: Integer)
begin
end;
procedure VerifyNoOutboundWhseHandlingOnLocation(LocationCode: Code[10])
var
Location: Record Location;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeVerifyNoOutboundWhseHandlingOnLocation(LocationCode, IsHandled);
if IsHandled then
exit;
if not Location.Get(LocationCode) then
exit;
if Rec."Direct Transfer Posting" = Rec."Direct Transfer Posting"::"Direct Transfer" then
exit;
Location.TestField("Require Pick", false);
Location.TestField("Require Shipment", false);
end;
procedure VerifyNoInboundWhseHandlingOnLocation(LocationCode: Code[10])
var
Location: Record Location;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeVerifyNoInboundWhseHandlingOnLocation(LocationCode, IsHandled);
if IsHandled then
exit;
if not Location.Get(LocationCode) then
exit;
Location.TestField("Directed Put-away and Pick", false);
if Rec."Direct Transfer Posting" = Rec."Direct Transfer Posting"::"Direct Transfer" then
exit;
Location.TestField("Require Put-away", false);
Location.TestField("Require Receive", false);
end;
local procedure InitInsert()
var
TransferHeader: Record "Transfer Header";
NoSeries: Codeunit "No. Series";
IsHandled: Boolean;
begin
IsHandled := false;
OnInitInsertOnBeforeInitSeries(xRec, IsHandled);
if not IsHandled then
if "No." = '' then begin
TestNoSeries();
if NoSeries.AreRelated(GetNoSeriesCode(), xRec."No. Series") then
"No. Series" := xRec."No. Series"
else
"No. Series" := GetNoSeriesCode();
"No." := NoSeries.GetNextNo("No. Series", "Posting Date");
TransferHeader.ReadIsolation(IsolationLevel::ReadUncommitted);
TransferHeader.SetLoadFields("No.");
while TransferHeader.Get("No.") do
"No." := NoSeries.GetNextNo("No. Series", "Posting Date");
end;
OnInitInsertOnBeforeInitRecord(xRec);
InitRecord();
end;
procedure TransferLinesEditable() IsEditable: Boolean;
begin
if not "Direct Transfer" then
IsEditable := ("Transfer-from Code" <> '') and ("Transfer-to Code" <> '') and ("In-Transit Code" <> '')
else
IsEditable := ("Transfer-from Code" <> '') and ("Transfer-to Code" <> '');
OnAfterTransferLinesEditable(Rec, IsEditable);
end;
procedure CheckTransferLines(Ship: Boolean)
var
TransferLine: Record "Transfer Line";
ErrorContextElement: Codeunit "Error Context Element";
begin
TransferLine.SetRange("Document No.", Rec."No.");
TransferLine.SetRange("Derived From Line No.", 0);
if TransferLine.FindSet() then
repeat
ErrorMessageMgt.PushContext(ErrorContextElement, TransferLine.RecordId(), 0, CheckTransferLineMsg);
TestTransferLine(TransferLine, Ship);
until TransferLine.Next() = 0;
ErrorMessageMgt.PopContext(ErrorContextElement);
end;
procedure TestTransferLine(TransferLine: Record "Transfer Line"; Ship: Boolean)
var
DummyTrackingSpecification: Record "Tracking Specification";
begin
OnBeforeTestTransferLine(TransferLine, Ship);
if Ship then
DummyTrackingSpecification.CheckItemTrackingQuantity(Database::"Transfer Line", 0, "No.", TransferLine."Line No.",
TransferLine."Qty. to Ship (Base)", TransferLine."Qty. to Ship (Base)", true, false)
else
DummyTrackingSpecification.CheckItemTrackingQuantity(Database::"Transfer Line", 1, "No.", GetSourceRefNo(TransferLine),
TransferLine."Qty. to Receive (Base)", TransferLine."Qty. to Receive (Base)", true, false);
end;
local procedure GetSourceRefNo(TransferLine: Record "Transfer Line"): Integer
var
ReservationEntry: Record "Reservation Entry";
begin
ReservationEntry.SetLoadFields("Source Ref. No.");
ReservationEntry.SetSourceFilter(Database::"Transfer Line", 1, TransferLine."Document No.", 0, true);
ReservationEntry.SetRange("Item No.", TransferLine."Item No.");
ReservationEntry.SetRange("Source Prod. Order Line", TransferLine."Line No.");
if ReservationEntry.FindFirst() then
exit(ReservationEntry."Source Ref. No.");
end;
internal procedure GetQtyReservedFromStockState() Result: Enum "Reservation From Stock"
var
TransferLineReserve: Codeunit "Transfer Line-Reserve";
QtyReservedFromStock: Decimal;
begin
QtyReservedFromStock := TransferLineReserve.GetReservedQtyFromInventory(Rec);
if QtyReservedFromStock = 0 then
exit(Result::None);
if QtyReservedFromStock = CalculateReservableOutstandingQuantityBase() then
exit(Result::Full);
exit(Result::Partial);
end;
local procedure CalculateReservableOutstandingQuantityBase() OutstandingQtyBase: Decimal
var
RemQtyBaseInvtItemTransferLine: Query RemQtyBaseInvtItemTransferLine;
begin
RemQtyBaseInvtItemTransferLine.SetTransferLineFilter(Rec);
if RemQtyBaseInvtItemTransferLine.Open() then
if RemQtyBaseInvtItemTransferLine.Read() then
OutstandingQtyBase := RemQtyBaseInvtItemTransferLine.Outstanding_Qty___Base_;
RemQtyBaseInvtItemTransferLine.Close();
end;
local procedure FindPurchRcptHeader(var PurchRcptHeader: Record "Purch. Rcpt. Header")
var
PurchRcptLine: Record "Purch. Rcpt. Line";
DocumentNo: Code[20];
begin
PurchRcptLine.SetLoadFields("Document No.", "Location Code");
PurchRcptLine.SetCurrentKey("Document No.");
PurchRcptLine.SetRange("Location Code", "Transfer-from Code");
if PurchRcptLine.FindSet() then
repeat
GetPurchRcptHeader(PurchRcptHeader, PurchRcptLine, DocumentNo);
until PurchRcptLine.Next() = 0;
PurchRcptHeader.MarkedOnly(true);
end;
local procedure GetPurchRcptHeader(var PurchRcptHeader: Record "Purch. Rcpt. Header"; PurchRcptLine: Record "Purch. Rcpt. Line"; var DocumentNo: Code[20])
begin
if PurchRcptLine."Document No." = DocumentNo then
exit;
PurchRcptHeader.Get(PurchRcptLine."Document No.");
PurchRcptHeader.Mark(true);
DocumentNo := PurchRcptLine."Document No.";
end;
/// <summary>
/// Posts the related inbound transfer receipt for the current transfer header.
/// </summary>
internal procedure PostRelatedInboundTransfer(PreviewMode: Boolean)
var
TransferPostReceipt: Codeunit "TransferOrder-Post Receipt";
begin
TransferPostReceipt.SetSuppressCommit(true);
TransferPostReceipt.SetHideValidationDialog(PreviewMode);
TransferPostReceipt.SetPreviewMode(PreviewMode);
TransferPostReceipt.Run(Rec);
end;
/// <summary>
/// Determines whether the shipment and receipt should be posted together for direct transfers.
/// </summary>
/// <returns>True if direct transfer with "Shipment and Receipt" mode and no inbound warehouse handling; otherwise, false.</returns>
internal procedure ShouldPostReceiptWithShipment(): Boolean
begin
if not Rec."Direct Transfer" then
exit(false);
if InboundWhseHandlingOnLocation(Rec."Transfer-to Code") then
exit(false);
if Rec."Direct Transfer Posting" = Rec."Direct Transfer Posting"::"Direct Transfer" then
exit(false);
exit(true); // Return true ONLY when "Direct Transfer is TRUE and "Shipment and Receipt" is TRUE
end;
internal procedure IsPartiallyShipped(): Boolean
var
TransferLine: Record "Transfer Line";
begin
TransferLine.SetRange("Document No.", Rec."No.");
TransferLine.SetFilter("Quantity Shipped", '> 0');
exit(not TransferLine.IsEmpty);
end;
local procedure InboundWhseHandlingOnLocation(LocationCode: Code[10]): Boolean
var
Location: Record Location;
begin
Location.SetLoadFields("Require Put-away", "Require Receive");
if Location.Get(LocationCode) then
exit(Location."Require Put-away" or Location."Require Receive");
end;
local procedure GetDirectTransferPosting(var TransferHeader: Record "Transfer Header"): Enum "Direct Transfer Posting Type"
var
InventorySetup1: Record "Inventory Setup";
TransferRoute1: Record "Transfer Route";
begin
TransferRoute1.SetLoadFields("Direct Transfer", "Direct Transfer Posting");
if TransferRoute1.Get(TransferHeader."Transfer-from Code", TransferHeader."Transfer-to Code") then
if TransferRoute1."Direct Transfer" then
exit(TransferRoute1."Direct Transfer Posting");
InventorySetup1.SetLoadFields("Direct Transfer Posting Type");
InventorySetup1.GetRecordOnce();
if InventorySetup1."Direct Transfer Posting Type" = InventorySetup1."Direct Transfer Posting Type"::" " then
exit(InventorySetup1."Direct Transfer Posting Type"::"Shipment and Receipt");
exit(InventorySetup1."Direct Transfer Posting Type");
end;
[IntegrationEvent(false, false)]
local procedure OnAddTransferLineFromReceiptLineOnBeforeTransferLineInsert(var TransferLine: Record "Transfer Line"; PurchRcptLine: Record "Purch. Rcpt. Line"; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterAddTransferLineFromReceiptLine(var TransferLine: Record "Transfer Line"; var PurchRcptLine: Record "Purch. Rcpt. Line"; var TempItemLedgerEntry: Record "Item Ledger Entry"; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCheckBeforePost(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCheckBeforeTransferPost(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetNoSeriesCode(var TransferHeader: Record "Transfer Header"; var NoSeriesCode: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetTransferRoute(var TransferHeader: Record "Transfer Header"; TransferRoute: Record "Transfer Route");
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInitRecord(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInitFromTransferToLocation(var TransferHeader: Record "Transfer Header"; Location: Record Location)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInitFromTransferFromLocation(var TransferHeader: Record "Transfer Header"; Location: Record Location)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterTransferLinesEditable(TransferHeader: Record "Transfer Header"; var IsEditable: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterValidateShortcutDimCode(var TransferHeader: Record "Transfer Header"; var xTransferHeader: Record "Transfer Header"; FieldNumber: Integer; var ShortcutDimCode: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckInvtPostingSetup(TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckTransferFromAndToCodesNotTheSame(TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(true, false)]
local procedure OnBeforeDeleteTransferLines(var IsHandled: Boolean; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeGetNoSeriesCode(var TransferHeader: Record "Transfer Header"; InventorySetup: Record "Inventory Setup"; var NoSeriesCode: Code[20]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShouldDeleteOneTransferOrder(var TransferLine: record "Transfer Line"; var ShouldDelete: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeTestNoSeries(TransferHeader: Record "Transfer Header"; InvtSetup: Record "Inventory Setup"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeTransLineDeleteAll(TransferHeader: Record "Transfer Header"; var TransferLine: Record "Transfer Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeUpdateTransLines(TransferHeader: Record "Transfer Header"; FieldID: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateShortcutDimCode(var TransferHeader: Record "Transfer Header"; var xTransferHeader: Record "Transfer Header"; FieldNumber: Integer; var ShortcutDimCode: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferFromCode(var TransferHeader: Record "Transfer Header"; var xTransferHeader: Record "Transfer Header"; var IsHandled: Boolean; var HideValidationDialog: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferToCode(var TransferHeader: Record "Transfer Header"; var xTransferHeader: Record "Transfer Header"; var IsHandled: Boolean; var HideValidationDialog: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeVerifyNoOutboundWhseHandlingOnLocation(LocationCode: Code[10]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnDeleteOneTransferOrderOnBeforeTransHeaderDelete(var TransferHeader: Record "Transfer Header"; var HideValidationDialog: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnShowDocDimOnAfterAssignDimensionSetID(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateAllLineDimOnBeforeTransLineModify(var TransLine: Record "Transfer Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnValidateReceiptDateOnBeforeCalcShipmentDate(var IsHandled: Boolean; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnValidateShipmentDateOnBeforeCalcReceiptDate(var IsHandled: Boolean; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(true, false)]
local procedure OnInitInsertOnBeforeInitSeries(var xTransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(true, false)]
local procedure OnInitInsertOnBeforeInitRecord(var xTransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDeleteOneTransferOrder(var TransHeader2: Record "Transfer Header"; var TransLine2: Record "Transfer Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateTransLinesOnShippingAgentCodeOnBeforeBlockDynamicTracking(var TransferLine: record "Transfer Line"; var TransferHeader: record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateTransLinesOnBeforeModifyTransferLine(TransferHeader: Record "Transfer Header"; var TransferLine: record "Transfer Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateTransLinesOnAfterModifyTransferLine(TransferHeader: Record "Transfer Header"; var TransferLine: record "Transfer Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnValidateDirectTransferOnBeforeValidateInTransitCode(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferFromCity(var TransferHeader: Record "Transfer Header"; var PostCode: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferFromPostCode(var TransferHeader: Record "Transfer Header"; var PostCode: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferToCity(var TransferHeader: Record "Transfer Header"; var PostCode: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateTransferToPostCode(var TransferHeader: Record "Transfer Header"; var PostCode: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnValidateTransferFromCodeOnBeforeUpdateTransLines(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCreateDimFromDefaultDimOnBeforeCreateDim(var TransferHeader: Record "Transfer Header"; FieldNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInitDefaultDimensionSources(var TransferHeader: Record "Transfer Header"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckBeforeTransferPost(TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeVerifyNoInboundWhseHandlingOnLocation(LocationCode: Code[10]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateShippingAgentCode(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeAddTransferLineFromReceiptLine(var TransferLine: Record "Transfer Line"; PurchRcptLine: Record "Purch. Rcpt. Line"; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCreateTransferLinesFromSelectedReceiptLines(var PurchRcptLine: Record "Purch. Rcpt. Line"; var LineNo: Integer; TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateTransferLinesFromSelectedReceiptLines(var PurchRcptLine: Record "Purch. Rcpt. Line"; LineNo: Integer; TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforePerformManualRelease(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCreateDimOnBeforeUpdateLines(var TransferHeader: Record "Transfer Header"; xTransferHeader: Record "Transfer Header"; CurrentFieldNo: Integer; OldDimSetID: Integer; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateTransLinesOnAfterUpdateFromDirectTransfer(var TransferLine: Record "Transfer Line"; TempTransferLine: Record "Transfer Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeTestTransferLine(TransferLine: Record "Transfer Line"; Ship: Boolean)
begin
end;
}