function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Kashyap JoshiKashyap Joshi 

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

User-added image

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;    
  }
}

SwethaSwetha (Salesforce Developers) 
HI Kashyap,
What does the debug statement give for sOrderStatus give?
Kashyap JoshiKashyap Joshi

Hi Swetha

It shows like 'Order not found'.

Kashyap JoshiKashyap Joshi

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;
        
    }
}