feat: implementa sistema de comprovantes com centralizações e PIX

This commit is contained in:
LS
2025-04-16 13:54:31 -03:00
parent 813c968efd
commit 8ff58cc51e
15 changed files with 581 additions and 480 deletions

View File

@@ -5,7 +5,7 @@ from functions.database import (
RelatorioCotasMensais, RelatorioVendasMateriais, engine, SessionLocal,
Setor, ComiteCentral, Usuario, Role, EmailMilitante, Endereco,
ComiteRegional, Celula, EstadoMilitante, get_db_connection,
init_database
init_database, CentralizacaoComprovante
)
import random
from faker import Faker
@@ -59,17 +59,17 @@ def criar_tipos_comprovante(session):
"""Cria tipos de comprovante padrão"""
print("\nCriando tipos de comprovante...")
tipos = [
"Comprovante Padrão",
"Comprovante Especial",
"Comprovante Extraordinário",
"Jornal Avulso",
"Assinatura de Jornal",
"Campanha Financeira"
("Comprovante Padrão", 50.00),
("Comprovante Especial", 100.00),
("Comprovante Extraordinário", 200.00),
("Jornal Avulso", 5.00),
("Assinatura de Jornal", 30.00),
("Campanha Financeira", 0.00) # Valor variável
]
for tipo in tipos:
if not session.query(TipoComprovante).filter_by(descricao=tipo).first():
session.add(TipoComprovante(descricao=tipo))
for descricao, valor in tipos:
if not session.query(TipoComprovante).filter_by(descricao=descricao).first():
session.add(TipoComprovante(descricao=descricao, valor=valor))
try:
session.commit()
@@ -229,14 +229,25 @@ def criar_comprovantes(session, militantes):
try:
# Criar entre 3 e 8 comprovantes por militante
for _ in range(random.randint(3, 8)):
tipo = random.choice(tipos_comprovante)
# Criar o comprovante base
comprovante = Comprovante(
militante_id=militante.id,
tipo_comprovante=tipo.descricao, # Usando a descrição do tipo
valor=random.uniform(10, 1000),
data_comprovante=fake.date_between(start_date='-1y', end_date='today')
data_comprovante=fake.date_between(start_date='-1y', end_date='today'),
forma_pagamento=random.choice(['PIX', 'transferência/DOC', 'depósito', 'maquininha'])
)
session.add(comprovante)
session.flush() # Para obter o ID do comprovante
# Criar a centralização para o comprovante
tipo = random.choice(tipos_comprovante)
valor = random.uniform(10, 1000)
centralizacao = CentralizacaoComprovante(
comprovante_id=comprovante.id,
tipo_comprovante=tipo.descricao,
valor=valor
)
session.add(centralizacao)
session.commit()
except Exception as e:
session.rollback()