Files
app_faturas/app/models.py

97 lines
3.1 KiB
Python
Raw Normal View History

2025-07-28 13:29:45 -03:00
# 📄 models.py
from sqlalchemy import Column, String, Integer, Float, DateTime, Text, ForeignKey
2025-07-28 13:29:45 -03:00
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
2025-07-28 13:29:45 -03:00
class ParametrosFormula(Base):
__tablename__ = "parametros_formula"
__table_args__ = {"schema": "faturas"}
2025-07-28 13:29:45 -03:00
id = Column(Integer, primary_key=True)
nome = Column(String(50))
2025-07-28 13:29:45 -03:00
formula = Column(Text)
ativo = Column(Boolean, default=True)
2025-07-28 13:29:45 -03:00
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)
2025-07-28 13:29:45 -03:00
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))
2025-07-28 13:29:45 -03:00
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))
2025-08-09 19:51:14 -03:00
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)