servico_plugnotas_teste/Models/servico.py
2026-07-10 16:32:22 -03:00

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.
##############################################################################