import os from datetime import datetime from reportlab.lib.pagesizes import A4 from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY from app.core.config import settings os.makedirs(settings.UPLOAD_DIR, exist_ok=True) def _styles(): ss = getSampleStyleSheet() ss.add(ParagraphStyle(name="TitleCenter", parent=ss["Title"], alignment=TA_CENTER, fontSize=16)) ss.add(ParagraphStyle(name="Body", parent=ss["Normal"], alignment=TA_JUSTIFY, fontSize=11, leading=16)) return ss def gerar_procuracao(familia_nome: str, falecido_nome: str, membro_nome: str, falecido_cpf: str = "000.000.000-00") -> str: filename = f"procuracao_{familia_nome.lower().replace(' ','_')}_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf" path = os.path.join(settings.UPLOAD_DIR, filename) doc = SimpleDocTemplate(path, pagesize=A4, topMargin=3*cm) ss = _styles() story = [ Paragraph("PROCURAÇÃO", ss["TitleCenter"]), Spacer(1, 1*cm), Paragraph( f"Pelo presente instrumento particular, eu, {membro_nome}, na qualidade de herdeiro(a) " f"de {falecido_nome} (CPF: {falecido_cpf}), da família {familia_nome}, nomeio e constituo " f"como meu(minha) bastante procurador(a) ______________________, para em meu nome representar " f"perante órgãos públicos, bancos e demais instituições, podendo requerer, assinar documentos, " f"receber valores e praticar todos os atos necessários ao cumprimento deste mandato.", ss["Body"] ), Spacer(1, 1.5*cm), Paragraph(f"Local e data: ________________, {datetime.now().strftime('%d/%m/%Y')}", ss["Body"]), Spacer(1, 2*cm), Paragraph("_______________________________
Assinatura do Outorgante", ss["Body"]), ] doc.build(story) return path def gerar_requerimento_fgts(familia_nome: str, falecido_nome: str, membro_nome: str, falecido_cpf: str = "000.000.000-00") -> str: filename = f"requerimento_fgts_{familia_nome.lower().replace(' ','_')}_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf" path = os.path.join(settings.UPLOAD_DIR, filename) doc = SimpleDocTemplate(path, pagesize=A4, topMargin=3*cm) ss = _styles() story = [ Paragraph("REQUERIMENTO DE SAQUE DO FGTS POR FALECIMENTO", ss["TitleCenter"]), Spacer(1, 1*cm), Paragraph("À Caixa Econômica Federal", ss["Body"]), Spacer(1, 0.5*cm), Paragraph( f"Eu, {membro_nome}, na qualidade de dependente/herdeiro(a) de {falecido_nome} " f"(CPF: {falecido_cpf}), venho por meio deste requerer o saque do saldo da(s) conta(s) vinculada(s) " f"ao FGTS do trabalhador falecido, conforme previsto na Lei nº 8.036/90, art. 20, inciso IV.", ss["Body"] ), Spacer(1, 0.5*cm), Paragraph("Documentos em anexo: Certidão de Óbito, documento de identidade, comprovante de dependência.", ss["Body"]), Spacer(1, 1.5*cm), Paragraph(f"Local e data: ________________, {datetime.now().strftime('%d/%m/%Y')}", ss["Body"]), Spacer(1, 2*cm), Paragraph("_______________________________
Assinatura do Requerente", ss["Body"]), ] doc.build(story) return path def gerar_peticao_pensao(familia_nome: str, falecido_nome: str, membro_nome: str, falecido_cpf: str = "000.000.000-00") -> str: filename = f"peticao_pensao_{familia_nome.lower().replace(' ','_')}_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf" path = os.path.join(settings.UPLOAD_DIR, filename) doc = SimpleDocTemplate(path, pagesize=A4, topMargin=3*cm) ss = _styles() story = [ Paragraph("REQUERIMENTO DE PENSÃO POR MORTE", ss["TitleCenter"]), Spacer(1, 1*cm), Paragraph("Ao Instituto Nacional do Seguro Social - INSS", ss["Body"]), Spacer(1, 0.5*cm), Paragraph( f"Eu, {membro_nome}, na qualidade de dependente de {falecido_nome} " f"(CPF: {falecido_cpf}), venho requerer a concessão do benefício de Pensão por Morte, " f"conforme previsto nos arts. 74 a 79 da Lei nº 8.213/91, em razão do falecimento do(a) " f"segurado(a) acima identificado(a).", ss["Body"] ), Spacer(1, 0.5*cm), Paragraph("Documentos em anexo: Certidão de Óbito, documentos pessoais, comprovante de dependência econômica.", ss["Body"]), Spacer(1, 1.5*cm), Paragraph(f"Local e data: ________________, {datetime.now().strftime('%d/%m/%Y')}", ss["Body"]), Spacer(1, 2*cm), Paragraph("_______________________________
Assinatura do Requerente", ss["Body"]), ] doc.build(story) return path GENERATORS = { "procuracao": gerar_procuracao, "requerimento_fgts": gerar_requerimento_fgts, "peticao_pensao": gerar_peticao_pensao, }