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>