Codeunit 99000885 Mfg. ItemTrackingNavigateMgt, source in 29
Source29
src/Layers/W1/BaseApp/Manufacturing/Inventory/Tracking/MfgItemTrackingNavigateMgt.Codeunit.al105 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.Inventory.Ledger;
using Microsoft.Manufacturing.Document;
codeunit 99000885 "Mfg. ItemTrackingNavigateMgt"
{
SingleInstance = true;
var
TempProdOrder: Record "Production Order" temporary;
TempProdOrderLine: Record "Prod. Order Line" temporary;
TempProdOrderComp: Record "Prod. Order Component" temporary;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Item Tracking Navigate Mgt.", 'OnFindTrackingRecordsOnBeforeFind', '', true, false)]
local procedure OnFindTrackingRecordsOnBeforeFind()
begin
TempProdOrder.DeleteAll();
TempProdOrderComp.DeleteAll();
TempProdOrderLine.DeleteAll();
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Item Tracking Navigate Mgt.", 'OnFindLedgerEntryByDocumentType', '', true, false)]
local procedure OnFindLedgerEntryByDocumentType(var ItemLedgerEntry: Record "Item Ledger Entry"; RecRef: RecordRef; var sender: Codeunit "Item Tracking Navigate Mgt.")
begin
if ItemLedgerEntry."Entry Type" in [ItemLedgerEntry."Entry Type"::Consumption, ItemLedgerEntry."Entry Type"::Output] then
FindProductionOrder(ItemLedgerEntry."Document No.", RecRef, sender);
end;
local procedure FindProductionOrder(DocumentNo: Code[20]; RecRef: RecordRef; var sender: Codeunit "Item Tracking Navigate Mgt.")
var
ProdOrder: Record "Production Order";
begin
if not ProdOrder.ReadPermission then
exit;
ProdOrder.SetRange(Status, ProdOrder.Status::Released, ProdOrder.Status::Finished);
ProdOrder.SetRange("No.", DocumentNo);
if ProdOrder.FindFirst() then begin
RecRef.GetTable(ProdOrder);
sender.InsertBufferRecFromItemLedgEntry();
TempProdOrder := ProdOrder;
if TempProdOrder.Insert() then;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Item Tracking Navigate Mgt.", 'OnFindReservEntryOnBeforeCaseDocumentType', '', true, false)]
local procedure OnFindReservEntryOnBeforeCaseDocumentType(var ReservationEntry: Record "Reservation Entry"; RecRef: RecordRef; var IsHandled: Boolean; var sender: Codeunit "Item Tracking Navigate Mgt.")
begin
case ReservationEntry."Source Type" of
Database::"Prod. Order Line":
FindProdOrderLines(ReservationEntry, RecRef, sender);
Database::"Prod. Order Component":
FindProdOrderComponents(ReservationEntry, RecRef, sender);
end;
end;
local procedure FindProdOrderLines(ReservEntry: Record "Reservation Entry"; RecRef: RecordRef; var sender: Codeunit "Item Tracking Navigate Mgt.")
var
ProdOrderLine: Record "Prod. Order Line";
begin
if not ProdOrderLine.ReadPermission then
exit;
if ProdOrderLine.Get(ReservEntry."Source Subtype", ReservEntry."Source ID", ReservEntry."Source Prod. Order Line") then begin
RecRef.GetTable(ProdOrderLine);
sender.InsertBufferRecFromReservEntry();
TempProdOrderLine := ProdOrderLine;
if TempProdOrderLine.Insert() then;
end;
end;
local procedure FindProdOrderComponents(ReservEntry: Record "Reservation Entry"; RecRef: RecordRef; var sender: Codeunit "Item Tracking Navigate Mgt.")
var
ProdOrderComp: Record "Prod. Order Component";
begin
if not ProdOrderComp.ReadPermission then
exit;
if ProdOrderComp.Get(ReservEntry."Source Subtype", ReservEntry."Source ID", ReservEntry."Source Prod. Order Line", ReservEntry."Source Ref. No.") then begin
RecRef.GetTable(ProdOrderComp);
sender.InsertBufferRecFromReservEntry();
TempProdOrderComp := ProdOrderComp;
if TempProdOrderComp.Insert() then;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Item Tracking Navigate Mgt.", 'OnShowTable', '', true, false)]
local procedure OnShowTable(TableNo: Integer)
begin
case TableNo of
Database::"Production Order":
PAGE.Run(0, TempProdOrder);
Database::"Prod. Order Line":
PAGE.Run(0, TempProdOrderLine);
Database::"Prod. Order Component":
PAGE.Run(0, TempProdOrderComp);
end;
end;
}