Skip to main content

🏗️ 🇩🇪 Architektur-Übersicht | 🇺🇸 Architecture Overview

🇩🇪 Kernkomponenten Die Architektur basiert auf einer klaren Trennung zwischen Blanket Orders, dem NPI-Management-Codeunit und den generierten Inventardokumenten.

🇺🇸 Core Componets The architecture is based on a clear separation between Blanket Orders, the NPI management codeunit, and the generated inventory documents.

graph TD A[Blanket Order Sales Line] -->|NPI Flag| B(Codeunit 64000: NPI Management) B -->|MakeInventoryShipment| C[Inventory Document Header] B -->|Create Lines| D[Inventory Document Lines] C -->|Ext 64000| E[Partner & Address Data] D -->|Ext 64001| F[Item & Reservation Data]


💾 Datenmodell-Erweiterungen | 🇺🇸 Data Model Extensions

Table Extension 64000: Invt. Document Header

🇩🇪 Diese Erweiterung fügt dem Inventardokument-Header wichtige Partner- und Adressinformationen hinzu, die für den Versandprozess notwendig sind.

🇺🇸 This extension adds important partner and address information to the inventory document header, which is necessary for the shipping process.

🇩🇪 Neue Felder | 🇺🇸 New Fields:

Feld / FieldDatentyp / Data Type🇩🇪 Beschreibung🇺🇸 Description
Partner No.Code[20]Kundennummer (bei Shipment) oder Lieferantennummer (bei Receipt).Customer Number (for Shipment) or Vendor Number (for Receipt).
Partner NameText[100]Name des Partners.Name of the partner.
Partner Name 2Text[50]Zusätzliche Adresszeile für Partner.Additional address line for partner.
AddressText[100]Adresse des Partners.Address of the partner.
Address 2Text[50]Adresszusatz.Address supplement.
CityText[30]Stadt.City.
Post CodeCode[20]Postleitzahl.Postal code.
CountyText[30]Landkreis.County.
Country/Region CodeCode[10]Land/Region.Country/Region.
Ship-to CodeCode[10]Versandadresscode.Ship-to address code.
Ship-to NameText[100]Name der Versandadresse.Name of the ship-to address.

🇩🇪 Validierungslogik / 🇺🇸 Validation Logic

Aspekt / Aspect🇩🇪 Beschreibung🇺🇸 Description
Partner No. ÄnderungBeim Ändern von "Partner No." werden Adressen automatisch vom Kunden- oder Lieferantendatensatz kopiert.When changing "Partner No.", addresses are automatically copied from the customer or vendor record.
Adress-SynchronisationEine automatische Versandadress-Synchronisation stellt sicher, dass die Daten konsistent bleiben.Automatic ship-to address synchronization ensures data remains consistent.

Table Extension 64001: Invt. Document Line

🇩🇪 Diese Erweiterung verknüpft Inventardokumentzeilen direkt mit den zugrunde liegenden Blanket Orders und verwaltet Reservierungsinformationen.

🇺🇸 This extension links inventory document lines directly to the underlying Blanket Orders and manages reservation information.

🇩🇪 Neue Felder | 🇺🇸 New Fields:

Feld / FieldDatentyp / Data Type🇩🇪 Beschreibung🇺🇸 Description
Reserved Qty. (Base)Decimal (FlowField)Reservierte Menge in Basiseinheit.Reserved quantity in base unit.
Blanket Order No.Code[20]Referenz zur Blanket Order.Reference to the Blanket Order.
Blanket Order Line No.IntegerReferenz zur Blanket Order-Zeile.Reference to the Blanket Order line.

🇩🇪 Validierungslogik / 🇺🇸 Validation Logic

Aspekt / Aspect🇩🇪 Beschreibung🇺🇸 Description
ValidierungEs erfolgt eine strenge Prüfung auf den Link zur Blanket Order-Zeile sowie eine Validierung gegen die Sales Line, insbesondere bezüglich des Non-Perpetual Inventory Flags.There is a strict check on the link to the Blanket Order line as well as a validation against the Sales Line, particularly regarding the Non-Perpetual Inventory flag.

Table Extension 64100: Sales Line

🇩🇪 Die Sales Line wird erweitert, um das NPI-Kennzeichen zu speichern und den Status der Inventarversände zu verfolgen.

🇺🇸 The Sales Line is extended to store the NPI flag and track the status of inventory shipments.

🇩🇪 Neue Felder | 🇺🇸 New Fields:

  • Non-Perpetual Inventory (Boolean): 🇩🇪 Kennzeichen für Non-Perpetual Inventory. 🇺🇸 Flag for Non-Perpetual Inventory.
  • Inventory Shipments (Integer, FlowField): 🇩🇪 Anzahl der zugehörigen Inventarversände. 🇺🇸 Number of associated inventory shipments.

🇩🇪 Prozeduren | 🇺🇸 Procedures:

  • ShowInventoryShipmentLines(): Zeigt die zugehörigen Versandzeilen an. 🇺🇸 Displays associated shipment lines.
  • ShowBlanketOrderPostedInventoryShipmentLines(): Zeigt gebuchte Versandzeilen der Blanket Order. 🇺🇸 Shows posted shipment lines of the Blanket Order.

🔌 API-Referenz | 🔌 API Reference

Codeunit 64000: hop365NonPerpetualInventory

  • 🇩🇪 Dies ist die zentrale Steuereinheit für die Erstellung von Inventarversanden aus Blanket Orders.
  • 🇺🇸 This is the central control unit for creating inventory shipments from Blanket Orders.

Procedure: MakeInventoryShipment()

  • 🇩🇪 Zweck: Erstellt ein Inventarversanddokument für Non-Perpetual Inventory Zeilen einer Blanket Order.
  • 🇺🇸 Purpose: Creates an inventory shipment document for Non-Perpetual Inventory lines of a Blanket Order.

Signatur | Signature:

procedure MakeInventoryShipment(pBlanketSalesOrder: Record "Sales Header")

Ablauf | Process Flow:

  1. Validierung | Validation
  • 🇩🇪 Sicherstellen, dass die Order vom Typ "Blanket Order" ist.
  • 🇺🇸 Ensure the order is of type "Blanket Order".
  1. Filterung | Filtering
  • 🇩🇪 Auswahl aller Zeilen mit Qty. to Ship <> 0 und Non-Perpetual Inventory = true.
  • 🇺🇸 Select all lines with Qty. to Ship <> 0 and Non-Perpetual Inventory = true.
  1. Dokumentenerstellung | Document Creation
  • 🇩🇪 Neues Invt. Document Header vom Typ "Shipment" anlegen.
  • 🇺🇸 Create new Invt. Document Header of type "Shipment".
  1. Datenkopie | Data Copy
  • 🇩🇪 Übertragen von Standort, Kundeninfo und Versandadresse.
  • 🇺🇸 Transfer location, customer info, and ship-to address.
  1. Zeilenanlage | Line Creation
  • 🇩🇪 Erstellen der Invt. Document Lines mit Item, Menge und Blanket Order Referenzen.
  • 🇺🇸 Create Invt. Document Lines with item, quantity, and Blanket Order references.
  1. Abschluss | Completion
  • 🇩🇪 Setzen von Sales Line.Qty. to Ship auf 0.
  • 🇺🇸 Set Sales Line.Qty. to Ship to 0.

⚙️ Event Subscriber & Integration | ⚙️ Event Subscriber & Integration

Blanket Order Conversion Validation

Event: Codeunit "Blnkt Sales Ord. to Ord. (Y/N)" - OnBeforeRun Purpose:

  • 🇩🇪 Validiert Blanket Order-Zeilen, bevor diese in Verkaufsaufträge konvertiert werden.
  • 🇺🇸 Validates Blanket Order lines before they are converted to sales orders.

Logik | Logic:

  • 🇩🇪 Der Subscriber prüft, dass keine Zeilen mit Non-Perpetual Inventory = true und Qty. to Ship <> 0 in einen regulären Auftrag konvertiert werden, es sei denn, sie wurden vorher versandt. Zudem wird sichergestellt, dass alle Zeilen denselben Location Code haben.
  • 🇺🇸 The subscriber checks that no lines with Non-Perpetual Inventory = true and Qty. to Ship <> 0 are converted into a regular order unless they have been shipped beforehand. It also ensures that all lines have the same Location Code.

Wichtige Logikschritte | Key Logic Steps:

  1. Reservierungsprüfung | Reservation Check
  • 🇩🇪 Es wird geprüft, ob für die Warensendungslinie Reservierungseinträge existieren.
  • 🇺🇸 Checks if reservation entries exist for the warehouse shipment line.
  1. Lagerplatzzuweisung | Bin Code Assignment
  • 🇩🇪 Die Funktion GetBinCodeFromWarehouseEntry ermittelt den korrekten Bin Code basierend auf Lot und Paket.
  • 🇺🇸 The GetBinCodeFromWarehouseEntry function determines the correct Bin Code based on lot and package.
  1. Zeile-Splitung | Line Splitting
  • 🇩🇪 Falls die Menge der Reservierung von der zu bearbeitenden Menge abweicht, wird die Warehouse Activity Line gesplittet (SplitLine), um die genaue Menge zu erfassen.
  • 🇺🇸 If the reservation quantity differs from the quantity to handle, the Warehouse Activity Line is split (SplitLine) to capture the exact quantity.
  1. Attribut-Mapping | Attribute Mapping
  • 🇩🇪 Lot No. und Package No. werden explizit in die "Take" und "Place" Aktionen der Warehouse Activity geschrieben.
  • 🇺🇸 Lot No. and Package No. are explicitly written to the "Take" and "Place" actions of the Warehouse Activity.

⚙️ Konfiguration | ⚙️ Configuration

Erforderliche Einrichtung | Required Setup

  1. Non-Perpetual Inventory Flag:
  • 🇩🇪 Aktivieren Sie das Feld "Non-Perpetual Inventory" auf den Sales Lines für relevante Artikel.
  • 🇺🇸 Enable the "Non-Perpetual Inventory" field on Sales Lines for relevant items.
  1. Rahmenaufträge | Blanket Orders:
  • 🇩🇪 Stellen Sie sicher, dass der Document Type "Blanket Order" ist und die Zeilen vom Typ "Item" sind.
  • 🇺🇸 Ensure the Document Type is "Blanket Order" and lines are of type "Item".
  1. Kundenadresse | Customer Address:
  • 🇩🇪 Definieren Sie den Ship-to Code auf der Sales Line, damit dieser korrekt in das Inventardokument übernommen wird.
  • 🇺🇸 Define the Ship-to Code on the Sales Line so it is correctly transferred to the inventory document.

🔄 Workflow-Beispiel | 🔄 Workflow Example

Szenario | Scenario

  • 🇩🇪 Non-Perpetual Inventory Shipment erstellen
  • 🇺🇸 Create Non-Perpetual Inventory Shipment
  1. Erstellung | Creation
  • 🇩🇪 Eine Blanket Order wird angelegt und Zeilen mit dem NPI-Flag versehen.
  • 🇺🇸 A Blanket Order is created and lines are marked with the NPI flag.
  1. Verarbeitung | Processing
  • 🇩🇪 Der Codeunit MakeInventoryShipment wird ausgeführt.
  • 🇺🇸 The MakeInventoryShipment codeunit is executed.
  1. Ergebnis | Result
  • 🇩🇪 Der Codeunit MakeInventoryShipment wird ausgeführt. Ein Inventarversanddokument wird erstellt, die Menge in der Blanket Order wird auf 0 gesetzt.
  • 🇺🇸 An inventory shipment document is created, and the quantity in the Blanket Order is set to 0.
  1. Lagerort | Warehouse
  • 🇩🇪 Beim Erstellen des Pick-Dokuments werden Lot- und Paketnummern korrekt zugeordnet.
  • 🇺🇸 When creating the pick document, lot and package numbers are correctly assigned.