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> 
	```