I have this JSON payload:
[
{
"Id": "6812",
"status": "Available",
"expirationDate": "2024-04-30T13:00:00.000-07:00",
"quantityOnHand": 6124
},
{
"Id": "7491",
"status": "Available",
"expirationDate": "2024-06-29T13:00:00.000-07:00",
"quantityOnHand": 864
},
{
"NetsuiteId": "6569",
"status": "Available",
"expirationDate": "2100-12-12T13:00:00.000-07:00",
"quantityOnHand": 3
},
{
"Id": "6582",
"status": "Available",
"expirationDate": "2100-12-12T13:00:00.000-07:00",
"quantityOnHand": 1
}
]
I have a variable component that sets my order quantity. Basically what I want to do is return the payload items that will suffice the order quantity variable. So for example my vars.quantityOrder is 100, then my transform component will return :
{
"Id": "6812",
"status": "Available",
"expirationDate": "2024-04-30T13:00:00.000-07:00",
"quantityOnHand": 6124
}
If it is 6500 , then it would return :
[
{
"Id": "6812",
"status": "Available",
"expirationDate": "2024-04-30T13:00:00.000-07:00",
"quantityOnHand": 6124
},
{
"Id": "7491",
"status": "Available",
"expirationDate": "2024-06-29T13:00:00.000-07:00",
"quantityOnHand": 864
}
]
And so on.
I am very new to DataWeave and I'm not sure how I can do this. I have written up something like:
%dw 2.0
output application/json
var quantityOrder = vars.quantityOrder
var result = payload filter ((item, index) -> quantityOrder > 0) map ((item, index) -> {
"Id": item.Id,
"status": item.status,
"expirationDate": item.expirationDate,
"quantity": item.quantityOnHand - quantityOrder
})
---
result
However this gives me syntax errors. Would appreciate any guidance or input.
It is not clear what is the issue you are having but if you are trying to get the items from the input payload where
quantityOnHand > quantityOrderthen the condition of your filter is incorrect. I would change it to:The output for your input payload is: