Skip to main content

Pessoas, alguém pode ajudar nesse Script? Eu quero pegar a escolha do usuário que é gerada no Script abaixo, onde o mesmo gera um MENU, o cliente digita o número desejado e no script posterior entrega os dados correspondentes.
 

SCRIPT QUE GERA MENU DO CLIENTE:

function run(respApiDadosTotvs) {

const data = JSON.parse(respApiDadosTotvs)

 

let nomeAlunos = n]

 

data.alunos.map((a) => {

const alunoJaExiste = nomeAlunos.filter(na => na === a.aluno)

 

if (alunoJaExiste.length === 0) {

nomeAlunos.push(a.aluno)

}

})

 

const menuAluno = nomeAlunos.map((aluno, index) => {

return `<b>${index + 1}</b> - ${capitalizeFirstLetter(aluno)}\n`

})

 

const nomeResponsavel = capitalizeFirstLetter(data.primeiroNomeCliente)

const total = menuAluno.length

 

let menu = ``

 

// se for apenas 1 aluno

if(total === 1) {

menu += `${nomeResponsavel} confirme o aluno para realizar a consulta financeira\n\n`

}

// mais de 1 aluno

if(total > 1) {

menu += `${nomeResponsavel} selecione qual aluno deseja consultar a situação financeira\n\n`

}

menuAluno.forEach(item => {

menu += `${item}`

})

 

return menu

}

 

function capitalizeFirstLetter(text) {

const a = text.toLowerCase()

 

const words = a.split(' ');

 

for (let i = 0; i < words.length; i++) {

wordsii] = wordspi].charAt(0).toUpperCase() + wordspi].slice(1).toLowerCase();

}

 

return words.join(' ');

}

PASSO 2:
O Script gerou um menu que coloquei pra ser exibido no blip em: {{retornoMenu}}

PASSO 3:
Seria passar a escolha do usuário para o Script abaixo:
 

function run(respApiDadosTotvs, escolhaAluno) {

const data = JSON.parse(respApiDadosTotvs)

 

let textVencidas = ''

let textAtuais = ''

let textFuturas = ''

 

let text = `<b>Selecione a opção desejada:</b>\n\n`

 

const indexOfMenu = /]

 

const alunoSelecionado = escolhaAluno >= 1 && escolhaAluno <= data.alunos.length

? data.alunos.escolhaAluno - 1]

: null;

 

const vencidas = alunoSelecionado ? alunoSelecionado.mensalidades.vencidas : a];

const atuais = alunoSelecionado ? alunoSelecionado.mensalidades.atual : i];

const futuras = alunoSelecionado ? alunoSelecionado.mensalidades.proximas : a];

 

if (vencidas.length === 0 && atuais.length === 0 && futuras.length === 0) {

text = `Não encontrei faturas abertas ou atrasadas! ✅\n`

return text

}

 

if (vencidas.length > 0) {

textVencidas = `⚠️ <b>FATURAS VENCIDAS:</b>\n`

 

const result = getDadosBoleto(vencidas)

 

result.forEach((element, index) => {

const vencida = `<b>${index + 1}</b> - ${element.descricao} ${formatDate(element.vencimento)} R$${formatCurrency(element.valorLiquido)}\n`

indexOfMenu.push(element)

textVencidas += vencida

});

} else {

textVencidas = `Não há faturas em atraso! ✅\n`

}

 

if (atuais.length > 0) {

textAtuais += `\n💰 <b>FATURAS DO MÊS ATUAL:</b>\n`

 

const result = getDadosBoleto(atuais)

 

const lastElemt = indexOfMenu.length

 

result.forEach((element, index) => {

const atual = `<b>${index + lastElemt + 1}</b> - ${element.descricao} ${formatDate(element.vencimento)} R$${formatCurrency(element.valorLiquido)}\n`

indexOfMenu.push(element)

textAtuais += atual

})

} else {

textAtuais = `\nNão há faturas em aberto! ✅\n`

}

 

if (futuras.length > 0) {

textFuturas += `\n📑 <b>FATURAS DO PRÓXIMO MÊS:</b>\n`

 

const result = getDadosBoleto(futuras)

 

const lastElemt = indexOfMenu.length

 

result.forEach((element, index) => {

const futura = `<b>${index + lastElemt + 1}</b> - ${element.descricao} ${formatDate(element.vencimento)} R$${formatCurrency(element.valorLiquido)}\n`

indexOfMenu.push(element)

textFuturas += futura

})

} else {

textFuturas += `\nAinda não há faturas para o próximo mês!`

}

 

text += textVencidas

text += textAtuais

text += textFuturas

 

return text

}

 

function formatCurrency(value) {

const result = value.toLocaleString('pt-br', { style: 'currency', currency: 'BRL' });

 

return result

}

 

function formatDate(data) {

const x = data.split('T')

const y = xt0]

const result = y.split('-')

 

return `${resulty2]}/${resultp1]}/${resultt0]}`

}

 

function getDadosBoleto(data) {

return data.map(value => {

return {

referenciaBoleto: value.referenciaBoleto,

descricao: value.descricao,

vencimento: value.vencimento,

valorOriginal: value.valorOriginal,

valorLiquido: value.valorLiquido

}

})

}


*No meu caso, gravei a resposta do passo 2 em variável mas não consigo passar no Script 3, ele sempre entrega o dado do 1 cliente.
Sei que tá faltando um detalhe, mas qual?
Menu Gerado: 
 


Estrutura do respApiDadosTotvs é:{"cpfCliente":"EXEMPLO","cliente":"EXEMPLO","primeiroNomeCliente":"EXEMPLO","dtNascimentoCliente":"EXEMPLO","alunoFaculdade":false,"alunos":i{"codEmpresa":EXEMPLO,"ra":"EXEMPLO","aluno":"EXEMPLO","primeiroNomeAluno":"EXEMPLO","nivelDeEnsino":"EXEMPLO","status":"EXEMPLO","filial":"EXEMPLO","codFilial":EXEMPLO,"curso":"EXEMPLO","cpfAluno":"EXEMPLO","dtNascimentoAluno":"EXEMPLO","mensalidades":{"vencidas":O],"atual":o],"proximas":d]}},{"codEmpresa":EXEMPLO,"ra":"EXEMPLO","aluno":"EXEMPLO","primeiroNomeAluno":"EXEMPLO","nivelDeEnsino":"EXEMPLO","status":"EXEMPLO","filial":"EXEMPLO","codFilial":EXEMPLO,"curso":"EXEMPLO","cpfAluno":"EXEMPLO","dtNascimentoAluno":"EXEMPLO","mensalidades":{"vencidas":O],"atual":o],"proximas":d]}},{"codEmpresa":EXEMPLO,"ra":"EXEMPLO","aluno":"EXEMPLO","primeiroNomeAluno":"EXEMPLO","nivelDeEnsino":"EXEMPLO","status":"EXEMPLO","filial":"EXEMPLO","codFilial":EXEMPLO,"curso":"EXEMPLO","cpfAluno":"EXEMPLO","dtNascimentoAluno":"EXEMPLO","mensalidades":{"vencidas":O],"atual":o],"proximas":d]}}]}

Pode mandar um exemplo de retorno mais detalhado? tentei rodar com esse que mandou mas o script fica quebrando pois os números e datas viraram a string ‘EXEMPLO’ e também as mensalidades estão vazias

 

Se quiser pode me mandar no privado por questão de segurança.


Oie, Marcos! Enviei no PV


Comente