# Issue a part from the Parts Room to a maintenance work order.
# Run in the Ignition Designer Script Console. Change the four values below first.

workOrderEventName = 'MWO00001'          # the work order number shown in Maintenance > Work Orders
partNumber = 'CF-INS-CNMG432'            # the part to issue
quantity = 2.0
storeroomPath = 'CoreForge\\Philadelphia\\Storage\\Parts Room'
maintainedAssetPath = 'CoreForge\\Philadelphia\\Machining\\Machine 1'

getId = system.kanoa.utilities.getFieldValue
userId = system.kanoa.security.getIDPUserId({'userName': 'SYSTEM'})

workOrderEventId = getId('workOrderEventId', system.kanoa.cmms.getWorkOrderEvents({'workOrderEventName': workOrderEventName}))
partId = getId('partId', system.kanoa.inventory.getParts({'partNumber': partNumber}))
storeroomId = getId('assetId', system.kanoa.asset.getAssets({'assetPath': storeroomPath}))
assetId = getId('assetId', system.kanoa.asset.getAssets({'assetPath': maintainedAssetPath}))
print 'workOrderEventId', workOrderEventId, 'partId', partId, 'storeroomId', storeroomId, 'assetId', assetId

issueInfo = {
	'workOrderEventId': workOrderEventId,
	'partId': partId,
	'quantity': quantity,
	'inventoryAssetId': storeroomId,
	'assetId': assetId,
	'notes': 'Issued during training',
}
inventoryTransactionId, message = system.kanoa.inventory.issuePartToWorkOrderEvent(issueInfo, userId)
print inventoryTransactionId, message

# Show every part issued to this work order
data = system.kanoa.utilities.convertDatasetToJSON(
	system.kanoa.inventory.getPartsUsedByWorkOrderEvents({'workOrderEventId': workOrderEventId}))
for row in data:
	print row.get('partNumber'), row.get('quantity'), row.get('transactionTypeCode')
