atualizacao-imovel.html
Atualizado em
23/09/2024 10h42
atualizacao-imovel.html — 66 KB
Conteúdo do arquivo
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Atualização de bem imóvel</title> <!-- Google Tag Manager --> <script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-WGZPDK4DH1&l=dataLayer&cx=c"></script> <script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-NHZSKTD"></script> <script type="text/javascript">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NHZSKTD'); </script> <!-- End Google Tag Manager --> <!--FAVICON--> <link rel="shortcut icon" href="./assets/favicon.ico"> <!-- Fonte Rawline--> <link rel="stylesheet" href="https://cdngovbr-ds.estaleiro.serpro.gov.br/design-system/fonts/rawline/css/rawline.css" /> <!-- Fonte Raleway--> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:300,400,500,600,700,800,900&display=swap" /> <!-- Fontawesome--> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" /> <!--CSS GOVBR--> <link rel="stylesheet" href="./govbr/core.css" /> <!--JS GOVBR--> <script src="./govbr/core.js"></script> <!--COMPONENTES--> <script src="./componentes/cabecalho/cabecalho.js"></script> <!--CABEÇALHO--> <script src="./componentes/rodape/rodape.js"></script> <!--RODAPE--> <script src="./componentes/br-textarea/br-textarea.js"></script> <!--TEXTAREA--> <script src="./componentes/br-select/br-select.js"></script> <!--SELECT--> <script src="./componentes/br-input/br-input.js"></script> <!--INPUT--> <script src="./componentes/br-datepicker/br-datepicker.js"></script> <!--DATEPICKER--> <script src="./componentes/custom-modal/custom-modal.js"></script> <!--CUSTOM MODAL--> <!--UTILS--> <script src="./bibliotecas/utils.js"></script> <!--DATEPICKER--> <!--GET OPCOES SELECT--> <script> function getOpcoesCodigo(){ return ["01 - Bens Imóveis - Prédio residencial", "02 - Bens Imóveis - Prédio comercial", "03 - Bens Imóveis - Galpão", "11 - Bens Imóveis - Apartamento", "12 - Bens Imóveis - Casa", "13 - Bens Imóveis - Terreno", "14 - Bens Imóveis - Imóvel rural", "15 - Bens Imóveis - Sala ou conjunto", "16 - Bens Imóveis - Construção", "17 - Bens Imóveis - Benfeitorias", "18 - Bens Imóveis - Loja", "99 - Bens Imóveis - Outros bens imóveis" ] } function getOpcoesPais(){ return ['Afeganistão', 'Albânia', 'Alemanha', 'Burkina Faso', 'Andorra', 'Angola', 'Anguilla', 'Antigua E Barbuda ', 'Antilhas Holandesas ', 'Arábia Saudita', 'Argélia', 'Argentina', 'Armênia', 'Aruba', 'Austrália', 'Áustria', 'Azerbaijão', 'Bahamas, Ilhas', 'Bahrein, Ilhas', 'Bangladesh', 'Barbados', 'Belarus, República da', 'Bélgica', 'Belize', 'Bermudas', 'Mianmar (Birmânia)', 'Bolívia', 'Bosnia-Herzegovina (República da)', 'Botsuana', 'Brasil', 'Brunei', 'Bulgária, República da', 'Burundi', 'Butão', 'Cabo Verde, República de', 'Cayman, Ilhas', 'Camboja', 'Camarões', 'Canadá', 'Jersey, Ilha do Canal', 'Canárias, Ilhas', 'Cazaquistao, República do', 'Catar', 'Chile', 'China, República Popular', 'Formosa (Taiwan)', 'Chipre', 'Cocos-Keeling, Ilhas', 'Colômbia', 'Comores, Ilhas', 'Congo', 'Cook, Ilhas', 'Coréia, Rep.Pop.Democrática ', 'Coréia, República da', 'Costa do Marfim', 'Croácia, República da', 'Costa Rica', 'Coveite', 'Cuba', 'Benin', 'Dinamarca ', 'Dominica, Ilha', 'Equador', 'Egito', 'Eritreia', 'Emirados Árabes Unidos', 'Espanha', 'Eslovênia, República da', 'Eslovaca, República', 'Estados Unidos', 'Estônia, República da', 'Etiópia', 'Falkland (Ilhas Malvinas) ', 'Feroe, Ilhas', 'Filipinas', 'Finlândia', 'França', 'Gabão', 'Gambia', 'Gana', 'Geórgia, República da ', 'Gibraltar', 'Granada', 'Grécia', 'Groenlândia', 'Guadalupe', 'Guam', 'Guatemala', 'Guiana Francesa', 'Guiné', 'Guiné-Equatorial', 'Guiné-Bissau', 'Guiana', 'Haiti', 'Honduras', 'Hong Kong', 'Hungria, República da ', 'Iemen', 'Man, Ilha de', 'Índia', 'Indonésia', 'Iraque', 'Irã, República Islâmica do ', 'Irlanda', 'Islândia', 'Israel', 'Itália', 'Jamaica', 'Johnston, Ilhas ', 'Japão', 'Jordânia', 'Kiribati', 'Laos, Rep.Pop.Democr.do', 'Lebuan, Ilhas', 'Lesoto', 'Letônia, República da', 'Líbano', 'Libéria', 'Líbia', 'Liechtenstein', 'Lituânia, República da', 'Luxemburgo', 'Macau', 'Macedônia, Ant.Rep.Iugoslava', 'Madagascar', 'Madeira, Ilha da', 'Malásia', 'Malavi', 'Maldivas', 'Mali', 'Malta', 'Marianas do Norte', 'Marrocos', 'Marshall, Ilhas', 'Martinica', 'Maurício', 'Mauritânia', 'Midway, Ilhas', 'México', 'Moldavia, República da', 'Mônaco', 'Mongólia', 'Montenegro', 'Micronésia', 'Montserrat, Ilhas', 'Moçambique', 'Namíbia', 'Nauru', 'Christmas,Ilhas (Navidad)', 'Nepal', 'Nicarágua', 'Niger', 'Nigéria', 'Niue, Ilha', 'Norfolk, Ilha', 'Noruega', 'Nova Caledônia', 'Papua Nova Guiné', 'Nova Zelândia', 'Vanuatu', 'Omã', 'Pacífico, Ilhas do (possessão dos EUA) ', 'Países Baixos (Holanda)', 'Palau', 'Paquistão', 'Panamá', 'Paraguai', 'Peru', 'Pitcairn, Ilha De', 'Polinésia Francesa', 'Polônia, República da', 'Portugal', 'Porto Rico', 'Quênia', 'Quirguiz, República da', 'Reino Unido', 'República Centro-Africana', 'República Dominicana', 'Reunião, Ilha', 'Zimbabue', 'Romênia', 'Ruanda', 'Rússia, Federação da', 'Salomão, Ilhas', 'Saint Kitts e Nevis', 'Saara Ocidental', 'El Salvador', 'Samoa', 'Samoa Americana', 'São Cristovão e Neves, Ilhas', 'San Marino', 'São Pedro e Miquelon', 'São Vicente e Granadinas', 'Santa Helena', 'Santa Lúcia', 'São Tomé e Príncipe, Ilhas', 'Senegal', 'Seychelles', 'Serra Leoa', 'Servia', 'Cingapura', 'Síria, República Árabe da', 'Somália', 'Sri Lanka', 'Suazilândia', 'África do Sul', 'Sudão', 'Suécia', 'Suíça', 'Suriname', 'Tadjiquistão, República do', 'Tailândia', 'Tanzania, Rep. Unida da', 'Território Britânico no Oceano Índico', 'Djibuti', 'Chade', 'Tcheca, República', 'Timor Leste', 'Togo', 'Toquelau, Ilhas', 'Tonga', 'Trinidad e Tobago', 'Tunísia', 'Turcas e Caicos, Ilhas', 'Turcomenistão, República do', 'Turquia', 'Tuvalu', 'Ucrânia', 'Uganda', 'Uruguai', 'Uzbequistão, República do', 'Vaticano, Est. da Cidade do', 'Venezuela', 'Vietnã', 'Virgens, Ilhas (Britânicas)', 'Virgens, Ilhas (E.U.A.)', 'Fiji', 'Wake, Ilha', 'Wallis e Futuna, Ilhas', 'Congo, República Democrática do', 'Zâmbia', 'Delegação Especial da Palestina']; } function getOpcoesIdentificacao(){ return ['Pessoa Física', 'Pessoa Jurídica'] } </script> <!--HTML2CANVAS--> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <!--JSPDF--> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js" integrity="sha512-qZvrmS2ekKPF2mSznTQsxqPgnpkI4DNTlrdUmTzrDgektczlKNRRhy5X5AAOnx5S09ydFYWWNSfcEqDTTHgtNA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <style> #custom-modal { position: fixed; left: 0; top: 0; width: 100%; overflow: auto; } #impressao-impedida { display: none; } @media print{ body>*:not(#impressao-impedida) { display: none; } #impressao-impedida { display: block !important; font-size: 2em; } } body { -webkit-user-select: none; /* Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Standard */ } </style> </head> <body style="min-height: 150vh !important;"> <!--CABECALHO--> <section id="id-cabecalho"> <br-cabecalho></br-cabecalho> </section> <!--SECAO DE IDENTIFICADO CONTRIBUINTE--> <section class="mb-5 toPdf" id="id-identificacao-contribuinte" name="Seção Identificação do contribuinte"> <div class="container-lg"> <!--TITULO--> <div class="row"> <div class="col"> <div class="mb-5"> <h2>Identificação do contribuinte</h2> </div> </div> </div> <!--FORMULARIO--> <div id="id-formulario-identificacao" class="row"> <!--IDENTIFICACAO--> <div class="col-4"> <div class="mb-5"> <br-select-component inputId="id-identificacao" label="Identificação:" eName="Identificação" opcoes="getOpcoesIdentificacao" onChangeFunc="excluirLinhasTabela('tb-detalhamento-imoveis')" required> </br-select-component> </div> </div> <!-- DIV PARA CAMPOS DE IDENTIFICAÇÃO (NOME E NI) --> <div id="id-campos-identificacao"></div> </div> </div> </section> <!--SECAO DETALHAMENTO DOS IMOVEIS--> <section class="mb-5 toPdf" id="id-detalhamento-imoveis" name="Seção Detalhamento dos Bens Imóveis"> <div class="container-lg"> <div class="row"> <div class="col"> <div class="mb-5"> <h2>Detalhamento dos bens imóveis</h2> </div> <div class="br-table"> <table id="tb-detalhamento-imoveis" name="Tabela Detalhamento dos Bens Imóveis" class="mb-5" required> <thead> <tr> <th class="text-up-01 p-2" colspan="8">Tabela com relação de imóveis</th> </tr> </thead> <tbody id="bd-detalhamento-imoveis"></tbody> </table> <!--BOTOES LIMPAR E INCLUIR NOVO DEBITO--> <div id="btn-add-debitos-a-regularizar" class="botao"> <button onclick="excluirLinhasTabela('tb-detalhamento-imoveis', true)" class="br-button mr-3">Limpar</button> <button onclick="incluirImovelLinhaDupla()" class="br-button secondary mr-3">Incluir novo imóvel</button> <button id="btn-apurar-tributos" onclick="apurarTributos('tb-detalhamento-imoveis')" class="br-button secondary mr-3">Apurar tributos</button> </div> </div> </div> </div> </div> </section> <!--SECAO APURACAO DOS TRIBUTOS--> <section class="mb-5 toPdf d-none pageBreak" id="id-apuracao-tributos" name="Seção Apuração dos Tributos"> <div class="container-lg"> <div class="row"> <div class="col"> <div class="mb-5"> <h2>Apuração consolidada dos tributos</h2> </div> <div class="br-table"> <table id="tb-apuracao-tributos" name="Tabela Apuração dos Tributos" class="mb-5" required> <thead id="head-apuracao-tributos"></thead> <tbody id="bd-apuracao-tributos"></tbody> </table> </div> </div> </div> </div> </section> <!--SECAO BOTAO GERAR DOCUMENTO--> <section class="mb-5" id="id-gerar-documento"> <div class="container-fluid"> <div class="row"> <div class="col"> <div class="text-center my-3"> <button id="btn-gerar-documento" onclick="gerarDocumento()" class="br-button primary">Gerar Documento</button> </div> </div> </div> </div> </section> <!-- MENSAGEM PADRÃO DE IMPRESSÃO --> <section id="impressao-impedida"> <div class="text-center">Utilize o botão Gerar Documento</div> </section> <!--MODAL GOVBR--> <section id="id-modal"> <custom-modal></custom-modal> </section> <!--CONFIRMATION MODAL--> <div id="confirmation-modal" class="div br-modal medium align-self-center d-none" aria-modal="true" role="dialog" aria-labelledby="modal-title" style="position: absolute; top:40%;"> <div class="br-modal-header"> <div class="modal-title" id="modal-title">ATENÇÃO</div> <button class="br-button close circle" type="button" data-dismiss="br-modal" aria-label="Fechar" id="btn-close"><i class="fas fa-times" aria-hidden="true"></i> </button> </div> <div class="br-modal-body" id="modal-message"> <!-- <p></p> --> </div> <div class="br-modal-footer justify-content-end"> <button class="br-button primary ml-2" type="button" id="btn-entendi">Entendi</button> <button class="br-button primary ml-2" type="button" id="btn-sim">Sim</button> <button class="br-button primary ml-2" type="button" id="btn-nao">Não</button> </div> </div> <!--RODAPE--> <section id="id-rodape"> <br-rodape></br-rodape> </section> <!--COOKIE BAR--> <section id="id-cookiebar"> <div class="br-cookiebar default" tabindex="-1"></div> </section> <!-- JAVASCRIPT PARA CUSTOM-MODAL --> <script> const modalComponent = document.querySelector('custom-modal'); function showAlertModal(mensagem) { modalComponent.showModal(mensagem); } // ESCONDE MODAL function closeModal() { modalComponent.classList.add('d-none'); let buttons = document.querySelectorAll('button:not(#custom-modal button), input'); buttons.forEach(function(button) { button.disabled = false; }); } </script> <script> ////////// VARIÁVEIS ////////// let tbDetalhamentoImoveis = document.querySelector('#tb-detalhamento-imoveis'); let bdDetalhamentoImoveis = document.querySelector('#bd-detalhamento-imoveis'); let secoesToPdf = document.querySelectorAll('.toPdf'); let secaoConteudoPdf = document.querySelector('#id-conteudo-pdf'); let secaoApuracaoTributos = document.querySelector('#id-apuracao-tributos'); let selectIdentificacao = document.querySelector('[inputid="id-identificacao"]'); selectIdentificacao.addEventListener('input', () => { let valorSelecionado = getSelectedValue('id-identificacao'); let divCamposIdentificacao = document.querySelector("#id-campos-identificacao"); divCamposIdentificacao.innerHTML = ''; divCamposIdentificacao.classList.add('col-8'); let divRow = document.createElement('div'); divRow.classList.add('row'); if (valorSelecionado === "Pessoa Física"){ //cria células para Nome Completo let celulaNomeCompleto = document.createElement('div'); let divNomeCompleto = document.createElement('div'); let inputNomeCompleto = document.createElement('br-input'); inputNomeCompleto.setAttribute('eName', 'Nome Completo'); inputNomeCompleto.setAttribute('label', 'Nome Completo:'); inputNomeCompleto.setAttribute('inputId', 'id-nome-completo'); inputNomeCompleto.setAttribute('required', 'required'); divNomeCompleto.appendChild(inputNomeCompleto); celulaNomeCompleto.appendChild(divNomeCompleto); divNomeCompleto.classList.add('mb-5') celulaNomeCompleto.classList.add('col-6'); // cria células para CPF let celulaCPF = document.createElement('div'); let divCPF = document.createElement('div'); let inputCPF = document.createElement('br-input'); inputCPF.setAttribute('eName', 'CPF'); inputCPF.setAttribute('label', 'CPF:'); inputCPF.setAttribute('inputId', 'id-cpf'); inputCPF.setAttribute('maxlength', '11'); inputCPF.setAttribute('placeholder', 'somente números'); inputCPF.setAttribute('required', 'required'); inputCPF.setAttribute('onChange', 'validarCPF'); divCPF.appendChild(inputCPF); celulaCPF.appendChild(divCPF); divCPF.classList.add('mb-5'); celulaCPF.classList.add('col-6'); // coloca as células criadas na div divRow.appendChild(celulaNomeCompleto); divRow.appendChild(celulaCPF); divCamposIdentificacao.appendChild(divRow); } else if (valorSelecionado === "Pessoa Jurídica"){ //cria células para Nome Completo let celulaNomeEmpresarial = document.createElement('div'); let divNomeEmpresarial = document.createElement('div'); let inputNomeEmpresarial = document.createElement('br-input'); inputNomeEmpresarial.setAttribute('eName', 'Nome Empresarial'); inputNomeEmpresarial.setAttribute('label', 'Nome Empresarial:'); inputNomeEmpresarial.setAttribute('inputId', 'id-nome-empresarial'); inputNomeEmpresarial.setAttribute('required', 'required'); divNomeEmpresarial.appendChild(inputNomeEmpresarial); celulaNomeEmpresarial.appendChild(divNomeEmpresarial); divNomeEmpresarial.classList.add('mb-5'); celulaNomeEmpresarial.classList.add('col-6'); // cria células para CPF let celulaCNPJ = document.createElement('div'); let divCNPJ = document.createElement('div'); let inputCNPJ = document.createElement('br-input'); inputCNPJ.setAttribute('eName', 'CNPJ'); inputCNPJ.setAttribute('label', 'CNPJ:'); inputCNPJ.setAttribute('inputId', 'id-cnpj'); inputCNPJ.setAttribute('maxlength', '14'); inputCNPJ.setAttribute('placeholder', 'somente números'); inputCNPJ.setAttribute('required', 'required'); inputCNPJ.setAttribute('onChange', 'validarCNPJ'); divCNPJ.appendChild(inputCNPJ); celulaCNPJ.appendChild(divCNPJ); divCNPJ.classList.add('mb-5'); celulaCNPJ.classList.add('col-6'); // coloca as células criadas na div divRow.appendChild(celulaNomeEmpresarial); divRow.appendChild(celulaCNPJ); divCamposIdentificacao.appendChild(divRow); } else{ showAlertModal('Erro ao selecionar Identificação do Contribuinte.') } }); // FUNCAO DE ENTRADA INCLUIR LINHA DUPLA TABELA function incluirImovelLinhaDupla(){ if (!validarCamposRequiredNaSecao('id-identificacao-contribuinte')) { showAlertModal('Existem campos obrigatórios não preenchidos.'); return } let contribuinte = getSelectedValue('id-identificacao'); if (contribuinte === 'Pessoa Física') { incluirImovelLinhaDuplaIrpf(); } else { incluirImovelLinhaDuplaIrpj(); } } let linhaContador = 1; //ICLUIR LINHA DUPLA EM TABELA function incluirImovelLinhaDuplaIrpf(){ let novaLinha = bdDetalhamentoImoveis.insertRow(-1); for (let j = 0; j < 2; j++) { var novaCelula = novaLinha.insertCell(j); novaCelula.classList.add('p-2'); if (j === 0){ // inclui contador de imóvel let contador = document.createElement('span'); contador.className = 'line-counter'; contador.innerText = `Imóvel ${linhaContador}`; novaCelula.appendChild(contador); linhaContador += 1; novaCelula.setAttribute('colspan', '6'); let container = document.createElement('div'); // LACO PARA INSERIR OS COMPONENTES NAS DIVS for (let z = 0; z < 2; z++){ // CRIA DIV PARA CADA COMPONENTE let divComponente = document.createElement('div'); divComponente.classList.add('mt-3', 'col-4') // CODIGO (SELECT) if (z === 0) { let codigo = document.createElement('br-select-component'); codigo.setAttribute('opcoes', 'getOpcoesCodigo'); codigo.setAttribute('eName', 'codigo'); codigo.setAttribute('label', 'Código'); // codigo.setAttribute('inputClass', 'text-sm-down-01'); codigo.setAttribute('required', 'required'); divComponente.appendChild(codigo); container.appendChild(divComponente); } // PAIS (SELECT) if (z === 1) { let pais = document.createElement('br-select-component'); pais.setAttribute('opcoes', 'getOpcoesPais'); pais.setAttribute('eName', 'País'); pais.setAttribute('label', 'País'); // pais.setAttribute('inputClass', 'text-sm-down-01'); pais.setAttribute('required', 'required'); divComponente.appendChild(pais); container.appendChild(divComponente); } } container.classList.add('row'); novaCelula.appendChild(container); let container2 = document.createElement('div'); for (let w = 0; w < 4; w++){ // CRIA DIV PARA CADA COMPONENTE let divComponente2 = document.createElement('div'); divComponente2.classList.add('mt-3', 'col-3') // CUSTO DE AQUISICAO (INPUT) if (w === 0) { let custoAquisicao = document.createElement('br-input'); custoAquisicao.setAttribute('eName', 'Custo de aquisição'); custoAquisicao.setAttribute('label', 'Custo de aquisição (R$)'); custoAquisicao.setAttribute('inputId', 'id-custo-de-aquisicao'); custoAquisicao.setAttribute('required', 'required'); custoAquisicao.setAttribute('onchange', 'validarValor, calcularImpostoPf'); divComponente2.appendChild(custoAquisicao); container2.appendChild(divComponente2); } // VALOR ATUALIZADO 2024 (INPUT) if (w === 1) { let valorAtualizado = document.createElement('br-input'); valorAtualizado.setAttribute('eName', 'Valor atualizado em 2024'); valorAtualizado.setAttribute('label', 'Valor atualizado em 2024 (R$)'); valorAtualizado.setAttribute('inputId', 'id-valor-atualizado'); valorAtualizado.setAttribute('onchange', 'validarValor, calcularImpostoPf'); valorAtualizado.setAttribute('required', 'required'); divComponente2.appendChild(valorAtualizado); container2.appendChild(divComponente2); } // BASE DE CALCULO (INPUT DISABLED) if (w === 2) { let baseDeCalculo = document.createElement('br-input'); baseDeCalculo.setAttribute('eName', 'Base de cálculo'); baseDeCalculo.setAttribute('label', 'Base de cálculo (R$)'); baseDeCalculo.setAttribute('inputId', 'id-base-de-calculo'); baseDeCalculo.setAttribute('inputClass', 'border-gray-90 text-weight-bold'); baseDeCalculo.setAttribute('required', 'required'); baseDeCalculo.setAttribute('isDisabled', 'disabled'); divComponente2.appendChild(baseDeCalculo); container2.appendChild(divComponente2); } // IRPF (INPUT DISABLED) if (w === 3) { let irpf = document.createElement('br-input'); irpf.setAttribute('eName', 'irpf'); irpf.setAttribute('label', 'IRPF (R$)'); irpf.setAttribute('inputId', 'id-irpf'); irpf.setAttribute('inputClass', 'border-gray-90 text-weight-bold'); irpf.setAttribute('required', 'required'); irpf.setAttribute('isDisabled', 'disabled'); divComponente2.appendChild(irpf); container2.appendChild(divComponente2); } } container2.classList.add('row'); novaCelula.appendChild(container2); let containerTextarea = document.createElement('div'); containerTextarea.classList.add('mt-3', 'row'); let descricao = document.createElement('br-textarea'); descricao.setAttribute('label', 'Identificação do imóvel (informar descrição e endereço completo)'); descricao.setAttribute('eName', 'Descrição'); descricao.setAttribute('maxlength', '500'); descricao.setAttribute('textareaClass', 'col-12'); descricao.setAttribute('rows', '5'); descricao.setAttribute('required', 'required'); containerTextarea.appendChild(descricao); novaCelula.appendChild(containerTextarea); } if (j === 1) { novaCelula.classList.add('acoes'); let btnExcluir = document.createElement('button'); let iconeLixeira = document.createElement('i'); btnExcluir.classList.add('br-button'); iconeLixeira.classList.add('fa', 'fa-trash-alt'); btnExcluir.appendChild(iconeLixeira); novaCelula.appendChild(btnExcluir); btnExcluir.addEventListener('click', function () { excluirLinha(this); }); } } } //ICLUIR LINHA DUPLA EM TABELA function incluirImovelLinhaDuplaIrpj(){ let novaLinha = bdDetalhamentoImoveis.insertRow(-1); for (let j = 0; j < 2; j++) { var novaCelula = novaLinha.insertCell(j); novaCelula.classList.add('p-2'); if (j === 0){ // inclui contador de imóvel let contador = document.createElement('span'); contador.className = 'line-counter'; contador.innerText = `Imóvel ${linhaContador}`; novaCelula.appendChild(contador); linhaContador += 1; novaCelula.setAttribute('colspan', '6'); let container = document.createElement('div'); // LACO PARA INSERIR OS COMPONENTES NAS DIVS for (let z = 0; z < 2; z++){ // CRIA DIV PARA CADA COMPONENTE let divComponente = document.createElement('div'); divComponente.classList.add('mt-3', 'col-4') // CODIGO (SELECT) if (z === 0) { let codigo = document.createElement('br-select-component'); codigo.setAttribute('opcoes', 'getOpcoesCodigo'); codigo.setAttribute('eName', 'codigo'); codigo.setAttribute('label', 'Código'); // codigo.setAttribute('inputClass', 'text-sm-down-01'); codigo.setAttribute('required', 'required'); divComponente.appendChild(codigo); container.appendChild(divComponente); } // PAIS (SELECT) if (z === 1) { let pais = document.createElement('br-select-component'); pais.setAttribute('opcoes', 'getOpcoesPais'); pais.setAttribute('eName', 'País'); pais.setAttribute('label', 'País'); // pais.setAttribute('inputClass', 'text-sm-down-01'); pais.setAttribute('required', 'required'); divComponente.appendChild(pais); container.appendChild(divComponente); } } container.classList.add('row'); novaCelula.appendChild(container); let container2 = document.createElement('div'); for (let w = 0; w < 5; w++){ // CRIA DIV PARA CADA COMPONENTE let divComponente2 = document.createElement('div'); divComponente2.classList.add('mt-3') // CUSTO DE AQUISICAO (INPUT) if (w === 0) { divComponente2.classList.add('col-3'); let custoAquisicao = document.createElement('br-input'); custoAquisicao.setAttribute('eName', 'Custo de aquisição'); custoAquisicao.setAttribute('label', 'Custo de aquisição (R$)'); custoAquisicao.setAttribute('inputId', 'id-custo-de-aquisicao'); custoAquisicao.setAttribute('required', 'required'); custoAquisicao.setAttribute('onchange', 'validarValor, calcularImpostoPj'); divComponente2.appendChild(custoAquisicao); container2.appendChild(divComponente2); } // VALOR ATUALIZADO 2024 (INPUT) if (w === 1) { divComponente2.classList.add('col-3'); let valorAtualizado = document.createElement('br-input'); valorAtualizado.setAttribute('eName', 'Valor atualizado em 2024'); valorAtualizado.setAttribute('label', 'Valor atualizado em 2024 (R$)'); valorAtualizado.setAttribute('inputId', 'id-valor-atualizado'); valorAtualizado.setAttribute('required', 'required'); valorAtualizado.setAttribute('onchange', 'validarValor, calcularImpostoPj'); divComponente2.appendChild(valorAtualizado); container2.appendChild(divComponente2); } // BASE DE CALCULO (INPUT DISABLED) if (w === 2) { divComponente2.classList.add('col-2'); let baseDeCalculo = document.createElement('br-input'); baseDeCalculo.setAttribute('eName', 'Base de cálculo'); baseDeCalculo.setAttribute('label', 'Base de cálculo (R$)'); baseDeCalculo.setAttribute('inputId', 'id-base-de-calculo'); baseDeCalculo.setAttribute('inputClass', 'border-gray-90 text-weight-bold'); baseDeCalculo.setAttribute('required', 'required'); baseDeCalculo.setAttribute('isDisabled', 'disabled'); divComponente2.appendChild(baseDeCalculo); container2.appendChild(divComponente2); } // IRPJ (INPUT DISABLED) if (w === 3) { divComponente2.classList.add('col-2'); let irpj = document.createElement('br-input'); irpj.setAttribute('eName', 'irpj'); irpj.setAttribute('label', 'IRPJ (R$)'); irpj.setAttribute('inputId', 'id-irpj'); irpj.setAttribute('inputClass', 'border-gray-90 text-weight-bold'); irpj.setAttribute('required', 'required'); irpj.setAttribute('isDisabled', 'disabled'); divComponente2.appendChild(irpj); container2.appendChild(divComponente2); } // IRPJ (INPUT DISABLED) if (w === 4) { divComponente2.classList.add('col-2'); let csll = document.createElement('br-input'); csll.setAttribute('eName', 'csll'); csll.setAttribute('label', 'CSLL (R$)'); csll.setAttribute('inputId', 'id-csll'); csll.setAttribute('inputClass', 'border-gray-90 text-weight-bold'); csll.setAttribute('required', 'required'); csll.setAttribute('isDisabled', 'disabled'); divComponente2.appendChild(csll); container2.appendChild(divComponente2); } } container2.classList.add('row'); novaCelula.appendChild(container2); let containerTextarea = document.createElement('div'); containerTextarea.classList.add('mt-3', 'row'); let descricao = document.createElement('br-textarea'); descricao.setAttribute('label', 'Identificação do imóvel (informar descrição e endereço completo)'); descricao.setAttribute('eName', 'Descrição'); descricao.setAttribute('maxlength', '500'); descricao.setAttribute('textareaClass', 'col-12'); descricao.setAttribute('rows', '5'); descricao.setAttribute('required', 'required'); containerTextarea.appendChild(descricao); novaCelula.appendChild(containerTextarea); } if (j === 1) { novaCelula.classList.add('acoes'); let btnExcluir = document.createElement('button'); let iconeLixeira = document.createElement('i'); btnExcluir.classList.add('br-button'); iconeLixeira.classList.add('fa', 'fa-trash-alt'); btnExcluir.appendChild(iconeLixeira); novaCelula.appendChild(btnExcluir); btnExcluir.addEventListener('click', function () { excluirLinha(this); }); } } } // CALCULAR IMPOSTO PF function calcularImpostoPf(elemento){ let identificacao = getSelectedValue('id-identificacao'); let ca = elemento.closest('td').querySelector('#id-custo-de-aquisicao').value; // Custo de aquisicao let va = elemento.closest('td').querySelector('#id-valor-atualizado').value; // valor atualizado let bc = elemento.closest('td').querySelector('#id-base-de-calculo'); // base de calculo let impostoPf = elemento.closest('td').querySelector('#id-irpf'); // imposto PF if (!compararDoisValoresNumericos(ca, va, '<')){ if (ca && va){ elemento.closest('td').querySelector('#id-valor-atualizado').value = ''; showAlertModal('Valor atualizado em 2024 (R$) deve ser maior que o Custo de aquisição (R$).'); return } } else { ca = ca ? converteStringEmNumero(ca) : 0; va = va ? converteStringEmNumero(va) : 0; let bcValor = va - ca; bc.value = converteNumeroEmReais(bcValor); let impostoPfValor = 0.04 * bcValor; impostoPf.value = converteNumeroEmReais(impostoPfValor); } } // CALCULAR IMPOSTO PJ function calcularImpostoPj(elemento){ let identificacao = getSelectedValue('id-identificacao'); let ca = elemento.closest('td').querySelector('#id-custo-de-aquisicao').value; // Custo de aquisicao let va = elemento.closest('td').querySelector('#id-valor-atualizado').value; // valor atualizado let bc = elemento.closest('td').querySelector('#id-base-de-calculo'); // base de calculo let impostoPj = elemento.closest('td').querySelector('#id-irpj'); // imposto PJ let csll = elemento.closest('td').querySelector('#id-csll'); // csll if (!compararDoisValoresNumericos(ca, va, '<')){ if (ca && va){ elemento.closest('td').querySelector('#id-valor-atualizado').value = ''; showAlertModal('Valor atualizado em 2024 (R$) deve ser maior que o Custo de aquisição (R$).'); return } } else { ca = converteStringEmNumero(ca); va = converteStringEmNumero(va); let bcValor = va - ca; bc.value = converteNumeroEmReais(bcValor); let impostoPjValor = 0.06 * bcValor; let csllValor = 0.04 * bcValor; impostoPj.value = converteNumeroEmReais(impostoPjValor); csll.value = converteNumeroEmReais(csllValor); } } // Função para limpar o conteúdo da tabela function clearTableContent() { secaoApuracaoTributos.classList.add('d-none'); let headApuracaoTributos = document.querySelector('#head-apuracao-tributos'); headApuracaoTributos.innerHTML = ''; let bodyApuracaoTributos = document.querySelector('#bd-apuracao-tributos'); bodyApuracaoTributos.innerHTML = ''; } // Função para adicionar ouvintes de eventos function limpaTabelaApuracao() { // Adiciona ouvintes de eventos a todos os inputs, selects e botões const elements = document.querySelectorAll('input, select, button:not(#btn-apurar-tributos):not(#btn-gerar-documento):not(#btn-sim):not(#btn-nao):not(#btn-entendi):not(#btn-close), textarea'); elements.forEach(element => { element.addEventListener('change', clearTableContent); element.addEventListener('click', clearTableContent); // Para botões }); } // APURAR TRIBUTOS function apurarTributos(idTabela){ if (!validarCamposRequiredNaSecao('id-identificacao-contribuinte')) { showAlertModal('Existem campos obrigatórios não preenchidos.'); return } if (!validarTabelasObrigatorias('id-detalhamento-imoveis')) { showAlertModal('Existem tabelas obrigatórias não preenchidas.'); return } if (!validarCamposRequiredNaSecao('id-detalhamento-imoveis')) { showAlertModal('Existem campos obrigatórios não preenchidos.'); return } let contribuinte = getSelectedValue('id-identificacao'); let tabelaDetalhamentoImoveis = document.querySelector(`#${idTabela}`); let linhas = tabelaDetalhamentoImoveis.querySelectorAll('tbody tr'); let totalCa = 0; let totalVa = 0; let totalBc = 0; let totalIrpf = 0; let totalIrpj = 0; let totalCsll = 0; // PERCORRENDO LINHAS TABELA DETALHAMENTO IMOVEIS for (let linha of linhas) { totalCa += converteStringEmNumero(linha.querySelector('#id-custo-de-aquisicao').value); totalVa += converteStringEmNumero(linha.querySelector('#id-valor-atualizado').value); totalBc += converteStringEmNumero(linha.querySelector('#id-base-de-calculo').value); if (contribuinte === 'Pessoa Física') { totalIrpf += converteStringEmNumero(linha.querySelector('#id-irpf').value); } else { totalIrpj += converteStringEmNumero(linha.querySelector('#id-irpj').value); totalCsll += converteStringEmNumero(linha.querySelector('#id-csll').value); } } // CRIACAO DA TABELA DE APURACAO let qtdColunas = (contribuinte === 'Pessoa Física') ? 6 : 7; let headApuracaoTributos = document.querySelector('#head-apuracao-tributos'); headApuracaoTributos.innerHTML = ''; let bodyApuracaoTributos = document.querySelector('#bd-apuracao-tributos'); bodyApuracaoTributos.innerHTML = ''; let linhaHeadApuracaoTributos = headApuracaoTributos.insertRow(-1); let linhaBodyApuracaoTributos = bodyApuracaoTributos.insertRow(-1); for (let i = 0; i < qtdColunas; i++){ let thead = document.createElement('th'); let novaCelula = linhaBodyApuracaoTributos.insertCell(); // COLUNA TEXTO 'TOTAL' if (i === 0) { thead.style.width = "9%"; let textoTotal = document.createElement('br-input'); textoTotal.setAttribute('eName', 'Texto Total'); textoTotal.setAttribute('inputId', 'id-texto-total'); textoTotal.setAttribute('isDisabled', 'disabled'); textoTotal.setAttribute('inputClass', 'text-bold p-0'); textoTotal.setAttribute('inputStyle', 'border:0px'); textoTotal.setAttribute('initValue', 'TOTAL'); novaCelula.appendChild(textoTotal); } // COLUNA QUANTIDADE DE IMOVEL if (i === 1) { thead.style.width = "12%"; thead.innerHTML = 'Qtde de imóveis'; qtdImoveis = tbDetalhamentoImoveis.rows.length - 1; // não contar a linha do cabeçalho da tabela let custoAquisicaoTotal = document.createElement('br-input'); custoAquisicaoTotal.setAttribute('eName', 'Quantidade de imóveis'); custoAquisicaoTotal.setAttribute('inputId', 'id-qtd-imoveis'); custoAquisicaoTotal.setAttribute('isDisabled', 'disabled'); custoAquisicaoTotal.setAttribute('inputClass', 'text-bold p-0'); custoAquisicaoTotal.setAttribute('inputStyle', 'border:0px'); custoAquisicaoTotal.setAttribute('initValue', qtdImoveis); novaCelula.appendChild(custoAquisicaoTotal); } // COLUNA CUSTO AQUISIÇÃO TOTAL if (i === 2) { thead.style.width = "18%"; thead.innerHTML = 'Custo de aquisição (R$)'; let custoAquisicaoTotal = document.createElement('br-input'); custoAquisicaoTotal.setAttribute('eName', 'Custo de aquisição Total'); custoAquisicaoTotal.setAttribute('inputId', 'id-custo-de-aquisicao-total'); custoAquisicaoTotal.setAttribute('isDisabled', 'disabled'); custoAquisicaoTotal.setAttribute('inputClass', 'text-bold p-0'); custoAquisicaoTotal.setAttribute('inputStyle', 'border:0px'); custoAquisicaoTotal.setAttribute('initValue', converteNumeroEmReais(totalCa)); novaCelula.appendChild(custoAquisicaoTotal); } // COLUNA VALOR ATUALIZADO TOTAL if (i === 3) { thead.style.width = "19%"; thead.innerHTML = 'Valor atualizado em 2024 (R$)'; let valorAtualizadoTotal = document.createElement('br-input'); valorAtualizadoTotal.setAttribute('eName', 'Valor atualizado Total'); valorAtualizadoTotal.setAttribute('inputId', 'id-valor-atualizado-total'); valorAtualizadoTotal.setAttribute('isDisabled', 'disabled'); valorAtualizadoTotal.setAttribute('inputClass', 'text-bold p-0'); valorAtualizadoTotal.setAttribute('inputStyle', 'border:0px'); valorAtualizadoTotal.setAttribute('initValue', converteNumeroEmReais(totalVa)); novaCelula.appendChild(valorAtualizadoTotal); } // COLUNA BASE DE CALCULO TOTAL if (i === 4) { thead.style.width = "18%"; thead.innerHTML = 'Base de cálculo (R$)'; let baseDeCalculoTotal = document.createElement('br-input'); baseDeCalculoTotal.setAttribute('eName', 'Base de Cálculo Total'); baseDeCalculoTotal.setAttribute('inputId', 'id-base-de-calculo-total'); baseDeCalculoTotal.setAttribute('isDisabled', 'disabled'); baseDeCalculoTotal.setAttribute('inputClass', 'text-bold p-0'); baseDeCalculoTotal.setAttribute('inputStyle', 'border:0px'); baseDeCalculoTotal.setAttribute('initValue', converteNumeroEmReais(totalBc)); novaCelula.appendChild(baseDeCalculoTotal); } if (contribuinte === 'Pessoa Física') { // COLUNA IRPF TOTAL if (i === 5) { thead.style.width = "24%"; thead.innerHTML = 'IRPF (R$)'; let irpfTotal = document.createElement('br-input'); irpfTotal.setAttribute('eName', 'IRPF Total'); irpfTotal.setAttribute('inputId', 'id-irpf-total'); irpfTotal.setAttribute('isDisabled', 'disabled'); irpfTotal.setAttribute('inputClass', 'text-bold p-0'); irpfTotal.setAttribute('inputStyle', 'border:0px'); irpfTotal.setAttribute('initValue', converteNumeroEmReais(totalIrpf)); novaCelula.appendChild(irpfTotal); } } else { // COLUNA IRPJ TOTAL if (i === 5) { thead.style.width = "12%"; thead.innerHTML = 'IRPJ (R$)'; let irpjTotal = document.createElement('br-input'); irpjTotal.setAttribute('eName', 'IRPJ Total'); irpjTotal.setAttribute('inputId', 'id-irpj-total'); irpjTotal.setAttribute('isDisabled', 'disabled'); irpjTotal.setAttribute('inputClass', 'text-bold p-0'); irpjTotal.setAttribute('inputStyle', 'border:0px'); irpjTotal.setAttribute('initValue', converteNumeroEmReais(totalIrpj)); novaCelula.appendChild(irpjTotal); } // COLUNA CSLL TOTAL if (i === 6) { thead.style.width = "12%"; thead.innerHTML = 'CSLL (R$)'; let csllTotal = document.createElement('br-input'); csllTotal.setAttribute('eName', 'CSLL Total'); csllTotal.setAttribute('inputId', 'id-csll-total'); csllTotal.setAttribute('isDisabled', 'disabled'); csllTotal.setAttribute('inputClass', 'text-bold p-0'); csllTotal.setAttribute('inputStyle', 'border:0px'); csllTotal.setAttribute('initValue', converteNumeroEmReais(totalCsll)); novaCelula.appendChild(csllTotal); } } linhaHeadApuracaoTributos.appendChild(thead); } secaoApuracaoTributos.classList.remove('d-none'); limpaTabelaApuracao(); } // EXCLUI TODAS AS LINHAS DE UMA TABELA - BOTAO LIMPAR async function excluirLinhasTabela(idTabela, confirmacao) { let tabela = document.querySelector(`#${idTabela}`); // se a tabela tiver apenas cabeçalho, retorna if (tabela.rows.length < 2) return; if (confirmacao) { if (! await showConfirmationModal("Tem certeza que deseja excluir todos os imóveis?")) { return; } } linhaContador = 1; var linhas = tabela.rows; // Começa do final para evitar problemas com o índice mudando durante a remoção for (var i = linhas.length - 1; i > 0; i--) { tabela.deleteRow(i); } } // MODAL DE CONFIRMACAO function showConfirmationModal(mensagem) { return new Promise((resolve) => { const modal = document.getElementById('confirmation-modal'); const modalMessage = modal.querySelector('#modal-message'); const btnEntendi = modal.querySelector('#btn-entendi'); const btnClose = modal.querySelector('#btn-close'); const btnSim = modal.querySelector('#btn-sim'); const btnNao = modal.querySelector('#btn-nao'); btnEntendi.classList.add('d-none'); modalMessage.classList.add('text-up-01'); modal.style.position = 'fixed'; modal.style.top = "50%"; modal.style.left = "50%"; modal.style.transform = "translate(-50%, -50%)"; modal.style.zIndex = '1000'; modalMessage.innerHTML = mensagem; // Adicionando event listeners para os botões btnSim.addEventListener('click', () => { resolve(true); closeConfirmationModal(); }); btnNao.addEventListener('click', () => { resolve(false); closeConfirmationModal(); }); btnClose.addEventListener('click', () => { resolve(false); closeConfirmationModal(); }); modal.classList.remove('d-none'); }); } // ESCONDE MODAL function closeConfirmationModal() { // remove d-none dos botões para próximo modal const btnEntendi = document.querySelector('#btn-entendi'); const btnSim = document.getElementById('btn-sim'); const btnNao = document.getElementById('btn-nao'); btnEntendi.classList.remove('d-none'); btnSim.classList.remove('d-none'); btnNao.classList.remove('d-none'); const modal = document.getElementById('confirmation-modal'); modal.classList.add('d-none'); } // PREPARA CONTEUDO PARA PDF function prepararPdf(secoes){ let continuar = true; // Variável de controle for (let secao of secoes) { if(!validarTabelasObrigatorias(secao.id)){ let tabelaNome = secao.querySelector('table[required]').getAttribute('name'); showAlertModal(`A <span class="text-bold">${tabelaNome}</span> é de preenchimento obrigatório.`) continuar = false; break } if(!validarCamposRequiredNaSecao(secao.id)){ showAlertModal('Existem campos obrigatórios não preenchidos.') continuar = false; break } } if (!continuar) return false; return true } // FUNÇÃO QUE VALIDA DADOS E GERA DOCUMENTO async function gerarDocumento(){ if (!prepararPdf(secoesToPdf)) return; if (!await showConfirmationModal(` <p>Após clicar em "Sim" será disponibilizado para download um arquivo extensão .PDF, com o Demonstrativo de Apuração dos Tributos.</p> <p> Esse arquivo obrigatoriamente deverá ser anexado à Declaração de Opção pela Atualização de Bens Imóveis, disponível no Portal e-CAC <a href='https://cav.receita.fazenda.gov.br/autenticacao/login' target='_blank'> clique aqui </a>.</p> <p>Ao acessar o Portal e-CAC, selecione “Legislação e Processo” e “Requerimentos Web”. Para:</p> <p>- “Área de Concentração de Serviço”, selecione “Declarações e Escriturações”; e</p> <p>- “Serviço”, selecione “Declaração de Opção pela Atualização de Bens Imóveis - Dabim”.</p> <p>Em seguida, <strong>os dados inseridos nessa página serão apagados.</strong></p> <p>Tem certeza que deseja continuar?</p> ` )){ return; } //AJUSTA TEXTAREAS PARA PDF ajustarTextareas(); html2canvas(document.querySelector('body')).then(canvas => { const imgData = canvas.toDataURL('image/jpeg', 0.7); const pdf = new jspdf.jsPDF('landscape'); // Define as dimensões da página const pageWidth = pdf.internal.pageSize.getWidth(); const pageHeight = pdf.internal.pageSize.getHeight(); // Dimensões da imagem const imgWidth = canvas.width; const imgHeight = canvas.height; // Proporção de redimensionamento da imagem const ratio = pageWidth / imgWidth; const scaledHeight = imgHeight * ratio; // Número total de páginas necessárias let totalPages = Math.ceil(scaledHeight / pageHeight); for (let i = 0; i < totalPages; i++) { const position = -(pageHeight * i); // Adiciona a imagem ao PDF, cortando a parte visível da página pdf.addImage(imgData, 'JPEG', 0, position, pageWidth, scaledHeight); // Adiciona uma nova página se não for a última if (i < totalPages - 1) { pdf.addPage(); } } let json = gerarJSON(secoesToPdf); // Define metadados do PDF pdf.setProperties({ keywords: json, }); pdf.save("DemonstrativoDabim.pdf"); }); // Após o download do PDF, recarrega a página. setTimeout(function() { location.reload(); }, 5000); // Tempo em milissegundos (5 segundos) // showAlertModal('PDF gerado e salvo com sucesso!') } // EXTRAI VALORES DOS ELEMENTOS DE FORMULARIO function extrairValores(elemento){ let chaveSecao = {}; // capturar os componentes de cada elemento (exemplo: secao, linha de tabela, div) let brInputs = elemento.querySelectorAll('br-input'); let brTextareas = elemento.querySelectorAll('br-textarea'); let brDatepickers = elemento.querySelectorAll('br-datepicker'); // let brSelects = elemento.querySelectorAll('br-select'); let brSelectComponents = elemento.querySelectorAll('br-select-component'); let selectUF = elemento.querySelector('select-ufs'); let selectMunicipio = elemento.querySelector('select-municipio'); if (selectUF){ chaveSecao['Estado de destino'] = selectUF.querySelector (".br-item.selected>.br-radio>label").textContent; } if (selectMunicipio){ chaveSecao['Municipio de destino'] = selectMunicipio.querySelector (".br-item.selected>.br-radio>label").textContent; } brSelectComponents.forEach(brSelectComponent => { const name = brSelectComponent.querySelector('input').name; const value = brSelectComponent.querySelector('.br-item.selected').querySelector('input').value; chaveSecao[name] = value; }); brInputs.forEach(brInput => { const name = brInput.querySelector('input').getAttribute('name'); const value = brInput.querySelector('input').value; chaveSecao[name] = value; }); brTextareas.forEach(brTextarea => { const name = brTextarea.querySelector('textarea').getAttribute('name'); const value = brTextarea.querySelector('textarea').value; chaveSecao[name] = value; }); brDatepickers.forEach(brDatepicker => { const name = brDatepicker.querySelector('input').getAttribute('name'); const value = brDatepicker.querySelector('input').value; chaveSecao[name] = value; }); return chaveSecao; } // GERA JSON PARA INCLUIR NOS METADADOS DO PDF function gerarJSON(secoes) { const jsonData = {}; const dataAtual = new Date(); const dia = dataAtual.getDate(); const mes = dataAtual.getMonth() + 1; // Meses são indexados de 0 (Janeiro) a 11 (Dezembro), por isso adicionamos 1 const ano = dataAtual.getFullYear(); const dataFormatada = `${String(dia).padStart(2, '0')}/${String(mes).padStart(2, '0')}/${ano}`; jsonData["versao"]= "1.0"; jsonData["data-de-criacao"]= dataFormatada; for (let secao of secoes) { let tabela = secao.querySelector('table'); // verificar se tem tabela na secao - criar objetos para cada linha da tabela // se não tiver, cada name pode ser chave if (!tabela){ jsonData[secao.getAttribute('name')] = extrairValores(secao); }else{ // tem tabela let secaoTabela = []; let linhas = tabela.querySelectorAll('tbody tr'); for (let linha of linhas){ secaoTabela.push(extrairValores(linha)); } jsonData['tabela_' + secao.getAttribute('name')] = secaoTabela; } } return JSON.stringify(jsonData, null, 2) } // Desabilitar atalhos de teclado comuns para impressão document.addEventListener('keydown', function(e) { if ((e.ctrlKey || e.metaKey) && (e.key === 'p' || e.key === 'P')) { e.preventDefault(); e.stopPropagation(); showAlertModal("Utilize o botão Gerar Documento."); } }); // DESABILITA CLIQUE BOTAO DIRETO // desabilitarCliqueDireito(); // DESABILITA DEV TOOLS // desabilitarAtalhosDevTools(); </script> </body> </html>