Invoice and Comission Creation
Sample CRM function for Affluence Financial Planning to create Commission records and an Invoice See here for an in-depth look at how to use and implement this code.
// Getting the initial variables we'll use throughout the function. DealRecord, DealName, Deal Amount, Owner ID, Financial Planner ID, etc.
//
dealRecord = zoho.crm.getRecordById("Deals",DEAL_ID);
// Getting the DealRecord so we don't have to add a bunch of arguments.
dealName = dealRecord.get("Deal_Name");
info dealName;
dealAmount = dealRecord.get("Amount");
info dealAmount;
ownerId = dealRecord.get("Owner").get("id");
ownerName = dealRecord.get("Owner").get("name");
info ownerId;
financialPlanningAdvisorId = dealRecord.get("Financial_Planning_Advisor").get("id");
financialPlanningAdvisorName = dealRecord.get("Financial_Planning_Advisor").get("name");
//
// If the Deal Amount is over $20,000, we want to change up the commission rate.
//
if(dealAmount > 20000)
{
commissionRate = .075;
}
else
{
commissionRate = .05;
}
info "Commission Rate: " + commissionRate;
//
// Calculating the commission rate
//
commissionAmount = dealAmount * commissionRate;
info "Commission Amount: " + commissionAmount;
//
// Putting together our Commission Map for the commissions we'll create later in our function. We don't add the "Owner" of the commission, because that will be defined later in a "For Each" loop
//
commissionMap = Map();
commissionMap.put("Commission_Amount",commissionAmount);
commissionMap.put("Related_Deal",DEAL_ID);
commissionMap.put("Name",dealName + " Commission");
//
// Populating the list of User IDs that we generated in the first section — we'll use this list as part of our For Each loop later in the function.
//
userIdList = list();
userIdList.add(ownerId);
userIdList.add(financialPlanningAdvisorId);
commissionList = list();
//
// Iterating through every User ID in our list to create functions for each.
//
for each userId in userIdList
{
commissionMap.put("Owner",userId);
createCommission = zoho.crm.createRecord("Commissions",commissionMap);
commissionList.add(createCommission);
}
info commissionList;
//
// Filtering through our list of created commissions to see if any commissions are over $5,000 — if they are, we can create a task to congratulate the salesperson, send an automated email, etc. We don't actually perform any action with the next 15 lines of code. It's there just as a demo of IF/FOR EACH statements
//
for each commission in commissionList
{
commissionId = commission.get("id");
commissionRecord = zoho.crm.getRecordById("Commissions",commissionId);
commissionAmount = commissionRecord.get("Commission_Amount");
info commissionAmount;
if(commissionAmount > 5000)
{
yarg = 10;
}
else
{
yarg = 5;
}
}
info "Yarg — if Yarg is 10, the Commission is over 5000, if Yarg is 5 the commission is under 5000: " + yarg;
//
//Every command in Books requires the Organization ID. What follows is the API call for getting the Org ID
//
getOrganizations = invokeurl
[
url :"https://books.zoho.com/api/v3/organizations"
type :GET
connection:"zohobooks"
];
info getOrganizations;
orgId = getOrganizations.get("organizations").get(0).get("organization_id");
info "Org ID: " + orgId;
//
// We search Books for Customers whose Name matches the "Account Name" from the Deal record
//
accountName = dealRecord.get("Account_Name").get("name");
info "Account Name: " + accountName;
searchParam = {"contact_name":accountName};
customerRecord = zoho.books.getRecords("Contacts",orgId,searchParam).get("contacts");
//
//If we find a Customer record, get the ID for creating the invoice later. If not, we create a Customer record and then get its ID (using the same variable)
//
if(!customerRecord.isEmpty())
{
customer = customerRecord.get("0");
customerId = customer.get("contact_id");
}
else
{
newCustomerMap = Map();
newCustomerMap.put("contact_name",accountName);
createCustomer = zoho.books.createRecord("Contacts",orgId,newCustomerMap);
customer = createCustomer.get("contact");
customerId = customer.get("contact_id");
}
//Now we create the invoice map, add all the right fields, line item details, and create the Invoice!
//
today = zoho.currentdate;
invoice = Map();
invoice.put("customer_id",customerId);
invoice.put("date",today);
invoice.put("line_items",{{"item_id":"2342210000000373001","quantity":"1","rate":dealAmount}});
createInvoice = zoho.books.createRecord("invoices",orgId,invoice);
info "Invoice Record: " + createInvoice;d,{"Company_Overview":company_overview});
info update2;
}
}
Want to learn even more?
Sign up for one of our Zoho courses!
0 Lessons
Should I Use Zoho Meeting, or Another Webinar/Web Conferencing Tool?
0% Complete
0/0 Steps
Want this functionality, but don't want to do it yourself?
Click here to speak to us!
Need help with your Zoho system?
Hire a full time Zoho System Admin from our poolof highly qualified program graduates!

Related Resources
This set up allows you to insert subform rows and add to picklist dynamically with...
Deluge script for sorting lists containing maps by the specific key (by date-time/alphabetical...
When scripting, ask yourself this question - will this value ever be null? If it's...
This script allows you to create a HTML table in Deluge with dynamic rows, then merge...
When a Zoho CRM record is created/updated/deleted via Deluge, the system does not...
Click Here to Apply
Description
Location
Bastrop/Smithville area
Role
Entry...
Click Here to Apply
Description
Location
New Braunfels area
Role
The Partner...
This tutorial will illustrate how to create a custom function (using Deluge scripting)...
This tutorial demonstrates the integration between Shopify and Zoho Inventory. Use...
This tutorial provides a Creator script that loads related records from Zoho CRM...