Codeunit 7317 Whse. Integration Management, source in 29
Source29
src/Layers/W1/BaseApp/Warehouse/Structure/WhseIntegrationManagement.Codeunit.al162 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.Structure;
using Microsoft.Inventory.Journal;
using Microsoft.Inventory.Location;
using Microsoft.Warehouse.Document;
codeunit 7317 "Whse. Integration Management"
{
trigger OnRun()
begin
end;
var
#pragma warning disable AA0074
#pragma warning disable AA0470
Text000: Label '%1 must not be the Adjustment Bin Code of the location %2.';
Text001: Label 'The bin %1 is Dedicated.\Do you still want to use this bin?';
#pragma warning restore AA0470
Text002: Label 'The update has been interrupted.';
#pragma warning disable AA0470
Text003: Label 'Location %1 must be set up with Bin Mandatory if the %2 %3 uses it.', Comment = '%2 = Object No., %3 = Object No.';
#pragma warning restore AA0470
#pragma warning restore AA0074
procedure CheckBinTypeAndCode(SourceTable: Integer; BinCodeFieldCaption: Text; LocationCode: Code[10]; BinCode: Code[20]; AdditionalIdentifier: Option)
var
BinType: Record "Bin Type";
ItemJournalLine: Record "Item Journal Line";
Location: Record Location;
Bin: Record Bin;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckBinTypeAndCode(SourceTable, BinCodeFieldCaption, LocationCode, BinCode, AdditionalIdentifier, IsHandled);
if IsHandled then
exit;
Location.Get(LocationCode);
Location.TestField("Bin Mandatory");
if not Location."Directed Put-away and Pick" then
exit;
if BinCode = Location."Adjustment Bin Code" then
Error(Text000, BinCodeFieldCaption, LocationCode);
IsHandled := false;
OnCheckBinTypeCodeOnBeforeCheckPerSource(SourceTable, BinCodeFieldCaption, LocationCode, BinCode, AdditionalIdentifier, IsHandled);
if IsHandled then
exit;
Bin.Get(LocationCode, BinCode);
Bin.TestField("Bin Type Code");
BinType.Get(Bin."Bin Type Code");
case SourceTable of
Database::"Warehouse Shipment Header",
Database::"Warehouse Shipment Line":
BinType.TestField(Ship, true);
Database::"Warehouse Receipt Header",
Database::"Warehouse Receipt Line":
BinType.TestField(Receive, true);
Database::Location:
case BinCodeFieldCaption of
Location.FieldCaption("Open Shop Floor Bin Code"),
Location.FieldCaption("To-Production Bin Code"),
Location.FieldCaption("To-Assembly Bin Code"),
Location.FieldCaption("To-Job Bin Code"):
BinType.AllowPutawayOrQCBinsOnly();
Location.FieldCaption("From-Production Bin Code"),
Location.FieldCaption("From-Assembly Bin Code"):
BinType.AllowPutawayPickOrQCBinsOnly();
end;
Database::"Item Journal Line":
case AdditionalIdentifier of
ItemJournalLine."Entry Type"::Output.AsInteger():
BinType.AllowPutawayPickOrQCBinsOnly();
ItemJournalLine."Entry Type"::Consumption.AsInteger():
BinType.AllowPutawayOrQCBinsOnly();
end;
else
OnCheckBinTypeAndCode(Location, Bin, BinType, SourceTable, BinCodeFieldCaption, AdditionalIdentifier);
end;
end;
procedure CheckIfBinDedicatedOnSrcDoc(LocationCode: Code[10]; var BinCode: Code[20]; IssueWarning: Boolean)
var
Bin: Record Bin;
begin
if BinCode <> '' then
if Bin.Get(LocationCode, BinCode) then
if Bin.Dedicated then
if IssueWarning then begin
if not
Confirm(
StrSubstNo(Text001, BinCode), false)
then
Error(Text002)
end else
BinCode := '';
end;
procedure CheckBinCodeForLocation(LocationCode: Code[10]; BinCode: Code[20]; BinCaption: Text; Number: Code[20])
var
Bin: Record Bin;
Location: Record Location;
begin
if BinCode <> '' then begin
Location.Get(LocationCode);
if not Location."Bin Mandatory" then
Error(Text003, Location.Code, Location.TableCaption(), Number);
Bin.Get(LocationCode, BinCode);
CheckBinTypeAndCode(Database::Location, BinCaption, LocationCode, BinCode, 0);
end;
end;
procedure IsOpenShopFloorBin(LocationCode: Code[10]; BinCode: Code[20]) Result: Boolean
var
Location: Record Location;
begin
Location.Get(LocationCode);
if BinCode = Location."Open Shop Floor Bin Code" then
exit(true);
OnAfterIsOpenShopFloorBin(LocationCode, BinCode, Result);
exit(Result);
end;
[IntegrationEvent(false, false)]
local procedure OnCheckBinTypeCodeOnBeforeCheckPerSource(SourceTable: Integer; BinCodeFieldCaption: Text; LocationCode: Code[10]; BinCode: Code[20]; AdditionalIdentifier: Option; var IsHandled: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCheckBinTypeAndCode(Location: Record Location; Bin: Record Bin; BinType: Record "Bin Type"; SourceTable: Integer; BinCodeFieldCaption: Text; AdditionalIdentifier: Option)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckBinTypeAndCode(SourceTable: Integer; BinCodeFieldCaption: Text; LocationCode: Code[10]; BinCode: Code[20]; AdditionalIdentifier: Option; var IsHandled: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterIsOpenShopFloorBin(LocationCode: Code[10]; BinCode: Code[20]; var Result: Boolean);
begin
end;
}