Recieve Material Supply Confirmation: Functional Overview
NextGen exposes an internal API endpoint designed to receive provisioning data from external systems (e.g., SAP) for materials associated with a Procurement Request (PR). This integration allows the external system to communicate the delivery confirmation of materials related to a specific reservation, updating both quantities and serial numbers seamlessly.
Payload Structure & Receiving Workflow
The external system (SAP) calls the integration layer using a specific JSON payload to communicate the delivery.
Example Payload:
JSON
{
"externalSystemCode": "SAP",
"reservationId": "8be4df61-93ca-11d2-aa0d-00e098032b8c",
"materials": [
{
"quantity": 100.45,
"sequenceNumber": "2357717"
},
{
"serialNumber": ["26EL001", "26EL002", "26EL003"],
"sequenceNumber": "2357718"
}
]
}
Key Mapping:
-
reservationId: Maps to the PR Item UUID (reservationId = item.uuid). -
sequenceNumber: Maps to the PR Item's External Code (item.externalCode = material.sequenceNumber).
Processing Logic & Integration Workflow
When the payload is received, the integration layer triggers a set of private APIs to process the data logically.
1. Initial Validation (PR Header & Item Existence)
-
The system searches for all PR items related to the provided
reservationId.-
Failure: If no items exist, the process errors out.
-
-
Unique Header Check: The system verifies that all found items are linked to a single, unique PR header.
-
Failure: If the items are linked to more than one PR header, the process errors out.
-
2. Position (Material) Processing & Validation
The system iterates through each material listed in the payload request:
-
It attempts to match the payload's
sequenceNumberwith an existing PR Item'sexternalCode.-
Failure: If no match is found, the system flags an error for that line item.
-
-
Serial-Managed Materials: If the payload contains an array of
serialNumbers:-
The system checks the inventory for each serial number to ensure uniqueness.
-
If the serial exists: The specific serial code is discarded/ignored, and the loop continues to the next serial.
-
If the serial is new: The system creates a new serialized material record and explicitly links it to the PR item.
-
The PR Item's
deliveredQuantityis updated to equal the total number of successfully inserted serialized materials (which could be 0).
-
-
Non-Serial-Managed Materials: If
serialNumberis null/empty:-
The PR Item's
deliveredQuantityis updated directly to thequantityvalue provided in the payload.
-
3. Unreceived Materials Handling
-
After processing the payload, the system iterates through all PR items tied to the
reservationIdthat were not included in the external payload. -
For these items, the
deliveredQuantityis explicitly set to0.
Status Transitions (Post-Processing)
Once all line items are processed and updated via the batch patch API, the system automatically triggers a status recalculation for both the positions and the overall PR header.
Position Status Updates
Based on the deliveredQuantity, the PR Position status updates to:
-
Not Delivered: If
deliveredQuantity= 0. -
Partially Delivered: If 0 <
deliveredQuantity<requestedQuantity. -
Fully Delivered: If
deliveredQuantity$\ge$requestedQuantity.
Header Status Update
The PR header status recalculation is triggered only after all line items have been successfully processed and updated.
Error Handling Rules
-
Storage: Only the first error encountered per line item is stored in the log.
-
Continuation: Processing continues for other line items even if one fails (e.g., if a serial number exists and is ignored, the valid serials are still processed, and the quantity is updated accordingly).