Browse Source

Atualização de impostos pis e cofins

pull/1/head
Junior Tada 11 years ago
parent
commit
cfeabf4144
  1. 50
      pynfe/entidades/produto.py
  2. 15
      pynfe/processamento/assinatura.py
  3. 35
      pynfe/processamento/comunicacao.py
  4. 116
      pynfe/processamento/serializacao.py
  5. 67
      pynfe/utils/flags.py

50
pynfe/entidades/produto.py

@ -44,9 +44,12 @@ class Produto(Entidade):
# - Valor Unitario Trib.
valor_unitario_tributavel = Decimal()
# Impostos
# - ICMS (lista 1 para * / ManyToManyField)
icms = None
# - indica se valor do item entra no valor total da nota fiscal
# 0=Valor do item (vProd) não compõe o valor total da NF-e
# 1=Valor do item (vProd) compõe o valor total da NF-e (vProd)
ind_total = int()
# # Impostos
# - IPI
# - Classe de Enquadramento (cigarros e bebidas)
@ -58,6 +61,43 @@ class Produto(Entidade):
# - CNPJ do Produtor
ipi_cnpj_produtor = str()
# ICMS (Informar apenas um grupo por produto)
"""
ICMS 00 - Tributada integralmente
ICMS 10 - Tributada e com cobrança do ICMS por substituição tributária
ICMS 20 - Tributada e com cobrança do ICMS por substituição tributária
ICMS 30 - Tributação Isenta ou não tributada e com cobrança do ICMS por substituição tributária
ICMS 30 - Isenta ou nao tributada e com cobranca do ICMS por substituicao tributaria
ICMS 40 - Isenta
ICMS 41 - Nao tributada
ICMS 50 - Suspensao
ICMS 51 - Diferimento
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
"""
icms_modalidade = str()
icms_origem = int()
icms_csosn = str()
# # PIS
pis_modalidade = str()
pis_valor_base_calculo = str()
pis_aliquota_percentual = str()
pis_valor = str()
# # COFINS
cofins_modalidade = str()
cofins_valor_base_calculo = str()
cofins_aliquota_percentual = str()
cofins_valor = str()
# # - ICMS (lista 1 para * / ManyToManyField)
# icms = None
# def adicionar_icms(self, **kwargs):
# u"""Adiciona uma instancia de ICMS a lista de ICMS do produto"""
# self.icms.append(ProdutoICMS(**kwargs))
def __init__(self, *args, **kwargs):
self.icms = []
@ -66,10 +106,6 @@ class Produto(Entidade):
def __str__(self):
return ' '.join([self.codigo, self.descricao])
def adicionar_icms(self, **kwargs):
u"""Adiciona uma instancia de ICMS a lista de ICMS do produto"""
self.icms.append(ProdutoICMS(**kwargs))
class ProdutoICMS(Entidade):
# - Tipo de Tributacao (seleciona de lista) - ICMS_TIPOS_TRIBUTACAO
tipo_tributacao = str()

15
pynfe/processamento/assinatura.py

@ -28,23 +28,20 @@ class AssinaturaA1(Assinatura):
def assinar(self, xml, retona_string=True):
arquivo_cert = CertificadoA1(self.certificado)
chave, cert = arquivo_cert.separar_arquivo(self.senha, caminho=True)
chave, cert = arquivo_cert.separar_arquivo(self.senha, caminho=False)
#root = etree.parse(xml).getroot() # caminho
root = etree.fromstring(xml) # string
#root = etree.XML(xml) # string
signer = signxml.xmldsig(root, digest_algorithm="sha1")
signer = signxml.xmldsig(xml, digest_algorithm="sha1")
signer.sign(method=signxml.methods.enveloped, key=chave, cert=cert,
algorithm="rsa-sha1", c14n_algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315',
reference_uri='#NFe42140903657739000169550020000000011000000011')
# reference_uri nao funciona
#verified_data = signer.verify(require_x509=True, ca_pem_file="cert.pem")
##chave_id = root.find('.//infNFe[@Id]').attrib['Id']
#root.findall('.//{http://www.w3.org/2000/09/xmldsig#}Reference')[0] \
##chave_id = xml.find('.//infNFe[@Id]').attrib['Id']
#xml.findall('.//{http://www.w3.org/2000/09/xmldsig#}Reference')[0] \
# .attrib['URI'] = '#chaveteste'
if retona_string:
return etree.tostring(root, encoding="unicode", pretty_print=True)
return etree.tostring(xml, encoding="unicode", pretty_print=True)
else:
return root
return xml

35
pynfe/processamento/comunicacao.py

@ -34,7 +34,7 @@ class ComunicacaoSefaz(Comunicacao):
# url do serviço
url = self._get_url(modelo=modelo, consulta='AUTORIZACAO')
# Monta XML do corpo da requisição
raiz = etree.Element('enviNFe', versao=VERSAO_PADRAO)
raiz = etree.Element('enviNFe', versao=VERSAO_PADRAO, xmlns=NAMESPACE_NFE)
#etree.SubElement(raiz, 'versao').text = self._versao
etree.SubElement(raiz, 'idLote').text = str(1) # numero autoincremental gerado pelo sistema
etree.SubElement(raiz, 'indSinc').text = str(1) # 0 para assincrono, 1 para sincrono
@ -45,6 +45,26 @@ class ComunicacaoSefaz(Comunicacao):
#print (xml)
return self._post(url, xml)
def consulta_recibo(self, modelo, numero):
"""
Este método oferece a consulta do resultado do processamento de um lote de NF-e.
O aplicativo do Contribuinte deve ser construído de forma a aguardar um tempo mínimo de
15 segundos entre o envio do Lote de NF-e para processamento e a consulta do resultado
deste processamento, evitando a obtenção desnecessária do status de erro 105 - "Lote em
Processamento".
"""
# url do serviço
url = self._get_url(modelo=modelo, consulta='RECIBO')
# Monta XML do corpo da requisição
raiz = etree.Element('consReciNFe', versao=VERSAO_PADRAO, xmlns=NAMESPACE_NFE)
etree.SubElement(raiz, 'versao').text = self._versao
etree.SubElement(raiz, 'tpAmb').text = str(self._ambiente)
etree.SubElement(raiz, 'nRec').text = numero
# Monta XML para envio da requisição
xml = self._construir_xml_status_pr(cabecalho=self._cabecalho_soap(metodo='NfeRetAutorizacao'), metodo='NfeRetAutorizacao', dados=raiz)
#print (xml)
return self._post(url, xml)
def cancelar(self, modelo, xml):
""" Envia um evento de cancelamento de nota fiscal """
# timezone Brasília -03:00
@ -78,7 +98,7 @@ class ComunicacaoSefaz(Comunicacao):
url = self._get_url(modelo=modelo, consulta='STATUS')
# Monta XML do corpo da requisição
raiz = etree.Element('consStatServ', versao='3.10', xmlns=NAMESPACE_NFE)
raiz = etree.Element('consStatServ', versao=VERSAO_PADRAO, xmlns=NAMESPACE_NFE)
etree.SubElement(raiz, 'tpAmb').text = str(self._ambiente)
etree.SubElement(raiz, 'cUF').text = CODIGOS_ESTADOS[self.uf.upper()]
etree.SubElement(raiz, 'xServ').text = 'STATUS'
@ -201,17 +221,20 @@ class ComunicacaoSefaz(Comunicacao):
def _post(self, url, xml):
certificadoA1 = CertificadoA1(self.certificado)
chave, cert = certificadoA1.separar_arquivo(self.certificado_senha, caminho=True)
cert = (cert, chave)
chave_cert = (cert, chave)
# Abre a conexão HTTPS
try:
# Passa o lxml.etree para string
xml = etree.tostring(xml, encoding='unicode', pretty_print=False)
xml = etree.tostring(xml, encoding='unicode', pretty_print=False).replace('ds:','')
# Faz o request com o servidor
result = requests.post(url, xml, headers=self._post_header(), cert=cert, verify=False)
print (xml)
result = requests.post(url, xml, headers=self._post_header(), cert=chave_cert, verify=False)
if result == 200:
result.encoding='utf-8'
return result
else:
return result
except requests.exceptions.ConnectionError as e:
raise e
raise e
finally:
certificadoA1.excluir()

116
pynfe/processamento/serializacao.py

@ -204,34 +204,114 @@ class SerializacaoXML(Serializacao):
etree.SubElement(prod, 'uTrib').text = produto_servico.unidade_tributavel
etree.SubElement(prod, 'qTrib').text = str(produto_servico.quantidade_tributavel)
etree.SubElement(prod, 'vUnTrib').text = str(produto_servico.valor_unitario_tributavel)
""" Indica se valor do Item (vProd) entra no valor total da NF-e (vProd)
0=Valor do item (vProd) não compõe o valor total da NF-e
1=Valor do item (vProd) compõe o valor total da NF-e (vProd) (v2.0)
"""
etree.SubElement(prod, 'indTot').text = str(produto_servico.ind_total)
# Imposto
imposto = etree.SubElement(raiz, 'imposto')
### ICMS
icms = etree.SubElement(imposto, 'ICMS')
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_situacao_tributaria)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CST').text = produto_servico.icms_situacao_tributaria
etree.SubElement(icms_item, 'modBC').text = str(produto_servico.icms_modalidade_determinacao_bc)
etree.SubElement(icms_item, 'vBC').text = str(produto_servico.icms_valor_base_calculo)
etree.SubElement(icms_item, 'pICMS').text = str(produto_servico.icms_aliquota)
etree.SubElement(icms_item, 'vICMS').text = str(produto_servico.icms_valor)
icms_csosn = ('102', '103', '300', '400')
if produto_servico.icms_modalidade in icms_csosn:
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CSOSN').text = produto_servico.icms_csosn
elif produto_servico.icms_modalidade == '101':
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CSOSN').text = produto_servico.icms_csosn
etree.SubElement(icms_item, 'pCredSN').text = '' # Alíquota aplicável de cálculo do crédito (Simples Nacional).
etree.SubElement(icms_item, 'vCredICMSSN').text = '' # Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (Simples Nacional)
elif produto_servico.icms_modalidade == 'ST':
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CST').text = '41' # Nao tributado
etree.SubElement(icms_item, 'vBCSTRet').text = '' # Informar o valor da BC do ICMS ST retido na UF remetente
etree.SubElement(icms_item, 'vICMSSTRet').text = '' # Informar o valor do ICMS ST retido na UF remetente
etree.SubElement(icms_item, 'vBCSTDest').text = '' # Informar o valor da BC do ICMS ST da UF destino
etree.SubElement(icms_item, 'vICMSSTDest').text = '' # Informar o valor do ICMS ST da UF destino
else:
# FIXME
### OUTROS TIPOS DE ICMS
etree.SubElement(icms_item, 'modBC').text = str(produto_servico.icms_modalidade_determinacao_bc)
etree.SubElement(icms_item, 'vBC').text = str(produto_servico.icms_valor_base_calculo)
etree.SubElement(icms_item, 'pICMS').text = str(produto_servico.icms_aliquota)
etree.SubElement(icms_item, 'vICMS').text = str(produto_servico.icms_valor)
# apenas nfe
pisnt = ('04','05','06','07','08','09')
if modelo == 55:
## PIS
pis = etree.SubElement(imposto, 'PIS')
pis_item = etree.SubElement(pis, 'PISAliq')
etree.SubElement(pis_item, 'CST').text = str(produto_servico.pis_situacao_tributaria)
etree.SubElement(pis_item, 'vBC').text = str(produto_servico.pis_valor_base_calculo)
etree.SubElement(pis_item, 'pPIS').text = str(produto_servico.pis_aliquota_percentual)
etree.SubElement(pis_item, 'vPIS').text = str(produto_servico.pis_valor)
if produto_servico.pis_modalidade in pisnt:
pis_item = etree.SubElement(pis, 'PISNT')
etree.SubElement(pis_item, 'CST').text = produto_servico.pis_modalidade
elif produto_servico.pis_modalidade == '01' or produto_servico.pis_modalidade == '02':
pis_item = etree.SubElement(pis, 'PISAliq')
etree.SubElement(pis_item, 'CST').text = produto_servico.pis_modalidade
etree.SubElement(pis_item, 'vBC').text = produto_servico.pis_valor_base_calculo
etree.SubElement(pis_item, 'pPIS').text = produto_servico.pis_aliquota_percentual
etree.SubElement(pis_item, 'vPIS').text = produto_servico.pis_valor
elif produto_servico.pis_modalidade == '03':
pis_item = etree.SubElement(pis, 'PISQtde')
etree.SubElement(pis_item, 'CST').text = produto_servico.pis_modalidade
etree.SubElement(pis_item, 'qBCProd').text = produto_servico.quantidade_comercial
etree.SubElement(pis_item, 'vAliqProd').text = produto_servico.pis_aliquota_percentual
etree.SubElement(pis_item, 'vPIS').text = produto_servico.pis_valor_base_calculo
else:
pis_item = etree.SubElement(pis, 'PISOutr')
etree.SubElement(pis_item, 'CST').text = produto_servico.pis_modalidade
etree.SubElement(pis_item, 'vBC').text = produto_servico.pis_valor_base_calculo
etree.SubElement(pis_item, 'pPIS').text = produto_servico.pis_aliquota_percentual
etree.SubElement(pis_item, 'qBCProd').text = produto_servico.quantidade_comercial
etree.SubElement(pis_item, 'vAliqProd').text = produto_servico.pis_aliquota_percentual
etree.SubElement(pis_item, 'vPIS').text = produto_servico.pis_valor_base_calculo
## PISST
# pis_item = etree.SubElement(pis, 'PISST')
# etree.SubElement(pis_item, 'vBC').text = produto_servico.pis_valor_base_calculo
# etree.SubElement(pis_item, 'pPIS').text = produto_servico.pis_aliquota_percentual
# etree.SubElement(pis_item, 'qBCProd').text = produto_servico.quantidade_comercial
# etree.SubElement(pis_item, 'vAliqProd').text = produto_servico.pis_aliquota_percentual
# etree.SubElement(pis_item, 'vPIS').text = produto_servico.pis_valor_base_calculo
cofinsnt = ('04','05','06','07','08','09')
## COFINS
cofins = etree.SubElement(imposto, 'COFINS')
cofins_item = etree.SubElement(cofins, 'COFINSAliq')
etree.SubElement(cofins_item, 'CST').text = str(produto_servico.cofins_situacao_tributaria)
etree.SubElement(cofins_item, 'vBC').text = str(produto_servico.cofins_valor_base_calculo)
etree.SubElement(cofins_item, 'pCOFINS').text = str(produto_servico.cofins_aliquota_percentual)
etree.SubElement(cofins_item, 'vCOFINS').text = str(produto_servico.cofins_valor)
if produto_servico.cofins_modalidade in cofinsnt:
cofins_item = etree.SubElement(cofins, 'COFINSNT')
etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade
elif produto_servico.cofins_modalidade == '01' or produto_servico.cofins_modalidade == '02':
cofins_item = etree.SubElement(cofins, 'COFINSAliq')
etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade
etree.SubElement(cofins_item, 'vBC').text = produto_servico.cofins_valor_base_calculo
etree.SubElement(cofins_item, 'pCOFINS').text = produto_servico.cofins_aliquota_percentual
etree.SubElement(cofins_item, 'vCOFINS').text = produto_servico.cofins_valor
elif produto_servico.cofins_modalidade == '03':
cofins_item = etree.SubElement(cofins, 'COFINSQtde')
etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade
etree.SubElement(cofins_item, 'qBCProd').text = produto_servico.quantidade_comercial
etree.SubElement(cofins_item, 'vAliqProd').text = produto_servico.cofins_aliquota_percentual
etree.SubElement(cofins_item, 'vCOFINS').text = produto_servico.cofins_valor
else:
cofins_item = etree.SubElement(cofins, 'COFINSOutr')
etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade
etree.SubElement(cofins_item, 'vBC').text = produto_servico.cofins_valor_base_calculo
etree.SubElement(cofins_item, 'pCOFINS').text = produto_servico.cofins_aliquota_percentual
etree.SubElement(cofins_item, 'vAliqProd').text = produto_servico.cofins_aliquota_percentual
etree.SubElement(cofins_item, 'vCOFINS').text = produto_servico.cofins_valor
## COFINSST
# cofins_item = etree.SubElement(cofins, 'COFINSOutr')
# etree.SubElement(cofins_item, 'vBC').text = produto_servico.cofins_valor_base_calculo
# etree.SubElement(cofins_item, 'pCOFINS').text = produto_servico.cofins_aliquota_percentual
# etree.SubElement(cofins_item, 'qBCProd').text = produto_servico.quantidade_comercial
# etree.SubElement(cofins_item, 'vAliqProd').text = produto_servico.cofins_aliquota_percentual
# etree.SubElement(cofins_item, 'vCOFINS').text = produto_servico.cofins_valor
if retorna_string:
return etree.tostring(raiz, encoding="unicode", pretty_print=True)

67
pynfe/utils/flags.py

@ -26,6 +26,13 @@ ICMS_TIPOS_TRIBUTACAO = (
('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'),
('101', 'ICMS 101 - Tributação ICMS pelo Simples Nacional, CSOSN=101'),
('102', 'ICMS 102 - Tributação ICMS pelo Simples Nacional, CSOSN=102, 103, 300 ou 400'),
('201', 'ICMS 201 - Tributação ICMS pelo Simples Nacional, CSOSN=201'),
('202', 'ICMS 202 - Tributação ICMS pelo Simples Nacional, CSOSN=202 ou 203'),
('500', 'ICMS 500 - Tributação ICMS pelo Simples Nacional, CSOSN=500'),
('900', 'ICMS 900 - Tributação ICMS pelo Simples Nacional, CSOSN=900'),
('ST', 'ICMS ST - Grupo de informação do ICMS ST devido para a UF de destino, nas operações interestaduais de produtos que tiveram retenção antecipada de ICMS por ST na UF do remetente. Repasse via Substituto Tributário.')
)
ICMS_ORIGENS = (
@ -128,28 +135,74 @@ IPI_TIPOS_CALCULO = (
)
PIS_TIPOS_TRIBUTACAO = (
('01', 'PIS 01 - Operacao Tributavel - Base de Calculo = Valor da Operacao Aliquota...'), # FIXME
('02', 'PIS 02 - Operacao Tributavel - Base de Calculo = Valor da Operacao (Aliquota...'), # FIXME
('03', 'PIS 03 - Operacao Tributavel - Base de Calculo = Quantidade Vendida x Aliquota...'), # FIXME
('01', 'PIS 01 - Operação Tributável - Base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo)'),
('02', 'PIS 02 - Operação Tributável - Base de cálculo = valor da operação (alíquota diferenciada)'),
('03', 'PIS 03 - Operacao Tributavel - Base de cálculo = quantidade vendida x alíquota por unidade de produto)'),
('04', 'PIS 04 - Operacao Tributavel - Tributacao Monofasica - (Aliquota Zero)'),
('06', 'PIS 06 - Operacao Tributavel - Aliquota Zero'),
('07', 'PIS 07 - Operacao Isenta da Contribuicao'),
('08', 'PIS 08 - Operacao sem Indidencia da Contribuicao'),
('09', 'PIS 09 - Operacao com Suspensao da Contribuicao'),
('49', 'PIS 49 - Outras Operações de Saída'),
('50', 'PIS 50 - Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Tributada no Mercado Interno'),
('51', 'PIS 51 - Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Não Tributada no Mercado Interno'),
('52', 'PIS 52 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita de Exportação'),
('53', 'PIS 53 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno'),
('54', 'PIS 54 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas no Mercado Interno e de Exportação'),
('55', 'PIS 55 - Operação com Direito a Crédito - Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação'),
('56', 'PIS 56 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não Tributadas no Mercado Interno, e de Exportação'),
('60', 'PIS 60 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Tributada no Mercado Interno'),
('61', 'PIS 61 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Não Tributada no Mercado Interno'),
('62', 'PIS 62 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita de Exportação'),
('63', 'PIS 63 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno'),
('64', 'PIS 64 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas no Mercado Interno e de Exportação'),
('65', 'PIS 65 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação'),
('66', 'PIS 66 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno, e de Exportação'),
('67', 'PIS 67 - Crédito Presumido - Outras Operações'),
('70', 'PIS 70 - Operação de Aquisição sem Direito a Crédito'),
('71', 'PIS 71 - Operação de Aquisição com Isenção'),
('72', 'PIS 72 - Operação de Aquisição com Suspensão'),
('73', 'PIS 73 - Operação de Aquisição a Alíquota Zero'),
('74', 'PIS 74 - Operação de Aquisição; sem Incidência da Contribuição'),
('75', 'PIS 75 - Operação de Aquisição por Substituição Tributária'),
('98', 'PIS 98 - Outras Operações de Entrada'),
('99', 'PIS 99 - Outras operacoes'),
)
PIS_TIPOS_CALCULO = IPI_TIPOS_CALCULO
COFINS_TIPOS_TRIBUTACAO = (
('01', 'COFINS 01 - Operacao Tributavel - Base de Calculo = Valor da Operacao Aliquota...'), # FIXME
('02', 'COFINS 02 - Operacao Tributavel - Base de Calculo = Valor da Operacao (Aliquota...'), # FIXME
('03', 'COFINS 03 - Operacao Tributavel - Base de Calculo = Quantidade Vendida x Aliquota...'), # FIXME
('01', 'COFINS 01 - Operação Tributável - Base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo)'),
('02', 'COFINS 02 - Operação Tributável - Base de cálculo = valor da operação (alíquota diferenciada)'),
('03', 'COFINS 03 - Operacao Tributavel - Base de cálculo = quantidade vendida x alíquota por unidade de produto)'),
('04', 'COFINS 04 - Operacao Tributavel - Tributacao Monofasica - (Aliquota Zero)'),
('06', 'COFINS 06 - Operacao Tributavel - Aliquota Zero'),
('07', 'COFINS 07 - Operacao Isenta da Contribuicao'),
('08', 'COFINS 08 - Operacao sem Indidencia da Contribuicao'),
('09', 'COFINS 09 - Operacao com Suspensao da Contribuicao'),
('49', 'COFINS 49 - Outras Operações de Saída'),
('50', 'COFINS 50 - Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Tributada no Mercado Interno'),
('51', 'COFINS 51 - Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Não Tributada no Mercado Interno'),
('52', 'COFINS 52 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita de Exportação'),
('53', 'COFINS 53 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno'),
('54', 'COFINS 54 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas no Mercado Interno e de Exportação'),
('55', 'COFINS 55 - Operação com Direito a Crédito - Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação'),
('56', 'COFINS 56 - Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não Tributadas no Mercado Interno, e de Exportação'),
('60', 'COFINS 60 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Tributada no Mercado Interno'),
('61', 'COFINS 61 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Não Tributada no Mercado Interno'),
('62', 'COFINS 62 - Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita de Exportação'),
('63', 'COFINS 63 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno'),
('64', 'COFINS 64 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas no Mercado Interno e de Exportação'),
('65', 'COFINS 65 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação'),
('66', 'COFINS 66 - Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno, e de Exportação'),
('67', 'COFINS 67 - Crédito Presumido - Outras Operações'),
('70', 'COFINS 70 - Operação de Aquisição sem Direito a Crédito'),
('71', 'COFINS 71 - Operação de Aquisição com Isenção'),
('72', 'COFINS 72 - Operação de Aquisição com Suspensão'),
('73', 'COFINS 73 - Operação de Aquisição a Alíquota Zero'),
('74', 'COFINS 74 - Operação de Aquisição; sem Incidência da Contribuição'),
('75', 'COFINS 75 - Operação de Aquisição por Substituição Tributária'),
('98', 'COFINS 98 - Outras Operações de Entrada'),
('99', 'COFINS 99 - Outras operacoes'),
)
@ -158,6 +211,8 @@ COFINS_TIPOS_CALCULO = IPI_TIPOS_CALCULO
MODALIDADES_FRETE = (
(0, '0 - Por conta do emitente'),
(1, '1 - Por conta do destinatario'),
(2, '2 - Por conta de terceiros'),
(9, '9 - Sem frete'),
)
ORIGENS_PROCESSO = (

Loading…
Cancel
Save