Report 7315 Calculate Whse. Adjustment
- App
- Base Application
- Namespace
- Microsoft.Warehouse.Journal
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Warehouse/Journal/CalculateWhseAdjustment.Report.al602 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.Journal;
using Microsoft.Foundation.AuditCodes;
using Microsoft.Foundation.NoSeries;
using Microsoft.Foundation.UOM;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Journal;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Tracking;
using Microsoft.Warehouse.Ledger;
using Microsoft.Warehouse.Structure;
using System.Utilities;
report 7315 "Calculate Whse. Adjustment"
{
Caption = 'Calculate Warehouse Adjustment';
ProcessingOnly = true;
dataset
{
dataitem(Item; Item)
{
DataItemTableView = sorting("No.");
RequestFilterFields = "No.", "Location Filter", "Variant Filter";
dataitem("Integer"; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
trigger OnAfterGetRecord()
var
AdjmtBin: Record Bin;
ReservationEntry: Record "Reservation Entry";
WhseItemTrackingSetup: Record "Item Tracking Setup";
SNLotNumbersByBin: Query "Lot Numbers by Bin";
begin
Location.Reset();
Item.CopyFilter("Location Filter", Location.Code);
Location.SetRange("Directed Put-away and Pick", true);
if Location.FindSet() then
repeat
AdjmtBin.Get(Location.Code, Location."Adjustment Bin Code");
SNLotNumbersByBin.SetRange(Location_Code, Location.Code);
SNLotNumbersByBin.SetRange(Zone_Code, AdjmtBin."Zone Code");
SNLotNumbersByBin.SetRange(Bin_Code, AdjmtBin.Code);
SNLotNumbersByBin.SetRange(Item_No, Item."No.");
SNLotNumbersByBin.SetFilter(Variant_Code, Item.GetFilter("Variant Filter"));
SNLotNumbersByBin.SetFilter(Lot_No, Item.GetFilter("Lot No. Filter"));
SNLotNumbersByBin.SetFilter(Serial_No, Item.GetFilter("Serial No. Filter"));
SNLotNumbersByBin.SetFilter(Package_No, Item.GetFilter("Package No. Filter"));
OnAfterGetRecordItemOnAfterSNLotNumbersByBinSetFilters(SNLotNumbersByBin, Item);
SNLotNumbersByBin.Open();
while SNLotNumbersByBin.Read() do begin
TempAdjmtBinContentBuffer.Init();
TempAdjmtBinContentBuffer."Item No." := SNLotNumbersByBin.Item_No;
TempAdjmtBinContentBuffer."Variant Code" := SNLotNumbersByBin.Variant_Code;
TempAdjmtBinContentBuffer."Location Code" := SNLotNumbersByBin.Location_Code;
TempAdjmtBinContentBuffer."Bin Code" := SNLotNumbersByBin.Bin_Code;
TempAdjmtBinContentBuffer."Unit of Measure Code" := SNLotNumbersByBin.Unit_of_Measure_Code;
TempAdjmtBinContentBuffer."Base Unit of Measure" := Item."Base Unit of Measure";
TempAdjmtBinContentBuffer."Lot No." := SNLotNumbersByBin.Lot_No;
TempAdjmtBinContentBuffer."Serial No." := SNLotNumbersByBin.Serial_No;
TempAdjmtBinContentBuffer."Package No." := SNLotNumbersByBin.Package_No;
TempAdjmtBinContentBuffer."Qty. to Handle (Base)" := SNLotNumbersByBin.Sum_Qty_Base;
OnBeforeAdjmtBinQuantityBufferInsert(TempAdjmtBinContentBuffer, WhseEntry, SNLotNumbersByBin);
TempAdjmtBinContentBuffer.Insert();
end;
until Location.Next() = 0;
TempAdjmtBinContentBuffer.Reset();
ReservationEntry.Reset();
ReservationEntry.SetCurrentKey("Source ID");
ItemJnlLine.Reset();
ItemJnlLine.SetCurrentKey("Item No.");
if TempAdjmtBinContentBuffer.FindSet() then
repeat
ItemJnlLine.Reset();
ItemJnlLine.SetCurrentKey("Item No.");
ItemJnlLine.SetRange("Journal Template Name", ItemJnlLine."Journal Template Name");
ItemJnlLine.SetRange("Journal Batch Name", ItemJnlLine."Journal Batch Name");
ItemJnlLine.SetRange("Item No.", TempAdjmtBinContentBuffer."Item No.");
ItemJnlLine.SetRange("Location Code", TempAdjmtBinContentBuffer."Location Code");
ItemJnlLine.SetRange("Unit of Measure Code", TempAdjmtBinContentBuffer."Unit of Measure Code");
ItemJnlLine.SetRange("Warehouse Adjustment", true);
OnAfterGetRecordItemOnAfterItemJnlLineSetFilters(ItemJnlLine, TempAdjmtBinContentBuffer);
if ItemJnlLine.FindSet() then
repeat
ReservationEntry.SetRange("Source Type", Database::"Item Journal Line");
ReservationEntry.SetRange("Source ID", ItemJnlLine."Journal Template Name");
ReservationEntry.SetRange("Source Batch Name", ItemJnlLine."Journal Batch Name");
ReservationEntry.SetRange("Source Ref. No.", ItemJnlLine."Line No.");
WhseItemTrackingSetup.CopyTrackingFromBinContentBuffer(TempAdjmtBinContentBuffer);
ReservationEntry.SetTrackingFilterFromItemTrackingSetupIfNotBlank(WhseItemTrackingSetup);
OnAfterGetRecordItemOnAfterReservationEntrySetFilters(TempAdjmtBinContentBuffer, ReservationEntry);
ReservationEntry.CalcSums("Qty. to Handle (Base)");
if ReservationEntry."Qty. to Handle (Base)" <> 0 then begin
TempAdjmtBinContentBuffer."Qty. to Handle (Base)" += ReservationEntry."Qty. to Handle (Base)";
OnBeforeAdjmtBinQuantityBufferModify(TempAdjmtBinContentBuffer, ReservationEntry);
TempAdjmtBinContentBuffer.Modify();
OnAfterGetRecordItemOnAfterAdjmtBinContentBufferModify(TempAdjmtBinContentBuffer, ItemJnlLine, ReservationEntry);
end;
OnAfterGetRecordItemOnBeforeNextItemJournalLine(TempAdjmtBinContentBuffer, ItemJnlLine, ReservationEntry);
until ItemJnlLine.Next() = 0;
until TempAdjmtBinContentBuffer.Next() = 0;
end;
trigger OnPostDataItem()
var
QtyInUOM: Decimal;
begin
TempAdjmtBinContentBuffer.Reset();
if TempAdjmtBinContentBuffer.FindSet() then
repeat
TempAdjmtBinContentBuffer.SetRange("Location Code", TempAdjmtBinContentBuffer."Location Code");
TempAdjmtBinContentBuffer.SetRange("Variant Code", TempAdjmtBinContentBuffer."Variant Code");
TempAdjmtBinContentBuffer.SetRange("Unit of Measure Code", TempAdjmtBinContentBuffer."Unit of Measure Code");
TempAdjmtBinContentBuffer.SetFilter("Qty. to Handle (Base)", '>0');
OnPostDataItemOnAfterAdjmtBinContentBufferSetFilters(TempAdjmtBinContentBuffer);
TempAdjmtBinContentBuffer.CalcSums("Qty. to Handle (Base)");
QtyInUOM :=
UOMMgt.CalcQtyFromBase(
TempAdjmtBinContentBuffer."Item No.", TempAdjmtBinContentBuffer."Variant Code", TempAdjmtBinContentBuffer."Unit of Measure Code", -TempAdjmtBinContentBuffer."Qty. to Handle (Base)",
UOMMgt.GetQtyPerUnitOfMeasure(Item, TempAdjmtBinContentBuffer."Unit of Measure Code"));
if QtyInUOM <> 0 then
InsertItemJnlLine(TempAdjmtBinContentBuffer, QtyInUOM, -TempAdjmtBinContentBuffer."Qty. to Handle (Base)", TempAdjmtBinContentBuffer."Unit of Measure Code", 1);
TempAdjmtBinContentBuffer.SetFilter("Qty. to Handle (Base)", '<0');
TempAdjmtBinContentBuffer.CalcSums("Qty. to Handle (Base)");
QtyInUOM :=
UOMMgt.CalcQtyFromBase(TempAdjmtBinContentBuffer."Item No.", TempAdjmtBinContentBuffer."Variant Code", TempAdjmtBinContentBuffer."Unit of Measure Code", -TempAdjmtBinContentBuffer."Qty. to Handle (Base)",
UOMMgt.GetQtyPerUnitOfMeasure(Item, TempAdjmtBinContentBuffer."Unit of Measure Code"));
if QtyInUOM <> 0 then
InsertItemJnlLine(TempAdjmtBinContentBuffer, QtyInUOM, -TempAdjmtBinContentBuffer."Qty. to Handle (Base)", TempAdjmtBinContentBuffer."Unit of Measure Code", 0);
// rounding residue
TempAdjmtBinContentBuffer.SetRange("Qty. to Handle (Base)");
TempAdjmtBinContentBuffer.CalcSums("Qty. to Handle (Base)");
QtyInUOM :=
UOMMgt.CalcQtyFromBase(
TempAdjmtBinContentBuffer."Item No.", TempAdjmtBinContentBuffer."Variant Code", TempAdjmtBinContentBuffer."Unit of Measure Code", -TempAdjmtBinContentBuffer."Qty. to Handle (Base)",
UOMMgt.GetQtyPerUnitOfMeasure(Item, TempAdjmtBinContentBuffer."Unit of Measure Code"));
if (QtyInUOM = 0) and (TempAdjmtBinContentBuffer."Qty. to Handle (Base)" > 0) then
InsertItemJnlLine(TempAdjmtBinContentBuffer, -TempAdjmtBinContentBuffer."Qty. to Handle (Base)", -TempAdjmtBinContentBuffer."Qty. to Handle (Base)", TempAdjmtBinContentBuffer."Base Unit of Measure", 1);
TempAdjmtBinContentBuffer.FindLast();
TempAdjmtBinContentBuffer.SetRange("Location Code");
TempAdjmtBinContentBuffer.SetRange("Variant Code");
TempAdjmtBinContentBuffer.SetRange("Unit of Measure Code");
OnPostDataItemOnAfterAdjmtBinContentBufferClearFilters(TempAdjmtBinContentBuffer);
until TempAdjmtBinContentBuffer.Next() = 0;
TempAdjmtBinContentBuffer.Reset();
TempAdjmtBinContentBuffer.DeleteAll();
end;
trigger OnPreDataItem()
begin
Clear(Location);
WhseEntry.Reset();
WhseEntry.SetCurrentKey("Item No.", "Bin Code", "Location Code", "Variant Code");
WhseEntry.SetRange("Item No.", Item."No.");
Item.CopyFilter("Variant Filter", WhseEntry."Variant Code");
WhseEntry.SetTrackingFilterFromItemFilters(Item);
if WhseEntry.IsEmpty() then
CurrReport.Break();
FillProspectReservationEntryBuffer(Item, ItemJnlLine."Journal Template Name", ItemJnlLine."Journal Batch Name");
TempAdjmtBinContentBuffer.Reset();
TempAdjmtBinContentBuffer.DeleteAll();
end;
}
trigger OnAfterGetRecord()
begin
if not HideValidationDialog then
Window.Update();
end;
trigger OnPostDataItem()
begin
if not HideValidationDialog then
Window.Close();
end;
trigger OnPreDataItem()
var
ItemJnlTemplate: Record "Item Journal Template";
ItemJnlBatch: Record "Item Journal Batch";
begin
if PostingDate = 0D then
Error(Text000);
ItemJnlTemplate.Get(ItemJnlLine."Journal Template Name");
ItemJnlBatch.Get(ItemJnlLine."Journal Template Name", ItemJnlLine."Journal Batch Name");
if NextDocNo = '' then begin
if ItemJnlBatch."No. Series" <> '' then begin
ItemJnlLine.SetRange("Journal Template Name", ItemJnlLine."Journal Template Name");
ItemJnlLine.SetRange("Journal Batch Name", ItemJnlLine."Journal Batch Name");
if not ItemJnlLine.Find('-') then
NextDocNo := NoSeriesBatch.GetNextNo(ItemJnlBatch."No. Series", PostingDate);
ItemJnlLine.Init();
end;
if NextDocNo = '' then
Error(Text001);
end;
NextLineNo := 0;
if not HideValidationDialog then
Window.Open(Text002, "No.");
end;
}
}
requestpage
{
Caption = 'Calculate Inventory';
SaveValues = true;
layout
{
area(content)
{
group(Options)
{
Caption = 'Options';
field(PostingDate; PostingDate)
{
ApplicationArea = Warehouse;
Caption = 'Posting Date';
ToolTip = 'Specifies the date for the posting of this batch job. The program automatically enters the work date in this field, but you can change it.';
ShowMandatory = true;
trigger OnValidate()
begin
ValidatePostingDate();
end;
}
field(NextDocNo; NextDocNo)
{
ApplicationArea = Warehouse;
Caption = 'Document No.';
ToolTip = 'Specifies a manually entered document number that will be entered in the Document No. field, on the journal lines created by the batch job.';
ShowMandatory = DocumentNoInputMandatory;
}
}
}
}
actions
{
}
trigger OnOpenPage()
begin
if PostingDate = 0D then
PostingDate := WorkDate();
ValidatePostingDate();
end;
}
labels
{
}
var
ItemJnlBatch: Record "Item Journal Batch";
ItemJnlLine: Record "Item Journal Line";
WhseEntry: Record "Warehouse Entry";
Location: Record Location;
SourceCodeSetup: Record "Source Code Setup";
TempAdjmtBinContentBuffer: Record "Bin Content Buffer" temporary;
TempReservationEntryBuffer: Record "Reservation Entry" temporary;
NoSeriesBatch: Codeunit "No. Series - Batch";
UOMMgt: Codeunit "Unit of Measure Management";
Window: Dialog;
PostingDate: Date;
NextDocNo: Code[20];
NextLineNo: Integer;
DocumentNoInputMandatory: Boolean;
#pragma warning disable AA0074
Text000: Label 'Enter the posting date.';
Text001: Label 'Enter the document no.';
#pragma warning disable AA0470
Text002: Label 'Processing items #1##########';
#pragma warning restore AA0470
#pragma warning restore AA0074
protected var
HideValidationDialog: Boolean;
procedure SetItemJnlLine(var NewItemJnlLine: Record "Item Journal Line")
begin
ItemJnlLine := NewItemJnlLine;
end;
local procedure ValidatePostingDate()
var
NoSeries: Codeunit "No. Series";
begin
ItemJnlBatch.Get(ItemJnlLine."Journal Template Name", ItemJnlLine."Journal Batch Name");
if ItemJnlBatch."No. Series" = '' then begin
DocumentNoInputMandatory := true;
NextDocNo := '';
end else begin
DocumentNoInputMandatory := false;
NextDocNo := NoSeries.PeekNextNo(ItemJnlBatch."No. Series", PostingDate);
end;
end;
local procedure InsertItemJnlLine(var TempBinContentBuffer: Record "Bin Content Buffer" temporary; Quantity2: Decimal; QuantityBase2: Decimal; UOM2: Code[10]; EntryType2: Option "Negative Adjmt.","Positive Adjmt.")
var
IsHandled: Boolean;
begin
OnBeforeFunctionInsertItemJnlLine(
TempBinContentBuffer."Item No.", TempBinContentBuffer."Variant Code", TempBinContentBuffer."Location Code",
Quantity2, QuantityBase2, UOM2, EntryType2);
if NextLineNo = 0 then begin
ItemJnlLine.LockTable();
ItemJnlLine.Reset();
ItemJnlLine.SetRange("Journal Template Name", ItemJnlLine."Journal Template Name");
ItemJnlLine.SetRange("Journal Batch Name", ItemJnlLine."Journal Batch Name");
if ItemJnlLine.Find('+') then
NextLineNo := ItemJnlLine."Line No.";
SourceCodeSetup.Get();
end;
NextLineNo := NextLineNo + 10000;
if QuantityBase2 <> 0 then begin
ItemJnlLine.Init();
ItemJnlLine."Line No." := NextLineNo;
ItemJnlLine.Validate("Posting Date", PostingDate);
if QuantityBase2 > 0 then
ItemJnlLine.Validate("Entry Type", ItemJnlLine."Entry Type"::"Positive Adjmt.")
else begin
ItemJnlLine.Validate("Entry Type", ItemJnlLine."Entry Type"::"Negative Adjmt.");
Quantity2 := -Quantity2;
QuantityBase2 := -QuantityBase2;
end;
IsHandled := false;
OnInsertItemLineOnBeforeValidateFields(ItemJnlLine, ItemJnlBatch, SourceCodeSetup, IsHandled, TempBinContentBuffer, NextDocNo, UOM2);
if not IsHandled then begin
ItemJnlLine.Validate("Document No.", NextDocNo);
ItemJnlLine.Validate("Item No.", TempBinContentBuffer."Item No.");
ItemJnlLine.Validate("Variant Code", TempBinContentBuffer."Variant Code");
ItemJnlLine.Validate("Location Code", TempBinContentBuffer."Location Code");
ItemJnlLine.Validate("Source Code", SourceCodeSetup."Item Journal");
ItemJnlLine.Validate("Unit of Measure Code", UOM2);
end;
ItemJnlLine."Posting No. Series" := ItemJnlBatch."Posting No. Series";
ItemJnlLine.Validate(Quantity, Quantity2);
ItemJnlLine."Quantity (Base)" := QuantityBase2;
ItemJnlLine."Invoiced Qty. (Base)" := QuantityBase2;
ItemJnlLine."Warehouse Adjustment" := true;
OnInsertItemJnlLineOnBeforeInsert(ItemJnlLine, TempAdjmtBinContentBuffer);
ItemJnlLine.Insert(true);
OnAfterInsertItemJnlLine(ItemJnlLine);
CreateReservationEntry(ItemJnlLine, TempBinContentBuffer, EntryType2, UOM2);
end;
OnAfterFunctionInsertItemJnlLine(
TempBinContentBuffer."Item No.", TempBinContentBuffer."Variant Code", TempBinContentBuffer."Location Code",
Quantity2, QuantityBase2, UOM2, EntryType2, ItemJnlLine);
end;
procedure InitializeRequest(NewPostingDate: Date; DocNo: Code[20])
begin
PostingDate := NewPostingDate;
NextDocNo := DocNo;
end;
procedure SetHideValidationDialog(NewHideValidationDialog: Boolean)
begin
HideValidationDialog := NewHideValidationDialog;
end;
local procedure FillProspectReservationEntryBuffer(var Item: Record Item; JournalTemplateName: Code[10]; JournalBatchName: Code[10])
var
ReservationEntry: Record "Reservation Entry";
begin
TempReservationEntryBuffer.Reset();
TempReservationEntryBuffer.DeleteAll();
ReservationEntry.Reset();
ReservationEntry.SetRange("Source Type", Database::"Item Journal Line");
ReservationEntry.SetRange("Source ID", JournalTemplateName);
ReservationEntry.SetRange("Source Batch Name", JournalBatchName);
ReservationEntry.SetRange("Reservation Status", ReservationEntry."Reservation Status"::Prospect);
ReservationEntry.SetRange("Item No.", Item."No.");
ReservationEntry.SetFilter("Variant Code", Item."Variant Filter");
if ReservationEntry.FindSet() then
repeat
TempReservationEntryBuffer := ReservationEntry;
TempReservationEntryBuffer.Insert();
until ReservationEntry.Next() = 0;
end;
local procedure CreateReservationEntry(var ItemJournalLine: Record "Item Journal Line"; var TempBinContentBuffer: Record "Bin Content Buffer" temporary; EntryType: Option "Negative Adjmt.","Positive Adjmt."; UOMCode: Code[10])
var
ReservEntry: Record "Reservation Entry";
WarehouseEntry: Record "Warehouse Entry";
WarehouseEntry2: Record "Warehouse Entry";
WhseItemTrackingSetup: Record "Item Tracking Setup";
CreateReservEntry: Codeunit "Create Reserv. Entry";
OrderLineNo: Integer;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCreateReservationEntry(ItemJnlLine, TempBinContentBuffer, EntryType, UOMCode, IsHandled);
if IsHandled then
exit;
TempBinContentBuffer.FindSet();
repeat
WarehouseEntry.SetCurrentKey(
"Item No.", "Bin Code", "Location Code", "Variant Code", "Unit of Measure Code", "Lot No.", "Serial No.", "Entry Type");
WarehouseEntry.SetRange("Item No.", TempBinContentBuffer."Item No.");
WarehouseEntry.SetRange("Bin Code", TempBinContentBuffer."Bin Code");
WarehouseEntry.SetRange("Location Code", TempBinContentBuffer."Location Code");
WarehouseEntry.SetRange("Variant Code", TempBinContentBuffer."Variant Code");
WarehouseEntry.SetRange("Unit of Measure Code", UOMCode);
WarehouseEntry.SetTrackingFilterFromBinContentBuffer(TempBinContentBuffer);
WarehouseEntry.SetFilter("Entry Type", '%1|%2', EntryType, WarehouseEntry."Entry Type"::Movement);
OnCreateReservationEntryOnAfterWarehouseEntrySetFilters(WarehouseEntry, TempBinContentBuffer);
if not WarehouseEntry.FindFirst() then
exit;
TempReservationEntryBuffer.Reset();
WarehouseEntry.CalcSums("Qty. (Base)", Quantity);
WhseItemTrackingSetup.CopyTrackingFromWhseEntry(WarehouseEntry);
UpdateWarehouseEntryQtyByReservationEntryBuffer(WarehouseEntry, WhseItemTrackingSetup);
WarehouseEntry2.CopyFilters(WarehouseEntry);
case EntryType of
EntryType::"Positive Adjmt.":
WarehouseEntry2.SetRange("Entry Type", WarehouseEntry2."Entry Type"::"Negative Adjmt.");
EntryType::"Negative Adjmt.":
WarehouseEntry2.SetRange("Entry Type", WarehouseEntry2."Entry Type"::"Positive Adjmt.");
end;
WarehouseEntry2.CalcSums("Qty. (Base)", Quantity);
UpdateWarehouseEntryQtyByReservationEntryBuffer(WarehouseEntry2, WhseItemTrackingSetup);
if Abs(WarehouseEntry2."Qty. (Base)") > Abs(WarehouseEntry."Qty. (Base)") then begin
WarehouseEntry."Qty. (Base)" := 0;
WarehouseEntry.Quantity := 0;
end else begin
WarehouseEntry."Qty. (Base)" += WarehouseEntry2."Qty. (Base)";
WarehouseEntry.Quantity += WarehouseEntry2.Quantity;
end;
if WarehouseEntry."Qty. (Base)" <> 0 then begin
if ItemJournalLine."Order Type" = ItemJournalLine."Order Type"::Production then
OrderLineNo := ItemJournalLine."Order Line No.";
OnBeforeCreateReservEntryFor(ItemJournalLine, WarehouseEntry);
ReservEntry.CopyTrackingFromWhseEntry(WarehouseEntry);
CreateReservEntry.CreateReservEntryFor(
Database::"Item Journal Line", ItemJournalLine."Entry Type".AsInteger(), ItemJournalLine."Journal Template Name",
ItemJournalLine."Journal Batch Name", OrderLineNo, ItemJournalLine."Line No.", ItemJournalLine."Qty. per Unit of Measure",
Abs(WarehouseEntry.Quantity), Abs(WarehouseEntry."Qty. (Base)"), ReservEntry);
if WarehouseEntry."Qty. (Base)" < 0 then
CreateReservEntry.SetDates(WarehouseEntry."Warranty Date", WarehouseEntry."Expiration Date");
OnCreateReservationEntryOnBeforeCreateReservEntryCreateEntry(ItemJournalLine);
CreateReservEntry.CreateEntry(
ItemJournalLine."Item No.", ItemJournalLine."Variant Code", ItemJournalLine."Location Code", ItemJournalLine.Description,
0D, 0D, 0, "Reservation Status"::Prospect);
end;
until TempBinContentBuffer.Next() = 0;
end;
local procedure UpdateWarehouseEntryQtyByReservationEntryBuffer(var WarehouseEntry: Record "Warehouse Entry"; WhseItemTrackingSetup: Record "Item Tracking Setup")
begin
if WarehouseEntry."Qty. (Base)" = 0 then
exit;
TempReservationEntryBuffer.SetTrackingFilterFromItemTrackingSetupIfNotBlank(WhseItemTrackingSetup);
TempReservationEntryBuffer.SetRange(Positive, WarehouseEntry."Qty. (Base)" < 0);
OnUpdateWarehouseEntryQtyByReservationEntryBufferOnAfterTempReservationEntryBufferSetFilters(TempReservationEntryBuffer, WarehouseEntry);
TempReservationEntryBuffer.CalcSums("Quantity (Base)", Quantity);
WarehouseEntry."Qty. (Base)" += TempReservationEntryBuffer."Quantity (Base)";
WarehouseEntry.Quantity += TempReservationEntryBuffer.Quantity;
OnAfterUpdateWarehouseEntryQtyByReservationEntryBuffer(WarehouseEntry, TempReservationEntryBuffer);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFunctionInsertItemJnlLine(ItemNo: Code[20]; VariantCode2: Code[10]; LocationCode2: Code[10]; Quantity2: Decimal; QuantityBase2: Decimal; UOM2: Code[10]; EntryType2: Option "Negative Adjmt.","Positive Adjmt.")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInsertItemJnlLine(var ItemJournalLine: Record "Item Journal Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterFunctionInsertItemJnlLine(ItemNo: Code[20]; VariantCode2: Code[10]; LocationCode2: Code[10]; Quantity2: Decimal; QuantityBase2: Decimal; UOM2: Code[10]; EntryType2: Option "Negative Adjmt.","Positive Adjmt."; var ItemJournalLine: Record "Item Journal Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterUpdateWarehouseEntryQtyByReservationEntryBuffer(var WarehouseEntry: Record "Warehouse Entry"; var TempReservationEntryBuffer: Record "Reservation Entry" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordItemOnAfterSNLotNumbersByBinSetFilters(var SNLotNumbersByBin: Query "Lot Numbers by Bin"; Item: Record Item)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordItemOnAfterReservationEntrySetFilters(var TempAdjmtBinContentBuffer: Record "Bin Content Buffer" temporary; var ReservationEntry: Record "Reservation Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordItemOnAfterItemJnlLineSetFilters(var ItemJournalLine: Record "Item Journal Line"; BinContentBuffer: Record "Bin Content Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordItemOnAfterAdjmtBinContentBufferModify(BinContentBuffer: Record "Bin Content Buffer"; var ItemJournalLine: Record "Item Journal Line"; var ReservationEntry: Record "Reservation Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeAdjmtBinQuantityBufferInsert(var BinContentBuffer: Record "Bin Content Buffer"; WarehouseEntry: Record "Warehouse Entry"; var SNLotNumbersByBin: Query "Lot Numbers by Bin")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeAdjmtBinQuantityBufferModify(var BinContentBuffer: Record "Bin Content Buffer"; ReservationEntry: Record "Reservation Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCreateReservEntryFor(var ItemJournalLine: Record "Item Journal Line"; var WarehouseEntry: Record "Warehouse Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCreateReservationEntry(var ItemJournalLine: Record "Item Journal Line"; var TempBinContentBuffer: Record "Bin Content Buffer" temporary; EntryType: Option; UOMCode: Code[10]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCreateReservationEntryOnBeforeCreateReservEntryCreateEntry(var ItemJournalLine: Record "Item Journal Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCreateReservationEntryOnAfterWarehouseEntrySetFilters(var WarehouseEntry: Record "Warehouse Entry"; var TempBinContentBuffer: Record "Bin Content Buffer" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertItemJnlLineOnBeforeInsert(var ItemJournalLine: Record "Item Journal Line"; TempBinContentBuffer: Record "Bin Content Buffer" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertItemLineOnBeforeValidateFields(var ItemJournalLine: Record "Item Journal Line"; ItemJournalBatch: Record "Item Journal Batch"; SourceCodeSetup: Record "Source Code Setup"; var IsHandled: Boolean; var TempBinContentBuffer: Record "Bin Content Buffer" temporary; NextDocNo: Code[20]; UOM2: Code[10])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPostDataItemOnAfterAdjmtBinContentBufferSetFilters(var TempBinContentBuffer: Record "Bin Content Buffer" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPostDataItemOnAfterAdjmtBinContentBufferClearFilters(var TempBinContentBuffer: Record "Bin Content Buffer" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnUpdateWarehouseEntryQtyByReservationEntryBufferOnAfterTempReservationEntryBufferSetFilters(var TempReservationEntryBuffer: Record "Reservation Entry" temporary; var WarehouseEntry: Record "Warehouse Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordItemOnBeforeNextItemJournalLine(var TempAdjmtBinContentBuffer: Record "Bin Content Buffer" temporary; var ItemJnlLine: Record "Item Journal Line"; var ReservationEntry: Record "Reservation Entry")
begin
end;
}