Codeunit 5773 Whse.-Transfer Release, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Transfer/WhseTransferRelease.Codeunit.al227 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.Location;
using Microsoft.Warehouse.Request;
codeunit 5773 "Whse.-Transfer Release"
{
trigger OnRun()
begin
end;
var
Location: Record Location;
WhseManagement: Codeunit "Whse. Management";
CalledFromTransferOrder: Boolean;
procedure Release(TransferHeader: Record "Transfer Header")
var
WarehouseRequest: Record "Warehouse Request";
begin
OnBeforeRelease(TransferHeader);
InitializeWhseRequest(WarehouseRequest, TransferHeader, TransferHeader.Status::Released);
if ShouldCreateInboundWhseRequest(TransferHeader."Transfer-to Code") then
CreateInboundWhseRequest(WarehouseRequest, TransferHeader);
if ShouldCreateOutboundWhseRequest(TransferHeader."Transfer-from Code") then
CreateOutboundWhseRequest(WarehouseRequest, TransferHeader);
DeleteOpenWhseRequest(TransferHeader."No.");
OnAfterRelease(TransferHeader);
end;
procedure Reopen(TransferHeader: Record "Transfer Header")
var
WarehouseRequest: Record "Warehouse Request";
begin
OnBeforeReopen(TransferHeader);
if WarehouseRequest.Get("Warehouse Request Type"::Inbound, TransferHeader."Transfer-to Code", DATABASE::"Transfer Line", 1, TransferHeader."No.") then begin
WarehouseRequest."Document Status" := TransferHeader.Status::Open;
WarehouseRequest.Modify();
end;
if WarehouseRequest.Get("Warehouse Request Type"::Outbound, TransferHeader."Transfer-from Code", DATABASE::"Transfer Line", 0, TransferHeader."No.") then begin
WarehouseRequest."Document Status" := TransferHeader.Status::Open;
WarehouseRequest.Modify();
end;
OnAfterReopen(TransferHeader);
end;
[Scope('OnPrem')]
procedure UpdateExternalDocNoForReleasedOrder(TransferHeader: Record "Transfer Header")
var
WarehouseRequest: Record "Warehouse Request";
begin
if WarehouseRequest.Get("Warehouse Request Type"::Inbound, TransferHeader."Transfer-to Code", DATABASE::"Transfer Line", 1, TransferHeader."No.") then begin
WarehouseRequest."External Document No." := TransferHeader."External Document No.";
WarehouseRequest.Modify();
end;
if WarehouseRequest.Get("Warehouse Request Type"::Outbound, TransferHeader."Transfer-from Code", DATABASE::"Transfer Line", 0, TransferHeader."No.") then begin
WarehouseRequest."External Document No." := TransferHeader."External Document No.";
WarehouseRequest.Modify();
end;
end;
procedure InitializeWhseRequest(var WarehouseRequest: Record "Warehouse Request"; TransferHeader: Record "Transfer Header"; DocumentStatus: Option)
begin
WarehouseRequest."Source Type" := DATABASE::"Transfer Line";
WarehouseRequest."Source No." := TransferHeader."No.";
WarehouseRequest."Document Status" := DocumentStatus;
WarehouseRequest."Destination Type" := WarehouseRequest."Destination Type"::Location;
WarehouseRequest."External Document No." := TransferHeader."External Document No.";
end;
procedure CreateInboundWhseRequest(var WarehouseRequest: Record "Warehouse Request"; TransferHeader: Record "Transfer Header")
begin
CheckUnitOfMeasureCode(TransferHeader."No.");
TransferHeader.SetRange("Location Filter", TransferHeader."Transfer-to Code");
TransferHeader.CalcFields("Completely Received");
WarehouseRequest.Type := WarehouseRequest.Type::Inbound;
WarehouseRequest."Source Subtype" := 1;
WarehouseRequest."Source Document" := WhseManagement.GetWhseRqstSourceDocument(WarehouseRequest."Source Type", WarehouseRequest."Source Subtype");
WarehouseRequest."Expected Receipt Date" := TransferHeader."Receipt Date";
WarehouseRequest."Location Code" := TransferHeader."Transfer-to Code";
WarehouseRequest."Completely Handled" := TransferHeader."Completely Received";
WarehouseRequest."Shipment Method Code" := TransferHeader."Shipment Method Code";
WarehouseRequest."Shipping Agent Code" := TransferHeader."Shipping Agent Code";
WarehouseRequest."Shipping Agent Service Code" := TransferHeader."Shipping Agent Service Code";
WarehouseRequest."Destination No." := TransferHeader."Transfer-to Code";
OnBeforeCreateWhseRequest(WarehouseRequest, TransferHeader);
if CalledFromTransferOrder then begin
if WarehouseRequest.Modify() then;
end else
if not WarehouseRequest.Insert() then
WarehouseRequest.Modify();
OnAfterCreateInboundWhseRequest(WarehouseRequest, TransferHeader);
end;
procedure CreateOutboundWhseRequest(var WarehouseRequest: Record "Warehouse Request"; TransferHeader: Record "Transfer Header")
begin
CheckUnitOfMeasureCode(TransferHeader."No.");
TransferHeader.SetRange("Location Filter", TransferHeader."Transfer-from Code");
TransferHeader.CalcFields("Completely Shipped");
WarehouseRequest.Type := WarehouseRequest.Type::Outbound;
WarehouseRequest."Source Subtype" := 0;
WarehouseRequest."Source Document" := WhseManagement.GetWhseRqstSourceDocument(WarehouseRequest."Source Type", WarehouseRequest."Source Subtype");
WarehouseRequest."Location Code" := TransferHeader."Transfer-from Code";
WarehouseRequest."Completely Handled" := TransferHeader."Completely Shipped";
WarehouseRequest."Shipment Method Code" := TransferHeader."Shipment Method Code";
WarehouseRequest."Shipping Agent Code" := TransferHeader."Shipping Agent Code";
WarehouseRequest."Shipping Agent Service Code" := TransferHeader."Shipping Agent Service Code";
WarehouseRequest."Shipping Advice" := TransferHeader."Shipping Advice";
WarehouseRequest."Shipment Date" := TransferHeader."Shipment Date";
WarehouseRequest."Destination No." := TransferHeader."Transfer-from Code";
OnBeforeCreateWhseRequest(WarehouseRequest, TransferHeader);
if not WarehouseRequest.Insert() then
WarehouseRequest.Modify();
OnAfterCreateOutboundWhseRequest(WarehouseRequest, TransferHeader);
end;
local procedure DeleteOpenWhseRequest(TransferOrderNo: Code[20])
var
WarehouseRequest: Record "Warehouse Request";
begin
WarehouseRequest.SetCurrentKey("Source Type", "Source No.");
WarehouseRequest.SetRange("Source Type", DATABASE::"Transfer Line");
WarehouseRequest.SetRange("Source No.", TransferOrderNo);
WarehouseRequest.SetRange("Document Status", WarehouseRequest."Document Status"::Open);
if not WarehouseRequest.IsEmpty() then
WarehouseRequest.DeleteAll(true);
end;
procedure SetCallFromTransferOrder(CalledFromTransferOrder2: Boolean)
begin
CalledFromTransferOrder := CalledFromTransferOrder2;
end;
local procedure CheckUnitOfMeasureCode(DocumentNo: Code[20])
var
TransferLine: Record "Transfer Line";
begin
TransferLine.SetRange("Document No.", DocumentNo);
TransferLine.SetRange("Unit of Measure Code", '');
TransferLine.SetFilter("Item No.", '<>%1', '');
OnCheckUnitOfMeasureCodeOnAfterTransLineSetFilters(TransferLine, DocumentNo);
if TransferLine.FindFirst() then
TransferLine.TestField("Unit of Measure Code");
end;
local procedure ShouldCreateInboundWhseRequest(LocationCode: Code[10]) ShouldCreate: Boolean
begin
ShouldCreate := Location.RequireReceive(LocationCode) or Location.RequirePutaway(LocationCode);
OnAfterShouldCreateInboundWhseRequest(LocationCode, ShouldCreate);
end;
local procedure ShouldCreateOutboundWhseRequest(LocationCode: Code[10]) ShouldCreate: Boolean;
begin
ShouldCreate := Location.RequireShipment(LocationCode) or Location.RequirePicking(LocationCode);
OnAfterShouldCreateOutboundWhseRequest(LocationCode, ShouldCreate);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateInboundWhseRequest(var WarehouseRequest: Record "Warehouse Request"; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateOutboundWhseRequest(var WarehouseRequest: Record "Warehouse Request"; var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCreateWhseRequest(var WarehouseRequest: Record "Warehouse Request"; TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterRelease(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterReopen(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeRelease(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeReopen(var TransferHeader: Record "Transfer Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCheckUnitOfMeasureCodeOnAfterTransLineSetFilters(var TransLine: Record "Transfer Line"; DocumentNo: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterShouldCreateInboundWhseRequest(LocationCode: Code[20]; var ShouldCreate: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterShouldCreateOutboundWhseRequest(LocationCode: Code[20]; var ShouldCreate: Boolean)
begin
end;
}