rebase usando pagamentos

This commit is contained in:
LS
2025-04-22 18:11:32 -03:00
parent 63ebf09fb6
commit bb6e5c887b
15 changed files with 571 additions and 601 deletions

View File

@@ -1,10 +1,11 @@
from datetime import datetime, timedelta
from functions.database import (
Base, Militante, CotaMensal, TipoPagamento, Pagamento,
Base, Militante, CotaMensal, TipoComprovante, Comprovante,
MaterialVendido, TipoMaterial, VendaJornalAvulso, AssinaturaAnual,
RelatorioCotasMensais, RelatorioVendasMateriais, engine, SessionLocal,
Setor, ComiteCentral, Usuario, Role, EmailMilitante, Endereco,
ComiteRegional, Celula, EstadoMilitante
ComiteRegional, Celula, EstadoMilitante, get_db_connection,
init_database
)
import random
from faker import Faker
@@ -54,20 +55,28 @@ def criar_estrutura_organizacional(session):
session.commit()
return crs, setores
def criar_tipos_pagamento(session):
"""Cria tipos de pagamento padrão"""
print("\nCriando tipos de pagamento...")
def criar_tipos_comprovante(session):
"""Cria tipos de comprovante padrão"""
print("\nCriando tipos de comprovante...")
tipos = [
"Dinheiro",
"PIX",
"Cartão de Crédito",
"Cartão de Débito",
"Transferência Bancária"
"Comprovante Padrão",
"Comprovante Especial",
"Comprovante Extraordinário",
"Jornal Avulso",
"Assinatura de Jornal",
"Campanha Financeira"
]
for tipo in tipos:
if not session.query(TipoPagamento).filter_by(descricao=tipo).first():
session.add(TipoPagamento(descricao=tipo))
session.commit()
if not session.query(TipoComprovante).filter_by(descricao=tipo).first():
session.add(TipoComprovante(descricao=tipo))
try:
session.commit()
print("Tipos de comprovante criados com sucesso!")
except Exception as e:
session.rollback()
print(f"Erro ao criar tipos de comprovante: {e}")
def criar_tipos_material(session):
"""Cria tipos de material padrão"""
@@ -211,27 +220,27 @@ def criar_cotas(session, militantes):
print(f"Erro ao criar cotas para militante {militante.nome}: {e}")
session.rollback()
def criar_pagamentos(session, militantes):
"""Cria pagamentos para os militantes"""
print("\nCriando pagamentos...")
tipos_pagamento = session.query(TipoPagamento).all()
def criar_comprovantes(session, militantes):
"""Cria comprovantes para os militantes"""
print("\nCriando comprovantes...")
tipos_comprovante = session.query(TipoComprovante).all()
for militante in militantes:
try:
# Criar entre 3 e 8 pagamentos por militante
# Criar entre 3 e 8 comprovantes por militante
for _ in range(random.randint(3, 8)):
tipo = random.choice(tipos_pagamento)
pagamento = Pagamento(
tipo = random.choice(tipos_comprovante)
comprovante = Comprovante(
militante_id=militante.id,
tipo_pagamento=tipo.descricao, # Usando a descrição do tipo
valor=random.uniform(50, 500),
data_pagamento=fake.date_between(start_date='-1y', end_date='today')
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')
)
session.add(pagamento)
session.add(comprovante)
session.commit()
except Exception as e:
print(f"Erro ao criar pagamentos para militante {militante.nome}: {e}")
session.rollback()
print(f"Erro ao criar comprovantes para militante {militante.nome}: {e}")
def criar_materiais_vendidos(session, militantes):
"""Cria registros de materiais vendidos"""
@@ -302,7 +311,7 @@ def criar_assinaturas(session, militantes):
def seed_database():
"""Função principal para popular o banco de dados"""
session = SessionLocal()
session = get_db_connection()
try:
print("Iniciando população do banco de dados...")
@@ -310,7 +319,7 @@ def seed_database():
crs, setores = criar_estrutura_organizacional(session)
# Criar tipos básicos
criar_tipos_pagamento(session)
criar_tipos_comprovante(session)
criar_tipos_material(session)
# Criar militantes (30 militantes para teste)
@@ -318,7 +327,7 @@ def seed_database():
# Criar dados financeiros e materiais
criar_cotas(session, militantes)
criar_pagamentos(session, militantes)
criar_comprovantes(session, militantes)
criar_materiais_vendidos(session, militantes)
criar_vendas_jornal(session, militantes)
criar_assinaturas(session, militantes)