150 lines
6.8 KiB
Python
150 lines
6.8 KiB
Python
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.
|
|
##############################################################################
|