You need to sign in to do that
Don't have an account?
I am trying to get Order status in Einstein chatbot but not getting
I am trying to get Order status in Einstein chatbot but not getting
I have added Apex class here
public with sharing class GetOrderStatus {
public class OrderOutput {
@InvocableVariable(required=true)
public String sOrderStatus;
public String sOrderName;
}
public class OrderInput {
@InvocableVariable(required=true)
public String sOrderNumber;
}
@InvocableMethod(label='Get Order Status')
public static List<OrderOutput> getOrderStatus(List<OrderInput> orderInputs) {
Set<String> orderNumbers = new Set<String>();
// Get the order numbers from the input
for (OrderInput orderInput : orderInputs) {
orderNumbers.add(orderInput.sOrderNumber);
}
// Get the order objects from the set of order numbers
List<OrderItemSummary> orders =
[SELECT OrderSummary.OrderNumber,Name,Quantity,TotalAmtWithTax,Status FROM OrderItemSummary where OrderSummary.OrderNumber =: orderNumbers];
//[SELECT OrderNumber, Status FROM OrderSummary where OrderNumber =: orderNumbers];
//System.debug('order' +orders);
// Create a map of order numbers and order status values
Map<String, String> mapNameStatus = new Map<String, String>();
if (orders.size() > 0) {
for (OrderItemSummary order : orders) {
mapNameStatus.put(order.OrderSummary.OrderNumber, order.Status);
}
}
// Build a list of order status values for the output
List<OrderOutput> orderOutputs = new List<OrderOutput>();
for (OrderInput orderInput : orderInputs) {
OrderOutput orderOutput = new OrderOutput();
// Do we havorderOutpute a status for this order number?
if (mapNameStatus.containsKey(orderInput.sOrderNumber)) {
// If so, then add the status
orderOutput.sOrderStatus = mapNameStatus.get(orderInput.sOrderNumber);
} else {
// If not, then add an unknown status value
orderOutput.sOrderStatus = 'Order not found';
}
orderOutputs.add(orderOutput);
}
return orderOutputs;
}
}
What does the debug statement give for sOrderStatus give?
Hi Swetha
It shows like 'Order not found'.
Hi Swetha,
I have also written another code for this, but still not getting Order status
could you please check this
public with sharing class GetOrderStatus {
public class OrderOutput {
@InvocableVariable(required=true)
public String sOrderStatus;
}
public class OrderInput {
@InvocableVariable(required=true)
public String sOrderNumber;
}
@InvocableMethod(label='Get Order Status')
public static List<OrderOutput> getOrderStatus(List<OrderInput> orderInputs) {
Set<String> orderNumbers = new Set<String>();
String OrderOut='';
for (OrderInput orderInput : orderInputs) {
orderNumbers.add(orderInput.sOrderNumber);
}
List<OrderItemSummary> orders =
[SELECT OrderSummary.OrderNumber,Name,Quantity,TotalAmtWithTax,Status FROM OrderItemSummary where OrderSummary.OrderNumber =: orderNumbers and Name !='Shipping'];
List<OrderOutput> orderOpp = new List<OrderOutput>();
OrderOutput ordOp = new OrderOutput();
List<String> stringList = new List<String>();
if (orders.size() > 0) {
for (OrderItemSummary order : orders) {
stringList.add('Order Number: ' +order.OrderSummary.OrderNumber);
}
for(String s: stringList)
{
OrderOut=OrderOut+s;
}
ordOp.sOrderStatus= OrderOut;
orderOpp.add(ordOp);
return orderOpp;
}
return null;
}
}