Browse Source

Finalizando modelagem da NotaFiscal

tags/0.1
Marinho Brandão 16 years ago
parent
commit
a8edce0536
  1. 256
      pynfe/entidades/notafiscal.py
  2. 14
      pynfe/utils/flags.py
  3. 268
      tests/02-modelo-05-notafiscal.txt

256
pynfe/entidades/notafiscal.py

@ -4,7 +4,7 @@ from pynfe.utils.flags import NF_STATUS, NF_TIPOS_DOCUMENTO, NF_TIPOS_IMPRESSAO_
NF_REFERENCIADA_TIPOS, NF_PRODUTOS_ESPECIFICOS, ICMS_TIPOS_TRIBUTACAO,\ NF_REFERENCIADA_TIPOS, NF_PRODUTOS_ESPECIFICOS, ICMS_TIPOS_TRIBUTACAO,\
ICMS_ORIGENS, ICMS_MODALIDADES, IPI_TIPOS_TRIBUTACAO, IPI_TIPOS_CALCULO,\ ICMS_ORIGENS, ICMS_MODALIDADES, IPI_TIPOS_TRIBUTACAO, IPI_TIPOS_CALCULO,\
PIS_TIPOS_TRIBUTACAO, PIS_TIPOS_CALCULO, COFINS_TIPOS_TRIBUTACAO,\ PIS_TIPOS_TRIBUTACAO, PIS_TIPOS_CALCULO, COFINS_TIPOS_TRIBUTACAO,\
COFINS_TIPOS_CALCULO
COFINS_TIPOS_CALCULO, MODALIDADES_FRETE, ORIGENS_PROCESSO
from decimal import Decimal from decimal import Decimal
@ -115,11 +115,182 @@ class NotaFiscal(Entidade):
local_entrega_diferente_destinatario = False local_entrega_diferente_destinatario = False
# - Produtos e Servicos (lista 1 para * / ManyToManyField) # - Produtos e Servicos (lista 1 para * / ManyToManyField)
produtos_servicos = None
produtos_e_servicos = None
# Totais
# - ICMS
# - Base de calculo (somente leitura)
totais_icms_base_calculo = Decimal()
# - Total do ICMS (somente leitura)
totais_icms_total = Decimal()
# - Base de calculo do ICMS ST (somente leitura)
totais_icms_st_base_calculo = Decimal()
# - Total do ICMS ST (somente leitura)
totais_icms_st_total = Decimal()
# - Total dos produtos e servicos (somente leitura)
totais_icms_total_produtos_e_servicos = Decimal()
# - Total do frete (somente leitura)
totais_icms_total_frete = Decimal()
# - Total do seguro (somente leitura)
totais_icms_total_seguro = Decimal()
# - Total do desconto (somente leitura)
totais_icms_total_desconto = Decimal()
# - Total do II (somente leitura)
totais_icms_total_ii = Decimal()
# - Total do IPI (somente leitura)
totais_icms_total_ipi = Decimal()
# - PIS (somente leitura)
totais_icms_pis = Decimal()
# - COFINS (somente leitura)
totais_icms_cofins = Decimal()
# - Outras despesas acessorias
totais_icms_outras_despesas_acessorias = Decimal()
# - Total da nota
totais_icms_total_nota = Decimal()
# - ISSQN
# - Base de calculo do ISS
totais_issqn_base_calculo_iss = Decimal()
# - Total do ISS
totais_issqn_total_iss = Decimal()
# - PIS sobre servicos
totais_issqn_pis = Decimal()
# - COFINS sobre servicos
totais_issqn_cofins = Decimal()
# - Total dos servicos sob nao-incidencia ou nao tributados pelo ICMS
totais_issqn_total = Decimal()
# - Retencao de Tributos
# - Valor retido de PIS
totais_retencao_valor_retido_pis = Decimal()
# - Valor retido de COFINS
totais_retencao_valor_retido_cofins = Decimal()
# - Valor retido de CSLL
totais_retencao_valor_retido_csll = Decimal()
# - Base de calculo do IRRF
totais_retencao_base_calculo_irrf = Decimal()
# - Valor retido do IRRF
totais_retencao_valor_retido_irrf = Decimal()
# - BC da ret. da Prev. Social
totais_retencao_bc_retencao_previdencia_social = Decimal()
# - Retencao da Prev. Social
totais_retencao_retencao_previdencia_social = Decimal()
# Transporte
# - Modalidade do Frete (obrigatorio - seleciona de lista) - MODALIDADES_FRETE
# - 0 - Por conta do emitente
# - 1 - Por conta do destinatario
transporte_modalidade_frete = int()
# - Transportador (seleciona de Transportadoras)
transporte_transportadora = None
# - Retencao do ICMS
# - Base de calculo
transporte_retencao_icms_base_calculo = Decimal()
# - Aliquota
transporte_retencao_icms_aliquota = Decimal()
# - Valor do servico
transporte_retencao_icms_valor_servico = Decimal()
# - UF
transporte_retencao_icms_uf = str()
# - Municipio
transporte_retencao_icms_municipio = Decimal()
# - CFOP
transporte_retencao_icms_cfop = str()
# - ICMS retido
transporte_retencao_icms_retido = Decimal()
# - Veiculo
# - Placa
transporte_veiculo_placa = str()
# - RNTC
transporte_veiculo_rntc = str()
# - UF
transporte_veiculo_uf = str()
# - Reboque
# - Placa
transporte_reboque_placa = str()
# - RNTC
transporte_reboque_rntc = str()
# - UF
transporte_reboque_uf = str()
# - Volumes (lista 1 para * / ManyToManyField)
transporte_volumes = None
# Cobranca
# - Fatura
# - Numero
fatura_numero = str()
# - Valor original
fatura_valor_original = Decimal()
# - Valor do desconto
fatura_valor_desconto = Decimal()
# - Valor liquido
fatura_valor_liquido = Decimal()
# - Duplicatas (lista 1 para * / ManyToManyField)
duplicatas = None
# Informacoes Adicionais
# - Informacoes Adicionais
# - Informacoes adicionais de interesse do fisco
informacoes_adicionais_interesse_fisco = str()
# - Informacoes complementares de interesse do contribuinte
informacoes_complementares_interesse_contribuinte = str()
# - Observacoes do Contribuinte (lista 1 para * / ManyToManyField)
observacoes_contribuinte = None
# - Processo Referenciado (lista 1 para * / ManyToManyField)
processos_referenciados = None
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.notas_fiscais_referenciadas = [] self.notas_fiscais_referenciadas = []
self.produtos_servicos = []
self.produtos_e_servicos = []
self.transporte_volumes = []
self.duplicatas = []
self.observacoes_contribuinte = []
self.processos_referenciados = []
super(NotaFiscal, self).__init__(*args, **kwargs) super(NotaFiscal, self).__init__(*args, **kwargs)
@ -129,7 +300,23 @@ class NotaFiscal(Entidade):
def adicionar_produto_servico(self, **kwargs): def adicionar_produto_servico(self, **kwargs):
u"""Adiciona uma instancia de Produto""" u"""Adiciona uma instancia de Produto"""
self.produtos_servicos.append(NotaFiscalProduto(**kwargs))
self.produtos_e_servicos.append(NotaFiscalProduto(**kwargs))
def adicionar_transporte_volume(self, **kwargs):
u"""Adiciona uma instancia de Volume de Transporte"""
self.transporte_volumes.append(NotaFiscalTransporteVolume(**kwargs))
def adicionar_duplicata(self, **kwargs):
u"""Adiciona uma instancia de Duplicata"""
self.duplicatas.append(NotaFiscalCobrancaDuplicata(**kwargs))
def adicionar_observacao_contribuinte(self, **kwargs):
u"""Adiciona uma instancia de Observacao do Contribuinte"""
self.observacoes_contribuinte.append(NotaFiscalObservacaoContribuinte(**kwargs))
def adicionar_processo_referenciado(self, **kwargs):
u"""Adiciona uma instancia de Processo Referenciado"""
self.processos_referenciados.append(NotaFiscalProcessoReferenciado(**kwargs))
class NotaFiscalReferenciada(Entidade): class NotaFiscalReferenciada(Entidade):
@ -450,7 +637,7 @@ class NotaFiscalDeclaracaoImportacao(Entidade):
numero_di_dsi_da = str() numero_di_dsi_da = str()
# - Data de registro # - Data de registro
data_registro = str()
data_registro = None
# - Codigo exportador # - Codigo exportador
codigo_exportador = str() codigo_exportador = str()
@ -488,17 +675,66 @@ class NotaFiscalDeclaracaoImportacaoAdicao(Entidade):
codigo_fabricante = str() codigo_fabricante = str()
class NotaFiscalTransporteVolume(Entidade): class NotaFiscalTransporteVolume(Entidade):
pass
# - Quantidade
quantidade = Decimal()
# - Especie
especie = str()
# - Marca
marca = str()
# - Numeracao
numeracao = str()
# - Peso Liquido (kg)
peso_liquido = Decimal()
# - Peso Bruto (kg)
peso_bruto = Decimal()
# - Lacres (lista 1 para * / ManyToManyField)
lacres = None
def __init__(self, *args, **kwargs):
self.lacres = []
super(NotaFiscalTransporteVolume, self).__init__(*args, **kwargs)
def adicionar_lacre(self, **kwargs):
u"""Adiciona uma instancia de Lacre de Volume de Transporte"""
self.lacres.append(NotaFiscalTransporteVolumeLacre(**kwargs))
class NotaFiscalTransporteVolumeLacre(Entidade): class NotaFiscalTransporteVolumeLacre(Entidade):
pass
# - Numero de lacres
numero_lacres = str()
class NotaFiscalCobrancaDuplicata(Entidade): class NotaFiscalCobrancaDuplicata(Entidade):
pass
# - Numero
numero = str()
# - Data de vencimento
data_vencimento = None
# - Valor
valor = Decimal()
class NotaFiscalObservacaoContribuinte(Entidade): class NotaFiscalObservacaoContribuinte(Entidade):
pass
# - Nome do campo
nome_campo = str()
# - Observacao
observacao = str()
class NotaFiscalProcessoReferenciado(Entidade): class NotaFiscalProcessoReferenciado(Entidade):
pass
# - Identificador do processo
identificador_processo = str()
# - Origem (seleciona de lista) - ORIGENS_PROCESSO
# - SEFAZ
# - Justica federal
# - Justica estadual
# - Secex/RFB
# - Outros
origem = str()

14
pynfe/utils/flags.py

@ -134,4 +134,18 @@ COFINS_TIPOS_TRIBUTACAO = (
COFINS_TIPOS_CALCULO = IPI_TIPOS_CALCULO COFINS_TIPOS_CALCULO = IPI_TIPOS_CALCULO
MODALIDADES_FRETE = (
(0, '0 - Por conta do emitente'),
(1, '1 - Por conta do destinatario'),
)
ORIGENS_PROCESSO = (
'SEFAZ',
'Justica federal',
'Justica estadual',
'Secex/RFB',
'Outros',
)

268
tests/02-modelo-05-notafiscal.txt

@ -253,7 +253,7 @@ Nenhum dos campos deve permitir acentos e/ou cedilhas.
- Produtos e Servicos (lista 1 para * / ManyToManyField) - Produtos e Servicos (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscal, 'produtos_servicos')
>>> hasattr(NotaFiscal, 'produtos_e_servicos')
True True
- Dados - Dados
@ -813,88 +813,352 @@ Nenhum dos campos deve permitir acentos e/ou cedilhas.
- Totais - Totais
- ICMS - ICMS
- Base de calculo (somente leitura) - Base de calculo (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_base_calculo')
True
- Total do ICMS (somente leitura) - Total do ICMS (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total')
True
- Base de calculo do ICMS ST (somente leitura) - Base de calculo do ICMS ST (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_st_base_calculo')
True
- Total do ICMS ST (somente leitura) - Total do ICMS ST (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_st_total')
True
- Total dos produtos e servicos (somente leitura) - Total dos produtos e servicos (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_produtos_e_servicos')
True
- Total do frete (somente leitura) - Total do frete (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_frete')
True
- Total do seguro (somente leitura) - Total do seguro (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_seguro')
True
- Total do desconto (somente leitura) - Total do desconto (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_desconto')
True
- Total do II (somente leitura) - Total do II (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_ii')
True
- Total do IPI (somente leitura) - Total do IPI (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_total_ipi')
True
- PIS (somente leitura) - PIS (somente leitura)
- CONFINS (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_pis')
True
- COFINS (somente leitura)
>>> hasattr(NotaFiscal, 'totais_icms_cofins')
True
- Outras despesas acessorias - Outras despesas acessorias
>>> hasattr(NotaFiscal, 'totais_icms_outras_despesas_acessorias')
True
- Total da nota - Total da nota
>>> hasattr(NotaFiscal, 'totais_icms_total_nota')
True
- ISSQN - ISSQN
- Base de calculo do ISS - Base de calculo do ISS
>>> hasattr(NotaFiscal, 'totais_issqn_base_calculo_iss')
True
- Total do ISS - Total do ISS
>>> hasattr(NotaFiscal, 'totais_issqn_total_iss')
True
- PIS sobre servicos - PIS sobre servicos
>>> hasattr(NotaFiscal, 'totais_issqn_pis')
True
- COFINS sobre servicos - COFINS sobre servicos
>>> hasattr(NotaFiscal, 'totais_issqn_cofins')
True
- Total dos servicos sob nao-incidencia ou nao tributados pelo ICMS - Total dos servicos sob nao-incidencia ou nao tributados pelo ICMS
>>> hasattr(NotaFiscal, 'totais_issqn_total')
True
- Retencao de Tributos - Retencao de Tributos
- Valor retido de PIS - Valor retido de PIS
>>> hasattr(NotaFiscal, 'totais_retencao_valor_retido_pis')
True
- Valor retido de COFINS - Valor retido de COFINS
>>> hasattr(NotaFiscal, 'totais_retencao_valor_retido_cofins')
True
- Valor retido de CSLL - Valor retido de CSLL
>>> hasattr(NotaFiscal, 'totais_retencao_valor_retido_csll')
True
- Base de calculo do IRRF - Base de calculo do IRRF
>>> hasattr(NotaFiscal, 'totais_retencao_base_calculo_irrf')
True
- Valor retido do IRRF - Valor retido do IRRF
>>> hasattr(NotaFiscal, 'totais_retencao_valor_retido_irrf')
True
- BC da ret. da Prev. Social - BC da ret. da Prev. Social
>>> hasattr(NotaFiscal, 'totais_retencao_bc_retencao_previdencia_social')
True
- Retencao da Prev. Social - Retencao da Prev. Social
>>> hasattr(NotaFiscal, 'totais_retencao_retencao_previdencia_social')
True
- Transporte - Transporte
- Modalidade do Frete (obrigatorio - seleciona de lista) - Modalidade do Frete (obrigatorio - seleciona de lista)
- 0 - Por conta do emitente - 0 - Por conta do emitente
- 1 - Por conta do destinatario - 1 - Por conta do destinatario
>>> hasattr(NotaFiscal, 'transporte_modalidade_frete')
True
- Transportador (seleciona de Transportadoras) - Transportador (seleciona de Transportadoras)
>>> hasattr(NotaFiscal, 'transporte_transportadora')
True
- Retencao do ICMS - Retencao do ICMS
- Base de calculo - Base de calculo
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_base_calculo')
True
- Aliquota - Aliquota
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_aliquota')
True
- Valor do servico - Valor do servico
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_valor_servico')
True
- UF - UF
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_uf')
True
- Municipio - Municipio
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_municipio')
True
- CFOP - CFOP
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_cfop')
True
- ICMS retido - ICMS retido
>>> hasattr(NotaFiscal, 'transporte_retencao_icms_retido')
True
- Veiculo - Veiculo
- Placa - Placa
>>> hasattr(NotaFiscal, 'transporte_veiculo_placa')
True
- RNTC - RNTC
>>> hasattr(NotaFiscal, 'transporte_veiculo_rntc')
True
- UF - UF
>>> hasattr(NotaFiscal, 'transporte_veiculo_uf')
True
- Reboque - Reboque
- Placa - Placa
>>> hasattr(NotaFiscal, 'transporte_reboque_placa')
True
- RNTC - RNTC
>>> hasattr(NotaFiscal, 'transporte_reboque_rntc')
True
- UF - UF
>>> hasattr(NotaFiscal, 'transporte_reboque_uf')
True
- Volumes (lista 1 para * / ManyToManyField) - Volumes (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscal, 'transporte_volumes')
True
- Quantidade - Quantidade
>>> hasattr(NotaFiscalTransporteVolume, 'quantidade')
True
- Especie - Especie
>>> hasattr(NotaFiscalTransporteVolume, 'especie')
True
- Marca - Marca
>>> hasattr(NotaFiscalTransporteVolume, 'marca')
True
- Numeracao - Numeracao
>>> hasattr(NotaFiscalTransporteVolume, 'numeracao')
True
- Peso Liquido (kg) - Peso Liquido (kg)
>>> hasattr(NotaFiscalTransporteVolume, 'peso_liquido')
True
- Peso Bruto (kg) - Peso Bruto (kg)
>>> hasattr(NotaFiscalTransporteVolume, 'peso_bruto')
True
- Lacres (lista 1 para * / ManyToManyField) - Lacres (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscalTransporteVolume, 'lacres')
True
- Numero de lacres - Numero de lacres
>>> hasattr(NotaFiscalTransporteVolumeLacre, 'numero_lacres')
True
- Cobranca - Cobranca
- Fatura - Fatura
- Numero - Numero
>>> hasattr(NotaFiscal, 'fatura_numero')
True
- Valor original - Valor original
>>> hasattr(NotaFiscal, 'fatura_valor_original')
True
- Valor do desconto - Valor do desconto
>>> hasattr(NotaFiscal, 'fatura_valor_desconto')
True
- Valor liquido - Valor liquido
>>> hasattr(NotaFiscal, 'fatura_valor_liquido')
True
- Duplicatas (lista 1 para * / ManyToManyField) - Duplicatas (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscal, 'duplicatas')
True
- Numero - Numero
>>> hasattr(NotaFiscalCobrancaDuplicata, 'numero')
True
- Data de vencimento - Data de vencimento
>>> hasattr(NotaFiscalCobrancaDuplicata, 'data_vencimento')
True
- Valor - Valor
>>> hasattr(NotaFiscalCobrancaDuplicata, 'valor')
True
- Informacoes Adicionais - Informacoes Adicionais
- Informacoes Adicionais - Informacoes Adicionais
- Informacoes adicionais de interesse do fisco - Informacoes adicionais de interesse do fisco
>>> hasattr(NotaFiscal, 'informacoes_adicionais_interesse_fisco')
True
- Informacoes complementares de interesse do contribuinte - Informacoes complementares de interesse do contribuinte
>>> hasattr(NotaFiscal, 'informacoes_complementares_interesse_contribuinte')
True
- Observacoes do Contribuinte (lista 1 para * / ManyToManyField) - Observacoes do Contribuinte (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscal, 'observacoes_contribuinte')
True
- Nome do campo - Nome do campo
>>> hasattr(NotaFiscalObservacaoContribuinte, 'nome_campo')
True
- Observacao - Observacao
>>> hasattr(NotaFiscalObservacaoContribuinte, 'observacao')
True
- Processo Referenciado (lista 1 para * / ManyToManyField) - Processo Referenciado (lista 1 para * / ManyToManyField)
>>> hasattr(NotaFiscal, 'processos_referenciados')
True
- Identificador do processo - Identificador do processo
>>> hasattr(NotaFiscalProcessoReferenciado, 'identificador_processo')
True
- Origem (seleciona de lista) - Origem (seleciona de lista)
- SEFAZ - SEFAZ
- Justica federal - Justica federal
- Justica estadual - Justica estadual
- Secex/RFB - Secex/RFB
- Outros - Outros
>>> hasattr(NotaFiscalProcessoReferenciado, 'origem')
True
- Exportacao e Compras - Exportacao e Compras
- Exportacao - Exportacao
- UF de embarque - UF de embarque

Loading…
Cancel
Save