Función - Ejemplos
Las funciones lo ayudan a actualizar los datos de los módulos de CRM relacionados o en aplicaciones de terceros mediante la ejecución de scripts de programa simples. Con las funciones, puede programar scripts mediante los scripts de Deluge (con tecnología de Zoho Creator), vincularlos a reglas de flujo de trabajo y automatizar el proceso empresarial. Algunas de las funciones más útiles se indican a continuación.
Funciones tipo botón
Convertir clientes potenciales en registros en otros módulos.
Tipo de función: botón
Descripción de la función: puede convertir clientes potenciales en registros de otros módulos, como Cuentas, Contactos, Acuerdos potenciales, etc. con solo hacer clic en un botón.
Cómo hacer que funcione:
Colocación del botón: debe colocarse en la página de vista del módulo Clientes potenciales.
Asignación de argumentos: para configurar esta acción- Haga clic en Configuración > Personalización > Módulos > Clientes potenciales > Enlaces y botones > +Crear nuevo botón.
- Ingrese el nombre del botón > elija la página de vista > elija Funciones de escritura.
- Ingrese el nombre de la función y haga clic en Script de flujo libre.
- Copie el código que se indica a continuación.
- Haga clic en Editar argumentos.
- Ingrese el nombre "leadId" y elija el valor "Lead ID".
- Haga clic en +Agregar argumento y escriba el nombre "Authtoken".
- Haga clic en "Especificar valor personalizado" e ingrese el token de autenticación de CRM en el cuadro.
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
- En la página de creación del botón, haga clic en Guardar.
Nota
Si no desea eliminar el registro del cliente potencial después de la conversión, escriba un comentario en la última línea del script.
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = AccountCreate.get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID",newaccountId );
PotentialMap.put("CONTACTID",newcontactId );
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);
return "Lead converted successfully";Generar facturas a partir de pedidos de compra.
Tipo de función: botón
Descripción de la función: genere una factura para un pedido de compra con solo el toque de un botón. Así de simple.
Cómo hacer que funcione:
Colocación del botón: debe colocarse en la página de vista del módulo Pedido de compra.
Asignación de argumentos: para configurar esta acción- Haga clic en Configuración > Personalización > Módulos > Pedidos de compra > Enlaces y botones > +Crear nuevo botón.
- Ingrese el nombre del botón > elija la página de vista > elija Funciones de escritura.
- Ingrese el nombre de la función y haga clic en Script de flujo libre.
- Copie el código que se indica a continuación.
- Haga clic en Editar argumentos.
- Ingrese el nombre "poId" y elija el valor "Purchase Order ID".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
- En la página de creación del botón, haga clic en Guardar.
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);
return "Invoice created successfully";Crear pedidos de compra a partir de pedidos de venta.
Tipo de función: botón
Descripción de la función: puede generar pedidos de compra a partir de los registros en los pedidos de venta. Esto es útil si determina que se cerrará un acuerdo.
Cómo hacer que funcione:
Colocación del botón: debe colocarse en la página de vista del módulo Pedido de venta.
Asignación de argumentos: para configurar esta acción- Haga clic en Configuración > Personalización > Módulos > Pedido de venta > Enlaces y botones > +Crear nuevo botón.
- Ingrese el nombre del botón > elija la página de vista > elija Funciones de escritura.
- Ingrese el nombre de la función y haga clic en Script de flujo libre.
- Copie el código que se indica a continuación.
- Haga clic en Editar argumentos.
- Ingrese el nombre "soId" y elija el valor "Sales Order ID".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
- En la página de creación del botón, haga clic en Guardar.
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet=ifnull(respMap.get("product"),"");
productList=productDet.toJSONList();
pdlist=List();
for each eachProd in productList
{
eachProdDet=eachProd.toMap();
productDesc=ifnull(eachProdDet.get("Product Description"),"");
quantity=ifnull(eachProdDet.get("Quantity"),"0");
listPrice=(ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal=(ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount=(ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total=(ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId=ifnull(eachProdDet.get("Product Id"),"");
linetax=(ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp=map();
mp.put("Product Id",productId);
mp.put("Quantity",quantity);
mp.put("List Price",listPrice);
mp.put(("Discount"),linediscount);
mp.put("Total",total);
mp.put("Tax",linetax);
mp.put("Net Total",netTotal);
pdlist.add(mp);
}
paramap=map();
paramap.put("Products",pdlist);
paramap.put("Subject",ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID",ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions",ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description",ifnull(respMap.get("Description"),""));
paramap.put("Tax",(ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment",(ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"),(ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total",(ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total",(ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);
return "Po created successfully";Envío de correos electrónicos masivos desde los módulos Contactos o Clientes potenciales.
Tipo de función: botón
Descripción de la función: puede enviar correos electrónicos a varios registros en la página de vista de lista de los módulos Contactos o Clientes potenciales con solo hacer clic en un botón.
Cómo hacer que funcione:
Colocación del botón: debe colocarse en la página de vista de lista de los módulos Contactos o Clientes potenciales.
Asignación de argumentos: para configurar esta acción- Haga clic en Configuración > Personalización > Módulos > Clientes potenciales > Enlaces y botones > +Crear nuevo botón.
- Ingrese el nombre del botón > elija la página de vista de lista > elija las funciones de escritura.
- Ingrese el nombre de la función y haga clic en Script de flujo libre.
- Copie el código que se indica a continuación.
- Haga clic en Editar argumentos.
- Ingrese el nombre "leadId" y elija el valor "Lead ID".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
- En la página de creación del botón, haga clic en Guardar.
Script:
leadIdsList = input.leadId.toList("|||");
for each leadIdStr in leadIdsList
{
resp = zoho.crm.getRecordById("Leads", leadIdStr.toLong());
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : "Subject of the email"
Message : "This is the message from Function send mail"
)
}
return "LeadID" + input.leadId;Página de vista de lista de actualización de campos y envío de correos electrónicos.
Tipo de función: botón
Descripción de la función: si desea actualizar varios registros y enviar correos electrónicos de manera simultánea, solo necesita un botón. Por supuesto, debe contar con esta función.
Cómo hacer que funcione:
Colocación del botón: debe colocarse en la página de vista de lista de un módulo personalizado.
Asignación de argumentos: para configurar esta acción- Haga clic en Configuración > Personalización > Módulos > Módulo personalizado > Enlaces y botones > +Crear nuevo botón.
- Ingrese el nombre del botón > elija la página de vista > elija Funciones de escritura.
- Ingrese el nombre de la función y haga clic en Script de flujo libre.
- Copie el código que se indica a continuación.
- Haga clic en Editar argumentos.
- Ingrese el nombre "custommoduleId" y elija el valor "CustomModule ID".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
- En la página de creación del botón, haga clic en Guardar.
Script:
IdsList = input.Id.toList("|||");
for each IdStr in IdsList
{
resp = zoho.crm.getRecordById("CustomModule1", IdStr.toLong());
customMap = map();
customMap.put("Record Status", "Approve");
updateResponse = zoho.crm.updateRecord("CustomModule1", IdStr, customMap);
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : "Approval Email"
Message : " )
}
return "Success";
Funciones de tipo flujo de trabajo
Calcular comisiones en cotizaciones.
Tipo de función: flujo de trabajo
Descripción de la función: la comisión total generada por todos los productos cotizados se mostrará en la página de cotizaciones. Por lo tanto, resulta más sencillo ver la comisión total que recibe sin tener que calcularla manualmente.
Cómo hacer que funcione: debe asociar esta función con la regla de flujo de trabajo adecuada para actualizar automáticamente la comisión total de cada producto en el módulo Cotizaciones.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escribir su propia función > elija el módulo que se asociará como "Cotización".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "quoteId" y el valor "Quote Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
quoteIdStr = input.quoteId.toString();
quoteMap = zoho.crm.getRecordById("Quotes", input.quoteId);
productDet = ifnull(quoteMap.get("product"),"");
productList = productDet.toJSONList();
value = 0.0;
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
qty = (ifnull(eachProdDet.get("Quantity"),"0")).toLong();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
commission = (ifnull(proDetails.get("Commission Rate"),"0.0")).toDecimal();
value = (value + commission * qty);
}
params = map(); params.put("Total Commission", value);
updateResp = zoho.crm.updateRecord("Quotes", quoteIdStr, params);Calcular impuestos en elementos de línea de producción.
Tipo de función: flujo de trabajo
Descripción de la función: puede calcular el monto del impuesto de todos los productos y mostrarlo en el módulo Facturas.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para calcular los impuestos de cada producto en Facturas.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escribir su propia función > elija el módulo que se asociará como "Facturas".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "invoiceId" y el valor "Invoice Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
invoiceIdStr = input.invoiceId.toString();
invoiceMap = zoho.crm.getRecordById("Invoices", input.invoiceId);
productDet = ifnull(invoiceMap.get("product"),"");
TotalTax = (ifnull(invoiceMap.get("Tax"),"0.0")).toDecimal();
TotalAdjustment = (ifnull(invoiceMap.get("Adjustment"),"0.0")).toDecimal();
TotalDiscount = (ifnull(invoiceMap.get(("Discount")),"0.0")).toDecimal();
productList = productDet.toJSONList();
sumPrice = 0.0;
price = 0.0;
value = 0.0;
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
discount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
Taxvalue = ifnull(proDetails.get("Taxes"),"");
if (Taxvalue == "VAT")
{
value = 12.5;
price = (price + total + 12.5 - discount);
}
else
{
if (Taxvalue == "Surcharge")
{
value = 0.625;
price = (price + total + 0.625 - discount);
}
else
{
value = 12.625;
price = (price + total + 0.625 + 12.5 - discount);
}
}
mp = map();
mp.put("Product Id", productId);
mp.put("Tax", value);
mp.put("Net Total", price);
pdlist.add(mp);
sumPrice = (sumPrice + price.toDecimal());
}
grandPrice = (sumPrice - TotalDiscount + TotalAdjustment + TotalTax);
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Sub Total", sumPrice);
paramap.put("Grand Total", grandPrice);
updateResp = zoho.crm.updateRecord("Invoices", invoiceIdStr, paramap);Convertir clientes potenciales en registros en otros módulos.
Tipo de función: flujo de trabajo
Descripción de la función: puede convertir clientes potenciales en registros de otros módulos, como Cuentas, Contactos, Acuerdos potenciales, etc. automáticamente.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para convertir clientes potenciales automáticamente en Cuentas, Contactos, etc.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Clientes potenciales".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "leadId" y el valor "Lead Id".
- Haga clic en +Agregar argumento y escriba el nombre "Authtoken".
- Haga clic en "Especificar valor personalizado" e ingrese el token de autenticación de CRM en el cuadro.
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Nota
Si no desea eliminar el registro del cliente potencial después de la conversión, escriba un comentario en la última línea del script.
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = (AccountCreate).get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID", newaccountId);
PotentialMap.put("CONTACTID", newcontactId);
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);Crear contactos de módulos personalizados.
Tipo de función: flujo de trabajo
Descripción de la función: puede crear un registro de contacto directamente de la información disponible desde cualquier módulo personalizado automáticamente.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente los contactos desde los módulos personalizados.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Módulo personalizado".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "customId" y el valor "CustomModule Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
CustomModuleDetails = zoho.crm.getRecordById("CustomModule1", input.customId);
ContactMap = map();
ContactMap.put("First Name", ifnull(CustomModuleDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(CustomModuleDetails.get("Last Name"),""));
ContactMap.put("Email", ifnull(CustomModuleDetails.get("Email"),""));
ContactMap.put("Date", ifnull(CustomModuleDetails.get("Date"),""));
ContactMap.put("Birth Date", ifnull(CustomModuleDetails.get("Birth Date"),""));
ContactMap.put("Mailing Street", ifnull(CustomModuleDetails.get("Mailing Street"),""));
ContactMap.put("Mailing City", ifnull(CustomModuleDetails.get("Mailing City"),""));
ContactMap.put("Mailing State", ifnull(CustomModuleDetails.get("Mailing State"),""));
ContactMap.put("Mailing Zip", ifnull(CustomModuleDetails.get("Mailing Zip"),""));
ContactMap.put("Phone", ifnull(CustomModuleDetails.get("Phone"),""));
ContactMap.put("SMOWNERID", ifnull(CustomModuleDetails.get("SMOWNERID"),""));
ContactMap.put("Company Name", ifnull(CustomModuleDetails.get("Company Name"),""));
ContactMap.put("Industry Type", ifnull(CustomModuleDetails.get("Industry Type"),""));
ContactCreate = zoho.crm.create("Contacts", ContactMap);Crear un módulo personalizado a partir de un módulo personalizado.
Tipo de función: flujo de trabajo
Descripción de la función: puede crear un nuevo módulo personalizado a partir de los registros de otro módulo personalizado. Esto es especialmente útil en el caso de que necesite transferir información de un módulo a otro. Deje que la función lo haga por usted.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente un módulo personalizado con los registros de otro módulo personalizado.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Módulo personalizado".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "CustommoduleId" y el valor "CustomModule Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
CustommoduleDetails = zoho.crm.getRecordById("CustomModule1", input.CustommoduleId);
createMap = map();
createMap.put("CustomModule2 Name", ifnull(CustommoduleDetails.get("Custom Name"),""));
createMap.put("SMOWNERID", ifnull(CustommoduleDetails.get("SMOWNERID"),""));
createMap.put("Phone", ifnull(CustommoduleDetails.get("Phone"),""));
createMap.put("Email", ifnull(CustommoduleDetails.get("Email"),""));
createCustomModule = zoho.crm.create("CustomModule2", createMap);Crear actividades de seguimiento.
Tipo de función: flujo de trabajo
Descripción de la función: puede crear actividades de seguimiento de sus contactos. Esta es una de las funciones más esenciales y útiles disponibles, ya que facilita el trabajo de innumerables agentes.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente las actividades de seguimiento del registro del contacto seleccionado.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Contactos".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "contactId" y el valor "Contact Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
contactIdStr = input.contactId.toString();
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each Task in TaskDetails
{
taskMap = map();
taskMap.put("Task Owner", ifnull(Task.get("Task Owner"),""));
taskMap.put("Subject", (Task.get("Subject")) + " Followup ");
taskMap.put("Due Date", ifnull(Task.get("Due Date"),""));
taskMap.put("Status", ifnull(Task.get("Status"),""));
taskMap.put("Priority", ifnull(Task.get("Priority"),""));
taskMap.put("SMOWNERID", ifnull(Task.get("SMOWNERID"),""));
taskMap.put("CONTACTID", contactIdStr);
taskMap.put("SEID", ifnull(Task.get("RELATEDTOID"),""));
taskMap.put("SEMODULE", ifnull(Task.get("SEMODULE"),""));
createTask = zoho.crm.create("Tasks", taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each Event in EventDetails
{
eventMap = map();
eventMap.put("Subject", (Event.get("Subject")) + " Followup ");
eventMap.put("SMOWNERID", ifnull(Event.get("SMOWNERID"),""));
eventMap.put("Start DateTime", (ifnull(Event.get("Start DateTime"),"")).toTime());
eventMap.put("End DateTime", (ifnull(Event.get("End DateTime"),"")).toTime());
eventMap.put("CONTACTID", contactIdStr);
eventMap.put("SEID", ifnull(Event.get("RELATEDTOID"),""));
eventMap.put("SEMODULE", ifnull(Event.get("SEMODULE"),""));
createEvent = zoho.crm.create("Events", eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each Call in CallDetails
{
Callstatus = Call.get("Call Status");
if ((Callstatus == "Scheduled") || (Callstatus == "Overdue"))
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("whichCall", "ScheduleCall");
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
else
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
}Generar facturas a partir de pedidos de compra.
Tipo de función: flujo de trabajo
Descripción de la función: puede generar facturas para pedidos de compra automáticamente si define esta función.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente las facturas.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que asociará como "Pedidos de compra".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "poId" y el valor "Purchase Order Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);Crear clientes potenciales a partir de un contacto con todos los datos relacionados.
Tipo de función: flujo de trabajo
Descripción de la función: puede crear clientes potenciales a partir de registros de contactos al instante. Esto ciertamente sería útil si desea hacer un nuevo acuerdo con alguien que ya conoce.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente registros de clientes potenciales a partir de los contactos.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Contactos".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "contactId" y el valor "Contact Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
contactIdStr = input.contactId.toString();
contactDetails = zoho.crm.getRecordById("Contacts", input.contactId);
leadMap = map();
leadMap.put("Last Name", ifnull(contactDetails.get("Last Name"),""));
leadMap.put("First Name", ifnull(contactDetails.get("First Name"),""));
leadMap.put("SMOWNERID", ifnull(contactDetails.get("SMOWNERID"),""));
leadMap.put("Email", ifnull(contactDetails.get("Email"),""));
leadMap.put("Third Email", ifnull(contactDetails.get("Third Email"),""));
leadMap.put("Secondary Email", ifnull(contactDetails.get("Second Email"),""));
leadMap.put("Phone", ifnull(contactDetails.get("Phone"),""));
leadMap.put("Lead Status", ifnull(contactDetails.get("Contact Status"),""));
leadMap.put("Created On", ifnull(contactDetails.get("Created On"),""));
leadMap.put("Notes", ifnull(contactDetails.get("Notes"),""));
leadMap.put("Skype ID", ifnull(contactDetails.get("Skype ID"),""));
leadMap.put("Wechat ID", ifnull(contactDetails.get("Wechat ID"),""));
createLead = zoho.crm.create("Leads", leadMap);
id = createLead.get("Id");
contactRelNotes = zoho.crm.getRelatedRecords("Notes", "Contacts", contactIdStr);
countVal = 0;
for each ele in contactRelNotes
{
countVal = (countVal + 1);
notemap = map();
notemap.put("entityId", id);
notemap.put("Note Title", ifnull(ele.get("Title")," "));
notemap.put("Note Content", ifnull(ele.get("Note Content")," "));
notecreate = zoho.crm.create("Notes", notemap);
}
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each ele in TaskDetails
{
TaskId = ele.get("ACTIVITYID");
taskMap = map();
taskMap.put("SEID", id);
taskMap.put("SEMODULE", "CustomModule2");
UpdateTask = zoho.crm.updateRecord("Tasks", TaskId, taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each ele in EventDetails
{
eventId = ele.get("ACTIVITYID");
eventMap = map();
eventMap.put("SEID", id);
eventMap.put("SEMODULE", "CustomModule2");
UpdateEvent = zoho.crm.updateRecord("Events", eventId, eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each ele in CallDetails
{
callId = ele.get("ACTIVITYID");
callMap = map();
callMap.put("SEID", id);
callMap.put("SEMODULE", "CustomModule2");
UpdateCall = zoho.crm.updateRecord("Calls", callId, callMap);
}Crear pedidos de compra a partir de pedidos de venta.
Tipo de función: flujo de trabajo
Descripción de la función: puede generar pedidos de compra en el módulo Pedido de venta. Normalmente, esta función se utiliza después de la confirmación de un acuerdo.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para crear automáticamente registros de pedidos de compra a partir del módulo Pedido de venta.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba sus propias funciones > elija el módulo que se asociará como "Pedidos de venta".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "soId" y el valor "Sales Order Id".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);Actualice todos los campos de contacto relacionados cuando se actualice un campo en Cuentas.
Tipo de función: flujo de trabajo
Descripción de la función: con esta función, es posible actualizar todos los campos relacionados de un registro determinado cuando se actualiza en el módulo Cuentas.
Cómo hacer que funcione: asocie esta función con la regla de flujo de trabajo adecuada para actualizar automáticamente todos los campos del contacto.
- Haga clic en Configuración > Automatización > Acciones > Funciones > +Configurar función > Escriba su propia función > elija el módulo que se asociará como "Cuentas".
- Ingrese un nombre para la función y haga clic en "Script de flujo libre".
- Copie el script del código que se proporciona a continuación.
- Haga clic en "Editar argumentos".
- Ingrese el nombre "acctId" y el valor "Account Id".
- Haga clic en +Agregar argumento y escriba el nombre como "Type".
- Ingrese el valor "Account Type".
- Haga clic en Listo.
- Compruebe el script del código y haga clic en Guardar.
Script:
accountIdStr = input.accountId.toString();
relatedcontacts = zoho.crm.getRelatedRecords("Contacts", ("Accounts"), accountIdStr);
info relatedcontacts;
for each ele in relatedcontacts
{
contactId = ifnull(ele.get("CONTACTID"),"");
mp = map();
mp.put("Contact Type", input.type );
update = zoho.crm.updateRecord("Contacts", contactId, mp);
info mp;
info update;
}