Function-5: Create Quotes from deals with just the click of a button!

Function-5: Create Quotes from deals with just the click of a button!

Welcome back everyone!

Last week, we learnt about how to get the total taxes, total quantity and total discounts for a customer at a glance. This week, let's look at a custom function that makes your deals proceed smoother by creating a one-click-Quote directly from the deal.

Business scenario:

You hit a stage in a deal when you know it would follow through. This is when you must create a Quote. which is a legal agreement between a prospect and a vendor. Wouldn't it be cool to add a button to the deals module to automatically create a Quote from within the deal, on just a click of a button? Create a Quote at any stage of the deal and associate with the Quote, and save time!

Besides, the quote has the product details specific to the deal, leading to a simultaneously updated inventory as well. Two birds with one stone and all that :)

Getting started with the custom function:
  1. Go to Setup > Customization > Modules > Deals > Links and buttons >Create new button .
  2. Provide a name for the button. For example: “Create Quote from deal”. Add a description(optional).
  3. Select the placement of the button as View page .
  4. Select the action to be performed as " Writing custom function ".
  5. Click “ Free flow scripting ”.
  6. Copy the code given below.
  7. Click “ Edit arguments ”.
  8. Enter the name as “ potIdStr ” and select the value as “ Potential Id ”.
  9. Save the changes.
The script:

Code for Version 2.0 API:

  1. potDetails = zoho.crm.getRecordById("Deals",potIdStr.toLong());
  2. paramap = Map();
  3. if( ifnull(potDetails.get("Contact_Name"),"") != "")
  4. {
  5. contact = ifnull(potDetails.get("Contact_Name").get("id"),"");
  6. paramap.put("Contact_Name",contact);
  7. }
  8. if( ifnull(potDetails.get("Account_Name"),"") != "")
  9. {
  10. account = ifnull(potDetails.get("Account_Name").get("id"),"");
  11. paramap.put("Account_Name",account);
  12. }
  13. RelatedProducts = zoho.crm.getRelatedRecords("Products","Deals",potIdStr.toLong());
  14. product_items = List();
  15. for each product in RelatedProducts
  16. {
  17. proid = product.get("id");
  18. proname = product.get("Product_Name");
  19. productDesc= ifnull(product.get("Description"),"Manque Description Produit !!!");
  20. quantity = 1;
  21. price = ifnull(product.get("Unit_Price"),"0.0").toDecimal();
  22. listprice = price * quantity;
  23. lineitem = Map();
  24. lineitem.put("product",{"name":proname,"id":proid});
  25. lineitem.put("product_description",productDesc);
  26. lineitem.put("quantity",quantity);
  27. lineitem.put("net_total",listprice);
  28. lineitem.put("total",listprice);
  29. lineitem.put("list_price",listprice);
  30. product_items.add(lineitem);
  31. }
  32. paramap.put("Product_Details",product_items);
  33. paramap.put("Subject",ifnull(potDetails.get("Deal_Name"),""));
  34. paramap.put("Deal_Name",potIdStr.toLong());
  35. paramap.put("Description",ifnull(potDetails.get("Description"),""));
  36. createResp = zoho.crm.createRecord("Quotes", paramap);
  37. info paramap;
  38. info createResp;
  39. newid = ifnull(createResp.get("id"),"");
  40. if ( newid != "")
  41. {
  42. openUrl( "https://crm.zoho.com/crm/EntityInfo.do?module=Quotes&id=" + newid, "same window");
  43. return "New Quote created successfuly";
  44. }
  45. else
  46. {
  47. return "Quote could not be created. Missing product details in Deal.";
  48. }
Code for Version 1.0 API:

potIdStr = input.potId.toString();
potDetails = zoho.crm.getRecordById("Potentials", input.potId.toLong());
RelatedProducts = zoho.crm.getRelatedRecords("Products", "Potentials", potIdStr);
quotesubject = ifnull(potDetails.get("Potential Name"),"");
contact = ifnull(potDetails.get("CONTACTID"),"");
account = ifnull(potDetails.get("ACCOUNTID"),"");
description = ifnull(potDetails.get("Description"),"");
pdlist = List();
sub = 0.0;
for each eachProd in RelatedProducts
{
productDesc = ifnull(eachProd.get("Product Description"),"");
quantity = 1;
productId = ifnull(eachProd.get("PRODUCTID"),"");
price = (ifnull(eachProd.get("Unit Price"),"0.0")).toDecimal();
listprice = (price * quantity);
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listprice);
mp.put("Net Total", listprice);
pdlist.add(mp);
sub = (sub + listprice);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", quotesubject);
paramap.put("CONTACTID", contact);
paramap.put("ACCOUNTID", account);
paramap.put("POTENTIALID", input. potId);
paramap.put("Description", description);
paramap.put("Sub Total", sub);
paramap.put("Grand Total", sub);
createResp = zoho.crm.create("Quotes", paramap);
info createResp;
newid = createResp.get("Id");
return "Quote Created";

Found this useful? Try it out and let me know how it works! If you have questions, do not hesitate to ask! Share this with your team if you find it useful. See you all next week with another interesting custom function. Ciao!

Update: As you must be aware, API V1.0 will be deprecated and support for version 1.0 API will be available only till Dec 31, 2018. Version 1.0 compatible Functions will continue to work until Dec 31, 2019. You're advised to migrated to API Version 2.0 at the earliest. Check this announcement for more. We've updated the post to include the Version 2.0 compatible Function.


Edited on 18-May-2020:
  • As Contact and Account names are not mandatory, the code has been updated with a null check to skip them when they are empty, and update them in the Quote when available.

  • Product field cannot be empty while creating quotes. This code fetches the product details from the Deal and if the code is executed on a Deal record with empty product field, it will prompt the user to check the same.

  • As of now, the product quantity is taken as one in product field of Deals. This is a system limitation, and if your sale involves a quantity greater than one, you will have to update it manually in the newly created quote. The Quote opens in a new tab immediately upon creation.


      • Sticky Posts

      • Function #46: Auto-Calculate Sales Margin on a Quote

        Welcome back everyone! Last week's function was about displaying the discount amount in words. This week, it's going to be about automatically calculating the sales margin for a particular quote, sales order or an invoice. Business scenario Where there is sales, there's also evaluation and competition between sales reps. A healthy rivalry helps to better motivate your employees to do smart work and close deals faster and more efficiently. But how does a sales rep get evaluated? 90% of the time, it's
      • 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

        • Recent Topics

        • Task Deletion Restriction & Strict Stage Control

          Hello Zoho Community, We have the following two issues currently pending and under testing, for which we require a workable and reliable solution: 1. Task Deletion Restriction We are testing ways to ensure that staff users are not able to delete tasks
        • Unable to mass update a picklist field

          Hello, I have the records within our Accounts module divided between two account types: Parent Accounts & Member Accounts. I am attempting to mass update accounts from one picklist value to the other (within other specific criteria in our custom fields)
        • Process checklist in CRM

          Hi We've created a new sales process that I'm mapping into the CRM - issue I have is that some of the tasks / milestones I would like to capture require very simple tick box responses but there are quite a few under a variety of sub categories so I don't
        • CRM project association via deluge

          I have created a workflow in my Zoho CRM for closing a deal. Part of this workflow leverages a deluge script to create a project for our delivery team. Creating the project works great however, after or during the project creation, I would like to associate
        • 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
        • Holidays - Cannot Enter Two Holidays on Same Day

          I have a fairly common setup, where part-time employees receive 1/2 day's pay on a holiday and full-time employees receive a full day's pay. Historically, I've been able to accommodate this by entering two separate holidays, one that covers full-time
        • Where is the settings option in zoho writer?

          hi, my zoho writer on windows has menu fonts too large. where do i find the settings to change this option? my screen resolution is correct and other apps/softwares in windows have no issues. regards
        • Passing the CRM

          Hi, I am hoping someone can help. I have a zoho form that has a CRM lookup field. I was hoping to send this to my publicly to clients via a text message and the form then attaches the signed form back to the custom module. This work absolutely fine when
        • File emails in Shared email folder

          Hi, I am unable to allow users to collaborate in Shared email folders: User 1 shares a folder let's say "SharedTopic" with full permissions Users 2 and 3 can see this folder but are unable to add emails to this folder or search in this folder. For example,
        • No funcionan correctamente el calculo de las horas laborales para informe de tickets

          Hola, estoy intentando sacar estadísticas de tiempo de primera respuesta y resolución en horario laboral de mis tickets, pero el calculo de horas en horario laboral no funciona correctamente cree los horarios con los feriados : Ajusté los acuerdos de
        • How create a draft via workflow?

          I wish to create a workflow rule for specific emails that creates a draft response - not an automatic email reply, but just a draft with a set response ready to be verified by an agent who can then manually select recipients. Alternatively, the workflow
        • Ticket layout based on field or contact

          Hi! I want to support the following use-case: we are delivering custom IT solutions to different accounts we have, thus our ticket layouts, fields and languages (priority, status field values should be Hungarian) will be different. How should I setup
        • This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details

          Hi Team, when I,m trying to create a email account (imagixmidia.com.br) it's showing this error >>  This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details plz help me  thanks
        • How to manage task lists in Zoho Desk?

          Hello, I use Zoho Desk for IT customer support. I have a list of standard operating procedures (SOPs), including SOPs for onboarding new users, offboarding users, losing a device, etc. These are lists of tasks to be performed depending on the situation.
        • Zoho → ShipStation Integration – Sales Order–Driven Fulfilment Workflow

          Hello All, I’m reaching out to explore the best way to integrate a shipping tool into our inventory which will speed our process up. We are looking to integrate ShipStation into our existing order-to-fulfilment workflow, as we’re keen to standardise on
        • Business Day Logic Update: More Accurate Scheduling for Your Workflows

          Hello everyone, We’re improving how business-day calculations work in workflows, especially when triggers happen on weekends. This update ensures that offsets like +0, +1, and +2 business days behave exactly as intended, giving you clearer and more predictable
        • Convert Lead Automation Trigger

          Currently, there is only a convert lead action available in workflow rules and blueprints. Also, there is a Convert Lead button available but it doesn't trigger any automations. Once the lead is converted to a Contact/Account the dataset that can be fetched
        • Default Tagging on API-generated Transactions

          If one assigns tags to an Item or Customer, those tags get auto-populated in each line item of an Invoice or Sales Order when one creates those documents. However, if one creates the Sales Order or Invoice via the API (either directly coding or using
        • User

          If user is already part of manage engine endpoint central , what hapens when i try to add them to another Zoho org / directory? Are these users added as external users?
        • Adding a new section to the related details sidebar when creating a new ticket.

          Hello, I was wondering if you can add a new section to the related details sidebar when creating a new ticket. I was wanting to have it to where it also shows the account information related to the contact chosen as well. This is the section I am referring
        • Posibility to add Emoticons on the Email Subject of Templates

          Hi I´ve tried to add Emoticons on the Subject line of Email templates, the emoticon image does show up before saving the template or if I add the Emoticon while sending an Individual email and placing it manually on the subject line. Emoticons also show
        • Displaying only unread tickets in ticket view

          Hello, I was wondering if someone might be able to help me with this one. We use filters to display our ticket list, typically using a saved filter which displays the tickets which are overdue or due today. What I'd really like is another filter that
        • How to compare a subform lookup field that allows multiple entries when edited

          I have a form with a subform with multiple fields. One of the fields is a lookup field that allows a multi select. On edit validation, I want a workflow to execute only when the entries in that subform field has changed. The old. function is not working
        • Is Zoho Shifts included in the Zoho One plan?

          In case the answer is no: there's any plan to make it available via One? Thank you
        • Creating a Chart from a Report

          In Zoho Analytics, is it possible to create a chart from a Pivot View report? We are looking to use Zoho Analytics to replace Excel for Sales reports and would like to be able to show both the table and the chart together.
        • Zoho Tracking Image location

          So we've been having an issue with tracking email opens. Specifically in Gmail. Our emails are not that long either, maybe 4 sections of image/250 characters of text/button per section.  But all my test accounts I used via Gmail we're showing opens. But then come to find out the tracking image is at the very bottom of the email. So If the message is clipped (It always just clips our social icons on the bottom) and the user doesn't click the show more button it never tracks the open.  Looking at other
        • Is there a plan to integrate zoho voice with zoho books?

          Hello, Is there a plan to integrate zoho voice with zoho books? Right now we are using the Twilio SMS integration into zoho books, but have recently decided to switch to zoho voice for calls and sms. Is there a plan to integrate zoho voice natively into
        • Zoho Tables is now live in Australia & New Zealand!

          Hey everyone! We’ve got some great news to share — Zoho Tables is now officially available in the Australian Data Center serving users across Australia and New Zealand regions! Yes, it took us a bit longer to get here, but this version of Zoho Tables
        • Delivery and handling of documents e-stamped using Zoho Sign

          Hello everyone! Zoho Sign makes it easy to pay non judicial stamp duty online and automatically attach the digitally generated e-stamp challan to electronic documents. We also manage the delivery of physical e-stamped papers. We periodically receive these
        • Introducing Dedicated Modules for Plans, Addons, and Coupons in Zoho Billing

          We’ve enhanced the way you manage Plans, Addons, and Coupons in Zoho Billing. Previously, all three grouped together under Subscription Items. Now, each one has its own dedicated module, giving you a cleaner and more intuitive experience. This update
        • Sortie de Zoho TABLE ??

          Bonjour, Depuis bientôt 2 ans l'application zoho table est sortie en dehors de l'UE ? Depuis un an elle est annoncée en Europe Mais en vrai, c'est pour quand exactement ??
        • Zoho Forms API

          Is there any way to get all form entry list using API? Looking forward to hear from you
        • Issue with WhatsApp Template Approval and Marketing Message Limit in Zoho Bigin

          We are facing issues while creating and using WhatsApp message templates through Zoho Bigin, and we request your clarification and support regarding the same. 1. Utility Template Approval Issue Until December, we were able to create WhatsApp templates
        • How to install Widget in inventory module

          Hi, I am trying to install a app into Sales Order Module related list, however there is no button allow me to do that. May I ask how to install widget to inventory module related list?
        • Zoho Social - Feature Request - Reviewer Role

          Hi Social Team, I've come across this with a couple of clients, where they need a role which can review and comment on posts but who has no access to create content. This is a kind of reviewer role. They just need to be able to see what content is scheduled
        • Zoho Social - Feature Request - Non-US Date Format

          Hi Social Team, I have noticed that there is no option to change the date format from US mm/dd/yyyy to others like dd/mm/yyyy. It would be great to see this added as the platform matures. Thanks for considering this feedback.
        • Drop Down Value

          Hi, May I know why Zoho Flow treat this drop down as number and not as string. If so, how can I fetch the right value for filtering. This field is from Creator, in Creator upon checking by default it is a string since it's not a lookup field.
        • Zoho CRM's mobile apps: A 2025 Recap

          2025 marked a year of steady progress for Zoho CRM's mobile apps. We rolled out several updates and features to improve usability and make everyday CRM work a lot easier to manage. Here’s a look back at some of the key releases from 2025. Android releases
        • Dependent / Dynamic DropDown in ZohoSheets

          Has anyone figured out a way to create a Dropdown, the values of which is dependent on Values entered in the other cell ?
        • Facebook follower count doesn't match FB Analytics

          Hi all, I am wondering if anyone else has issues with follower counts for Facebook not matching FB's native analytics tool. On the Zoho dashboard, it's showing 1,007, but FB shows 1,060. All the other channels match up. Any insights are much appreciated!
        • Next Page