Zoho FSM | Email Customer the Service Reports along with the Invoices

Email Customer the Service Reports along with the Invoices

Usecase: When a service appointment is completed, email to the customer the service reports in the service appointment and the invoices in the parent work order.
 
Follow the steps below to implement this usecase:
Step 1: Create connections
Step 2: Create a custom function
Step 3: Create a workflow rule

Step 1: Create connections

Create a connection for Zoho FSM

To use the Zoho FSM APIs via the invokeURL task in the custom function, you need to create a connection for Zoho FSM. To do so:
  1. Navigate to Setup > Developer Space > Connections and click Create Connection.



  2. Under the Default Services tab, search for and click Zoho FSM.



  3. Enter the following details and click Create And Connect.
    1. Connection Name: FSMCon
      The Connection Link Name will be populated automatically.
    2. Disable Use Credentials Of Login User.
    3. Select the Scope ZohoFSM.files.READ
  4. Click Connect in the authentication page.



  5. Click Accept in the Authorization page.

In the custom function, where the FSM API is used via the invokeURL task, use this Connection Link Name.

Create a connection for Zoho Invoice

To use the Invoice APIs via the invokeURL task in the custom function, you need to create a connection for Invoice. To do so:
  1. Navigate to Setup > Developer Space > Connections and under Default Services, select Zoho Invoice.



  2. Click Create Connection.



  3. Perform the following and click Create And Connect:
    1. Connection Name: ZInvoice
      The Connection Link Name will be populated automatically.
    2. Select the Scopes ZohoInvoice.invoices.READ



  4. Click Connect.

    |

  5. Click Accept.

In the custom function, where the Invoice API is used via the invokeURL task, use this Connection Link Name.
 

System Connections

Additionally ensure that the status of the internal connections for Zoho FSM, and Zoho Invoice integration tasks are Connected. The green dot [] indicates that the connection is Connected.
 

Step 2: Create a custom function  

Create a custom function in Zoho FSM to email the customer the service reports of a service appointment and the invoices in the parent work order.
  1. Navigate to Setup > Automation > Functions and click Create Function.
  2. Enter the following details and click Save:
    1. Function Name: SendInvoiceAndSR
    2. Module: Service Appointments
    3. In the Deluge Script Editor, enter the following script:
aptId = service_appointment.get("id");
response = zoho.fsm.getRecordById("Service_Appointments",aptId);
service_appointment_resp = response.get("data").toMap();
relatedWOId = service_appointment_resp.get("Appointments_X_Services").toMap().get("Work_Order").get("id");
work_order_resp = zoho.fsm.getRecordById("Work_Orders",relatedWOId);
woRespMap = work_order_resp.get("data").toMap();
serviceLineItems = woRespMap.get("Service_Line_Items").toList();
serviceLineItemsList = List();
file_attachment_list = List();
for each  line_item in serviceLineItems
{
 invoiceId = line_item.get("Invoice_Id");
 if(invoiceId != null)
 {
  invoiceResp = zoho.fsm.getRecordById("Invoices",invoiceId);
  invoiceId1 = invoiceResp.get("data").toMap().get("ZBilling_InvoiceId");
  invoiceResp1 = zoho.invoice.getRecordById("Invoices","<orgId>",invoiceId1);
  invoice_format = {"accept":"pdf"};
  response = invokeurl
  [
   type :GET
   parameters:invoice_format
   connection:"zinvoice"
  ];
  file_attachment_list.add(response);
 }
}
contact_id = service_appointment_resp.get("Contact").toMap().get("id");
contact_resp = zoho.fsm.getRecordById("Contacts",contact_id);
contact_data = contact_resp.get("data").toMap();
Email = contact_data.get("Email");
srResp = zoho.fsm.getRelatedRecords("Service_Reports","Service_Appointments",aptId);
if(srResp != null && srResp.containKey("data"))
{
 relatedRecords = srResp.get("data").toList();
 for each  record in relatedRecords
 {
  reportpdfResp = record.get("Service_Report_PDF");
  fileurl = reportpdfResp.get(0).get("download_Url");
  fileResp = invokeurl
  [
   url :"https://" + fileurl
   type :GET
   connection:"fsmcon"
  ];
  file_attachment_list.add(fileResp);
 }
}
sendmail
[
 from :zoho.adminuserid
 to :Email
 subject :"Zoho FSM Service Reports and Invoices"
 message :"Please find attached the Service Reports and Invoices in service appointment."
 Attachments :file:file_attachment_list
]

Replace <orgId> with the actual value. To obtain the Organization ID, in Zoho Invoice, click the organization name at the top right corner and copy the Invoice Organization ID linked to your Zoho FSM account.


Step 3: Create a workflow rule  

Create a workflow rule in Zoho FSM to automatically email to the customer the service reports of a service appointment and the invoices in the parent work order when the service appointment is Completed.
  1. Go to Setup > Automation > Workflow Rules and click Create Workflow.
  2. Enter the following details, then click Next:
    1. Module: Service Appointments
    2. Rule Name: SendInvoiceAndSR
    3. Description: Email customer the service reports along with the invoice.



  3. Select the rule trigger as Edited and click Next.



  4. Select the rule criteria as Only to the Service Appointment matching certain conditions and add the condition Status is Completed. Click Next.



  5. Click +Action and select Function.



  6. Select Existing Functions and click Next.



  7. Select the custom function created in the previous step.



  8. Click Save.


Testing the usecase    

  1. Create a Service Appointment.
  2. Ensure that there is at least a Service Report added to the service appointment and an Invoice to the parent work order.
  3. Click Complete Work for the service appointment.
The service reports and invoices will be emailed to the contact in the service appointment.