Hi @cjohnson ,
We are using IFS Application 10. I do not know of a built-in notification when an inventory part qty_onhand goes to zero. I believe you will need to create a custom event and action to perform the task. You could setup a custom event on the InventoryPartInStock logical unit set to trigger on a change. I believe the event action will need to be a PL/SQL action and you’ll need to create a procedure to determine the qty_onhand and then send the an email to the individuals who require the notification.
Below is a query we created in a quick report to produced a Part Availability report that we export to Excel. I’ve added the UPPER(ip.PART_NO)=UPPER('&PART_NO') to the query below so you can just type in a part number instead of running it for all your active parts. This line IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_OnHand(ip.contract, ip.part_no, '*') AS QTY_ONHAND will return plannable QTY_ONHAND meaning it will exclude any location with a non-nettable availability control.
You could easily convert the below query into a PL/SQL procedure to use in an event action to send your notification.
SELECT ip.PART_NO,
ip.DESCRIPTION,
IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_OnHand(ip.contract, ip.part_no, '*') AS QTY_ONHAND,
IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_Reserved(ip.contract, ip.part_no, '*') AS QTY_RESERVED,
IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Total_Qty_In_Transit(ip.contract, ip.part_no, '*') AS QTY_INTRANSIT,
(IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_OnHand(ip.contract, ip.part_no, '*') + IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Total_Qty_In_Transit(ip.contract, ip.part_no, '*') - IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_Reserved(ip.contract, ip.part_no, '*')) AS QTY_AVAILABLE,
IFSAPP.ORDER_SUPPLY_DEMAND_API.Get_Sum_Qty_Demand(ip.contract,ip.part_no) - IFSAPP.INVENTORY_PART_IN_STOCK_API.Get_Plannable_Qty_Reserved(ip.contract, ip.part_no, '*') AS QTY_ORDERS_UNRESERVED
FROM IFSAPP.INVENTORY_PART ip
WHERE UPPER(ip.CONTRACT)=UPPER('&SITE')
AND UPPER(ip.PART_NO)=UPPER('&PART_NO')
AND UPPER(ip.PART_STATUS) <> 'I'
GROUP BY ip.PART_NO, ip.CONTRACT, ip.DESCRIPTION
ORDER BY ip.PART_NO
Regards,
William Klotz
Thank you @william.klotz !