Ir para conteúdo

caciorenato

Members
  • Total de itens

    16
  • Registro em

  • Última visita

Tudo que caciorenato postou

  1. caciorenato

    Gerar Código hierárquico Plano Contas

    Estou tentando gerar uma sugestão do proximo código do plano de contas mas a minha função não esta fazendo corretamente e não estou conseguindo ter o código correto, no caso abaixo quando eu clicar em uma conta 2.1 ele deve me sugerir 2.1.1 se ja tiver ele sugere o proximo disponivel naquela hierarquia e assim para os de mais , alguem ja vez isso ou e tem uma dica vou disponibilizar meu codigo ele faz uma coisa semelhamente mas ele incrementa mais um depois e não ta fazendo correto 2 Passivo 2.1 Passivo Circulante 2.1.1 Impostos 2.1.1.1 FUNRURAL 2.1.1.2 ICMS ST 2.1.2 Contas a Pagar 2.1.2.1 Fornecedores 2.1.2.2 Produtores 2.1.2.3 Compradores 2.1.2.4 Motoristas 2.2 Passivo Não Circulante 2.2.1 Empréstimo bancário (longo prazo) 2.2.1.1 Empréstimo banco ``` <script> // Obtém a lista de contas const contas = document.querySelectorAll('.conta'); // Adiciona um ouvinte de evento para cada conta contas.forEach(conta => { conta.addEventListener('click', () => { // Obtém o código da conta clicada const codigoAtual = conta.getAttribute('data-codigo'); // Calcula o próximo código considerando o nível const proximoCodigo = calcularProximoCodigo(codigoAtual); // Verifica se o próximo código já existe no mesmo nível const proximoCodigoExiste = verificarExistenciaCodigo(proximoCodigo); if (proximoCodigoExiste) { alert(`O próximo código ${proximoCodigo} já existe no mesmo nível.`); } else { // Exibe o próximo código //document.getElementById('proximo-codigo').innerText = `Próximo código: ${proximoCodigo}`; $('#codestrutural').val(proximoCodigo); $('#cadcontasmodal').modal('show'); var set = setInterval(function(){ $('#desc').focus(); clearInterval(set); },600); } }); }); // Função para calcular o próximo código com base no código atual e nível function calcularProximoCodigo(codigoAtual) { // Quebra o código atual em partes const partes = codigoAtual.split('.'); if(partes.length == 1){ // Se for o primeiro nível, adiciona '.1' const proximoCodigo = partes[0]+'.1'; return proximoCodigo; }else{ const ultimoNumero = parseInt(partes.pop(), 10) + 1; // Adiciona o novo número à lista partes.push(ultimoNumero); // Junta as partes para formar o novo código const proximoCodigo = partes.join('.'); return proximoCodigo; } // Incrementa o último número } // Função para verificar se um código já existe no mesmo nível function verificarExistenciaCodigo(proximoCodigo) { // Obtém todos os elementos da tabela com a classe 'conta' const contas = document.querySelectorAll('.conta'); // Extrai o nível do próximo código const nivelProximoCodigo = proximoCodigo.split('.').length; // Verifica se o código já existe no mesmo nível for (const conta of contas) { const codigoExistente = conta.getAttribute('data-codigo'); const nivelCodigoExistente = codigoExistente.split('.').length; if (nivelProximoCodigo === nivelCodigoExistente && codigoExistente.startsWith(proximoCodigo)) { return true; } } return false; } </script> ```
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.