Codeunit 99000815 Reservation-Check Date Confl., source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Tracking/ReservationCheckDateConfl.Codeunit.al635 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.Tracking;
using Microsoft.Foundation.Enums;
using Microsoft.Inventory.Document;
using Microsoft.Inventory.Journal;
using Microsoft.Inventory.Planning;
using Microsoft.Inventory.Requisition;
using Microsoft.Inventory.Transfer;
using Microsoft.Projects.Project.Planning;
using Microsoft.Purchases.Document;
using Microsoft.Sales.Document;
codeunit 99000815 "Reservation-Check Date Confl."
{
trigger OnRun()
begin
end;
var
ReservationEntry: Record "Reservation Entry";
ReservationEngineMgt: Codeunit "Reservation Engine Mgt.";
ReservMgt: Codeunit "Reservation Management";
DateConflictMsg: Label 'The change causes a date conflict with an existing reservation on %2 for %1 units.\ \The reservations have been canceled. The production order must be replanned.', Comment = '%1: Field(Reserved Quantity (Base)), %2: Field(Due Date)';
DateConflictErr: Label 'The change leads to a date conflict with existing reservations.\Reserved quantity (Base): %1, Date %2\Cancel or change reservations and try again.', Comment = '%1 - reserved quantity, %2 - date';
procedure SalesLineCheck(SalesLine: Record "Sales Line"; ForceRequest: Boolean)
var
SalesLineReserve: Codeunit "Sales Line-Reserve";
IsHandled: Boolean;
begin
if not SalesLineReserve.FindReservEntry(SalesLine, ReservationEntry) then
exit;
IsHandled := false;
OnSalesLineCheckOnBeforeIssueError(ReservationEntry, SalesLine, IsHandled, ForceRequest);
if not IsHandled then
if DateConflict(SalesLine."Shipment Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(SalesLine."Shipment Date");
IsHandled := false;
OnSalesLineCheckOnBeforeUpdateDate(ReservationEntry, SalesLine, IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, SalesLine."Shipment Date");
ReservMgt.SetReservSource(SalesLine);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(SalesLine."Outstanding Qty. (Base)");
end;
procedure PurchLineCheck(PurchaseLine: Record "Purchase Line"; ForceRequest: Boolean)
var
PurchLineReserve: Codeunit "Purch. Line-Reserve";
IsHandled: Boolean;
begin
if not PurchLineReserve.FindReservEntry(PurchaseLine, ReservationEntry) then
exit;
IsHandled := false;
OnPurchLineCheckOnBeforeIssueError(ReservationEntry, PurchaseLine, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(PurchaseLine."Expected Receipt Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(PurchaseLine."Expected Receipt Date");
IsHandled := false;
OnPurchLineCheckOnBeforeUpdateDate(ReservationEntry, PurchaseLine, IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, PurchaseLine."Expected Receipt Date");
ReservMgt.SetReservSource(PurchaseLine);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(PurchaseLine."Outstanding Qty. (Base)");
end;
procedure ItemJnlLineCheck(ItemJournalLine: Record "Item Journal Line"; ForceRequest: Boolean)
var
ItemJnlLineReserve: Codeunit "Item Jnl. Line-Reserve";
IsHandled: Boolean;
begin
if not ItemJnlLineReserve.FindReservEntry(ItemJournalLine, ReservationEntry) then
exit;
IsHandled := false;
OnItemJnlLineCheckOnBeforeIssueError(ReservationEntry, ItemJournalLine, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(ItemJournalLine."Posting Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(ItemJournalLine."Posting Date");
IsHandled := false;
OnItemJnlLineCheckOnBeforeUpdateDate(ReservationEntry, ItemJournalLine, IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, ItemJournalLine."Posting Date");
ReservMgt.SetReservSource(ItemJournalLine);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(ItemJournalLine."Quantity (Base)");
end;
procedure ReqLineCheck(RequisitionLine: Record "Requisition Line"; ForceRequest: Boolean)
var
ReqLineReserve: Codeunit "Req. Line-Reserve";
IsHandled: Boolean;
begin
if not ReqLineReserve.FindReservEntry(RequisitionLine, ReservationEntry) then
exit;
IsHandled := false;
OnReqLineCheckOnBeforeIssueError(ReservationEntry, RequisitionLine, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(RequisitionLine."Due Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(RequisitionLine."Due Date");
IsHandled := false;
OnReqLineCheckOnBeforeUpdateDate(ReservationEntry, RequisitionLine, IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, RequisitionLine."Due Date");
ReservMgt.SetReservSource(RequisitionLine);
IsHandled := false;
OnReqLineCheckOnBeforeClearSurplus(ReservMgt, IsHandled);
if not IsHandled then
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(RequisitionLine."Quantity (Base)");
end;
#if not CLEAN27
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
procedure ProdOrderLineCheck(ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; ForceRequest: Boolean)
var
MfgReservCheckDateConfl: Codeunit "Mfg. ReservCheckDateConfl";
begin
MfgReservCheckDateConfl.ProdOrderLineCheck(ProdOrderLine, ForceRequest);
end;
#endif
#if not CLEAN27
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
procedure ProdOrderComponentCheck(ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component"; ForceRequest: Boolean; IsCritical: Boolean): Boolean
var
MfgReservCheckDateConfl: Codeunit "Mfg. ReservCheckDateConfl";
begin
exit(MfgReservCheckDateConfl.ProdOrderComponentCheck(ProdOrderComponent, ForceRequest, IsCritical));
end;
#endif
#if not CLEAN27
[Obsolete('Moved to codeunit "Asm. ReservCheckDateConfl"', '27.0')]
procedure AssemblyHeaderCheck(AssemblyHeader: Record Microsoft.Assembly.Document."Assembly Header"; ForceRequest: Boolean)
var
AsmReservCheckDateConfl: Codeunit "Asm. ReservCheckDateConfl";
begin
AsmReservCheckDateConfl.AssemblyHeaderCheck(AssemblyHeader, ForceRequest);
end;
#endif
#if not CLEAN27
[Obsolete('Moved to codeunit "Asm. ReservCheckDateConfl"', '27.0')]
procedure AssemblyLineCheck(AssemblyLine: Record Microsoft.Assembly.Document."Assembly Line"; ForceRequest: Boolean)
var
AsmReservCheckDateConfl: Codeunit "Asm. ReservCheckDateConfl";
begin
AsmReservCheckDateConfl.AssemblyLineCheck(AssemblyLine, ForceRequest);
end;
#endif
procedure PlanningComponentCheck(PlanningComponent: Record "Planning Component"; ForceRequest: Boolean)
var
PlngComponentReserve: Codeunit "Plng. Component-Reserve";
IsHandled: Boolean;
begin
if not PlngComponentReserve.FindReservEntry(PlanningComponent, ReservationEntry) then
exit;
IsHandled := false;
OnPlanningComponentCheckOnBeforeIssueError(ReservationEntry, PlanningComponent, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(PlanningComponent."Due Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(PlanningComponent."Due Date");
IsHandled := false;
OnPlanningComponentCheckOnBeforeUpdateDate(ReservationEntry, PlanningComponent, IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, PlanningComponent."Due Date");
ReservMgt.SetReservSource(PlanningComponent);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(PlanningComponent."Net Quantity (Base)");
end;
procedure TransferLineCheck(TransferLine: Record "Transfer Line")
var
TransferLineReserve: Codeunit "Transfer Line-Reserve";
ResEntryFound: Boolean;
ForceRequest: Boolean;
Direction: Enum "Transfer Direction";
IsHandled: Boolean;
begin
if TransferLineReserve.FindReservEntry(TransferLine, ReservationEntry, Direction::Outbound) then begin
ResEntryFound := true;
ForceRequest := true;
IsHandled := false;
OnTransferLineCheckOutboundOnBeforeIssueError(ReservationEntry, TransferLine, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(TransferLine."Shipment Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(TransferLine."Shipment Date");
IsHandled := false;
OnTransLineCheckOnBeforeUpdateDate(ReservationEntry, TransferLine, Direction.AsInteger(), IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, TransferLine."Shipment Date");
end;
if TransferLineReserve.FindInboundReservEntry(TransferLine, ReservationEntry) then begin
ResEntryFound := true;
ForceRequest := true;
IsHandled := false;
OnTransferLineCheckInboundOnBeforeIssueError(ReservationEntry, TransferLine, ForceRequest, IsHandled);
if not IsHandled then
if DateConflict(TransferLine."Receipt Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(TransferLine."Receipt Date");
IsHandled := false;
OnTransLineCheckOnBeforeUpdateDate(ReservationEntry, TransferLine, Direction.AsInteger(), IsHandled);
if not IsHandled then
UpdateDate(ReservationEntry, TransferLine."Receipt Date");
end;
if not ResEntryFound then
exit;
ReservMgt.SetReservSource(TransferLine, Direction);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(TransferLine."Outstanding Qty. (Base)");
end;
procedure JobPlanningLineCheck(JobPlanningLine: Record "Job Planning Line"; ForceRequest: Boolean)
var
JobPlanningLineReserve: Codeunit "Job Planning Line-Reserve";
begin
if not JobPlanningLineReserve.FindReservEntry(JobPlanningLine, ReservationEntry) then
exit;
if DateConflict(JobPlanningLine."Planning Date", ForceRequest, ReservationEntry) then
if ForceRequest then
IssueError(JobPlanningLine."Planning Date");
UpdateDate(ReservationEntry, JobPlanningLine."Planning Date");
ReservMgt.SetReservSource(JobPlanningLine);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(JobPlanningLine."Remaining Qty. (Base)");
end;
procedure InvtDocLineCheck(InvtDocumentLine: Record "Invt. Document Line"; ForceRequest: Boolean): Boolean
var
InvtDocLineReserve: Codeunit "Invt. Doc. Line-Reserve";
begin
if not InvtDocLineReserve.FindReservEntry(InvtDocumentLine, ReservationEntry) then
exit;
if DateConflict(InvtDocumentLine."Document Date", ForceRequest, ReservationEntry) then
if ForceRequest then IssueError(InvtDocumentLine."Document Date");
UpdateDate(ReservationEntry, InvtDocumentLine."Document Date");
ReservMgt.SetReservSource(InvtDocumentLine);
ReservMgt.ClearSurplus();
ReservMgt.AutoTrack(InvtDocumentLine."Quantity (Base)");
end;
procedure UpdateDate(var FilterReservationEntry: Record "Reservation Entry"; Date: Date)
var
ForceModifyShipmentDate: Boolean;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeUpdateDate(FilterReservationEntry, Date, IsHandled);
if IsHandled then
exit;
FilterReservationEntry.SetRange("Reservation Status");
if not FilterReservationEntry.Find('-') then
exit;
repeat
ForceModifyShipmentDate := false;
OnUpdateDateFilterReservEntryLoop(FilterReservationEntry, ForceModifyShipmentDate, Date);
if FilterReservationEntry."Quantity (Base)" < 0 then
if (FilterReservationEntry."Expected Receipt Date" <> 0D) and
(Date < FilterReservationEntry."Expected Receipt Date") and not ForceModifyShipmentDate
then
if (FilterReservationEntry.Binding <> FilterReservationEntry.Binding::"Order-to-Order") and
FilterReservationEntry.TrackingExists()
then
ReservationEngineMgt.SplitTrackingConnection(FilterReservationEntry, Date)
else
if SameProdOrderAutoReserve(FilterReservationEntry) then
ReservationEngineMgt.ModifyExpectedReceiptDate(FilterReservationEntry, Date)
else
ReservationEngineMgt.CloseReservEntry(FilterReservationEntry, false, false)
else
ReservationEngineMgt.ModifyShipmentDate(FilterReservationEntry, Date)
else
if ((FilterReservationEntry."Shipment Date" <> 0D) and
(FilterReservationEntry."Shipment Date" < Date)) and not ForceModifyShipmentDate
then
if (FilterReservationEntry.Binding <> FilterReservationEntry.Binding::"Order-to-Order") and
FilterReservationEntry.TrackingExists()
then
ReservationEngineMgt.SplitTrackingConnection(FilterReservationEntry, Date)
else
ReservationEngineMgt.CloseReservEntry(FilterReservationEntry, false, false)
else
ReservationEngineMgt.ModifyExpectedReceiptDate(FilterReservationEntry, Date);
until FilterReservationEntry.Next() = 0;
end;
procedure DateConflict(Date: Date; var ForceRequest: Boolean; var ReservationEntry1: Record "Reservation Entry") IsConflict: Boolean
var
ReservationEntry2: Record "Reservation Entry";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeDateConflict(ReservationEntry1, Date, IsConflict, IsHandled);
if IsHandled then
exit;
ReservationEntry2.Copy(ReservationEntry1);
if not ReservationEntry2.FindFirst() then
exit(false);
if ReservationEntry2."Quantity (Base)" < 0 then
ReservationEntry2.SetFilter("Expected Receipt Date", '>%1', Date)
else
if Date <> 0D then
ReservationEntry2.SetRange("Shipment Date", 00000101D, Date - 1);
OnDateConflictOnAfterSetReservationEntry2Filters(ReservationEntry2, Date, ForceRequest);
if ReservationEntry2.IsEmpty() then
exit(false);
IsConflict := true;
// Don't look at tracking and surplus:
ReservationEntry2.SetRange("Reservation Status", ReservationEntry2."Reservation Status"::Reservation);
ForceRequest := not ReservationEntry2.IsEmpty() and ForceRequest;
OnAfterDateConflict(ReservationEntry1, Date, IsConflict, ForceRequest);
exit(IsConflict);
end;
procedure IssueError(NewDate: Date)
var
ReservQty: Decimal;
begin
ReservQty := CalcReservQty(NewDate);
Error(DateConflictErr, ReservQty, NewDate);
end;
procedure IssueError(var CalcReservEntry: Record "Reservation Entry"; NewDate: Date)
var
ReservQty: Decimal;
begin
ReservQty := CalcReservQty(CalcReservEntry, NewDate);
Error(DateConflictErr, ReservQty, NewDate);
end;
procedure IssueWarning(NewDate: Date)
var
ReservQty: Decimal;
begin
ReservQty := CalcReservQty(NewDate);
Message(DateConflictMsg, ReservQty, NewDate);
end;
procedure IssueWarning(var CalcReservEntry: Record "Reservation Entry"; NewDate: Date)
var
ReservQty: Decimal;
begin
ReservQty := CalcReservQty(CalcReservEntry, NewDate);
Message(DateConflictMsg, ReservQty, NewDate);
end;
local procedure CalcReservQty(NewDate: Date): Decimal
begin
exit(CalcReservQty(ReservationEntry, NewDate));
end;
internal procedure CalcReservQty(var CalcReservEntry: Record "Reservation Entry"; NewDate: Date): Decimal
var
ReservationEntry2: Record "Reservation Entry";
CreateReservEntry: Codeunit "Create Reserv. Entry";
ReservDueDate: Date;
ReservExpectDate: Date;
SumValue: Decimal;
begin
ReservationEntry2.Copy(CalcReservEntry);
ReservDueDate := NewDate;
ReservExpectDate := NewDate;
if not ReservationEntry2.Find('-') then
exit(0);
if ReservationEntry2."Quantity (Base)" < 0 then
ReservExpectDate := 0D
else
ReservDueDate := DMY2Date(31, 12, 9999);
repeat
SumValue += ReservationEntry2."Quantity (Base)";
if ReservationEntry2."Quantity (Base)" < 0 then begin
if ReservationEntry2."Expected Receipt Date" <> 0D then // Item ledger entries will be 0D.
if (ReservationEntry2."Expected Receipt Date" > ReservExpectDate) and
(ReservationEntry2."Expected Receipt Date" > ReservDueDate)
then
ReservExpectDate := ReservationEntry2."Expected Receipt Date";
end else
if ReservationEntry2."Shipment Date" <> 0D then // Item ledger entries will be 0D.
if (ReservationEntry2."Shipment Date" < ReservDueDate) and (ReservationEntry2."Shipment Date" < ReservExpectDate) then
ReservDueDate := ReservationEntry2."Shipment Date";
until ReservationEntry2.Next() = 0;
exit(CreateReservEntry.SignFactor(ReservationEntry2) * SumValue);
end;
local procedure SameProdOrderAutoReserve(FilterReservationEntry: Record "Reservation Entry") Result: Boolean
begin
OnSameProdOrderAutoReserve(FilterReservationEntry, Result);
end;
#if not CLEAN27
internal procedure RunOnBeforeCheckProdOrderLineDateConflict(DueDate: Date; var ForceRequest: Boolean; var ReservationEntry2: Record "Reservation Entry"; var IsHandled: Boolean)
begin
OnBeforeCheckProdOrderLineDateConflict(DueDate, ForceRequest, ReservationEntry2, IsHandled);
end;
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckProdOrderLineDateConflict(DueDate: Date; var ForceRequest: Boolean; var ReservationEntry: Record "Reservation Entry"; var IsHandled: Boolean)
begin
end;
#endif
[IntegrationEvent(false, false)]
local procedure OnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; NewDate: Date; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnSalesLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; SalesLine: Record "Sales Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(true, false)]
local procedure OnPurchLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnReqLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; RequisitionLine: Record "Requisition Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnItemJnlLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; ItemJournalLine: Record "Item Journal Line"; var IsHandled: Boolean)
begin
end;
#if not CLEAN27
internal procedure RunOnProdOrderLineCheckOnBeforeUpdateDate(var ReservationEntry2: Record "Reservation Entry"; ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var IsHandled: Boolean)
begin
OnProdOrderLineCheckOnBeforeUpdateDate(ReservationEntry2, ProdOrderLine, IsHandled);
end;
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnProdOrderLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var IsHandled: Boolean)
begin
end;
#endif
#if not CLEAN27
internal procedure RunOnProdOrderComponentCheckOnBeforeUpdateDate(var ReservationEntry2: Record "Reservation Entry"; ProdOrderComp: Record Microsoft.Manufacturing.Document."Prod. Order Component"; var IsHandled: Boolean)
begin
OnProdOrderComponentCheckOnBeforeUpdateDate(ReservationEntry2, ProdOrderComp, IsHandled);
end;
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnProdOrderComponentCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; ProdOrderComp: Record Microsoft.Manufacturing.Document."Prod. Order Component"; var IsHandled: Boolean)
begin
end;
#endif
[IntegrationEvent(false, false)]
local procedure OnPlanningComponentCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; PlanningComponent: Record "Planning Component"; var IsHandled: Boolean)
begin
end;
#if not CLEAN27
internal procedure RunOnAssemblyHeaderCheckOnBeforeUpdateDate(var ReservationEntry2: Record "Reservation Entry"; AssemblyHeader: Record Microsoft.Assembly.Document."Assembly Header"; var IsHandled: Boolean)
begin
OnAssemblyHeaderCheckOnBeforeUpdateDate(ReservationEntry2, AssemblyHeader, IsHandled);
end;
[Obsolete('Moved to codeunit AsmReservCheckDateConfl', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnAssemblyHeaderCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; AssemblyHeader: Record Microsoft.Assembly.Document."Assembly Header"; var IsHandled: Boolean)
begin
end;
#endif
#if not CLEAN27
internal procedure RunOnAssemblyLineCheckOnBeforeUpdateDate(var ReservationEntry2: Record "Reservation Entry"; AssemblyLine: Record Microsoft.Assembly.Document."Assembly Line"; var IsHandled: Boolean)
begin
OnAssemblyLineCheckOnBeforeUpdateDate(ReservationEntry2, AssemblyLine, IsHandled);
end;
[Obsolete('Moved to codeunit AsmReservCheckDateConfl', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnAssemblyLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; AssemblyLine: Record Microsoft.Assembly.Document."Assembly Line"; var IsHandled: Boolean)
begin
end;
#endif
[IntegrationEvent(false, false)]
local procedure OnAfterDateConflict(var ReservationEntry: Record "Reservation Entry"; var Date: Date; var IsConflict: Boolean; var ForceRequest: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDateConflict(var ReservationEntry: Record "Reservation Entry"; var Date: Date; var IsConflict: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnTransLineCheckOnBeforeUpdateDate(var ReservationEntry: Record "Reservation Entry"; TransferLine: Record "Transfer Line"; Direction: Option; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateDateFilterReservEntryLoop(var ReservationEntry: Record "Reservation Entry"; var ForceModifyShipmentDate: Boolean; Date: Date)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnSalesLineCheckOnBeforeIssueError(ReservationEntry: Record "Reservation Entry"; SalesLine: Record "Sales Line"; var IsHandled: Boolean; var ForceRequest: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPurchLineCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; PurchaseLine: Record "Purchase Line"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnReqLineCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; RequisitionLine: Record "Requisition Line"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
#if not CLEAN27
internal procedure RunOnProdOrderComponentCheckOnBeforeIssueError(var ReservationEntry2: Record "Reservation Entry"; ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
OnProdOrderComponentCheckOnBeforeIssueError(ReservationEntry2, ProdOrderComponent, ForceRequest, IsHandled);
end;
[Obsolete('Moved to codeunit "Mfg. ReservCheckDateConfl"', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnProdOrderComponentCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
#endif
[IntegrationEvent(false, false)]
local procedure OnItemJnlLineCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; ItemJournalLine: Record "Item Journal Line"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
#if not CLEAN27
internal procedure RunOnAssemblyHeaderCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; AssemblyHeader: Record Microsoft.Assembly.Document."Assembly Header"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
OnAssemblyHeaderCheckOnBeforeIssueError(ReservationEntry, AssemblyHeader, ForceRequest, IsHandled);
end;
[Obsolete('Moved to codeunit AsmReservCheckDateConfl', '27.0')]
[IntegrationEvent(false, false)]
local procedure OnAssemblyHeaderCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; AssemblyHeader: Record Microsoft.Assembly.Document."Assembly Header"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
#endif
[IntegrationEvent(false, false)]
local procedure OnTransferLineCheckOutboundOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; TransferLine: Record "Transfer Line"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnTransferLineCheckInboundOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; TransferLine: Record "Transfer Line"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPlanningComponentCheckOnBeforeIssueError(var ReservationEntry: Record "Reservation Entry"; PlanningComponent: Record "Planning Component"; var ForceRequest: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnSameProdOrderAutoReserve(var FilterReservationEntry: Record "Reservation Entry"; var Result: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnReqLineCheckOnBeforeClearSurplus(var ReservMgt: Codeunit "Reservation Management"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnDateConflictOnAfterSetReservationEntry2Filters(var ReservationEntry2: Record "Reservation Entry"; Date: Date; var ForceRequest: Boolean)
begin
end;
}