Kaizen 230 - Smart Discount-Based Quote Approvals Using CRM Functions and Approval Process

Kaizen 230 - Smart Discount-Based Quote Approvals Using CRM Functions and Approval Process


Hello everyone!
Welcome back to the Kaizen series!
Discount approvals are a standard part of sales governance.
Most organizations need something like this:

Discount %
Required Action
< 10%
Auto-approve
10–19.99%
Sales Manager approval
≥ 20%
VP Sales approval

Zoho CRM already includes a powerful Approval Process feature capable of routing records, locking them, notifying approvers, and maintaining audit history.
So the natural question is "Isn’t the native Approval Process enough?". Often, yes. But when the discount logic depends on accurate percentage calculation across line items and header adjustments, we need a small architectural enhancement.

This Kaizen combines Functions(for decisions), Workflow Rules(for triggers), Approval Process(for governance), and Reporting Hierarchy(for routing) into a clean, scalable solution.

Understanding the native Approval Process

Before adding anything custom, it’s important to recognize what the Approval Process already does extremely well.
  1. Evaluates criteria based on field values
  2. Automatically submits records
  3. Locks records during review
  4. Routes to users, roles, or hierarchy levels
  5. Maintains approval history
  6. Sends notifications
It is a powerful governance engine.
However, it evaluates existing values and does not calculate new ones. That distinction matters in discount scenarios.

The missing piece: Reliable discount percentage

In Quotes:
  1. Discounts may be applied at line-item level
  2. Discounts may be applied at header level
  3. Grand Total reflects cumulative adjustments

There is no guaranteed native field that consistently represents
True Discount % = (Sub_Total - Grand_Total) / Sub_Total * 100

If approval rules rely directly on partial fields(like “Discount”), they may misrepresent the effective discount.

To ensure accuracy, we introduce a Function to calculate and store a reliable Discount Percentage.
We are not replacing the Approval Process, but preparing accurate data for it.

Here is the architectural flow with each component having a distinct responsibility. This makes the system sustainable.
Quote Saved --> Workflow triggers Function --> Function calculates Discount % --> Function sets Approval_Status --> Approval Process evaluates status --> Record submitted and locked

Let's go over this one step at a time.

Step 1: Create Custom Fields(Quotes Module)

Field
Type
Purpose
Discount_Percentage
Percent
Stores calculated discount
Approval_Status
Picklist
Controls approval trigger. Values:
  1. Auto Approved
  2. Pending Manager Approval
  3. Pending VP Approval
  4. Approved
  5. Rejected
Approval_LevelSingle LineDisplays routing level

Step 2: Write the CRM Function(Decision Layer)

This function calculates the effective discount and determines the approval level. This function becomes the decision engine.
void automation.Set_Quote_Approval_Level(String id)
{
quoteId = id.toLong();
quoteDetails = zoho.crm.getRecordById("Quotes",quoteId);
if(quoteDetails != null)
{
subTotal = ifnull(quoteDetails.get("Sub_Total"),0).toDecimal();
grandTotal = ifnull(quoteDetails.get("Grand_Total"),0).toDecimal();
discount = subTotal - grandTotal;
discountPercentage = 0.0;
if(subTotal > 0)
{
discountPercentage = discount / subTotal * 100;
}
approvalStatus = "";
approvalLevel = "";
if(discountPercentage < 10)
{
approvalStatus = "Auto Approved";
approvalLevel = "None - Auto Approved";
}
else if(discountPercentage < 20)
{
approvalStatus = "Pending Manager Approval";
approvalLevel = "Sales Manager";
}
else
{
approvalStatus = "Pending VP Approval";
approvalLevel = "VP Sales";
}
updateMap = Map();
updateMap.put("Discount_Percentage",discountPercentage.round(2));
updateMap.put("Approval_Status",approvalStatus);
updateMap.put("Approval_Level",approvalLevel);
updateResponse = zoho.crm.updateRecord("Quotes",quoteId,updateMap);
}
}

Step 3: Workflow(Trigger Layer)

Every time a quote is saved, we want the discount to be evaluated automatically.
Create the following Workflow Rule:
Module: Quotes
Trigger: On Create or Edit
Action: Execute Function
Map the Quote ID with the "id" argument in the function.


Step 4: Approval Process(Governance Layer)

Rule 1 - Manager Approval when Discount% is 10 to 19.99
Approval_Status = "Pending Manager Approval" --> Route to Sales Manager(via hierarchy)

Rule 2 - VP Sales Approval when Discount% >= 20
Approval_Status = "Pending VP Approval" --> Route to VP Sales(via hierarchy)
When this process is triggered, CRM:
  1. Submits the record for approval
  2. Locks it
  3. Sends notification
  4. Tracks approval history

The outcome


Why is this layered approach strong?

This design works well because each component in the system has a clearly defined responsibility. The CRM Function acts as the decision layer. It performs the discount calculation, determines the appropriate approval level, and updates the control fields. This ensures that the logic behind the approval requirement is accurate and intentional.

The workflow serves as the trigger layer. Its only job is to execute the function whenever a quote is created or edited. It does not contain business logic; it simply initiates the evaluation process at the right time.

The approval process becomes the governance layer. Once the function sets the appropriate status, the approval engine evaluates the criteria, submits the record, locks it, routes it to the correct approver, and maintains the approval history. This is where enforcement happens.

Finally, the reporting hierarchy determines who the approver is. Instead of hard-coding specific users, the system dynamically identifies the appropriate manager or second-level supervisor based on the role structure. This keeps the design scalable and adaptable to organizational changes.

By separating calculation, triggering, enforcement, and routing into distinct layers, the solution remains clean, maintainable, and easy to extend. The Approval Process continues to do what it does best—govern and enforce—while the Function ensures that the decision it evaluates is accurate and business-driven.

Summary

Zoho CRM’s native Approval Process is powerful and reliable.
When business logic depends on calculated values, like true discount percentage, introducing a function strengthens the design by ensuring accurate, consistent decision-making.
Used together, Functions and Approval Process create:
  1. Intelligent routing
  2. Accurate governance
  3. Clean audit trails
  4. Scalable architecture
That combination is what makes this solution robust.

We hope you liked this post. We'll see you next week with another interesting one!
Write to us at support@zohocrm.com or let us know your feedback in the comments section of this post.

Cheers!



==========================================================================




    Access your files securely from anywhere

        All-in-one knowledge management and training platform for your employees and customers.







                              Zoho Developer Community




                                                    • Desk Community Learning Series


                                                    • Digest


                                                    • Functions


                                                    • Meetups


                                                    • Kbase


                                                    • Resources


                                                    • Glossary


                                                    • Desk Marketplace


                                                    • MVP Corner


                                                    • Word of the Day


                                                    • Ask the Experts



                                                              • Sticky Posts

                                                              • Kaizen #198: Using Client Script for Custom Validation in Blueprint

                                                                Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
                                                              • Kaizen #226: Using ZRC in Client Script

                                                                Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
                                                              • Kaizen #222 - Client Script Support for Notes Related List

                                                                Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
                                                              • Kaizen #217 - Actions APIs : Tasks

                                                                Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
                                                              • Kaizen #216 - Actions APIs : Email Notifications

                                                                Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are


                                                              Manage your brands on social media



                                                                    Zoho TeamInbox Resources



                                                                        Zoho CRM Plus Resources

                                                                          Zoho Books Resources


                                                                            Zoho Subscriptions Resources

                                                                              Zoho Projects Resources


                                                                                Zoho Sprints Resources


                                                                                  Qntrl Resources


                                                                                    Zoho Creator Resources



                                                                                        Zoho CRM Resources

                                                                                        • CRM Community Learning Series

                                                                                          CRM Community Learning Series


                                                                                        • Kaizen

                                                                                          Kaizen

                                                                                        • Functions

                                                                                          Functions

                                                                                        • Meetups

                                                                                          Meetups

                                                                                        • Kbase

                                                                                          Kbase

                                                                                        • Resources

                                                                                          Resources

                                                                                        • Digest

                                                                                          Digest

                                                                                        • CRM Marketplace

                                                                                          CRM Marketplace

                                                                                        • MVP Corner

                                                                                          MVP Corner









                                                                                            Design. Discuss. Deliver.

                                                                                            Create visually engaging stories with Zoho Show.

                                                                                            Get Started Now


                                                                                              Zoho Show Resources

                                                                                                Zoho Writer

                                                                                                Get Started. Write Away!

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

                                                                                                  Zoho CRM コンテンツ




                                                                                                    Nederlandse Hulpbronnen


                                                                                                        ご検討中の方




                                                                                                                • Recent Topics

                                                                                                                • Create an Eye-Catching Announcement Widget for Your Help Center

                                                                                                                  Hello Everyone! In this week’s edition, let’s explore how to keep your customers updated with exciting news in the Help Center. See how ZylkerMobile wowed their customers by bringing updates right to their portal. ZylkerMobile, the renowned brand for
                                                                                                                • New 2026 Application Themes

                                                                                                                  Love the new themes - shame you can't get a little more granular with the colours, ie 3 different colours so one for the dropdown menu background. Also, I did have our logo above the application name but it appears you can't change logo placement position
                                                                                                                • Zoho Desk: Macro to assign Ticket to self

                                                                                                                  Hello, We are using macros in Zoho Desk to set some fields and send a response. I would also like to assign the ticket to myself (or whoever applies the macro). I can only set a fixed agent in the macro, so I would have to create one for every agent.
                                                                                                                • Turn off Knowlege Base Follow options and Follower lists

                                                                                                                  Is there a way to hide or turn off the option in the Knowledge Base for users to follow specific departments/categories/sections/articles? If not, is there a way to turn off the public list of followers for each of those things? Otherwise, customer names
                                                                                                                • Enterprise Data management solutions

                                                                                                                  I'm on the hunt for the perfect Data management solution for my organization. I've been doing a ton of research across different websites, but honestly, it's just left me more confused! A friend suggested I check here, so I'm hoping someone can point
                                                                                                                • New Feature: Audit Log in Zoho Bookings

                                                                                                                  Greetings from the Zoho Bookings team! We’re excited to introduce Audit Log, a new feature designed to help you track all key actions related to your appointments. With Audit Log, you can maintain transparency, strengthen security, and ensure accountability.
                                                                                                                • Automated Task reminder

                                                                                                                  First question: If a task does not have a reminder set, will it still send an email notification that the task is due today? If not, how can I set up an automated reminder to send the task owner an email that it is due on a certain date?
                                                                                                                • Zoho Support - contract notifications

                                                                                                                  Hi, I have a few questions about using Zoho support. Is there a way to add custom contract notifications like (90 days before expiry send notification e-mail to agent and customer, then another 60 days before expiry and another 30 days.). And is it possible
                                                                                                                • Super Admin Logging in as another User

                                                                                                                  How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
                                                                                                                • Kaizen #230 - Smart Discount-Based Quote Approvals Using CRM Functions and Approval Process

                                                                                                                  Hello everyone! Welcome back to the Kaizen series! Discount approvals are a standard part of sales governance. Most organizations need something like this: Discount % Required Action < 10% Auto-approve 10–19.99% Sales Manager approval ≥ 20% VP Sales approval
                                                                                                                • How to create a new Batch and update Stock via Inventory?

                                                                                                                  Hi everyone, We are building an automation where a user enters batch details (Batch Number, Mfg Date, Expiry, and Quantity) into a Custom Module. I need this to trigger an API call to Zoho Inventory to: Create the new batch for the item. Increase the
                                                                                                                • OAuth2 Scope Error - Incorrectly defaulting to CRM instead of Analytics.

                                                                                                                  Hello Zoho Team, I am trying to connect n8n to Zoho Analytics API V2 for a simple automation project. Despite using the correct Analytics-specific scopes, my OAuth handshake is failing with a CRM-related error. The Problem: The authorization screen shows:
                                                                                                                • Is it possible to create a meeting in Zoho Crm which automatically creates a Google Meet link?

                                                                                                                  We are using Google's own "Zoho CRM for Google" integration and also Zoho's "Google Apps Sync" tools, but none of them provide us with the ability to create a meeting in Zoho CRM that then adds a Google Meet link into the meeting. Is this something that
                                                                                                                • Trigger a Workflow Function if an Attachment (Related List) has been added

                                                                                                                  Hello, I have a Case Module with a related list which is Attachment. I want to trigger a workflow if I added an attachment. I've seen some topics about this in zoho community that was posted few months ago and based on the answers, there is no trigger
                                                                                                                • How can I link Products in a Deal Subform to the Products Module

                                                                                                                  Hello, I have a pricing subform on our Deals page and use a lookup field to associate a product with each line. I want to be able to look at a product page within the Products module and see a list of the deals connected to that product. I have this working
                                                                                                                • Email Field Validation Incorrectly Rejects RFC-Compliant Addresses (Forward Slashes)

                                                                                                                  I've encountered a validation issue with Zoho Creator's Email field that rejects RFC-compliant email addresses containing forward slashes, and I'm hoping the Zoho team can address this in a future update. The Issue When entering an email address containing
                                                                                                                • Call result pop up on call when call ends

                                                                                                                  I’d like to be able to create a pop up that appears after a call has finished that allows me to select the Call Result. I'm using RingCentral. I have seen from a previous, now locked, thread on Zoho Cares that this capability has been implemented, but
                                                                                                                • ZOHO.CRM.UI.Record.open not working properly

                                                                                                                  I have a Zoho CRM Widget and in it I have a block where it will open the blocks Meeting like below block.addEventListener("click", () => { ZOHO.CRM.UI.Record.open({ Entity: "Events", RecordID: meeting.id }).catch(err => { console.error("Open record failed:",
                                                                                                                • ZOHO.CRM.UI.Record.open not working properly

                                                                                                                  I have a Zoho CRM Widget and in it I have a block where it will open the blocks Meeting like below block.addEventListener("click", () => { ZOHO.CRM.UI.Record.open({ Entity: "Events", RecordID: meeting.id }).catch(err => { console.error("Open record failed:",
                                                                                                                • Payment system for donations management

                                                                                                                  I manage an organization where we receive donations from payers. Hence, there is no need to first create invoices and then create payments received against the invoices. What are the recommended best practices to do this in ZohoBooks?
                                                                                                                • Recording the deducted TDS on advance received from Customer (Zoho Books India)

                                                                                                                  Hi, How can we record the tds that has been deducted by my customer for the advance that he has paid to me. 1) My customer has paid Rs 10000 to me as advance (Rs 9800 as cash and deducted Rs 200 as TDS). I am not able to record the tds that has been deducted
                                                                                                                • Changing Account Type in Chart of Accounts

                                                                                                                  Does anyone know how to change/edit the account type for an Account name in Chart of Accounts. Zoho will not let me do this for some reason
                                                                                                                • Bulk bank rule creatioin

                                                                                                                  Hi team, I am exploring Option to create a multiple bank rule. Could please suggest the option to implement this?
                                                                                                                • The Social Wall: January 2026

                                                                                                                  Hello everyone, We’re back with the first edition of The Social Wall of 2026. There’s a lot planned for the year ahead, and we’re starting with a few useful features and improvements released in January to help you get started. Create a GBP in Social
                                                                                                                • Zoho books aide

                                                                                                                  Bonjour, je rencontre un problème avec Zoho Books. J’ai effectué une demande de support via l’interface prévue à cet effet, mais je n’ai jamais de retour. Je ne reçois ni email de confirmation, ni information concernant la prise en charge de ma demande,
                                                                                                                • Smart Data, Smarter Contracts — Ensuring Consistency Between Metadata and Documents

                                                                                                                  In contract management, data accuracy is not just a nice-to-have—it is essential. A single mismatch between what your system shows and what is written in the contract can ripple into approval delays, compliance risks, and broken trust in your data. Imagine
                                                                                                                • Join Zoho Meeting only via Web browser and not with Zoho Meeting App

                                                                                                                  Dear Zoho team, according to the documentation [1], Zoho Meeting only offers web view for Chrome and Firefox on a desktop. For other browsers and devices, participants can only join a Zoho Meaning with the Zoho Meeting App installed. This is a big hurdle
                                                                                                                • CRM gets location smart with the all new Map View: visualize records, locate records within any radius, and more

                                                                                                                  Hello all, We've introduced a new way to work with location data in Zoho CRM: the Map View. Instead of scrolling through endless lists, your records now appear as pins on a map. Built on top of the all-new address field and powered by Mappls (MapMyIndia),
                                                                                                                • Auto tagging

                                                                                                                  Some of the articles I enter into Notebook get there when I enter them in Raindrop.io and IFTTT copies the articles in Notebook. When this happens the notes are tagged but instead of useful one word tags with topic the tag pertains to the specific article
                                                                                                                • Integrating Zoho People Attendance to Biometric Machine (ZKTeco 40 k )

                                                                                                                  Please help us for Integrating Zoho People Attendance to Biometric Machine (ZKTeco 40 k )
                                                                                                                • Move email between inboxes?

                                                                                                                  Is it possible to move emails from one team inbox to another? We would like to be able to have a single "catch-all" inbox for incoming requests, and then move the email to the appropriate department inbox. I was hoping we would be able to accomplish this
                                                                                                                • Updating records through Zoho Sheets View doesn't update timeline or trigger workflow rules

                                                                                                                  I have noticed that when i update a series of record with the zoho sheets view (see here http://d.pr/i/ahnR) it doesn't update timeline history or trigger workflow rules. I am using it in the Deals module. Looking forward for some more info. Denis
                                                                                                                • Manage control over Microsoft Office 365 integrations with profile-based sync permissions

                                                                                                                  Greetings all, Previously, all users in Zoho CRM had access to enable Microsoft integrations (Calendar, Contacts, and Tasks) in their accounts, regardless of their profile type. Users with administrator profiles can now manage profile-based permissions
                                                                                                                • Zoho CRM for Everyone's NextGen UI Gets an Upgrade

                                                                                                                  Hello Everyone We've made improvements to Zoho CRM for Everyone's Nextgen UI. These changes are the result of valuable feedback from you where we’ve focused on improving usability, providing wider screen space, and making navigation smoother so everything
                                                                                                                • inability to use different primary address on invoice per location

                                                                                                                  my company operates in two different locations with different email address. The problems then is the inability to edit the primary to suite the invoice for the second location.
                                                                                                                • AI Search and Record Retrieval Inside Zoho Creator – Is This Possible?

                                                                                                                  Is it possible to integrate an AI assistant into Zoho Creator that can intelligently search, retrieve, and analyze records within the application’s forms and reports? Can AI access and query existing Creator data securely using Deluge or APIs to provide
                                                                                                                • Rename Service Report

                                                                                                                  Some of our customers are requesting the name of the service report PDF to be in a specific format, for example, instead of REP-001.PDF some are requesting to include their name like customername.pdf. is that possible?
                                                                                                                • Smarter holiday planning with yearly-specific Holiday Lists

                                                                                                                  Hello everyone! Managing holidays and business hours is now easier and more efficient. Holiday Lists now support holidays that fall on different dates every year, while business hours now supports more than one holiday list. This helps businesses manage
                                                                                                                • AI Search and Record Retrieval Inside Zoho Creator – Is This Possible?

                                                                                                                  Is it possible to integrate an AI assistant into Zoho Creator that can intelligently search, retrieve, and analyze records within the application’s forms and reports? Can AI access and query existing Creator data securely using Deluge or APIs to provide
                                                                                                                • Scheduled AU Data Center Database Version Upgrade for Zoho Forms

                                                                                                                  Dear Zoho Forms' users, We would like to update you on a scheduled AU Data Center database version upgrade for Zoho Forms. Find the schedule below: Migration window: Sunday, 22nd February 2026 12.00 AM to 12.30 AM AEDT This migration is a part of our
                                                                                                                • Next Page