I am exporting item receipt data out of a MS DB with a SQL query to transform purchase orders and create item receipts in NetSuite.
I am grouping my records by PO # with Celigo and am successfully transforming the PO to create an item receipt by indicating the PO # I set to the "Created from" field.
However, I am having difficulty indicating the actual quantity of received items on my receipts I am creating, as Celigo is always creating a receipt that indicates it has received all items
I was hoping to receive some advice on how to indicate this within my mapping correctly. I have tried a combination of approaches including mapping my correct DB field 'Quantitynormalized' and the internalid of my NS item 'NSItemInternalID'.
I believe my issues lies in the mapping for my NS item id based on info received in a Celigo Office hours call but we were unsure what syntax to use. Any help would be appreciated!
In the preview in your screenshot it's strange that your item id is being mapped on the receipt header level, and not in the item>lines array. Maybe the spelling in the mapping isnt exactly what the NetSuite label is.
Try mapping the NSItem id with destination: Items : Item (Field ID: itemkey)
It seems the you typed Internal Id in the the destination field manually, because there is no autocomplete for Items : Item (InternalId). However that field doesn't exist on the item sublist of Item Receipts in NetSuite.
For mapping an inventory item by its internal ID in a line-level context, the correct field to use is:
Items : Item (Field ID: itemkey)
When you manually enter a non-existent destination field like "Items : Item (InternalId)", Celigo treats it as a header-level field (inside nlobFieldIds) instead of part of the item lines (nlobSublistIds). That’s why the item didn’t show up in the lines array.
Here's the relevant schema excerpt for the item sublist on the Item Receipt record in NetSuite — note that itemkey is the correct internal ID field:
Ethan,
Thank you for attending Office Hours yesterday and as discussed here is the solution we were referring to.
If you put in item[*].item.internalid it will let you map directly to the internalId of the item you are trying to receive against and add the quantities to that item to create a partial receipt.