Função - exemplos
As funções ajudam na atualização dos dados nos módulos de CRM ou aplicativos de terceiros relacionados, por meio da execução de scripts de programação simples. Com funções, você pode programar scripts usando o Deluge Script (pelo Zoho Creator), associá-los a regras de fluxo de trabalho e automatizar o processo de negócios. Algumas das funções mais úteis estão listadas abaixo.
Funções do tipo Botão
Converta oportunidades em registros em outros módulos.
Tipo de função: Botão
Descrição da função: você pode converter registros de leads em outros módulos (como Contas, Contatos, Potenciais etc.) com apenas um clique de um botão.
Como fazer isso funcionar:
Posicionamento do botão: o botão deve ser colocado na página Exibir do módulo Oportunidades.
Mapeamento de argumento: para configurar mapeamento esta ação,- Clique em Configuração > Personalização > Módulos > Oportunidades > Links e Botões > +Criar novo botão.
- Insira o nome do botão > Escolha a página de exibição > Escolha Escrever Funções.
- Insira o nome da função e clique em Scripts de fluxo livre.
- Copie o código abaixo.
- Clique em Editar argumentos.
- Insira o nome como "leadId" e escolha o valor como "ID de oportunidade".
- Clique em +Adicionar argumento e digite o nome como "Authtoken".
- Clique em "Especificar valor personalizado" e insira o Authtoken do CRM na caixa.
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
- Na página Criar seu botão, clique em Salvar.
Nota
Se você não deseja excluir o registro da oportunidade depois que ele tiver sido convertido, comente na última linha do script.
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Oportunidades", leadIdLong);
first = ifnull(leadDetails.get("Nome"),"");
last = ifnull(leadDetails.get("Sobrenome"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Nome da Conta"), ifnull(leadDetails.get("Empresa"),""));
AcccountMap.put("Receita Anual", ifnull(leadDetails.get("Receita Anual"),""));
AcccountMap.put("Cidade de Cobrança", ifnull(leadDetails.get("Cidade"),""));
AcccountMap.put("País de Cobrança", ifnull(leadDetails.get("País"),""));
AcccountMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Setor", ifnull(leadDetails.get("Setor"),""));
AcccountMap.put("Funcionários", ifnull(leadDetails.get("Nº de Funcionários"),""));
AcccountMap.put("Telefone", ifnull(leadDetails.get("Telefone"),""));
AcccountMap.put("Classificação", ifnull(leadDetails.get("Classificação"),""));
AcccountMap.put("Estado de Cobrança", ifnull(leadDetails.get("Estado"),""));
AcccountMap.put("Rua de Cobrança", ifnull(leadDetails.get("Rua"),""));
AcccountMap.put("Código de Cobrança", ifnull(leadDetails.get("Código Postal"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Contas"), AcccountMap);
newaccountId = AccountCreate.get("ID");
ContactMap = map();
ContactMap.put("Nome", ifnull(leadDetails.get("Nome"),""));
ContactMap.put("Sobrenome", ifnull(leadDetails.get("Sobrenome"),""));
ContactMap.put("Cidade de Correspondência", ifnull(leadDetails.get("Cidade"),""));
ContactMap.put("País de Correspondência", ifnull(leadDetails.get("País"),""));
ContactMap.put("Estado de Correspondência", ifnull(leadDetails.get("Estado"),""));
ContactMap.put("Rua de Correspondência", ifnull(leadDetails.get("Rua"),""));
ContactMap.put("CEP de Correspondência", ifnull(leadDetails.get("Código Postal"),""));
ContactMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Título", ifnull(leadDetails.get("Título"),""));
ContactMap.put("E-mail", ifnull(leadDetails.get("E-mail"),""));
ContactMap.put("Origem da Oportunidade", ifnull(leadDetails.get("Origem da Oportunidade"),""));
ContactMap.put("Celular", ifnull(leadDetails.get("Celular"),""));
ContactMap.put("Telefone", ifnull(leadDetails.get("Telefone"),""));
ContactMap.put("E-mail Secundário", ifnull(leadDetails.get("E-mail Secundário"),""));
ContactMap.put("ID do Skype", ifnull(leadDetails.get("ID do Skype"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contatos", ContactMap);
newcontactId = ContactCreate.get("ID");
PotentialMap = map();
PotentialMap.put("Nome do Potencial", name);
PotentialMap.put("Cidade", ifnull(leadDetails.get("Cidade"),""));
PotentialMap.put("País", ifnull(leadDetails.get("País"),""));
PotentialMap.put("Estado", ifnull(leadDetails.get("Estado"),""));
PotentialMap.put("Rua", ifnull(leadDetails.get("Rua"),""));
PotentialMap.put("CEP", ifnull(leadDetails.get("Código Postal"),""));
PotentialMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
PotentialMap.put("Origem da Oportunidade", ifnull(leadDetails.get("Origem da Oportunidade"),""));
PotentialMap.put("ACCOUNTID",newaccountId );
PotentialMap.put("CONTACTID",newcontactId );
PotentialCreate = zoho.crm.create("Potenciais", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);
return "Oportunidade convertida com êxito";Crie faturas de ordens de compra.
Tipo de função: Botão
Descrição da função: gere uma fatura para uma ordem de compra com apenas o toque de um botão. Simples assim.
Como fazer isso funcionar:
Posicionamento do botão: o botão deve ser colocado na página Exibir do módulo Ordem de Compras.
Mapeamento de argumento: para configurar mapeamento esta ação,- Clique em Configuração > Personalização > Módulos > Ordens de Compra > Links e Botões > +Criar novo botão.
- Insira o nome do botão > Escolha a página de exibição > Escolha Escrever Funções.
- Insira o nome da função e clique em Scripts de fluxo livre.
- Copie o código abaixo.
- Clique em Editar argumentos.
- Insira o nome como "poId" e escolha o valor como "ID de Ordem de Compra".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
- Na página Criar seu botão, clique em Salvar.
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("produto"),"");
productList = productDet.toJSONList();
pdlist = List();
para cada eachProd em productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Descrição do Produto"),"");
quantity = ifnull(eachProdDet.get("Quantidade"),"0");
listPrice = (ifnull(eachProdDet.get("Preço de Lista"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Total Líquido"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Desconto")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("ID de Produto"),"");
linetax = (ifnull(eachProdDet.get("Imposto"),"")).toDecimal();
mp = map();
mp.put("ID de Produto", productId);
mp.put("Quantidade", quantity);
mp.put("Preço de Lista", listPrice);
mp.put(("Desconto"), linediscount);
mp.put("Total", total);
mp.put("Imposto", linetax);
mp.put("Total Líquido", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Produtos", pdlist);
paramap.put("Assunto", ifnull(respMap.get("Assunto"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Termos e Condições", ifnull(respMap.get("Termos e Condições"),""));
paramap.put("Descrição", ifnull(respMap.get("Descrição"),""));
paramap.put("Imposto", (ifnull(respMap.get("Imposto"),"0.0")).toDecimal());
paramap.put("Ajuste", (ifnull(respMap.get("Ajuste"),"0.0")).toDecimal());
paramap.put(("Desconto"), (ifnull(respMap.get(("Desconto")),"0.0")).toDecimal());
paramap.put("Subtotal", (ifnull(respMap.get("Subtotal"),"0.0")).toDecimal());
paramap.put("Total Geral", (ifnull(respMap.get("Total Geral"),"0.0")).toDecimal());
createResp = zoho.crm.create("Faturas", paramap);
retorna "Fatura criada com êxito";Crie ordens de compra a partir da ordem de vendas.
Tipo de função: Botão
Descrição da função: você pode gerar ordens de compra a partir de registros na ordem de vendas. Isso para determinar se uma negociação seguiria adiante.
Como fazer isso funcionar:
Posicionamento do botão: o botão deve ser colocado na página Exibir do módulo SalesOrder.
Mapeamento de argumento: para configurar mapeamento esta ação,- Clique em Configuração > Personalização > Módulos > Ordens de Vendas > Links e Botões > +Criar novo botão.
- Insira o nome do botão > Escolha a página de exibição > Escolha Escrever Funções.
- Insira o nome da função e clique em Scripts de fluxo livre.
- Copie o código abaixo.
- Clique em Editar argumentos.
- Insira o nome como "vendido" e escolha o valor como "ID de Ordem de Vendas".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
- Na página Criar seu botão, clique em Salvar.
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet=ifnull(respMap.get("produto"),"");
productList=productDet.toJSONList();
pdlist=List();
para cada eachProd em productList
{
eachProdDet=eachProd.toMap();
productDesc=ifnull(eachProdDet.get("Descrição do Produto"),"");
quantity=ifnull(eachProdDet.get("Quantidade"),"0");
listPrice=(ifnull(eachProdDet.get("Preço de Lista"),"0.0")).toDecimal();
netTotal=(ifnull(eachProdDet.get("Total Líquido"),"0.0")).toDecimal();
linediscount=(ifnull(eachProdDet.get(("Desconto")),"0.0")).toDecimal();
total=(ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId=ifnull(eachProdDet.get("ID de produto"),"");
linetax=(ifnull(eachProdDet.get("Imposto"),"")).toDecimal();
mp=map();
mp.put("ID de produto",productId);
mp.put("Quantidade",quantity);
mp.put("Preço de Lista",listPrice);
mp.put(("Desconto"),linediscount);
mp.put("Total",total);
mp.put("Imposto",linetax);
mp.put("Total Líquido",netTotal);
pdlist.add(mp);
}
paramap=map();
paramap.put("Produtos",pdlist);
paramap.put("Assunto",ifnull(respMap.get("Assunto"),""));
paramap.put("CONTACTID",ifnull(respMap.get("CONTACTID"),""));
paramap.put("Termos e Condições",ifnull(respMap.get("Termos e Condições"),""));
paramap.put("Descrição",ifnull(respMap.get("Descrição"),""));
paramap.put("Imposto",(ifnull(respMap.get("Imposto"),"0.0")).toDecimal());
paramap.put("Ajuste",(ifnull(respMap.get("Ajuste"),"0.0")).toDecimal());
paramap.put(("Desconto"),(ifnull(respMap.get(("Desconto")),"0.0")).toDecimal());
paramap.put("Subtotal",(ifnull(respMap.get("Subtotal"),"0.0")).toDecimal());
paramap.put("Total Geral",(ifnull(respMap.get("Total Geral"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);
return "Po criada com êxito";Envio de e-mails em massa pelo módulo Oportunidades ou Contatos.
Tipo de função: Botão
Descrição da função: você pode enviar e-mails para vários registros pela página de exibição da lista do módulo Oportunidades ou Contatos com apenas o clique de um botão.
Como fazer isso funcionar:
Posicionamento do botão: o botão deve ser colocado na página de exibição Lista do módulo Oportunidades ou Contatos.
Mapeamento de argumento: para configurar mapeamento esta ação,- Clique em Configuração > Personalização > Módulos > Oportunidades > Links e Botões > +Criar novo botão.
- Insira o nome do botão > Escolha a página de exibição Lista > Escolha Escrever Funções.
- Insira o nome da função e clique em Scripts de fluxo livre.
- Copie o código abaixo.
- Clique em Editar argumentos.
- Insira o nome como "leadId" e escolha o valor como "ID de oportunidade".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
- Na página Criar seu botão, clique em Salvar.
Script:
leadIdsList = input.leadId.toList("|||");
para cada leadIdStr em leadIdsList
{
resp = zoho.crm.getRecordById("Oportunidades", leadIdStr.toLong());
email = ifnull(resp.get("E-mail"),"");
sendmail
(
Para: e-mail
De: zoho.adminuserid
Assunto: "Assunto do e-mail"
Mensagem: "Essa é uma mensagem do E-mail de envio de função"
)
}
return "LeadID" + input.leadId;Atualize o campo e envie a página de exibição da lista de e-mails.
Tipo de função: Botão
Descrição da função: se você deseja atualizar vários registros e enviar e-mails simultaneamente para eles, você só precisa de um botão. É claro que, juntamente com essa função.
Como fazer isso funcionar:
Posicionamento do botão: o botão deve ser colocado na página de exibição Lista de um módulo personalizado.
Mapeamento de argumento: para configurar mapeamento esta ação,- Clique em Configuração > Personalização > Módulos > Módulo Personalizado > Links e Botões > +Criar novo botão.
- Insira o nome do botão > Escolha a página de exibição > Escolha Escrever Funções.
- Insira o nome da função e clique em Scripts de fluxo livre.
- Copie o código abaixo.
- Clique em Editar argumentos.
- Insira o nome como "custommoduleId" e escolha o valor como "ID de CustomModule".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
- Na página Criar seu botão, clique em Salvar.
Script:
IdsList = input.Id.toList("|||");
para cada IdStr em IdsList
{
resp = zoho.crm.getRecordById("CustomModule1", IdStr.toLong());
customMap = map();
customMap.put("Status do Registro", "Aprovar");
updateResponse = zoho.crm.updateRecord("CustomModule1", IdStr, customMap);
email = ifnull(resp.get("E-mail"),"");
sendmail
(
Para: e-mail
De: zoho.adminuserid
Assunto: "E-mail de aprovação"
Mensagem: " )
}
return "Sucesso";
Funções do tipo Fluxo de trabalho
Calcule comissões em cotações.
Tipo de função: Fluxo de trabalho
Descrição da função: a comissão total gerada por todos os produtos de cotações será exibida na página Cotações. Assim, fica mais fácil exibir a comissão total recebida sem precisar calcular manualmente.
Como fazer isso funcionar: você deve associar essa função na regra de fluxo de trabalho adequada para atualizar automaticamente o valor da comissão total de cada produto no módulo Cotações.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Cotações".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "quoteId" e o valor como "ID de cotação".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
quoteIdStr = input.quoteId.toString();
quoteMap = zoho.crm.getRecordById("Cotações", input.quoteId);
productDet = ifnull(quoteMap.get("produto"),"");
productList = productDet.toJSONList();
value = 0.0;
para cada eachProd em productList
{
eachProdDet = eachProd.toMap();
qty = (ifnull(eachProdDet.get("Quantidade"),"0")).toLong();
productId = ifnull(eachProdDet.get("ID de Produto"),"");
proDetails = zoho.crm.getRecordById("Produtos", productId.toLong());
commission = (ifnull(proDetails.get("Taxa de Comissão"),"0.0")).toDecimal();
valor = (valor + comissão * qtd);
}
params = map(); params.put("Comissão Total", value);
updateResp = zoho.crm.updateRecord("Cotações", quoteIdStr, params);Cálculo de impostos em itens da linha de produtos.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode calcular o valor do imposto para todos os produtos e exibi-los no módulo Faturas.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para calcular o imposto de cada produto nas faturas.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Faturas".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "invoiceId" e o valor como "ID de fatura".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
invoiceIdStr = input.invoiceId.toString();
invoiceMap = zoho.crm.getRecordById("Faturas", input.invoiceId);
productDet = ifnull(invoiceMap.get("produto"),"");
TotalTax = (ifnull(invoiceMap.get("Imposto"),"0.0")).toDecimal();
TotalAdjustment = (ifnull(invoiceMap.get("Ajuste"),"0.0")).toDecimal();
TotalDiscount = (ifnull(invoiceMap.get(("Desconto")),"0.0")).toDecimal();
productList = productDet.toJSONList();
sumPrice = 0.0;
preço = 0.0;
value = 0.0;
pdlist = List();
para cada eachProd em productList
{
eachProdDet = eachProd.toMap();
discount = (ifnull(eachProdDet.get(("Desconto")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("ID de Produto"),"");
proDetails = zoho.crm.getRecordById("Produtos", productId.toLong());
Taxvalue = ifnull(proDetails.get("Impostos"),"");
if (Taxvalue == "VAT")
{
value = 12.5;
preço = (preço + total + 12,5 - desconto);
}
else
{
if (Taxvalue == "Sobretaxa")
{
value = 0.625;
preço = (preço + total + 0,625 - desconto);
}
else
{
value = 12.625;
preço = (preço + total + 0,625 + 12,5 - desconto);
}
}
mp = map();
mp.put("ID de Produto", productId);
mp.put("Imposto", value);
mp.put("Total Líquido", price);
pdlist.add(mp);
sumPrice = (sumPrice + price.toDecimal());
}
grandPrice = (sumPrice - TotalDiscount + TotalAdjustment + TotalTax);
paramap = map();
paramap.put("Produtos", pdlist);
paramap.put("Subtotal", sumPrice);
paramap.put("Total Geral", grandPrice);
updateResp = zoho.crm.updateRecord("Faturas", invoiceIdStr, paramap);Converta oportunidades em registros em outros módulos.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode converter registros de leads em outros módulos (como Contas, Contatos, Potenciais etc.) automaticamente.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para converter automaticamente Oportunidades em Contas, Contatos etc.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Oportunidades".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "leadId" e o valor como "Lead Id".
- Clique em +Adicionar argumento e digite o nome como "Authtoken".
- Clique em "Especificar valor personalizado" e insira o Authtoken do CRM na caixa.
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Nota
Se você não deseja excluir o registro da oportunidade depois que ele tiver sido convertido, comente na última linha do script.
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Oportunidades", leadIdLong);
first = ifnull(leadDetails.get("Nome"),"");
last = ifnull(leadDetails.get("Sobrenome"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Nome da Conta"), ifnull(leadDetails.get("Empresa"),""));
AcccountMap.put("Receita Anual", ifnull(leadDetails.get("Receita Anual"),""));
AcccountMap.put("Cidade de Cobrança", ifnull(leadDetails.get("Cidade"),""));
AcccountMap.put("País de Cobrança", ifnull(leadDetails.get("País"),""));
AcccountMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Setor", ifnull(leadDetails.get("Setor"),""));
AcccountMap.put("Funcionários", ifnull(leadDetails.get("Nº de Funcionários"),""));
AcccountMap.put("Telefone", ifnull(leadDetails.get("Telefone"),""));
AcccountMap.put("Classificação", ifnull(leadDetails.get("Classificação"),""));
AcccountMap.put("Estado de Cobrança", ifnull(leadDetails.get("Estado"),""));
AcccountMap.put("Rua de Cobrança", ifnull(leadDetails.get("Rua"),""));
AcccountMap.put("Código de Cobrança", ifnull(leadDetails.get("Código Postal"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Contas"), AcccountMap);
newaccountId = (AccountCreate).get("ID");
ContactMap = map();
ContactMap.put("Nome", ifnull(leadDetails.get("Nome"),""));
ContactMap.put("Sobrenome", ifnull(leadDetails.get("Sobrenome"),""));
ContactMap.put("Cidade de Correspondência", ifnull(leadDetails.get("Cidade"),""));
ContactMap.put("País de Correspondência", ifnull(leadDetails.get("País"),""));
ContactMap.put("Estado de Correspondência", ifnull(leadDetails.get("Estado"),""));
ContactMap.put("Rua de Correspondência", ifnull(leadDetails.get("Rua"),""));
ContactMap.put("CEP de Correspondência", ifnull(leadDetails.get("Código Postal"),""));
ContactMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Título", ifnull(leadDetails.get("Título"),""));
ContactMap.put("E-mail", ifnull(leadDetails.get("E-mail"),""));
ContactMap.put("Origem da Oportunidade", ifnull(leadDetails.get("Origem da Oportunidade"),""));
ContactMap.put("Celular", ifnull(leadDetails.get("Celular"),""));
ContactMap.put("Telefone", ifnull(leadDetails.get("Telefone"),""));
ContactMap.put("E-mail Secundário", ifnull(leadDetails.get("E-mail Secundário"),""));
ContactMap.put("ID do Skype", ifnull(leadDetails.get("ID do Skype"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contatos", ContactMap);
newcontactId = ContactCreate.get("ID");
PotentialMap = map();
PotentialMap.put("Nome do Potencial", name);
PotentialMap.put("Cidade", ifnull(leadDetails.get("Cidade"),""));
PotentialMap.put("País", ifnull(leadDetails.get("País"),""));
PotentialMap.put("Estado", ifnull(leadDetails.get("Estado"),""));
PotentialMap.put("Rua", ifnull(leadDetails.get("Rua"),""));
PotentialMap.put("CEP", ifnull(leadDetails.get("Código Postal"),""));
PotentialMap.put("Descrição", ifnull(leadDetails.get("Descrição"),""));
PotentialMap.put("Origem da Oportunidade", ifnull(leadDetails.get("Origem da Oportunidade"),""));
PotentialMap.put("ACCOUNTID", newaccountId);
PotentialMap.put("CONTACTID", newcontactId);
PotentialCreate = zoho.crm.create("Potenciais", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);Crie contatos de módulos personalizados.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode criar diretamente um registro de contato a partir das informações disponíveis de qualquer módulo personalizado automaticamente.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente contatos de módulos personalizados.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Módulo Personalizado".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "customId" e o valor como "ID CustomModule".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
CustomModuleDetails = zoho.crm.getRecordById("CustomModule1", input.customId);
ContactMap = map();
ContactMap.put("Nome", ifnull(CustomModuleDetails.get("Nome"),""));
ContactMap.put("Sobrenome", ifnull(CustomModuleDetails.get("Sobrenome"),""));
ContactMap.put("E-mail", ifnull(CustomModuleDetails.get("E-mail"),""));
ContactMap.put("Data", ifnull(CustomModuleDetails.get("Data"),""));
ContactMap.put("Data de Nascimento", ifnull(CustomModuleDetails.get("Data de Nascimento"),""));
ContactMap.put("Rua de Correspondência", ifnull(CustomModuleDetails.get("Rua de Correspondência"),""));
ContactMap.put("Cidade de Correspondência", ifnull(CustomModuleDetails.get("Cidade de Correspondência"),""));
ContactMap.put("Estado de Correspondência", ifnull(CustomModuleDetails.get("Estado de Correspondência"),""));
ContactMap.put("CEP de Correspondência", ifnull(CustomModuleDetails.get("CEP de Correspondência"),""));
ContactMap.put("Telefone", ifnull(CustomModuleDetails.get("Telefone"),""));
ContactMap.put("SMOWNERID", ifnull(CustomModuleDetails.get("SMOWNERID"),""));
ContactMap.put("Nome da Empresa", ifnull(CustomModuleDetails.get("Nome da Empresa"),""));
ContactMap.put("Tipo de Setor", ifnull(CustomModuleDetails.get("Tipo de Setor"),""));
ContactCreate = zoho.crm.create("Contatos", ContactMap);Crie um módulo personalizado a partir de um módulo personalizado.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode criar um novo módulo personalizado a partir de outro módulo personalizado. Isso é especialmente útil no caso de ser necessário transferir informações de um módulo para outro. Deixe a função fazer isso para você.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente um módulo personalizado com os registros de outro módulo personalizado.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Módulo Personalizado".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "CustommoduleId" e o valor como "ID CustomModule".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
CustommoduleDetails = zoho.crm.getRecordById("CustomModule1", input.CustommoduleId);
createMap = map();
createMap.put("Nome CustomModule2", ifnull(CustommoduleDetails.get("Nome Personalizado"),""));
createMap.put("SMOWNERID", ifnull(CustommoduleDetails.get("SMOWNERID"),""));
createMap.put("Telefone", ifnull(CustommoduleDetails.get("Telefone"),""));
createMap.put("E-mail", ifnull(CustommoduleDetails.get("E-mail"),""));
createCustomModule = zoho.crm.create("CustomModule2", createMap);Crie atividades de acompanhamento.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode criar atividades de acompanhamento para seus contatos. Essa é uma das funções mais essenciais e úteis disponíveis, pois facilita a vida de inúmeros agentes.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente atividades de acompanhamento para o registro de contato selecionado.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Contatos".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "contactId" e o valor como "ID de contato".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
contactIdStr = input.contactId.toString();
TaskDetails = zoho.crm.getRelatedRecords("Tarefas", "Contatos", contactIdStr);
para cada Tarefa em TaskDetails
{
taskMap = map();
taskMap.put("Proprietário da Tarefa", ifnull(Task.get("Proprietário da Tarefa"),""));
taskMap.put("Assunto", (Task.get("Assunto")) + " Acompanhamento ");
taskMap.put("Data de Vencimento", ifnull(Task.get("Data de Vencimento"),""));
taskMap.put("Status", ifnull(Task.get("Status"),""));
taskMap.put("Prioridade", ifnull(Task.get("Prioridade"),""));
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("Tarefas", taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Eventos", "Contatos", contactIdStr);
para cada evento em EventDetails
{
eventMap = map();
eventMap.put("Assunto", (Event.get("Assunto")) + "Acompanhamento");
eventMap.put("SMOWNERID", ifnull(Event.get("SMOWNERID"),""));
eventMap.put("Data e hora de início", (ifnull(Event.get("Data e hora de início"),"")).toTime());
eventMap.put("Data e hora de fim", (ifnull(Event.get("Data e hora de fim"),"")).toTime());
eventMap.put("CONTACTID", contactIdStr);
eventMap.put("SEID", ifnull(Event.get("RELATEDTOID"),""));
eventMap.put("SEMODULE", ifnull(Event.get("SEMODULE"),""));
createEvent = zoho.crm.create("Eventos", eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Chamadas", "Contatos", contactIdStr);
para cada chamada em CallDetails
{
Callstatus = Call.get("Status da Chamada");
if ((Callstatus == "Programada") || (Callstatus == "Vencida"))
{
callMap = map();
callMap.put("Assunto", (Call.get("Assunto")) + "Acompanhamento");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Tipo de Chamada", ifnull(Call.get("Tipo de Chamada"),""));
callMap.put("whichCall", "ScheduleCall");
callMap.put("Hora de Início da Chamada", ifnull(Call.get("Hora de Início da Chamada"),""));
callMap.put("Duração da Chamada", ifnull(Call.get("Duração da Chamada"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Chamadas", callMap);
}
else
{
callMap = map();
callMap.put("Assunto", (Call.get("Assunto")) + "Acompanhamento");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Tipo de Chamada", ifnull(Call.get("Tipo de Chamada"),""));
callMap.put("Hora de Início da Chamada", ifnull(Call.get("Hora de Início da Chamada"),""));
callMap.put("Duração da Chamada", ifnull(Call.get("Duração da Chamada"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Chamadas", callMap);
}
}Crie faturas de ordens de compra.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode gerar faturas de ordens de compra automaticamente, definindo essa função.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente faturas.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Ordens de Compras".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "poId" e o valor como "ID de ordem de compras".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("produto"),"");
productList = productDet.toJSONList();
pdlist = List();
para cada eachProd em productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Descrição do Produto"),"");
quantity = ifnull(eachProdDet.get("Quantidade"),"0");
listPrice = (ifnull(eachProdDet.get("Preço de Lista"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Total Líquido"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Desconto")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("ID de Produto"),"");
linetax = (ifnull(eachProdDet.get("Imposto"),"")).toDecimal();
mp = map();
mp.put("ID de Produto", productId);
mp.put("Quantidade", quantity);
mp.put("Preço de Lista", listPrice);
mp.put(("Desconto"), linediscount);
mp.put("Total", total);
mp.put("Imposto", linetax);
mp.put("Total Líquido", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Produtos", pdlist);
paramap.put("Assunto", ifnull(respMap.get("Assunto"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Termos e Condições", ifnull(respMap.get("Termos e Condições"),""));
paramap.put("Descrição", ifnull(respMap.get("Descrição"),""));
paramap.put("Imposto", (ifnull(respMap.get("Imposto"),"0.0")).toDecimal());
paramap.put("Ajuste", (ifnull(respMap.get("Ajuste"),"0.0")).toDecimal());
paramap.put(("Desconto"), (ifnull(respMap.get(("Desconto")),"0.0")).toDecimal());
paramap.put("Subtotal", (ifnull(respMap.get("Subtotal"),"0.0")).toDecimal());
paramap.put("Total Geral", (ifnull(respMap.get("Total Geral"),"0.0")).toDecimal());
createResp = zoho.crm.create("Faturas", paramap);Crie oportunidades de um contato com todos os dados relacionados.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode criar oportunidades de registros de contatos instantaneamente. Isso certamente seria útil ao fazer uma nova negociação com alguém que você já conhece.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente registros de oportunidades a partir de contatos.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Contatos".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "contactId" e o valor como "ID de contato".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
contactIdStr = input.contactId.toString();
contactDetails = zoho.crm.getRecordById("Contatos", input.contactId);
leadMap = map();
leadMap.put("Sobrenome", ifnull(contactDetails.get("Sobrenome"),""));
leadMap.put("Nome", ifnull(contactDetails.get("Nome"),""));
leadMap.put("SMOWNERID", ifnull(contactDetails.get("SMOWNERID"),""));
leadMap.put("E-mail", ifnull(contactDetails.get("E-mail"),""));
leadMap.put("Terceiro E-mail", ifnull(contactDetails.get("Terceiro E-mail"),""));
leadMap.put("E-mail Secundário", ifnull(contactDetails.get("E-mail Secundário"),""));
leadMap.put("Telefone", ifnull(contactDetails.get("Telefone"),""));
leadMap.put("Status da Oportunidade", ifnull(contactDetails.get("Status do Contato"),""));
leadMap.put("Criado em", ifnull(contactDetails.get("Criado em"),""));
leadMap.put("Notas", ifnull(contactDetails.get("Notas"),""));
leadMap.put("ID do Skype", ifnull(contactDetails.get("ID do Skype"),""));
leadMap.put("ID do Wechat", ifnull(contactDetails.get("ID do Wechat"),""));
createLead = zoho.crm.create("Oportunidades", leadMap);
id = createLead.get("ID");
contactRelNotes = zoho.crm.getRelatedRecords("Notas", "Contatos", contactIdStr);
countVal = 0;
para cada ele em contactRelNotes
{
countVal = (countVal + 1);
notemap = map();
notemap.put("entityId", id);
notemap.put("Título da Nota", ifnull(ele.get("Título")," "));
notemap.put("Conteúdo da Nota", ifnull(ele.get("Conteúdo da Nota")," "));
notecreate = zoho.crm.create("Notas", notemap);
}
TaskDetails = zoho.crm.getRelatedRecords("Tarefas", "Contatos", contactIdStr);
para cada ele em TaskDetails
{
TaskId = ele.get("ACTIVITYID");
taskMap = map();
taskMap.put("SEID", id);
taskMap.put("SEMODULE", "CustomModule2");
UpdateTask = zoho.crm.updateRecord("Tarefas", TaskId, taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Eventos", "Contatos", contactIdStr);
para cada ele em EventDetails
{
eventId = ele.get("ACTIVITYID");
eventMap = map();
eventMap.put("SEID", id);
eventMap.put("SEMODULE", "CustomModule2");
UpdateEvent = zoho.crm.updateRecord("Eventos", eventId, eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Chamadas", "Contatos", contactIdStr);
para cada ele em CallDetails
{
callId = ele.get("ACTIVITYID");
callMap = map();
callMap.put("SEID", id);
callMap.put("SEMODULE", "CustomModule2");
UpdateCall = zoho.crm.updateRecord("Chamadas", callId, callMap);
}Crie ordens de compra a partir da ordem de vendas.
Tipo de função: Fluxo de trabalho
Descrição da função: você pode gerar ordens de compra a partir do módulo Ordem de vendas. Em geral, essa função é usada depois que uma negociação é confirmada.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para criar automaticamente registros de ordens de compras a partir do módulo Ordem de Vendas.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Ordens de Vendas".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "vendido" e o valor como "ID de ordem de vendas".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet = ifnull(respMap.get("produto"),"");
productList = productDet.toJSONList();
pdlist = List();
para cada eachProd em productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Descrição do Produto"),"");
quantity = ifnull(eachProdDet.get("Quantidade"),"0");
listPrice = (ifnull(eachProdDet.get("Preço de Lista"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Total Líquido"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Desconto")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("ID de Produto"),"");
linetax = (ifnull(eachProdDet.get("Imposto"),"")).toDecimal();
mp = map();
mp.put("ID de Produto", productId);
mp.put("Quantidade", quantity);
mp.put("Preço de Lista", listPrice);
mp.put(("Desconto"), linediscount);
mp.put("Total", total);
mp.put("Imposto", linetax);
mp.put("Total Líquido", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Produtos", pdlist);
paramap.put("Assunto", ifnull(respMap.get("Assunto"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Termos e Condições", ifnull(respMap.get("Termos e Condições"),""));
paramap.put("Descrição", ifnull(respMap.get("Descrição"),""));
paramap.put("Imposto", (ifnull(respMap.get("Imposto"),"0.0")).toDecimal());
paramap.put("Ajuste", (ifnull(respMap.get("Ajuste"),"0.0")).toDecimal());
paramap.put(("Desconto"), (ifnull(respMap.get(("Desconto")),"0.0")).toDecimal());
paramap.put("Subtotal", (ifnull(respMap.get("Subtotal"),"0.0")).toDecimal());
paramap.put("Total Geral", (ifnull(respMap.get("Total Geral"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);Atualize todos os campos de contato relacionados quando um campo é atualizado em Contas.
Tipo de função: Fluxo de trabalho
Descrição da função: com essa função, é possível atualizar todos os campos relacionados de uma registro específico quando ele é atualizado no módulo Contas.
Como fazer isso funcionar: associe essa função na regra de fluxo de trabalho adequada para atualizar automaticamente todos os campos do contato relacionado.
- Clique em Configuração > Automação > Ações > Funções > +Configurar Função > Escreva a sua > Escolha 'Módulo a ser associado como "Contas".
- Insira um nome para a função e clique em "Scripts de fluxo livre".
- Copie o script do código abaixo.
- Clique em "Editar argumentos".
- Insira o nome como "acctId" e o valor como "ID de conta".
- Clique em +Adicionar argumento e digite o nome como "Tipo".
- Insira o valor como "Tipo de Conta".
- Clique em Concluído.
- Verifique o script do código e clique em Salvar.
Script:
accountIdStr = input.accountId.toString();
relatedcontacts = zoho.crm.getRelatedRecords("Contatos", ("Contas"), accountIdStr);
info relatedcontacts;
para cada ele em relatedcontacts
{
contactId = ifnull(ele.get("CONTACTID"),"");
mp = map();
mp.put("Tipo de Contato", input.type );
update = zoho.crm.updateRecord("Contatos", contactId, mp);
info mp;
info update;
}