Manufacturing Transaction

This API allows Manufacturing, Inventory Management or any other application to record Material Issues or Product Completions and transaction reversals. This provides a common API which supports both material issues and product completions.

Whatever inventory gets updated as part of work order transactions will be updated using this API.

URL

POST.../wms/lgfapi/v10/inventory/manufacturing_transaction

The following data is passed in JSON format:

Column Mandatory Comments
manufacturing_transaction_list
mfg_transactionid yes Unique Identifier for the transaction shared by fusion inventory.
location_barcode yes Location pass can correspond to active or reserve location or drop location type.
lpn_nbr Will be required for product completions and product returns.
transaction_type

The following are the transaction types shared from Inventory Management:

  • Work in Process Material Issue
  • Work in Process Negative Material Issue
  • Work in Process Material Return
  • Work in Process Negative Material Return
  • Work in Process Product Completion
  • Work in Process Product Return
mfg_work_order_nbr yes Work order number against which transaction is recorded.
mfg_operation_seq_nbr Work order operation sequence against which transaction is recorded.
external_transaction_date_time Holds the transaction date and time when it was performed at the source system.
resend_flg By default the value will be No. If set to yes, Inventory Managaement has an ability to resend the transaction in case of any failures.
inventory_list
item_alternate_code Application expects either item alternate code or combination of item_parts.
item_part_a
item_part_b
item_part_c
item_part_d
item_part_e
item_part_f
qty yes Corresponds to the quantity. Can be either + or - depending upon the transaction type.
uom_code uom_code in which the transaction quantity is recorded in. For Prebuilt integration
batch_nbr Lot number for lot tracking item.
expiry date Expiry date in case sku is only expiry tracked.
invn_attr_a
invn_attr_b
invn_attr_c
invn_attr_d
invn_attr_e
invn_attr_f
invn_attr_g
invn_attr_h
invn_attr_i
invn_attr_j
invn_attr_k
invn_attr_l
invn_attr_m
invn_attr_n
invn_attr_o
serial_number_list Corresponding serial numbers associated with the transaction.

API callers should take care of sending quantity values in the appropriate positive or negative connotation by transaction type:

Transaction Type Comments for Quantity
Work in Process MaterialIssue Negative

Work in Process Negative Material Issue

Positive

Work in Process MaterialReturn Positive

Work in Process Negative Material Return

Negative
Work in Process ProductCompletion

Positive

Work in Process ProductReturn

Negative

Miscellaneous Receipt

Positive

Miscellaneous Issue Negative

Assumptions

  • The OIC integration layer or the API caller will have to send + or - value for the quantity depending upon the transaction performed
  • It is assumed that Location information is set up in WMS as well, initial set up has to be done accordingly.
  • Transaction is assumed to be primary UOM if uom code is not shared.
  • API does not take in the actual date/time when the transaction was captured in manufacturing UI's and the user will be the same API user.
  • This API includes LPN for reserve inventory updates and Location for active inventory updates. So, the LPN and active inventory location is not relevant in a single payload and errors out.

Example Payload

{
"async_flg":true,
"header":{
"entity":"stage_mfg_operation",
"company_code":"COMP",
"facility_code":"FAC",
"messageid":"KVORD",
"document_version":"24C",
"origin_system":"QA",
"client_env_code":"QA"
},
"manufacturing_transaction_list": [
{
"mfg_transactionid":1,
"lpn_nbr": "WOEMTEKEO300181",
"location_barcode":"KVR010103",
"mfg_work_order_nbr":"WOEMTEKEO300181",
"mfg_operation_seq_nbr": 1,
"transaction_type": "Work in Process Material Issue",
"create_hdr_flg":true,
"resend_flg": false,
"ready_for_processing_flg": true,
"external_transaction_date_time":"2024-09-17T10:02:45.026Z",
"reason_code":"",
"inventory_list" : [
{
"item_alternate_code": "MS4-LCFACEPLT-SB",
"qty": -10,
}
]
}
]
}
Note: This API is designed for asynchronous calls (synchronous call is not supported) so the expected response on success will be:
{
    "success": true,
    "response": {
        "message": "Data successfully staged"
    }
}

You can find the details of data processed or errored from the From Manufacturing Transaction Header View UI.

Validations

The following table describes the validations at the header, detail, and serial number level:
Validation Description

Header Level Validations (mfg_work_order_transaction_list)

  • If there is a another instance of the transaction in "Not Ready", "Ready" or "In-Processing" or "Processed", the record is updated to Failed status with error string as "Duplicate transaction exists, cannot process the transaction".
  • If the location passed is not valid for the passed in facility, the record is updated to Failed status with error string as "Transaction (%tran_id%) has invalid location for the facility".
  • If the location passed does not correspond to the location of type "Active"/"Reserve"/"Drop", the record is updated to Failed status with error string as "Invalid Location type recorded for the Transaction (%tran_id%)".
  • If the LPN number passed is not in status "Allocated"/Partially Allocated/Reserved/"In-Receiving/Lost/Quality Check", the record is updated to Failed status with error string as "LPN(%lpn_number%) not in a valid status for transaction(%tran_id%)".

Detail Level Validations (inventory_list)

  • If valid item is not returned for the company, the detail record is updated to Failed status with error string as "Invalid Item".
  • If the UoM_Code passed is not the same class as the item's primary UOM, the corresponding detail record is updated to Failed status with error string as "UoM_Code passed for the item(%item_alternate_code%) is of different UOM class"".
  • If the Item passed, passes the dimension checks for the LPN, and the underlying LPN has LPN type associated with it, The Unit Length/Width/Height of the item should be lesser than LPN type's Length/Width/Height.
  • If the item/lot/attribute combination is not present on the active location passed, the corresponding detail record is updated to Failed status with error string as "Inventory not found in the location for the Item/Batch/Inventory attribute combination".
  • If item/lot/attribute combination is not present on the LPN passed, the corresponding detail record is updated to Failed status with error string as "Inventory not found in the LPN for the Item/Batch/Inventory attribute combination".
  • If the anticipated Item/Batch/Inventory attribute combination found for the sku in the location or LPN, but the qty passed exceeds the inventory qty then the corresponding detail record is updated to Failed status with error string as "Insufficient inventory for _Item/Batch/Inventory attribute combination{_}".
  • If the active location/reserve location passed has a Permanent Sku assignment and the qty passed is a postive value where the item passed is not the same as the permanent dedicated item, the corresponding detail record is updated to Failed status with error string as "Item passed violates permanent sku assignment for the location".
  • If the active/reserve location passed has allow_multi_sku flag set to Yes and the qty passed is a positive value where the item/lot combination passed violates allow_multi_sku check, the corresponding detail record is updated to Failed status with error string as "Item passed violates allow multi sku check condition for the location".
  • If the active/reserve location passed has the restrict_batch flag set to Yes and the qty passed is a positive value where the item/lot combination passed violates restrict batch, then the corresponding detail record is updated to Failed status with error string as "Item/batch number passed violates restrict batch condition for the location".
  • If the active/reserve location passed has restrict_inventory attribute flag set to Yes and the qty passed is a positive value where the item/inventory_attribute combination passed violates restrict inventory attribute, then the corresponding detail record is updated to Failed status with error string as "Item/Inventory attribute combination passed violates restrict attribute check for the location".
  • if expiry date is passed for item that is tracking batch number and expiry, if e the expiration date passed is not the same as what is associated with batch master record, the system returns an error.
  • If inventory attribute is passed, the system honors the column formatting rules associated with each of the inventory attribute passed. This check happens irrespective of whether the item is tracking inventory attributes or not
  • If Company Parameter>>SERIAL_NUMBER_TRACKING_LEVEL is configured to 2 - Track serial numbers for both Inbound and Outbound, then only serials are accepted, otherwise the system returns an error "Serial Number not Supported for the company"
  • If item passed is not serial tracked, and if serial number list is passed, the system returns an error "Item does not track serial, serial number records are passed".
  • If qty passed contains decimals and item is serial number tracked then the corresponding detail record is updated to Failed status with error "Decimal Qty not supported for serial tracked sku's".

Serial Number Validations (serial_nbr_list)

The following validations are applicable for the serial number passed pertaining to each inventory list:

  • If ready_for_processing_flg is set to "yes" and there is a mismatch in serials passed. the corresponding inventory detail record returns error "Number of serials not equal to the qty passed".
  • If passed in serial number does not match the barcode validations, the corresponding serial number record returns error "Serial numbers provided do not match the barcode length configured".
  • If passed in serial number is duplicated (another record for same serial number found in the serial number list for the inventory), then the corresponding serial number record returns error "Duplicate serial number passed in the serial number list"

    If the quantity passed is positive, then the following are the validations for the serials:

    • If the passed in serial number is valid but not present in the location passed from where inventory is picked, the corresponding serial number record is failed and corresponding header and inventory record fails with error "Serial Number not present in the LPN".
    • If the passed in serial number is not present in the LPN number passed. then the corresponding serial number record and the corresponding header and inventory record fails with error "Invalid Serial Number passed for the LPN".
    • If the passed in serial number is valid but not present in the current LPN passed for Product Completion Returns or Undo Product Completion, the corresponding serial number record and the corresponding header and inventory record fails with error “Invalid Serial Number passed for the LPN”.

    If the quantity passed is positive and the transaction does not involve LPN's then:

    • If the passed in serial number is already present in another active location, the corresponding serial number record and corresponding header and inventory record fails with error “Serial Number is present in another active location (%target active location%)”.
    • If the serial number passed is linked to an inventory in a different facility and the underlying status of the LPN is < Shipped then an error is returned. If the underlying LPN associated to a different facility for the passed in serial number is in status Consumed/Cancelled/Shipped/Delivered then the system proceeds.
    • If the serial number passed in is associated with an LPN in Lost Status for the current facility, system returns an error.
  • If the serial number passed is already present in the same active location passed, the system returns an error.
  • If the passed in serial number is already present in another LPN which is not in Consumed/Cancelled Status, then the corresponding serial number record and corresponding header and inventory record fails with error "Serial Number is present in another LPN(%target LPN%)".