Create a search functionality to dynamically filter a report

Create a search functionality to dynamically filter a report

Requirement

Create a search functionality for users to find specific records based on their search queries.

Use Case

An order management app is used by a business to store its customer details, and by billing agents to order products. There are three forms: a Customer form used to track customer details, and an Orders form, which can be used to place orders and track them using the customer's email address. The Orders form is seen from the cashier/billing agent perspective. The Products form can track the products in the inventory. When a customer punches in their order ID in the search bar, relevant order details are shown. This is implemented using the Search Element from the page builder.

Steps to follow

1. Create three forms with the following details:
Form
Form Link Name
Field Type
Field Name
Field Link Name
Customers
Customers
Name
Customer Name
Customer_Name
Email
Customer Email
Customer_Email
Product
Product
Single Line
Product Name
Product_Name
Currency
Amount
Amount
Orders
Orders
 
Lookup (Customer)
Customer Name
Customer_Name
Subform
  • Lookup (Product)
  • Number
Order Details
  • Product Name
  • Quantity
Order_Details
  • Product_Name
  • Quantity
 
The order will be searched from the All Orders report using the ID of the record.

2. Create a workflow to execute upon successful submission of the Orders form.
 
3. Click Add New Action and select Deluge Script. Add the below code:
  1. email=Customers[ID == input.Customer_Name].Customer_Email;
  2. //Send the order ID of the placed order to the customer
  3. sendmail
  4. [
  5.   from :zoho.adminuserid
  6.   to :email
  7.   subject :"Happiness is on the way!"
  8.   message :"<div>Hi&nbsp;<br></div><div><br></div><div>You order is placed. Mention the Order ID, " + input.ID + " for further correspondence.<br></div><div><br></div><div>Thank you.</div>"
  9. ]
This will email the customer the order ID, with which the customer can track the status of the order.
 
4. Create a page named Search Order Results with a report element for the All Orders report.
 
5. Add the below mentioned page variable to the page.

Variable Name

Data Type

inProgress

Number



 
6. Click Configure in the report embed element and add the below filter:

Filter

Select Field

Select Operator

Enter Value

ID
(Under System Fields)

equals

    input.ID.toLong()


 
This will search in the All Orders report for the given order ID. The order ID is passed as a parameter configured in the previous step. The conversion toLong() is done to ensure accurate comparison.
 
7. Create a page named Search Orders with a search element. This page will be used to search for the required orders and it will be based on the Search Order Results page.
 
8. Configure the search result component as Page, and the target page as the Search Order Results. Here, the search string is assigned to the page parameter ID (configured in the Search Order Results page), and used to filter the All Orders report.

See how it works

Points to note

  • The report is embedded in a separate page instead of opening it directly to limit the operations that can be done on the records. (This limits editing, duplicating, adding records, etc.)