Browse Source

Modelo do Emitente, Produto e Cliente

tags/0.1
Marinho Brandão 16 years ago
parent
commit
4cfa3f3cb9
  1. 8
      pynfe/entidades/base.py
  2. 53
      pynfe/entidades/cliente.py
  3. 116
      pynfe/entidades/produto.py
  4. 104
      tests/02-modelo-02-produto.txt
  5. 61
      tests/02-modelo-03-cliente.txt

8
pynfe/entidades/base.py

@ -1,5 +1,11 @@
# -*- coding: utf-8 -*-
class Entidade(object):
pass
def __init__(self, **kwargs):
# Codigo para dinamizar a criacao de instancias de entidade,
# aplicando os valores dos atributos na instanciacao
for k, v in kwargs:
setattr(self, k, v)
class Lote(object):
pass

53
pynfe/entidades/cliente.py

@ -1,5 +1,56 @@
# -*- coding: utf-8 -*-
from base import Entidade
TIPOS_DOCUMENTO = (
'CNPJ',
'CPF',
)
class Cliente(Entidade):
pass
# Dados do Cliente
# - Nome/Razão Social (obrigatorio)
razao_social = str()
# - Tipo de Documento (obrigatorio) - default CNPJ - TIPOS_DOCUMENTO
tipo_documento = 'CNPJ'
# - Numero do Documento (obrigatorio)
numero_documento = str()
# - Inscricao Estadual
inscricao_estadual = str()
# - Inscricao SUFRAMA
inscricao_suframa = str()
# - Isento do ICMS (Sim/Nao)
isento_icms = False
# Endereco
# - Logradouro (obrigatorio)
endereco_logradouro = str()
# - Numero (obrigatorio)
endereco_numero = str()
# - Complemento
endereco_complemento = str()
# - Bairro (obrigatorio)
endereco_bairro = str()
# - CEP
endereco_cep = str()
# - Pais (seleciona de lista)
endereco_pais = 'BRASIL'
# - UF (obrigatorio)
endereco_uf = str()
# - Municipio (obrigatorio)
endereco_municipio = str()
# - Telefone
endereco_telefone = str()

116
pynfe/entidades/produto.py

@ -1,5 +1,119 @@
# -*- coding: utf-8 -*-
from base import Entidade
from decimal import Decimal
class Produto(Entidade):
pass
# Dados do Produto
# - Descricao (obrigatorio)
descricao = str()
# - Codigo (obrigatorio) - nao pode ser alterado quando em edicao
codigo = str()
# - EAN
ean = str()
# - EAN Unid. Tributavel
ean_unidade_tributavel = str()
# - EX TIPI
ex_tipi = str()
# - Genero
genero = str()
# - NCM
ncm = str()
# - Unid. Com.
unidade_comercial = str()
# - Valor Unitario Com.
valor_unitario_comercial = Decimal()
# - Unid. Trib.
unidade_tributavel = str()
# - Qtd. Trib.
quantidade_tributavel = Decimal()
# - Valor Unitario Trib.
valor_unitario_tributavel = Decimal()
# Impostos
# - ICMS (lista 1 para * / ManyToManyField)
icms = None
# - IPI
# - Classe de Enquadramento (cigarros e bebidas)
ipi_classe_enquadramento = str()
# - Codigo de Enquadramento Legal
ipi_codigo_enquadramento_legal = str()
# - CNPJ do Produtor
ipi_cnpj_produtor = str()
def __init__(self, *args, **kwargs):
self.icms = []
def adicionar_icms(self, **kwargs):
u"""Adiciona uma instancia de ICMS a lista de ICMS do produto"""
self.icms.append(ProdutoICMS(**kwargs))
ICMS_TIPOS_TRIBUTACAO = (
('00', 'ICMS 00 - Tributada integralmente'),
('10', 'ICMS 10 - Tributada com cobranca do ICMS por substituicao tributaria'),
('20', 'ICMS 20 - Com reducao da base de calculo'),
('30', 'ICMS 30 - Isenta ou nao tributada e com cobranca do ICMS por substituicao tributaria'),
('40', 'ICMS 40 - Isenta'),
('41', 'ICMS 41 - Nao tributada'),
('50', 'ICMS 50 - Suspensao'),
('51', 'ICMS 51 - Diferimento'),
('60', 'ICMS 60 - Cobrado anteriormente por substituicao tributaria'),
('70', 'ICMS 70 - Com reducao da base de calculo e cobranca do ICMS por substituicao tributaria'),
('90', 'ICMS 90 - Outras'),
)
ICMS_ORIGENS = (
'Nacional',
'Estrangeira - Importacao Direta',
'Estrangeira - Adquirida no Mercado Interno',
)
ICMS_MODALIDADES = (
'Margem Valor Agregado',
'Pauta (valor)',
'Preco Tabelado Max. (valor)',
'Valor da Operacao',
)
class ProdutoICMS(Entidade):
# - Tipo de Tributacao (seleciona de lista) - ICMS_TIPOS_TRIBUTACAO
tipo_tributacao = str()
# - Origem (seleciona de lista) - ICMS_ORIGENS
origem = str()
# - Modalidade de determinacao da Base de Calculo (seleciona de lista) - ICMS_MODALIDADES
modalidade = str()
# - Aliquota ICMS
aliquota = Decimal()
# - Percentual de reducao da Base de Calculo
percentual_reducao = Decimal()
# - Modalidade de determinacao da Base de Calculo do ICMS ST (seleciona de lista) - ICMS_MODALIDADES
st_modalidade = str()
# - Aliquota ICMS ST
st_aliquota = Decimal()
# - Percentual de reducao do ICMS ST
st_percentual_reducao = Decimal()
# - Percentual da margem de Valor Adicionado ICMS ST
st_percentual_margem_valor_adicionado = Decimal()

104
tests/02-modelo-02-produto.txt

@ -7,21 +7,76 @@ Nenhum dos campos deve permitir acentos e/ou cedilhas.
ST = Substituicao Tributaria
>>> from pynfe.entidades import Produto
>>> from pynfe.entidades.produto import ProdutoICMS
- Dados do Produto
- Descricao (obrigatorio)
>>> hasattr(Produto, 'descricao')
True
- Codigo (obrigatorio) - nao pode ser alterado quando em edicao
>>> hasattr(Produto, 'codigo')
True
- EAN
>>> hasattr(Produto, 'ean')
True
- EAN Unid. Tributavel
>>> hasattr(Produto, 'ean_unidade_tributavel')
True
- EX TIPI
>>> hasattr(Produto, 'ex_tipi')
True
- Genero
>>> hasattr(Produto, 'genero')
True
- NCM
>>> hasattr(Produto, 'ncm')
True
- Unid. Com.
>>> hasattr(Produto, 'unidade_comercial')
True
- Valor Unitario Com.
>>> hasattr(Produto, 'valor_unitario_comercial')
True
- Unid. Trib.
>>> hasattr(Produto, 'unidade_tributavel')
True
- Qtd. Trib.
>>> hasattr(Produto, 'quantidade_tributavel')
True
- Valor Unitario Trib.
>>> hasattr(Produto, 'valor_unitario_tributavel')
True
- Impostos
- ICMS (lista 1 para * / ManyToManyField)
>>> hasattr(Produto, 'icms')
True
- Tipo de Tributacao (seleciona de lista)
- ICMS 00 - Tributada integralmente
- ICMS 10 - Tributada com cobranca do ICMS por substituicao tributaria
@ -34,27 +89,74 @@ ST = Substituicao Tributaria
- ICMS 60 - Cobrado anteriormente por substituicao tributaria
- ICMS 70 - Com reducao da base de calculo e cobranca do ICMS por substituicao tributaria
- ICMS 90 - Outras
>>> hasattr(ProdutoICMS, 'tipo_tributacao')
True
- Origem (seleciona de lista)
- Nacional
- Estrangeira - Importacao Direta
- Estrangeira - Adquirida no Mercado Interno
>>> hasattr(ProdutoICMS, 'origem')
True
- Modalidade de determinacao da Base de Calculo (seleciona de lista)
- Margem Valor Agregado
- Pauta (valor)
- Preco Tabelado Max. (valor)
- Valor da Operacao
>>> hasattr(ProdutoICMS, 'modalidade')
True
- Aliquota ICMS
>>> hasattr(ProdutoICMS, 'aliquota')
True
- Percentual de reducao da Base de Calculo
>>> hasattr(ProdutoICMS, 'percentual_reducao')
True
- Modalidade de determinacao da Base de Calculo do ICMS ST (seleciona de lista)
- Margem Valor Agregado
- Pauta (valor)
- Preco Tabelado Max. (valor)
- Valor da Operacao
- Aliquota ICSM ST
>>> hasattr(ProdutoICMS, 'st_modalidade')
True
- Aliquota ICMS ST
>>> hasattr(ProdutoICMS, 'st_aliquota')
True
- Percentual de reducao do ICMS ST
>>> hasattr(ProdutoICMS, 'st_percentual_reducao')
True
- Percentual da margem de Valor Adicionado ICMS ST
>>> hasattr(ProdutoICMS, 'st_percentual_margem_valor_adicionado')
True
- IPI
- Classe de Enquadramento (cigarros e bebidas)
>>> hasattr(Produto, 'ipi_classe_enquadramento')
True
- Codigo de Enquadramento Legal
>>> hasattr(Produto, 'ipi_codigo_enquadramento_legal')
True
- CNPJ do Produtor
>>> hasattr(Produto, 'ipi_cnpj_produtor')
True

61
tests/02-modelo-03-cliente.txt

@ -5,23 +5,84 @@ Modelo das entidades e como elas se relacionam.
Nenhum dos campos deve permitir acentos e/ou cedilhas.
>>> from pynfe.entidades import Cliente
- Dados do Cliente
- Nome/Razão Social (obrigatorio)
>>> hasattr(Cliente, 'razao_social')
True
- Tipo de Documento (obrigatorio) - default CNPJ
- CNPJ
- CPF
>>> hasattr(Cliente, 'tipo_documento')
True
- Numero do Documento (obrigatorio)
>>> hasattr(Cliente, 'numero_documento')
True
- Inscricao Estadual
>>> hasattr(Cliente, 'inscricao_estadual')
True
- Inscricao SUFRAMA
>>> hasattr(Cliente, 'inscricao_suframa')
True
- Isento do ICMS (Sim/Nao)
>>> hasattr(Cliente, 'isento_icms')
True
- Endereco
- Logradouro (obrigatorio)
>>> hasattr(Cliente, 'endereco_logradouro')
True
- Numero (obrigatorio)
>>> hasattr(Cliente, 'endereco_numero')
True
- Complemento
>>> hasattr(Cliente, 'endereco_complemento')
True
- Bairro (obrigatorio)
>>> hasattr(Cliente, 'endereco_bairro')
True
- CEP
>>> hasattr(Cliente, 'endereco_cep')
True
- Pais (seleciona de lista)
>>> hasattr(Cliente, 'endereco_pais')
True
- UF (obrigatorio)
>>> hasattr(Cliente, 'endereco_uf')
True
- Municipio (obrigatorio)
>>> hasattr(Cliente, 'endereco_municipio')
True
- Telefone
>>> hasattr(Cliente, 'endereco_telefone')
True
Loading…
Cancel
Save