Function to check frequency of customer ordering patterns

Function to check frequency of customer ordering patterns

Hi,

I'm no coder, so I thought I could make use of Chat GPT to generate some Deluge script to create a function that would check order frequency of our customers so that I could send an email if they go beyond their usual order pattern.

Chat GPT and Claude seemed super confident they could do the job, but failed. I keep getting errors.

Here's sample code:

string calculateOrderFrequency(string orderID)
{
    // Get the Contact associated with this order
    contactInfo = zoho.crm.getRelatedRecords("Contacts", "Sales_Orders", orderID);
    
    // If no contact is found, exit the function
    if(contactInfo.isEmpty())
    {
        return "No contact found for this order";
    }
    
    // Get the contact ID from the first related contact
    contactId = contactInfo.get(0).get("id");
    
    // Retrieve all previous orders for this contact
    previous_orders = zoho.crm.getRelatedRecords("Sales_Orders", "Contacts", contactId);
    
    // We need at least 2 orders to calculate frequency
    if(previous_orders.size() >= 2)
    {
        // Create a list to store order dates
        order_dates = List();
        
        // Add all order dates to our list
        for each rec in previous_orders
        {
            orderDate = rec.get("Order_Date");
            if(orderDate != null)
            {
                order_dates.add(orderDate);
            }
        }
        
        // Sort dates from oldest to newest
        order_dates.sort();
        
        // Calculate time between orders using a different approach
        total_days = 0;
        intervals = 0;
        
        // Calculate date differences without using a standard loop
        latest_index = order_dates.size() - 1;
        
        // Process manually if we have at least 2 dates
        if(latest_index >= 1)
        {
            // Manually calculate first interval
            days_diff_1 = dateDiff(order_dates.get(1), order_dates.get(0), "days");
            total_days = total_days + days_diff_1;
            intervals = intervals + 1;
            
            // Manually calculate second interval if we have enough dates
            if(latest_index >= 2)
            {
                days_diff_2 = dateDiff(order_dates.get(2), order_dates.get(1), "days");
                total_days = total_days + days_diff_2;
                intervals = intervals + 1;
                
                // Manually calculate third interval if we have enough dates
                if(latest_index >= 3)
                {
                    days_diff_3 = dateDiff(order_dates.get(3), order_dates.get(2), "days");
                    total_days = total_days + days_diff_3;
                    intervals = intervals + 1;
                    
                    // Manually calculate fourth interval if we have enough dates
                    if(latest_index >= 4)
                    {
                        days_diff_4 = dateDiff(order_dates.get(4), order_dates.get(3), "days");
                        total_days = total_days + days_diff_4;
                        intervals = intervals + 1;
                        
                        // Manually calculate fifth interval if we have enough dates
                        if(latest_index >= 5)
                        {
                            days_diff_5 = dateDiff(order_dates.get(5), order_dates.get(4), "days");
                            total_days = total_days + days_diff_5;
                            intervals = intervals + 1;
                        }
                    }
                }
            }
        }
        
        // Calculate average frequency (if we have valid intervals)
        if(intervals > 0)
        {
            avg_frequency = total_days / intervals;
            
            // Round to nearest whole number
            avg_frequency = round(avg_frequency);
            
            // Create map of fields to update
            update_map = Map();
            update_map.put("Average_Order_Frequency", avg_frequency);
            update_map.put("Last_Order_Date", order_dates.get(order_dates.size() - 1));
            update_map.put("Email_Sent_Flag", false);
            
            // Update the contact record
            update_response = zoho.crm.updateRecord("Contacts", contactId, update_map);
            return "Updated contact with average order frequency: " + avg_frequency + " days";
        }
        else
        {
            return "Could not calculate intervals between orders";
        }
    }
    else
    {
        // If this is their first order, just update the last order date
        if(previous_orders.size() == 1)
        {
            update_map = Map();
            update_map.put("Last_Order_Date", previous_orders.get(0).get("Order_Date"));
            update_map.put("Email_Sent_Flag", false);
            zoho.crm.updateRecord("Contacts", contactId, update_map);
            return "First order - updated last order date only";
        }
        else
        {
            return "No orders found for this contact";
        }
    }
}

      Zoho Campaigns Resources


        • Desk Community Learning Series


        • Digest


        • Functions


        • Meetups


        • Kbase


        • Resources


        • Glossary


        • Desk Marketplace


        • MVP Corner


        • Word of the Day


        • Ask the Experts


          • Sticky Posts

          • Zoho CRM Functions 53: Automatically name your Deals during lead conversion.

            Welcome back everyone! Last week's function was about automatically updating the recent Event date in the Accounts module. This week, it's going to be about automatically giving a custom Deal name whenever a lead is converted. Business scenario Deals are the most important records in CRM. After successful prospecting, the sales cycle is followed by deal creation, follow-up, and its subsequent closure. Being a critical function of your sales cycle, it's good to follow certain best practices. One such
          • User Tips: Auto-Create Opportunity/Deal upon Quote Save (PART 1)

            Problem: We use quotes which convert to sales orders but Users / Sales Reps do not create opportunities / deals and go straight to creating a quote. This leads to poor reporting. Implementing this solution improves reporting and makes it easier for users.
          • Custom Function : Automatically send the Quote to the related contact

            Scenario: Automatically send the Quote to the related contact.  We create Quotes for customers regularly and when we want to send the quote to the customer, we have to send it manually. We can automate this, using Custom Functions. Based on a criteria, you can trigger a workflow rule and the custom function associated to the rule and automatically send the quote to customer through an email. Please note that the quote will be sent as an inline email content and not as a PDF attachment. Please follow
          • Function #50: Schedule Calls to records

            Welcome back everyone! Last week's function was about changing ownership of multiple records concurrently. This week, it's going to be about scheduling calls for records in various modules. Business scenario Calls are an integral part of most sales routines.. Sales, Management, Support, all the branches of the business structure would work in cohesion only through calls. You could say they are akin to engine oil, which is required by the engine to make all of it's components function perfectly. CRM
          • Function #37: Create a Purchase Order from a Quote

            Welcome back everyone! Last week, we learnt how to calculate the total number of activities for a lead and further take note of the activity count for particular dates. For instance, from the period of Demo to Negotiation. This week, let's look at a function that lets you create a Purchase Order instantly from a Quote. Business scenario: In any form of business, one of the most important things to do is to document the transactions. Naturally, negotiation, signing an agreement, placing an order,

          Zoho CRM Plus Resources

            Zoho Books Resources


              Zoho Subscriptions Resources

                Zoho Projects Resources


                  Zoho Sprints Resources


                    Zoho Orchestly Resources


                      Zoho Creator Resources


                        Zoho WorkDrive Resources



                          Zoho CRM Resources

                          • CRM Community Learning Series

                            CRM Community Learning Series


                          • Tips

                            Tips

                          • Functions

                            Functions

                          • Meetups

                            Meetups

                          • Kbase

                            Kbase

                          • Resources

                            Resources

                          • Digest

                            Digest

                          • CRM Marketplace

                            CRM Marketplace

                          • MVP Corner

                            MVP Corner




                            Zoho Writer Writer

                            Get Started. Write Away!

                            Writer is a powerful online word processor, designed for collaborative work.

                              Zoho CRM コンテンツ



                                ご検討中の方

                                  • Recent Topics

                                  • How to export all line-item descriptions for a specific item in Zoho Books?

                                    I am trying to audit a specific item (“Item X”) that has been invoiced multiple times with different line-level descriptions. Here’s the situation: I am using Zoho Books (Professional). Each invoice may contain the same item but with different descriptions
                                  • Show/ hide specific field based on user

                                    Can someone please help me with a client script to achieve the following? I've already tried a couple of different scripts I've found on here (updating to match my details etc...) but none of them seem to work. No errors flagged in the codes, it just
                                  • Where are Kanban swimlanes

                                    So i've been playing with Zoho Projects Kanban view a bit more. It appears that task lists are being used as the Kanban columns, which makes sense from the implementation point of view but not the logical one.  Kanban columns are statuses that a task can flow through, while a task list has been a logical way to organize related tasks and relate them to a mislestone. In other words a task in a particular task can go through several stages while remaining in the same task list. After doing some research
                                  • Tip 19: How to display images in Pages using ZML snippets

                                    Hi folks, We're back with another tip on how to use Zoho Markup Language (ZML) to create interactive pages in Zoho Creator. You can use ZML snippets to add various kinds of components to your pages and structure them in meaningful ways. That's not all, though—using ZML you can ensure your application is automatically compatible with all kinds of devices without any inconsistencies. We often get questions from users about how to invoke Deluge scripts within ZML code. Here's a simple use case for adding
                                  • Can zoho swign format block text spacing automatically when prefilled from zoho crm?

                                    I'm sending zoho sign template from zoho crm, so that zoho crm pre-populates most fields. I have existing pdf documents that i am having signed. I have no ability to change the pdf documents, they are standardized government forms. The problem I am facing
                                  • Forced Logouts - Daily and More Frequent

                                    In the last month or so, I've been getting "power logged out" of all of my Zoho apps at least daily, sometimes more frequently. This happens in the same browser session on the same computer, and I need to re-login to each app separately after this happens.
                                  • Zoho Inventory / Finance Suite - Add feature to prevent duplicate values in Item Unit field

                                    I've noticed that a client has 2 values the same in the Unit field on edit/create Items. This surprised me as why would you have 2 units with the same name. Please consider adding a feature which prevents this as it seems to serve no purpose.
                                  • Reference lookup field values in Client script

                                    hello all, I'm using a "ZDK.Apps.CRM.Products.searchByCriteria" function call, which is returning the matching records correctly; however, one of the fields is a lookup field which I need the associated data. I believe there is a way to get this data
                                  • In App Auto Refresh/Update Features

                                    Hi,    I am trying to use Zoho Creator for Restaurant management. While using the android apps, I reliased the apps would not auto refresh if there is new entries i.e new kitchen order ticket (KOT) from other users.   The apps does received notification but would not auto refresh, users required to refresh the apps manually in order to see the new KOT in the apps.    I am wondering why this features is not implemented? Or is this feature being considered to be implemented in the future? With the
                                  • Every time an event is updated, all participants receive an update email. How can I deactivate this?

                                    Every time an event is updated in Zoho CRM (e.g. change description, link to Lead) every participant of this meeting gets an update email. Another customer noticed this problem years ago in the Japanese community: https://help.zoho.com/portal/ja/community/topic/any-time-an-event-is-updated-on-zohocrm-calendar-it-sends-multiple-invites-to-the-participants-how-do-i-stop-that-from-happening
                                  • Online Assessment or any aptitude test

                                    This video is really helpful! I have one question — if I share an assessment form link (through email or with the application form on my career page), how does Zoho Recruit evaluate it? Can a candidate use Google or external help while taking the test,
                                  • How can I filter a field integration?

                                    Hi,  I have a field integration from CRM "Products" in a form, and I have three product Categories in CRM. I only need to see Products of a category. Thanks for you answers.
                                  • Email task creator when task is updated/marked complete

                                    I am looking for a way to notify the creator of a task in zoho todo when - Task is updated Task is closed Comments entered 1 and 2 are critical, and I cannot find a zoho flow to do this. There is no way that as a manager I will know when someone has completed
                                  • How to move emails to Shared Mailbox?

                                    Hello, I created a Shred Mailbox instead of using a distribution group. But I cannot move previous emails to certain shared mailbox. Is it possible move some emails from inbox to shared mailbox?
                                  • How to implement new online payment gateway?

                                    Hello, Can you tell me how to proceed to implement my local payment gateway? DIBS has an open avaiable API that should be easy to implement into ZOHO BOOKS. http://tech.dibspayment.com/dibs_payment_window
                                  • Zoho CRM - Portal Users Edit Their Own Account Information

                                    Hi Community, I'm working on a client portal and it seems like the only I can make the Account record editable to the Contact, is if I add another lookup on the Account to the Contact record. Am I missing something as the account already has a list of
                                  • I’ve noticed that Zoho Sheet currently doesn’t have a feature similar to the QUERY formula in Google Sheets or Power Query in Microsoft Excel.

                                    These tools are extremely helpful for: Filtering and extracting data using simple SQL-like queries Combining or transforming data from multiple sheets or tables Creating dynamic reports without using complex formulas Having a Query-like function in Zoho
                                  • Connecting Zoho Mail with Apollo.io

                                    Hi, I am trying to connect my Zoho Mail account with my Apollo.io account to start sending cold email for prospecting purposes. I have activated the IMAP setting but I am still unable to connect to the Apollo account. I am using my email credentials but
                                  • Where does this report come from in the Zoho One ecosystems?

                                    Is this directly from MA, Analytics or ??? ???
                                  • Contact's title in "Contact Role Mapping"

                                    When I'm creating a deal, I'd like to see the contacts title in the listing. Right now, I only see this: How can I get the contact's title in there?
                                  • Zoho CRM - Client Portal - Hide Notes Related List

                                    Hi Community, I'm building a customer portal and I can't find a way to hide the notes related list. I don't want the client to see the notes I have about them. Is there a way to do this as it is no bin/trash icon when I hover over.
                                  • "Pivot Table" Conditional Formatting

                                    Team, I there a way to use conditional formatting a "Pivot Table"  report? Thanks, Arron Blue Pumpkin Hosting | Solutions Made Simple
                                  • How many clients can be added to Zoho Practice?

                                    How many clients can be added to Zoho Practice without having their zoho app?
                                  • Stage History

                                    when viewing a ticket , and you look at stage history tab (kanban view) and look at the stage duration column in days, it shows the current stage of the ticket as " current stage ". Should it not rather show the amount of days it has been in that current
                                  • Send Automated WhatsApp Messages and Leverage the Improved WhatsApp Templates

                                    Greetings, I hope all of you are doing well. We're excited to announce a major upgrade to Bigin's WhatsApp integration that brings more flexibility, interactivity, and automation to your customer messaging. WhatsApp message automation You can now use
                                  • Automating Ticket Responses Using Zoho Desk's AI Features

                                    We’re looking to set up an automation within Zoho Desk that can analyze incoming emails or tickets and automatically respond with relevant knowledge base articles based on the content of the request. Could you please guide us on how to configure this
                                  • Optimising CRM-Projects workflows to manage requests, using Forms as an intermediary

                                    Is it possible to create a workflow between three apps with traceability between them all? We send information from Zoho CRM Deals over to Zoho Projects for project management and execution. We have used a lookup of sorts to create tasks in the past,
                                  • Service locations are tied to contacts?

                                    Trying the system out. And what I discovered is that it seems that the whole logic of the app is, I'd say, backwards. There is a Customer - a company. The company has contact persons and service locations can be associated with different contact persons.
                                  • Enhancements to Zoho Maps integration tasks

                                    Hello everyone, We're excited to announce enhancements to the Zoho Maps integration tasks in Deluge, which will boost its performance. This post will walk you through the upcoming changes, explain why we're making them, and detail the steps you need to
                                  • Bug in Total Hour Calculation in Regularization for past dates

                                    There is a bug in Zoho People Regularization For example today is the date is 10 if I choose a previous Date like 9 and add the Check in and Check out time The total hours aren't calculated properly, in the example the check in time is 10:40 AM check
                                  • Cliq iOS can't see shared screen

                                    Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
                                  • UPS Label size when generated via Zoho

                                    We've integrated UPS with Zoho inventory. When creating and downloading the shipping labels they are created in a larger paper size. I'd like them to be generated to print on a 4x6 printer. Zoho have told me I need to do this within our UPS portal. UPS
                                  • Narrative 12: Sandbox - Testing without the risk

                                    Behind the scenes of a successful ticketing system: BTS Series Narrative 12: Sandbox - Testing without the risk What is a sandbox environment? A sandbox environment is a virtual playground that allows you to test freely and experiment with various elements
                                  • Dynamically catching new file creations

                                    I have a team folder with many subfolders, and in those folders we add new documents all the time. I'd like to have a workflow or script to notify me (and then take other actions) when a file is added anywhere in that structure that ends in "summary.txt".
                                  • Announcing new features in Trident for Mac (1.27.0)

                                    Hello everyone! Trident for macOS (v1.27.0) is here with new features and enhancements to improve scheduling and managing your calendar events. Let's take a quick look at them. Stay aligned across time zones. Both the scheduled and original time zones
                                  • Branding of native system emails

                                    Make system emails adjustable in terms of branding. We want our system to be completely white label, because it is not a CRM anymore, it's way more than that. We are following the strategy of "CRM for everyone" to use the CRM in all departments, not only
                                  • Slow uploads of large files

                                    I'm wanting to use Workdrive for transferring large images and video (we're talking things from 100MB-5GB). I'm running solo on a 500MBit/sec fiber connection. I'm getting upload speeds to Workdrive of no more than about 1-3Mbytes/sec when going through
                                  • Notes of Tasks in Zoho CRM

                                    Hello, Is there a way to filter the Notes that appear on a Task to only show the notes related to that specific Task and not display all the Notes of the objects related to that Task (Accounts, Contacts, Deal, etc). In essence, our team struggles to understand
                                  • Migrate Your Notes from OneNote to Zoho Notebook Today

                                    Greetings Notebook Users, We’re excited to introduce a powerful new feature that lets you migrate your notes from Microsoft OneNote to Zoho Notebook—making your transition faster and more seamless than ever. ✨ What’s New One-click migration: Easily import
                                  • need to upload from airtable to google drive

                                    I have a zapier zap that automates between airtable and google drive. When a customer uploads a new file into airtable via a client portal interface, zapier uploads that file into a folder linked to that customer's project record. I need to replicate
                                  • Next Page