---
id: object/codeunit/5996
type: object
title: Codeunit 5996 "Prod. Order Warehouse Mgt."
summary: Codeunit 5996 "Prod. Order Warehouse Mgt." in Base Application (Microsoft.Manufacturing.Document). 24 public procedures, 23 events, 34 event subscribers. Present since at least BC23, still in BC30, changed in BC24-28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 19f96b018696cefbd2a64b4d3a348327b85bb9346c7397734c8d635873168878
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Manufacturing/Document/ProdOrderWarehouseMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Manufacturing/Document/ProdOrderWarehouseMgt.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 5996
name: Prod. Order Warehouse Mgt.
namespace: Microsoft.Manufacturing.Document
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 98
  events: 23
  subscribers: 34
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 8
  called_by: 13
  implements: 0
---

# Codeunit 5996 "Prod. Order Warehouse Mgt."

> Codeunit 5996 "Prod. Order Warehouse Mgt." in Base Application (Microsoft.Manufacturing.Document). 24 public procedures, 23 events, 34 event subscribers. Present since at least BC23, still in BC30, changed in BC24-28.

Base Application · Microsoft.Manufacturing.Document · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Manufacturing/Document/ProdOrderWarehouseMgt.Codeunit.al) · facts from BC29

## Events published

- `OnBeforeShowProdOrderComponents(var ProdOrderComponent: Record "Prod. Order Component"; SourceSubType: Integer; SourceNo: Code[20]; SourceLineNo: Integer; SourceSubLineNo: Integer; var IsHandled: Boolean)` (integration)
- `OnAfterCreateWhseJnlLineFromConsumptionJournal(var WarehouseJournalLine: Record "Warehouse Journal Line"; var ItemJournalLine: Record "Item Journal Line")` (integration)
- `OnBeforeSetZoneAndBinsForConsumption(ItemJournalLine: Record "Item Journal Line"; var ProdOrderComponent: Record "Prod. Order Component"; var WarehouseJournalLine: Record "Warehouse Journal Line"; Location: Record Location; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateWhseJnlLineFromOutputJournal(ItemJournalLine: Record "Item Journal Line")` (integration)
- `OnSetZoneAndBinsForConsumptionOnBeforeCheckQtyPicked(ItemJournalLine: Record "Item Journal Line"; var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnCreateWhseJnlLineFromOutputJournalOnAfterInitWhseJnlLine(var WarehouseJournalLine: Record "Warehouse Journal Line"; var ItemJournalLine: Record "Item Journal Line")` (integration)
- `OnBeforeCheckProdOrderComponentQtyPickedBase(var ProdOrderComponent: Record "Prod. Order Component"; ItemJournalLine: Record "Item Journal Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCreateWhseJnlLineFromOutputJournal(var WarehouseJournalLine: Record "Warehouse Journal Line"; ItemJournalLine: Record "Item Journal Line")` (integration)
- `OnAfterProdOrderLineDelete(var ProdOrderLine: Record "Prod. Order Line")` (integration)
- `OnAfterProdComponentDelete(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterProdOrderLineVerifyChange(var NewProdOrderLine: Record "Prod. Order Line"; var OldProdOrderLine: Record "Prod. Order Line"; var NewRecordRef: RecordRef; var OldRecordRef: RecordRef)` (integration)
- `OnAfterProdComponentVerifyChange(var NewRecordRef: RecordRef; var OldRecordRef: RecordRef)` (integration)
- `OnBeforeProdComponentVerifyChange(var NewProdOrderComponent: Record "Prod. Order Component"; var OldProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnCalcCrossDockToProdOrderComponentOnBeforeInsertCrossDockLine(ProdOrderComp: Record "Prod. Order Component")` (integration)
- `OnCalcCrossDockToProdOrderComponentOnBeforeFindProdOrderComponent(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnBeforeGetMachineCenterBinCode(MachineCenterNo: Code[20]; LocationCode: Code[10]; UseFlushingMethod: Boolean; FlushingMethod: Enum "Flushing Method"; var Result: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckBinCodeFromProdOrderCompLine(var WarehouseActivityLine: Record "Warehouse Activity Line"; ProdOrderCompLine: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnAfterTransferFromCompLine(var WarehouseActivityLine: Record "Warehouse Activity Line"; ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterSetDestinationType(var WhseRequest: Record "Warehouse Request"; ProdOrder: Record "Production Order")` (integration)
- `OnItemLineVerifyChangeOnBeforeCheckConsumptionQty(NewItemJournalLine: Record "Item Journal Line"; Location: Record Location; var QtyChecked: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckQtyRemainingToBePickedForConsumption(var NewItemJnlLine: Record "Item Journal Line"; var OldItemJnlLine: Record "Item Journal Line"; var IsHandled: Boolean; ProdOrderComp: Record Microsoft.Manufacturing.Document."Prod. Order Component"; QtyRemainingToBePicked: Decimal)` (integration)
- `OnAfterFromProdOrderCompLineCreateWhseWkshLine(var WhseWorksheetLine: Record "Whse. Worksheet Line"; ProdOrderComponent: Record "Prod. Order Component"; LocationCode: Code[10]; ToBinCode: Code[20])` (integration)
- `OnAfterTransferFromOutputLine(var WarehouseActivityLine: Record "Warehouse Activity Line"; ProdOrderLine: Record "Prod. Order Line")` (integration)

## Event subscriptions

- OnShowSourceDocLine subscribes to Codeunit "WMS Management" OnShowSourceDocLine
- OnShowSourceDocCard subscribes to Codeunit "WMS Management" OnShowSourceDocCard
- OnAfterShowWhseActivityDocLine subscribes to Codeunit "WMS Management" OnShowWhseActivityDocLine
- OnCheckIfBinIsEligible subscribes to Codeunit "WMS Management" OnCheckIfBinIsEligible
- OnShowSourceDocumentCard subscribes to Table "Warehouse Request" OnShowSourceDocumentCard
- OnAfterGetSrcDocLineQtyOutstanding subscribes to Codeunit "Whse. Management" OnAfterGetSrcDocLineQtyOutstanding
- WhseManagementGetSourceDocumentType subscribes to Codeunit "Whse. Management" OnAfterGetSourceDocumentType
- WhseManagementGetJournalSourceDocument subscribes to Codeunit "Whse. Management" OnAfterGetJournalSourceDocument
- WhseManagementOnBeforeGetSourceType subscribes to Codeunit "Whse. Management" OnBeforeGetSourceType
- CreatePickOnCheckSourceDocument subscribes to Report "Create Pick" OnCheckSourceDocument
- OnCalcCrossDockToProdOrderComponent subscribes to Codeunit "Whse. Cross-Dock Management" OnCalcCrossDockToProdOrderComponent
- OnCheckBinTypeAndCode subscribes to Codeunit "Whse. Integration Management" OnCheckBinTypeAndCode
- OnAfterIsOpenShopFloorBin subscribes to Codeunit "Whse. Integration Management" OnAfterIsOpenShopFloorBin
- OnValidateBinMandatoryOnAfterCheckBins subscribes to Table "Location" OnValidateBinMandatoryOnAfterCheckBins
- CheckWhseDocLineOnCheckSourceDocument subscribes to Table "Warehouse Activity Line" CheckWhseDocLineOnCheckSourceDocument
- OnCheckBinInSourceDoc subscribes to Table "Warehouse Activity Line" OnCheckBinInSourceDoc
- WarehouseActivityLineOnShowWhseDoc subscribes to Table "Warehouse Activity Line" OnShowWhseDoc
- OnUpdateRelatedItemTrkgForInvtMovement subscribes to Table "Warehouse Activity Line" OnUpdateRelatedItemTrkgForInvtMovement
- OnValidateSourceDocumentOnAssignSourceType subscribes to Table "Warehouse Activity Header" OnValidateSourceDocumentOnAssignSourceType
- RegisteredWhseActivityLineOnShowWhseDoc subscribes to Table "Registered Whse. Activity Line" OnShowWhseDoc
- OnShowReservation subscribes to Table "Whse. Cross-Dock Opportunity" OnShowReservation
- OnGetDestinationEntityName subscribes to Codeunit "WMS Management" OnGetDestinationEntityName
- OnGetCaptionClass subscribes to Codeunit "WMS Management" OnGetCaptionClass
- OnLookupDocumentNo subscribes to Table "Whse. Pick Request" OnLookupDocumentNo
- OnItemLineVerifyChangeOnCheckEntryType subscribes to Codeunit "Whse. Validate Source Line" OnItemLineVerifyChangeOnCheckEntryType
- OnSetSourceFilters subscribes to Page "Whse. Item Tracking Lines" OnSetSourceFilters
- OnCopyToReservEntryOnUpdate subscribes to Page "Whse. Item Tracking Lines" OnCopyToReservEntryOnUpdate
- OnWhseItemTrackingLinesSetSource subscribes to Table "Whse. Worksheet Line" OnWhseItemTrackingLinesSetSource
- OnCalcLineReservedQtyOnInvtOnSetSourceFilters subscribes to Codeunit "Warehouse Availability Mgt." OnCalcLineReservedQtyOnInvtOnSetSourceFilters
- OnCalcLineReservQtyOnPicksShipsOnAfterCalcPickedNotYetShippedQty subscribes to Codeunit "Warehouse Availability Mgt." OnCalcLineReservQtyOnPicksShipsOnAfterCalcPickedNotYetShippedQty
- OnBeforeCalcQtyRegisteredPick subscribes to Codeunit "Warehouse Availability Mgt." OnBeforeCalcQtyRegisteredPick
- OnGetOutboundBinsOnBasicWarehouseLocationOnAfterSetWarehouseEntryFilters subscribes to Codeunit "Warehouse Availability Mgt." OnGetOutboundBinsOnBasicWarehouseLocationOnAfterSetWarehouseEntryFilters
- OnAfterGetWhseRqstSourceDocument subscribes to Codeunit "Whse. Management" OnAfterGetWhseRqstSourceDocument
- OnProdWhseHandlingIsInventoryPutaway subscribes to Table "Warehouse Activity Header" OnProdWhseHandlingIsInventoryPutaway

## Procedures

- `ShowProdOrderLine(WhseDocNo: Code[20]; WhseDocLineNo: Integer)`
- `CreateWhseJnlLineFromConsumptionJournal(ItemJournalLine: Record "Item Journal Line"; var WarehouseJournalLine: Record "Warehouse Journal Line"): Boolean`
- `CreateWhseJnlLineFromOutputJournal(ItemJournalLine: Record "Item Journal Line"; var WarehouseJournalLine: Record "Warehouse Journal Line"): Boolean`
- `GetPlanningRtngLastOperationFromBinCode(WkshTemplateName: Code[10]; WkshBatchName: Code[10]; WkshLineNo: Integer; LocationCode: Code[10]): Code[20]`
- `GetProdCenterLocationCode(Type: Enum "Capacity Type"; No: Code[20]): Code[10]`
- `GetProdCenterBinCode(Type: Enum "Capacity Type"; No: Code[20]; LocationCode: Code[10]; UseFlushingMethod: Boolean; FlushingMethod: Enum "Flushing Method"): Code[20]`
- `GetDefaultBin(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; var BinCode: Code[20]): Boolean`
- `GetLastOperationFromBinCode(RoutingNo: Code[20]; RoutingVersionCode: Code[20]; LocationCode: Code[10]; UseFlushingMethod: Boolean; FlushingMethod: Enum "Flushing Method"): Code[20]`
- `GetLastOperationLocationCode(RoutingNo: Code[20]; RoutingVersionCode: Code[20]): Code[10]`
- `GetProdRoutingLastOperationFromBinCode(ProdOrderStatus: Enum "Production Order Status"; ProdOrderNo: Code[20]; RoutingRefNo: Integer; RoutingNo: Code[20]; LocationCode: Code[10]): Code[20]`
- `ProdComponentVerifyChange(var NewProdOrderComponent: Record "Prod. Order Component"; var OldProdOrderComponent: Record "Prod. Order Component")`
- `ProdComponentDelete(var ProdOrderComponent: Record "Prod. Order Component")`
- `ProdOrderLineVerifyChange(var NewProdOrderLine: Record "Prod. Order Line"; var OldProdOrderLine: Record "Prod. Order Line")`
- `ProdOrderLineDelete(var ProdOrderLine: Record "Prod. Order Line")`
- `ValidateWarehousePutAwayLocation(ProdOrderLine: Record "Prod. Order Line")`
- `CompareProdOrderWithProdOrderLinesForLocation(ProductionOrder: Record "Production Order"; ProdOrderLine: Record "Prod. Order Line")`
- `CheckBinTypeAndCode(BinType: Record "Bin Type"; AdditionalIdentifier: Option; SourceTable: Integer; BinCodeFieldCaption: Text)`
- `CheckLocationOnBins(Location: Record Location)` (internal)
- `TransferFromCompLine(var WarehouseActivityLine: Record "Warehouse Activity Line"; ProdOrderCompLine: Record "Prod. Order Component")`
- `TransferFromOutputLine(var WarehouseActivityLine: Record "Warehouse Activity Line"; ProdOrderLine: Record "Prod. Order Line")`
- `SetDestinationType(ProdOrder: Record "Production Order"; var WarehouseRequest: Record "Warehouse Request")`
- `CalcNextLevelProdOutput(ProdOrderComp: Record "Prod. Order Component"): Decimal`
- `FromProdOrderCompLine(WhseWkshTemplateName: Code[10]; WhseWkshName: Code[10]; LocationCode: Code[10]; ToBinCode: Code[20]; ProdOrderCompLine: Record "Prod. Order Component"): Boolean`
- `FromProdOrderLine(WhseWkshTemplateName: Code[10]; WhseWkshName: Code[10]; LocationCode: Code[10]; FromBinCode: Code[20]; ProdOrderLine: Record "Prod. Order Line"): Boolean`

Plus 17 local procedures.

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 5777 "Whse. Validate Source Line"](../codeunit/5777.md) (13 calls: `OnItemLineVerifyChangeOnCheckEntryType → WhseLinesExist`, `OnItemLineVerifyChangeOnCheckEntryType → WhseWorkSheetLinesExist`, `ProdComponentDelete → RaiseCannotBeDeletedErr`, …)
- [Codeunit 5775 "Whse. Management"](../codeunit/5775.md) (5 calls: `CreatePickOnCheckSourceDocument → GetSourceDocumentDoesNotExistErr`, `CreateWhseJnlLineFromConsumptionJournal → GetWhseJnlSourceDocument`, `CreateWhseJnlLineFromOutputJournal → GetWhseJnlSourceDocument`, …)
- [Codeunit 7302 "WMS Management"](../codeunit/7302.md) (5 calls: `CreateWhseJnlLineFromConsumptionJournal → InitWhseJnlLine`, `CreateWhseJnlLineFromConsumptionJournal → TransferWhseItemTracking`, `CreateWhseJnlLineFromOutputJournal → InitWhseJnlLine`, …)
- [Codeunit 7311 "Whse. Worksheet-Create"](../codeunit/7311.md) (4 calls: `FromProdOrderCompLine → CreateWhseWkshLine`, `FromProdOrderCompLine → FindLastWhseWkshLine`, `FromProdOrderLine → CreateWhseWkshLine`, …)
- [Page 99000831 "Released Production Order"](../page/99000831.md) (3 calls: `OnShowSourceDocCard → (object)`, `OnShowSourceDocumentCard → (object)`, `WarehouseActivityLineOnShowWhseDoc → (object)`)
- [Codeunit 5780 "Whse. Cross-Dock Management"](../codeunit/5780.md) (1 call: `CalcCrossDockToProdOrderComponent → InsertCrossDockOpp`)
- [Page 5406 "Prod. Order Line List"](../page/5406.md) (1 call: `ShowProdOrderLine → (object)`)
- [Page 5407 "Prod. Order Comp. Line List"](../page/5407.md) (1 call: `OnShowSourceDocLine → (object)`)

## Called by

- [Codeunit 99000773 "Calculate Prod. Order"](../codeunit/99000773.md) (5 calls: `GetDefaultBin → GetDefaultBin`, `SetProdOrderLineBinCode → GetDefaultBin`, `SetProdOrderLineBinCodeFromPlanningRtngLines → GetPlanningRtngLastOperationFromBinCode`, …)
- [Table 5405 "Production Order"](../table/5405.md) (3 calls: `GetDefaultBin → GetDefaultBin`, `GetDefaultBin → GetLastOperationFromBinCode`, `ValidateWarehousePutAwayLocation → CompareProdOrderWithProdOrderLinesForLocation`)
- [Table 5407 "Prod. Order Component"](../table/5407.md) (3 calls: `AdjustQtyToQtyPicked → CalcNextLevelProdOutput`, `OnDelete → ProdComponentDelete`, `OnModify → ProdComponentVerifyChange`)
- [Codeunit 5774 "Whse.-Production Release"](../codeunit/5774.md) (2 calls: `CreateWarehouseRequest → SetDestinationType`, `ReleaseLine → SetDestinationType`)
- [Codeunit 99000787 "Create Prod. Order Lines"](../codeunit/99000787.md) (2 calls: `InitProdOrderLine → CompareProdOrderWithProdOrderLinesForLocation`, `InitProdOrderLine → ValidateWarehousePutAwayLocation`)
- [Codeunit 99000822 "Mfg. Item Jnl.-Post Line"](../codeunit/99000822.md) (2 calls: `InsertConsumpEntry → CreateWhseJnlLineFromConsumptionJournal`, `PostOutput → CreateWhseJnlLineFromOutputJournal`)
- [Table 5406 "Prod. Order Line"](../table/5406.md) (2 calls: `GetDefaultBin → GetLastOperationFromBinCode`, `OnDelete → ProdOrderLineDelete`)
- [Codeunit 7325 "Whse.-Output Prod. Release"](../codeunit/7325.md) (1 call: `CreateWarehouseRequest → SetDestinationType`)
- [Codeunit 99000866 "Mfg. Requisition Line"](../codeunit/99000866.md) (1 call: `OnSetFromBinCodeOnSetBinCode → GetLastOperationFromBinCode`)
- [Codeunit 99000869 "Mfg. Invt. Profile Offsetting"](../codeunit/99000869.md) (1 call: `OnFillTempSKUForLocation → GetLastOperationLocationCode`)
- [Codeunit 99000873 "Mfg. Create Pick"](../codeunit/99000873.md) (1 call: `OnCreateTempActivityLineForCustomWhseSource → TransferFromCompLine`)
- [Codeunit 99000893 "Mfg. Create Put-away"](../codeunit/99000893.md) (1 call: `CreateNewWhseActivityForProdOrderLine → TransferFromOutputLine`)
- [Table extension 99000829 "Mfg. Planning Component"](../tableextension/99000829.md) (1 call: `GetRefOrderTypeBin → GetProdCenterBinCode`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-28

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "Prod. Order Warehouse Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
