Customer Relationship Management Systems

Zoho Projects: Add a Time Log to an Issue using Deluge

What?
This is an article to demonstrate how to log a time event under a Zoho Projects Issue using code (Zoho Deluge) rather than the graphical user interface (GUI). Note this would probably be similar to when trying to enter a time against a project Task but this article is focused on getting this working against Project Issues. Also note, we will refer to Project Issues in this article, but in the backend code, Zoho refer to Issues as "Bugs".

Why?
At time of this article (Apr-2021), we could not find a working example that could allow us to do this. I have provided some links at the end of this article for you which we tried to use but only helped us out about half-way, the rest we guessed on our own:
Zoho Projects - Add Time Log to an Issue Using Deluge - Projects Issue Time Log
Our use case, is that we are developing a Zoho Creator app that will help staff log time and then push the creator record to Zoho Projects.

How?
For the following example, you will need to have setup a Zoho Oauth Connection with the appropriate authorized scopes and have access to all related systems such as Zoho Projects and the originating app (in this example, Zoho Creator).
Zoho People: Get Performance Records over API

What?
Took us a while to find this and perhaps others would have a quicker way but here's the instructions on getting the records from the performance module in Zoho People API.

Why?
Cos it took us a while. The online forums seem to go back over a decade and the documentation seems to have gaps; or simply modules are so custom/bespoke the documentation has started to genericize.

My client has seen the Goals or Objectives report under "Organization Reports" but would like some additional fields/columns added to it. Turns out, it's a system report you can't change. Enter Zoho Analytics... well almost, Analytics will sync with Zoho People but I wasn't able to select the performance modules (Client Review and Placement Tech Survey having been disabled)...

How?
So this might seem obvious but after trying to scan the meta data (snippets at the bottom of this article), the simplest way was right in front of us. We're going to use the interface to find the form where staff have been entering employees goals, then we're going to query it and push it to Zoho Analytics.
Zoho People: Reject an Application for Leave in Deluge based on Criteria

What?
This article documents how to stop an employee from applying for leave when already 80% of their team have already booked the same date off.  My brief was:

  • Check the department this employee belongs to
  • Search for employees of the same department (team members) who have booked the same days off (ie count holiday clashes)
  • Prevent an employee for applying for leave if over 80% of the department have already booked the requested dates off.

In other words, if there are 10 people in a department/team, and 8 people have booked tomorrow off, prevent a 9th team member booking tomorrow off.

Why?
I've written this article as it took a while to achieve. The Zoho People application and its API are documented but there are problems with the documentation at the time that this article was written. One is that there are 2 sets of documentation and the other is that the majority of the documentation doesn't refer to OAuth 2.0/json and instead uses the deprecated authtoken v1 and XML.

How?
The trick in this solution was more about the process and what that process was.
Zoho SalesIQ Bot with ChatGPT

What?
An article to document setting up a SalesIQ bot that includes an integration with OpenAI's ChatGPT. Please understand if this is behind a userwall as we tend to charge between 2k to 5k to implement this solution in client's systems.

Why?
Because AI... This is a follow-on from my previous article: Zoho Cliq: Integrate OpenAI and ChatGPT 3.5 Turbo.

How?
It's maybe worthwhile noting here the different handlers of the bot here:
  • Trigger Handler: execute when the condition set in the visitor criteria section is fulfullied by the visitor on the website.
  • Message Handler: invoked when the the bot receives a message from the website visitor
  • Context Handler: invoked when all the answers for a context action are collected.
  • Failure Handler: for when there is an error
Zoho Workdrive: Getting Team Folder ID

What?
This is an article to document how to get your team folder ID, retrieve information about it, and upload to it via the API.

Why?
The documentation is there but making sense of it, is somewhat difficult, at least for me.

How?
So when I was trying this, I would get either "URL rule not configured" or an unhelpful blank response.
Zoho Inventory: Enable Tracking using the API

What?
One of these articles because I spent so long trying different snippets of code to enable tracking when using Deluge code to create an item in Zoho Inventory:
Zoho Inventory: Enable Tracking using the API

Why?
Who uses ZohoInventory for anything else than tracking stock...?

How?
So the quick answer is one missing parameter to send through which is "item_type=inventory"... A little longer, is do ensure you have Zoho Inventory enabled.

ZohoCRM Webhook: Create ZohoInventory Records from an eBay order

What?
This is a not-so-quick article that queries an eBay order and creates the relevant ZohoInventory item, contact, sales order, package slip, shipment order, invoice, payment records...

Why?
I'm storing this here as a reference and taking the bits that I need for the various clients that request an eBay integration. This is a comprehensive snippet which does the whole lot.

How?
Using the method of "mega-functions", here is the code snippet for one function which will accept as parameter the eBay order reference and generate all the respective records in Zoho Inventory. We're using a ZohoCRM webhook, because CRM webhooks run more reliably then the ones we have found in ZohoBooks and other Zoho Apps.

Zoho Inventory: Mark a package slip as delivered and shipped

What?
A quick article on a code snippet to mark a package as shipped and delivered in Zoho Inventory.

Why?
As usual, any task like this that takes me longer than an hour, I'd like to document for future use. The use-case is the client has their own delivery drivers and want them to mark a sales order & package as shipped and delivered.

How?
Here's a code snippet that works for me.  It is triggered when a user ticks a decision box in Zoho Creator (on iPad displays as an on/off switch).  My connection here called "jl_inventory" has the minimum required scopes:
  • ZohoInventory.salesorders.READ
  • ZohoInventory.packages.READ
  • ZohoInventory.shipmentorders.CREATE
  • ZohoInventory.shipmentorders.READ