Customer Relationship Management Systems

Zoho Deluge: Get the Week Number if Week starts on a Monday

What?
A quick article on determining the week number of the year if your week starts on a Monday and not a Sunday.

Why?
I think it's the US system which generally says that a week starts on a Sunday but in the United Kingdom, the week generally starts on a Monday. So let's say there's a schedule that has to be run weekly and include all the orders of a specific week...

Just to confuse everyone in the world, the day index for a Sunday is 7 (ie. myDate.toString("u") returns 7) and the week commences on a Sunday (ie. myDate.toStartOfWeek("EEEE") returns Sunday). In other words, the day counting starts at 7, followed by 1 for Monday, 2 for Tuesday, and so on...

How?
The logic behind this would be to take the date of the order, check if the order date is a Sunday, subtract a day, and return the week number:

Zoho Deluge: Determine if Daylight Savings are in effect

What?
If you're lucky enough to build an application for a client based in a country that changes its clocks twice a year, then I'm opening this article without a 100% certain solution as I need to wait about 4 months until I can confirm this works.

Why?
I've covered this before in a fair few articles on this website but for clients in the US, where there could be 4 different timezones between customer, agent, HQ, server; we would create a separate table to manage this data. I can't do this for every client, so here's a quick snippet to just check if Daylight Savings are in effect for the United Kingdom.

How?
Based on the fact that the United Kingdom is on the Prime Meridian and when no daylight savings are in effect, the hour difference to UTC (Coordinated Universal Time) should be zero, then for checking if daylight savings is in effect in the UK, we should be able to take Greenwich Mean Time and compare to UTC.
Zoho Deluge: Get All Orders from eBay

What?
Following on from my article: ZohoCRM: Get All eBay Active Listings, this is how to get all the orders from a client's eBay.

Why?
Our use-case is a data migration from eBay to a fresh instance of Zoho Inventory. In this task, we are simply getting a CSV with all the order IDs for a particular year output as a spreadsheet.

How?
Similar to how we retrieved the eBay active listings (see article link above), we're going to use the GetOrders call for order (sales) management.

ZohoDeluge: Check Shipment Status via DHL API

What?
A quick note here on how to connect to the DHL API and check on a package given a tracking number.

Why?
In our megafunction to generate a customer, a product/item, a sales order, an invoice, a package slip/delivery note, a shipment order; as well as record any payments, inventory adjustments, status changes; all from an eBay Order coming into the system via a webhook... I would like to mark a shipment as delivered only if the courier, in this case DHL, confirms the tracked order was delivered.

How?
So first I'll give some brief instructions on how to get an API key from DHL as a developer and then I'll include the code to query the shipment status based on a tracking number.

ZohoDeluge: Inserting a new line character in a CSV

What?
A super quick article on something that almost deserves its own article: using new lines in ZohoDeluge.

Why?
My use-case here is that I was generating a comma separated values (CSV) file given some lists and strings and although the same code worked great on one Zoho CRM, another client's ZohoCRM was not accepting "\n" as a new line character and instead would render/display it as "\n"...

What I have
Me,Myself,I\na,b,c
What I want
Me,Myself,I
a,b,c

How?
So in this article I just want to list some various methods of inserting a new line character.
ZohoDeluge: Get All eBay Orders Given a From and Till Date

What?
An article on how I can query all the orders for yesterday without using the eBay GUI Selling website.  I've included the code to parse out the information as well.

Why?
Because I need this function too often either for debugging/monitoring purposes but it's easier to use an access token then getting the OAuth access codes from the client.

How?
I'm going to split this into 2 code snippets that were in practice added to the same function and that worked at time of print.  Note that this uses the old Trading API as the new API is only available in Sandbox???  I won't go into how to generate an Access Token to your client's eBay store as that's covered in my article: Zoho Creator: Push to eBay Listings.
Zoho Deluge: Shopify API: Get all active products with GraphQL and Pagination

What?
An article to resolve my frustration in being able to ONLY retrieve the first 100 products using GraphQL, so page 1 of Shopify products.

Why?
Our use-case is that we retrieve the 100 most recently modified products at the end of each day and run some Deluge code against it to ensure that the data in Shopify is the same as in Zoho. In this case, Shopify is considered the source of truth and Zoho is the data to be overwritten, ensuring that Product IDs, Variant IDs, Inventory IDs, Current Selling Price, Inventory Level, and Barcode all match.

Our problem is that sometimes more than 100 products are modified in a day... We need to be able to do more than 100 or at least resume from a record... We need pagination.

How?
To resolve this, I'm building on top of my initial GraphQL query which will now retrieve 10 products per page and loop through 3 pages for use in Zoho Deluge. If this works, we can increase the number of pages as well as the number of products per page:
Zoho Deluge: Generate a loop or list of any size

What?
This is an article on a trick I picked up from one of our interviewees as well as apparently in one of the Zoho documentation manuals. It uses leftpad to create a string of a length, converts it to a list, then lets you generate an array or list of any size.

Why?
My use case here is to run a schedule that will populate a list with the upcoming dates for the next week (and for any numbers of weeks thereafter). This needs to be dynamic as it is a schedule run daily checking the availability of a staff member for the upcoming week.

How?
As mentioned, using leftpad takes 2 parameters, the first is the string to start with, the second is the number of spaces to pad with.