Instale o zBot (para Windows). Rode este sistema no seu computador e vários outros que podem ser baixados diretamente pelo zBot ou criados por você mesmo(a)!
                            26/12/2023 | Build: 74
Do pacote: Funil de vendas                        
Descrição: Permite adicionar e classificar contatos de acordo com sua etapa no funil de vendas, facilitando a gestão da comunicação e otimizando custos e esforços nas ações de comunicação.





&CriarBotaoPopup("Exibir...";"Desfazer filtro, Prospects (1),Produção (2),Lista VIP (3),Descadastrados (4),Inválidos (5)";"desfazer filtro, exibir prospect, exibir produção, exibir lista vip, exibir descadastrado, exibir inválido";110) //*
&CriarBotaoPopup("Adicionar...";"Inserir contatos etapa 1 (prospects),Inserir contatos etapa 2 (produção),Inserir contatos etapa 3 (lista vip),Inserir contatos etapa 4 (descadastrados),Inserir contatos etapa 5 (inválidos)";"adicionar prospect, adicionar produção, adicionar lista vip, adicionar descadastrado, adicionar inválido";130) //*
&CriarBotaoPopup("Nos selecionados...";"Forçar categoria,Forçar data de contato"; "definir categoria,definir data contato";150) //*
&CriarBotao("Obter selecionados";"obter selecionados")
&CriarBotaoPopup("Filtro gerencial..."; "Filtro gerencial detalhado, Obter contatos pela data da última abordagem" ;"filtro gerencial, filtro gerencial 2")
//* Adiciona o campo "interações" se não existir
&TbAdicionarCampo("interacoes"; "inteiro")[0] //* tipo: texto, inteiro, moeda, data
//&TbCores("ativo";"";"clGreen";"=";"sim")
//&TbCores("ativo";"";"clRed";"=";"não")
&TextoObterDataHora("hoje")[0] //*
&TextoDataInfo([hoje]; "data"; "hoje")[0]
&TbCores("data_contato";"clLime";"";"=";[hoje])
&TbCores("status";"$0081D1F8";"";"=";"prospect")
&TbCores("status";"$00BCFBAA";"";"=";"produção")
&TbCores("status";"$00FDC6DE";"";"=";"lista vip")
&TbCores("status";"$00E4DEDE";"";"=";"descadastrado")
&TbCores("status";"$008E8DCB";"";"=";"inválido") 
#categorias
v0=indefinido
v1=prospect
v2=produção
v3=lista vip
v4=descadastrado
v5=inválido
#
#status
indefinido=0
prospect=1
produção=2
lista vip=3
descadastrado=4
inválido=5
#
// faz uma seleção de dados para ações de comunicação
#filtro gerencial
[data] = ""
[interacoes] = ""
[status] = ""
[filtro] = ""
[conectivo] = ""
&ValorPedirVarios("Defina os critérios do seu filtro"; "data menor que, data maior que, interações menor que, interações maior que, status|prospect#produção#lista vip#descadastrado#inválido")[0] //*
&Se([último resultado];igual;"FALHA")   
   &VaiPara("pular filtro gerencial")
.fimse
&Se([data menor que];#-\#-/;"")
   [filtro] = "(data_contato #-\ '[data menor que]')"
.fimse
&Se([data maior que];#-\#-/;"")
   &Se([filtro];#-\#-/;"")
      [conectivo] = ' e '
   .fimse   
   [filtro] = "[filtro][conectivo](data_contato #-/ '[data maior que]')"
.fimse
&Se([interações menor que];#-\#-/;"")
   &Se([filtro];#-\#-/;"")
      [conectivo] = ' e '
   .fimse   
   [filtro] = "[filtro][conectivo](interacoes #-\ [interações menor que])"
.fimse
&Se([interações maior que];#-\#-/;"")
   &Se([filtro];#-\#-/;"")
      [conectivo] = ' e '
   .fimse   
   [filtro] = "[filtro][conectivo](interacoes #-/ [interações maior que])"
.fimse
&Se([status];#-\#-/;"")
   &Se([filtro];#-\#-/;"")
      [conectivo] = ' e '
   .fimse   
   [filtro] = "[filtro][conectivo](status = '[status]')"
.fimse
//&Mensagem([filtro])
&TbFiltrar([filtro])[0] //*
&Marcador("pular filtro gerencial")
#
// filtra registros não contatados (pela data último contato) a mais de X dias
#filtro gerencial 2
[data] = ""
[status] = ""
[filtro] = ""
[conectivo] = ""
&ValorPedirVarios("Defina os critérios do seu filtro"; "Não contatatos há pelo menos (em dias), status|todos#prospect#produção#lista vip#descadastrado#inválido")[0] //*
&Se([último resultado];igual;"FALHA")   
   &VaiPara("pular filtro gerencial 2")
.fimse
[dias] = [Não contatatos há pelo menos (em dias)]
&Se([dias];#-\#-/;"")   
   &TextoHojeInfo("data"; "data")[0] //* valor -#-/ data, ano, mês, dia, hora, minuto, segundo, dia_semana, secao_hora
   &TextoDataInc("data"; "-[dias]")[0] //*
   [filtro] = "(data_contato #-\= '[data]')"
.fimse
&Se([status];#-\#-/;"todos")
   &Se([filtro];#-\#-/;"")
      [conectivo] = ' e '
   .fimse   
   [filtro] = "[filtro][conectivo](status = '[status]')"
.fimse
//&Mensagem([filtro])
&TbFiltrar([filtro])[0] //*
&Marcador("pular filtro gerencial 2")
#
// Força uma redefinição bruta em uma categoria, para os registros selecinoados
#definir categoria
   &TextoGerarIdUnico("id_unico")[0] //* Gera um id único
   [categoria] = 0
   &ValorPedirVarios("Forçar definição de uma categoria"; "status|prospect#produção#lista vip#descadastrado#inválido")[0] //*
   &BlocoLer("status";"categoria");
   [categoria] = [categoria*[status]]   
   &Se([categoria];#-\#-/;0)
      &TbSelecionadosValorDefinir("status,categoria";"[status],[categoria]")[0] //*        
      //&TbSelecionadosValorDefinir("categoria";[categoria])[0] //*
      //&TbSelecionadosValorDefinir("id_unico";[id_unico])[0] //*            
   .fimse         
#
// Força uma redefinição de data do último contato
#definir data contato
   &TextoGerarIdUnico("id_unico")[0] //* Gera um id único
   [data] = ""   
   &ValorPedirVarios("Forçar data de contato"; "data")[0] //*      
   &Se([data];#-\#-/;"")
      &TbSelecionadosValorDefinir("data_contato,id_unico";"[data],[id_unico]")[0] //*             
      //&TbSelecionadosValorDefinir("id_unico";[id_unico])[0] //*
   .fimse         
#
// copia os contatos selecionados
// Define a data de último contato para hoje
// Incrementa o campo interacoes
#obter selecionados
   &TextoGerarIdUnico("id_unico")[0] //* Gera um id único
   &StatusInserir("OBTER CONTATOS SELECIONADOS";"cinza")[0]
   &TextoObterDataHora("hoje")[0] //*
   &TextoDataInfo([hoje]; "secao_data"; "hoje")[0] //* valor -#-/ ano, mês, dia, hora, minuto, segundo, dia_semana, secao_data, secao_hora
   
   &StatusInserir("Copiando contatos...";"preto")[0]
   &TbSelecionadosCopiar("contato";"dados")[0] //*
   &StatusInserirExtra("[OK]";"sucesso")[0] //*       
   
   //* Edita os registros selecionados
   &StatusInserir("Atualizando registros...";"preto")[0]
   &TbLerCampo("interacoes")[0] //*
   &Se([interacoes];=;"")
      [interacoes] = "0"
   .fimse
   &ValorInc("interacoes";1)[0] //*
   &TbSelecionadosValorDefinir("id_unico, data_contato, interacoes";"[id_unico], [hoje], [interacoes]")[0] //*
   &StatusInserirExtra("[OK]";"sucesso")[0] //*               
   
   &StatusInserir("Exibindo dados copiados (AGUARDE)...";"preto")[0]
   &TextoSalvar([dados]; "tmp_obter.txt")[0] //*
   &ExecutarComando("notepad.exe tmp_obter.txt")[0]
   &StatusInserirExtra("[OK]";"sucesso")[0] //*
   
   &StatusInserir("FIM DA OPERAÇÃO";"cinza")[0]
#
#desfazer filtro
   &TbFiltrar("")[0] //*
#
#exibir prospect
   &TbFiltrar("categoria='1'")[0] //*
#
#exibir produção
  &TbFiltrar("categoria='2'")[0] //*
#
#exibir lista vip
  &TbFiltrar("categoria='3'")[0] //*
#
#exibir descadastrado
  &TbFiltrar("categoria='4'")[0] //*
#
#exibir inválido
  &TbFiltrar("categoria='5'")[0] //*
#
// dados (lista de contatos para adicionar)
// categoria (1,2,3,4, 5) 
#adicionar dados em uma etapa
   &TextoGerarIdUnico("id_unico")[0] //* Gera um id único     
   &TextoObterDataHora("hoje")[0] //*   
   &TextoDataInfo([hoje]; "secao_data"; "hoje")[0] //* valor -#-/ ano, mês, dia, hora, minuto, segundo, dia_semana, secao_data, secao_hora
   &BlocoLer("categorias";"lista_status")[0] //*
      
   &TextoQtdLinhas([dados]; "qtd")[0] //* Obtém a quantidade de linhas
   &Progresso1Iniciar("Progresso";[qtd])[0] //*
   &Repetir([qtd]) //* a variável _indice terá o número do ciclo atual
      &Progresso1Inc(1)[0] //*  
      [linha] = ""
      &TbLocalizar("contato";[dados*[_indice]]; "linha")[0] //*            
      
      [categoria_origem] = [linha*categoria]
      &Se([categoria_origem];igual;"")
         [categoria_origem] = 0
      .fimse                         
      
      
      [status_origem] = [lista_status*v[categoria_origem]]
      [status_destino] = [lista_status*v[categoria]]      
      &Se([forçar];=;"não")         
         &Se([categoria_origem];#-/=;[categoria])
            &StatusInserir("Contato [linha*contato] já tem o status [status_origem]";"erro")[0] //* cor: erro, sucesso, alerta, preto, cinza, importante
            &VaiPara("continuar")      
         .fimse
      .fimse        
      
      &Se([categoria_origem];=;0)                  
         &TbInserir("id_unico,ativo,contato,categoria,status,data_cadastro";"[id_unico],sim,[dados*[_indice]],[categoria],[status_destino],[hoje]")[0] //*
         &StatusInserir("Inserido: [dados*[_indice]]";"sucesso")[0]
      .senao
         &TbLocalizarEditar("contato";[linha*contato];"categoria,status,id_unico";"[categoria],[status_destino],[id_unico]")[0] //*       
         
         [temp] = [dados*[_indice]]
         &StatusInserir("Editado: [temp] ([status_destino])";"sucesso")[0]         
      .fimse                   
      
      &Marcador("continuar")           
   .fimrepetir        
#
//&TextoSalvar("francisco@linkws.com"; "teste.txt")[0] //*
//&ExecutarComando("notepad.exe teste.txt")[0]
// Adiciona contatos como prospects
#adicionar prospect
   [dados] = ""
   &ValorPedirVarios("Cole a lista de prospects (um em cada linha)"; "dados, forçar|não#sim")[0] //*      
   &Se([dados];diferente;"")
      [categoria] = 1
      &BlocoExec("adicionar dados em uma etapa")[0] //*
   .senao
      &Mensagem("Sem dados")   
   .fimse
#
// Adiciona contatos como produção
#adicionar produção
   [dados] = ""
   &ValorPedirVarios("Cole a lista de produção (um em cada linha)"; "dados, forçar|não#sim")[0] //*   
   &Se([dados];diferente;"")
      [categoria] = 2
      &BlocoExec("adicionar dados em uma etapa")[0] //*
   .senao
      &Mensagem("Sem dados")   
   .fimse
#
// Adiciona contatos como lista vip
#adicionar lista vip
   [dados] = ""
   &ValorPedirVarios("Cole a lista vip (um em cada linha)"; "dados, forçar|não#sim")[0] //*   
   &Se([dados];diferente;"")
      [categoria] = 3
      &BlocoExec("adicionar dados em uma etapa")[0] //*
   .senao
      &Mensagem("Sem dados")   
   .fimse
#
// Adiciona contatos como descadstrado
#adicionar descadastrado
   [dados] = ""
   &ValorPedirVarios("Cole a lista de descadastrados (um em cada linha)"; "dados, forçar|não#sim")[0] //*   
   &Se([dados];diferente;"")
      [categoria] = 4
      &BlocoExec("adicionar dados em uma etapa")[0] //*
   .senao
      &Mensagem("Sem dados")   
   .fimse
#
// Adiciona contatos inválidos
#adicionar inválido 
   [dados] = ""    
   &ValorPedirVarios("Cole a lista de inválidos (um em cada linha)"; "dados, forçar|não#sim")[0] //*   
   &Se([dados];diferente;"")
      [categoria] = 5
      &BlocoExec("adicionar dados em uma etapa")[0] //*
   .senao
      &Mensagem("Sem dados")   
   .fimse
#