from pydantic import BaseModel from enum import IntEnum class TipoTributacao(IntEnum): NAO_DEFINIDO = 0 ISENTO_ISS = 1 IMUNE = 2 NAO_INCIDENCIA = 3 NAO_TRIBUTAVEL = 4 RETIDO = 5 TRIBUTAVEL_MUNICIPIO = 6 TRIBUTAVEL_FORA_MUNICIPIO = 7 TRIBUTAVEL_MUNICIPIO_TOMADOR = 8 class TipoExigibilidade(IntEnum): EXIGIVEL = 1 NAO_INCIDENCIA = 2 ISENCAO = 3 EXPORTACAO = 4 IMUNIDADE = 5 SUSPENSO_ACAO_JUDICIAL = 6 SUSPENSO_ACAO_ADMINISTRATIVA = 7 class ISS(BaseModel): tipoTributacao: int #TipoTributacao exigibilidade: int #TipoExigibilidade retido: bool | None = None # Se o ISS foi retido na fonte aliquota: float # Aliquota do ISS valor: float # Valor do ISS valorRetido: float # Valor do ISS retido processoSuspensao: str # Numero processo de suspensão do ISS ############################################################################## # tipoTributacao integer # Default: 6 # Enum: 0 1 2 3 4 5 6 7 8 # Tipo de Tributação do Serviço, valores: # 0 - Não definido # 1 - Isento de ISS # 2 - Imune # 3 - Não Incidência no Município # 4 - Não Tributável # 5 - Retido # 6 - Tributável Dentro do Município # 7 - Tributável Fora do Município # 8 - Tributável Dentro do Município pelo tomador ############################################################################## # exigibilidade integer # Default: 1 # Enum: 1 2 3 4 5 6 7 # Exigibilidade do ISS, valores: # 1 - Exigível # 2 - Não Incidência # 3 - Isenção # 4 - Exportação # 5 - Imunidade # 6 - Supenso por Ação Judicial # 7 - Suspenso por Ação Administrativa ############################################################################## # responsavelRetencao string # Valores aceitos: # 1 - Tomador # 2 - Intermediário ############################################################################## class Obra(BaseModel): art: str # Anotação de Responsabilidade Técnica (Codigo ART) codigo: str # Código da obra class Valor(BaseModel): servico: float # Valor bruto do serviço prestado. baseCalculo: float # Valor da base de cálculo dos impostos. deducoes: float # Valor deduções. descontoCondicionado: float # Valor do desconto condicionado. descontoIncondicionado: float # Valor do desconto incondicionado. liquido: float # Valor liquido do serviço, caso você não informe esse campo, vamos calcular automáticamente. unitario: float # Valor unitário do serviço. valorAproximadoTributos: float # Valor aproximado dos tributos. class Deducao(BaseModel): tipo: int descricao: str # Descrição da dedução ############################################################################## # tipo integer # Tipo de dedução: # 0 - Sem Deduções # 1 - Materiais # 2 - Subempreitada de Mão de Obra # 3 - Serviços # 4 - Produção Externa # 5 - Alimentação e Bebidas # 6 - Reembolso de Despesas # 7 - Repasse Consorciado # 8 - Repasse Plano de Saúde # 99 - Outras Deduções ############################################################################## class RetencaoInterno(BaseModel): aliquota: float # Aliquota da retenção valor: float # Valor da retenção class Retencao(BaseModel): pis: RetencaoInterno cofins: RetencaoInterno csll: RetencaoInterno inss: RetencaoInterno irrf: RetencaoInterno outrasRetencoes: float # Valor de outras retenções cpp: RetencaoInterno class Aliquota(BaseModel): municipal: float # Aliquota municipal estadual: float # Aliquota estadual federal: float # Aliquota federal class Detalhado(BaseModel): aliquota: Aliquota class Simplificado(BaseModel): aliquota: float # Aliquota geral de impostos class IBPT(BaseModel): simplificado: Simplificado detalhado: Detalhado # Representa o detalhamento do serviço prestado na NFSe, impostos incidentes e deduções class Servico(BaseModel): codigo: str # Código de serviço, também conhecido como Código Item Lista Serviço, geralmente segue a LC116, podendo váriar de acordo com a prefeitura.Você pode encontrar esse dado no portal da prefeitura, em uma nota emitida, ou junto ao contador. idIntegracao: str # Código EXTERNO de integração do serviço. Utilizado SOMENTE quando se cadastra previamente um serviço. discriminacao: str # Descrição do serviço prestado codigoTributacao: str # Código tributação no Município cnae: str # O código CNAE ou, por extenso, Classificação Nacional de Atividades Econômicas, é uma forma de padronizar, em todo o território nacional, os códigos de atividades econômicas e os critérios de enquadramento usados pelos mais diversos órgãos da administração tributária do Brasil. codigoCidadeIncidencia: str # Código IBGE da cidade de incidência do ISS. descricaoCidadeIncidencia: str # Descrição da cidade de incidência do ISS. unidade: str # Unidade do serviço prestado. quantidade: int # Quantidade dos serviços prestados. iss: ISS obra: Obra valor: Valor deducao: Deducao retencao: Retencao tributavel: bool # Indica se o serviço está sujeito a tributação. ibpt: IBPT responsavelRetencao: str ############################################################################## # responsavelRetencao Valores aceitos: # 1 - Tomador # 2 - Intermediário # Caso o responsável pela retenção seja o próprio prestador, não gerar o campo. ##############################################################################