Files
app_faturas/app/models.py
ewerton.almeida 950eb2a826
All checks were successful
continuous-integration/drone/push Build is passing
Criação da tela de clientes e relatórios
2025-08-11 13:14:54 -03:00

97 lines
3.1 KiB
Python
Executable File

# 📄 models.py
from sqlalchemy import Column, String, Integer, Float, DateTime, Text, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
import uuid
from datetime import datetime
from app.database import Base
from sqlalchemy import Boolean
from sqlalchemy import Column, Integer, String, Numeric
class ParametrosFormula(Base):
__tablename__ = "parametros_formula"
__table_args__ = {"schema": "faturas"}
id = Column(Integer, primary_key=True)
nome = Column(String(50))
formula = Column(Text)
ativo = Column(Boolean, default=True)
class Fatura(Base):
__tablename__ = "faturas"
__table_args__ = {'schema': 'faturas'}
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
nome = Column(String)
classificacao_tarifaria = Column("classificacao_tarifaria", String)
unidade_consumidora = Column("unidade_consumidora", String)
referencia = Column(String)
valor_total = Column(Float)
pis_aliq = Column("pis_aliq", Float)
pis_valor = Column("pis_valor", Float)
pis_base = Column("pis_base", Float)
icms_aliq = Column("icms_aliq", Float)
icms_valor = Column("icms_valor", Float)
icms_base = Column("icms_base", Float)
cofins_aliq = Column("cofins_aliq", Float)
cofins_valor = Column("cofins_valor", Float)
cofins_base = Column("cofins_base", Float)
consumo = Column("consumo", Float)
tarifa = Column("tarifa", Float)
nota_fiscal = Column(String)
data_processamento = Column(DateTime, default=datetime.utcnow)
arquivo_pdf = Column("arquivo_pdf", String)
cidade = Column(String)
estado = Column(String)
distribuidora = Column(String)
link_arquivo = Column("link_arquivo", String)
cliente_id = Column(UUID(as_uuid=True), ForeignKey("faturas.clientes.id"), nullable=False)
class LogProcessamento(Base):
__tablename__ = "logs_processamento"
__table_args__ = {'schema': 'faturas'}
id = Column(Integer, primary_key=True, autoincrement=True)
nome_arquivo = Column(String)
status = Column(String)
mensagem = Column(Text)
acao = Column(String) # nova coluna existente no banco
data_log = Column("data_log", DateTime, default=datetime.utcnow)
class AliquotaUF(Base):
__tablename__ = "aliquotas_uf"
__table_args__ = {'schema': 'faturas'}
id = Column(Integer, primary_key=True, autoincrement=True)
uf = Column(String)
exercicio = Column(String)
aliq_icms = Column(Numeric(6, 4))
class SelicMensal(Base):
__tablename__ = "selic_mensal"
__table_args__ = {'schema': 'faturas'}
ano = Column(Integer, primary_key=True)
mes = Column(Integer, primary_key=True)
percentual = Column(Numeric(6, 4))
class Cliente(Base):
__tablename__ = "clientes"
__table_args__ = {"schema": "faturas"}
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
nome_fantasia = Column(String, nullable=False)
cnpj = Column(String(14), unique=True)
ativo = Column(Boolean, default=True)
data_criacao = Column(DateTime, default=datetime.utcnow)
data_atualizacao = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)