I am using Zoho CRM and I want to create an automated custom Deal Number for every new Deal record.
Business Requirement
Whenever a new Deal is created in the Deals module, Zoho CRM should automatically populate a custom field called Deal Number.
The Deal Number should be generated based on:
Current month
Current year
Running sequence number of Deals created/generated in the current month
Required Format
The Deal Number should look like this:
AL-MMYYYY-XXX
void automation.generateDealNumber(string dealID)
{
info "===== DEAL NUMBER FUNCTION START =====";
fieldAPIName = "Deal_Number";
cleanDealID = dealID.replaceAll("[^0-9]", "");
if(cleanDealID == "")
{
info "ERROR: No valid Deal ID received.";
return;
}
dealRecord = zoho.crm.getRecordById("Deals", cleanDealID.toLong());
existingNumber = ifnull(dealRecord.get(fieldAPIName), "");
if(existingNumber != "")
{
info "Deal Number already exists. Skipping update.";
return;
}
currentDate = zoho.currentdate;
monthText = currentDate.toString("MM");
yearText = currentDate.toString("yyyy");
prefix = "AL-" + monthText + yearText + "-";
criteria = "(" + fieldAPIName + ":starts_with:" + prefix + ")";
existingDeals = zoho.crm.searchRecords("Deals", criteria);
if(existingDeals == null)
{
existingDeals = List();
}
nextNumber = existingDeals.size() + 1;
if(nextNumber < 10)
{
sequenceNumber = "00" + nextNumber.toString();
}
else if(nextNumber < 100)
{
sequenceNumber = "0" + nextNumber.toString();
}
else
{
sequenceNumber = nextNumber.toString();
}
newDealNumber = prefix + sequenceNumber;
mp = Map();
mp.put(fieldAPIName, newDealNumber);
update = zoho.crm.updateRecord("Deals", cleanDealID.toLong(), mp);
info "Generated Deal Number:";
info newDealNumber;
info "Update Response:";
info update;
updatedDeal = zoho.crm.getRecordById("Deals", cleanDealID.toLong());
info "Value after update:";
info updatedDeal.get(fieldAPIName);
info "===== DEAL NUMBER FUNCTION END =====";
}
I created this function, Workflow is not updating the Deal Number Field!