diff --git a/apps/web/src/lib/components/PrintModal.svelte b/apps/web/src/lib/components/PrintModal.svelte index 566f550..0811111 100644 --- a/apps/web/src/lib/components/PrintModal.svelte +++ b/apps/web/src/lib/components/PrintModal.svelte @@ -30,14 +30,27 @@ endereco: true, contato: true, cargo: true, + financeiro: true, bancario: true, }); + const REGIME_LABELS: Record = { + clt: "CLT", + estatutario_municipal: "Estatutário Municipal", + estatutario_pe: "Estatutário PE", + estatutario_federal: "Estatutário Federal", + }; + function getLabelFromOptions(value: string | undefined, options: Array<{value: string, label: string}>): string { if (!value) return "-"; return options.find(opt => opt.value === value)?.label || value; } + function getRegimeLabel(value?: string) { + if (!value) return "-"; + return REGIME_LABELS[value] ?? value; + } + function selectAll() { Object.keys(sections).forEach(key => { sections[key as keyof typeof sections] = true; @@ -173,6 +186,9 @@ if (funcionario.carteiraProfissionalNumero) { documentosData.push(['Cart. Profissional', `Nº ${funcionario.carteiraProfissionalNumero}${funcionario.carteiraProfissionalSerie ? ' - Série: ' + funcionario.carteiraProfissionalSerie : ''}`]); } + if (funcionario.carteiraProfissionalDataEmissao) { + documentosData.push(['Emissão Cart. Profissional', funcionario.carteiraProfissionalDataEmissao]); + } if (funcionario.reservistaNumero) { documentosData.push(['Reservista', `Nº ${funcionario.reservistaNumero}${funcionario.reservistaSerie ? ' - Série: ' + funcionario.reservistaSerie : ''}`]); } @@ -287,18 +303,19 @@ ['Tipo', funcionario.simboloTipo === 'cargo_comissionado' ? 'Cargo Comissionado' : 'Função Gratificada'], ]; - if (funcionario.simbolo) { - cargoData.push(['Símbolo', funcionario.simbolo.nome]); + const simboloInfo = funcionario.simbolo ?? funcionario.simboloDetalhes ?? funcionario.simboloDados; + if (simboloInfo) { + cargoData.push(['Símbolo', simboloInfo.nome]); + if (simboloInfo.descricao) cargoData.push(['Descrição do Símbolo', simboloInfo.descricao]); } if (funcionario.descricaoCargo) cargoData.push(['Descrição', funcionario.descricaoCargo]); + if (funcionario.regimeTrabalho) cargoData.push(['Regime do Funcionário', getRegimeLabel(funcionario.regimeTrabalho)]); if (funcionario.admissaoData) cargoData.push(['Data Admissão', funcionario.admissaoData]); if (funcionario.nomeacaoPortaria) cargoData.push(['Portaria', funcionario.nomeacaoPortaria]); if (funcionario.nomeacaoData) cargoData.push(['Data Nomeação', funcionario.nomeacaoData]); if (funcionario.nomeacaoDOE) cargoData.push(['DOE', funcionario.nomeacaoDOE]); - if (funcionario.pertenceOrgaoPublico) { - cargoData.push(['Pertence Órgão Público', 'Sim']); - if (funcionario.orgaoOrigem) cargoData.push(['Órgão Origem', funcionario.orgaoOrigem]); - } + cargoData.push(['Pertence Órgão Público', funcionario.pertenceOrgaoPublico ? 'Sim' : 'Não']); + if (funcionario.pertenceOrgaoPublico && funcionario.orgaoOrigem) cargoData.push(['Órgão Origem', funcionario.orgaoOrigem]); if (funcionario.aposentado && funcionario.aposentado !== 'nao') { cargoData.push(['Aposentado', getLabelFromOptions(funcionario.aposentado, APOSENTADO_OPTIONS)]); } @@ -315,6 +332,36 @@ yPosition = (doc as any).lastAutoTable.finalY + 10; } + // Dados Financeiros + if (sections.financeiro && funcionario.simbolo) { + const simbolo = funcionario.simbolo; + const financeiroData: any[] = [ + ['Símbolo', simbolo.nome], + ['Tipo', simbolo.tipo === 'cargo_comissionado' ? 'Cargo Comissionado' : 'Função Gratificada'], + ['Remuneração Total', `R$ ${simbolo.valor}`], + ]; + + if (funcionario.simboloTipo === 'cargo_comissionado') { + if (simbolo.vencValor) { + financeiroData.push(['Vencimento', `R$ ${simbolo.vencValor}`]); + } + if (simbolo.repValor) { + financeiroData.push(['Representação', `R$ ${simbolo.repValor}`]); + } + } + + autoTable(doc, { + startY: yPosition, + head: [['DADOS FINANCEIROS', '']], + body: financeiroData, + theme: 'grid', + headStyles: { fillColor: [41, 128, 185], fontStyle: 'bold' }, + styles: { fontSize: 9 }, + }); + + yPosition = (doc as any).lastAutoTable.finalY + 10; + } + // Dados Bancários if (sections.bancario && funcionario.contaBradescoNumero) { const bancarioData: any[] = [ @@ -428,6 +475,11 @@ Cargo e Vínculo + +