from core.database import SqlServerBase
from sqlalchemy import Column, String, Integer, DateTime, Boolean, Numeric

class Cliente(SqlServerBase):
    __tablename__ = "Cliente"
    __table_args__ = {"schema": "dbo"}

    Id = Column(Integer, primary_key=True, index=True)
    Token = Column(String, nullable=True, index=True)
    RazaoSocial = Column(String(255), nullable=True)
    NomeFantasia = Column(String(255), nullable=True)
    Cnpj = Column(String(18), nullable=True)
    IdRegimeTributario = Column(Integer, nullable=True)
    IdEstado = Column(Integer, nullable=True)
    ContatoOperacional = Column(String(255), nullable=True)
    EmailOperacional = Column(String(255), nullable=True)
    TelefoneOperacional = Column(String(50), nullable=True)
    CelularOperacional = Column(String(50), nullable=True)
    ContatoFinanceiro = Column(String(255), nullable=True)
    EmailCobranca = Column(String(255), nullable=True)
    Telefone = Column(String(50), nullable=True)
    Celular = Column(String(50), nullable=True)
    NumeroLojas = Column(Integer, nullable=True)
    Endereco = Column(String(255), nullable=True)
    EnderecoNumero = Column(String(50), nullable=True)
    EnderecoComplemento = Column(String(255), nullable=True)
    Cep = Column(String(10), nullable=True)
    Bairro = Column(String(255), nullable=True)
    Cidade = Column(String(255), nullable=True)
    InscricaoEstadual = Column(String(50), nullable=True)
    Site = Column(String(255), nullable=True)
    NomeRede = Column(String(255), nullable=True)
    ContatoRede = Column(String(255), nullable=True)
    TelefoneRede = Column(String(50), nullable=True)
    IdRetaguarda = Column(Integer, nullable=True)
    Prospeccao = Column(Boolean, nullable=True)
    Parceiro = Column(Boolean, nullable=True)
    IdSegmentoCliente = Column(Integer, nullable=True)
    IdUsuarioUltimoDownloadRevisaoFiscal = Column(Integer, nullable=True)
    DataUltimoDownloadRevisaoFiscal = Column(DateTime, nullable=True)
    IdUsuarioUltimoDownloadRevisaoFiscalCancelado = Column(Integer, nullable=True)
    DataUltimoDownloadRevisaoFiscalCancelado = Column(DateTime, nullable=True)
    BaixarRevisaoSomenteCodigoInterno = Column(Boolean, nullable=True)
    OcultarDescricoesProdutosDownloadRevisao = Column(Boolean, nullable=True)
    NomeProprietario = Column(String(255), nullable=True)
    EmailProprietario = Column(String(255), nullable=True)
    TelefoneProprietario = Column(String(50), nullable=True)
    EmailCpd = Column(String(255), nullable=True)
    RevisadoManualmente = Column(Boolean, nullable=True)
    IdContador = Column(Integer, nullable=True)
    LimiteConsultaItensSemanalDiarioWsClientesAntigos = Column(Integer, nullable=True)
    LimiteConsultaItensDiarioWsClientesNovos = Column(Integer, nullable=True)
    IdUsuarioSuporteResponsavel = Column(Integer, nullable=True)
    IdVendedor = Column(Integer, nullable=True)
    PercentualCustoOperacional = Column(Numeric(18, 2), nullable=True)
    DataExpiracaoCalculadora = Column(DateTime, nullable=True)
    NumeroCheckout = Column(Integer, nullable=True)
    NumeroFuncionarios = Column(Integer, nullable=True)
    FaturamentoMensal = Column(Numeric(18, 2), nullable=True)
    MetrosQuadradosLoja = Column(Numeric(18, 2), nullable=True)
    IdClienteCrm = Column(Integer, nullable=True)
    MesorregiaoEndereco = Column(String(255), nullable=True)
    IdGrupoEmpresarial = Column(Integer, nullable=True)
    EmailResponsavelRede = Column(String(255), nullable=True)
    CnaePrimario = Column(String(20), nullable=True)
    CnaeSecundario = Column(String(20), nullable=True)
    Instagram = Column(String(255), nullable=True)
    Facebook = Column(String(255), nullable=True)
    DataCriacaoProspeccao = Column(DateTime, nullable=True)
    Observacoes = Column(String, nullable=True)
    IdFilialRetaguarda = Column(Integer, nullable=True)
    TokenAtacado = Column(String, nullable=True)
    TokenIndustria = Column(String, nullable=True)
    IdOrigemCadastro = Column(Integer, nullable=True)
    IdStatusCliente = Column(Integer, nullable=True)
    TokenVarejo = Column(String, nullable=True)
    Integration = Column(String(255), nullable=True)
    Tipo = Column(String(50), nullable=True)
    IdRegimeEspecial = Column(Integer, nullable=True)