Codeunit 5708 Release Transfer Document, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Transfer/ReleaseTransferDocument.Codeunit.al179 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.Inventory.Item;
using Microsoft.Inventory.Setup;
codeunit 5708 "Release Transfer Document"
{
TableNo = "Transfer Header";
Permissions = TableData "Transfer Header" = rm;
trigger OnRun()
begin
TransferHeader.Copy(Rec);
Code();
Rec := TransferHeader;
end;
local procedure Code()
var
TransLine: Record "Transfer Line";
IsHandled: Boolean;
begin
if TransferHeader.Status = TransferHeader.Status::Released then
exit;
OnBeforeReleaseTransferDoc(TransferHeader);
TransferHeader.TestField("Transfer-from Code");
TransferHeader.TestField("Transfer-to Code");
IsHandled := false;
OnBeforeCheckTransferCode(TransferHeader, IsHandled);
if not IsHandled then
if TransferHeader."Transfer-from Code" = TransferHeader."Transfer-to Code" then
Error(Text001, TransferHeader."No.", TransferHeader.FieldCaption("Transfer-from Code"), TransferHeader.FieldCaption("Transfer-to Code"));
InvtSetup.Get();
IsHandled := false;
OnBeforeCheckTransitLocations(TransferHeader, IsHandled);
if not IsHandled then
if not TransferHeader."Direct Transfer" then
TransferHeader.TestField("In-Transit Code")
else
if TransferHeader."Direct Transfer Posting" = TransferHeader."Direct Transfer Posting"::"Shipment and Receipt" then
TransferHeader.VerifyNoInboundWhseHandlingOnLocation(TransferHeader."Transfer-to Code");
TransferHeader.TestField(Status, TransferHeader.Status::Open);
CheckTransLines(TransLine, TransferHeader);
IsHandled := false;
OnRunOnBeforeSetStatusReleased(TransferHeader, IsHandled);
if IsHandled then
exit;
TransferHeader.Validate(Status, TransferHeader.Status::Released);
TransferHeader.Modify();
if not (
TransferHeader."Direct Transfer" and
(InvtSetup."Direct Transfer Posting Type" = InvtSetup."Direct Transfer Posting Type"::"Direct Transfer"))
then
WhseTransferRelease.SetCallFromTransferOrder(true);
WhseTransferRelease.Release(TransferHeader);
OnAfterReleaseTransferDoc(TransferHeader);
end;
var
TransferHeader: Record "Transfer Header";
InvtSetup: Record "Inventory Setup";
WhseTransferRelease: Codeunit "Whse.-Transfer Release";
#pragma warning disable AA0074
#pragma warning disable AA0470
Text001: Label 'The transfer order %1 cannot be released because %2 and %3 are the same.';
#pragma warning restore AA0470
#pragma warning restore AA0074
#pragma warning disable AA0470
NothingToReleaseErr: Label 'There is nothing to release for transfer order %1.';
#pragma warning restore AA0470
procedure Reopen(var TransHeader: Record "Transfer Header")
begin
if TransHeader.Status = TransHeader.Status::Open then
exit;
OnBeforeReopenTransferDoc(TransHeader);
WhseTransferRelease.Reopen(TransHeader);
TransHeader.Validate(Status, TransHeader.Status::Open);
TransHeader.Modify();
OnAfterReopenTransferDoc(TransHeader);
end;
procedure Release(var TransHeader: Record "Transfer Header")
begin
if TransHeader.Status = TransHeader.Status::Released then
exit;
TransferHeader.Copy(TransHeader);
Code();
TransHeader := TransferHeader;
end;
local procedure CheckTransLines(var TransLine: Record "Transfer Line"; TransHeader: Record "Transfer Header")
var
Item: Record Item;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckTransLines(TransLine, IsHandled, TransHeader);
if IsHandled then
exit;
TransLine.SetLoadFields("Document No.", Quantity, "Item No.", "Variant Code");
TransLine.SetRange("Document No.", TransHeader."No.");
TransLine.SetFilter(Quantity, '<>0');
if TransLine.IsEmpty() then
Error(NothingToReleaseErr, TransHeader."No.");
TransLine.SetFilter("Item No.", '<>%1', '');
if TransLine.FindSet() then
repeat
Item.Get(TransLine."Item No.");
if Item.IsInventoriableType() then
TransLine.TestField("Unit of Measure Code");
if Item.IsVariantMandatory() then
TransLine.TestField("Variant Code");
until TransLine.Next() = 0;
TransLine.SetFilter("Item No.", '');
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckTransLines(var TransferLine: Record "Transfer Line"; var IsHandled: Boolean; TransHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeReleaseTransferDoc(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeReopenTransferDoc(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterReleaseTransferDoc(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterReopenTransferDoc(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckTransferCode(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckTransitLocations(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnRunOnBeforeSetStatusReleased(var TransferHeader: Record "Transfer Header"; var IsHandled: Boolean)
begin
end;
}