diff --git a/pynfe/entidades/notafiscal.py b/pynfe/entidades/notafiscal.py index d23cb98..adfe6c7 100644 --- a/pynfe/entidades/notafiscal.py +++ b/pynfe/entidades/notafiscal.py @@ -522,7 +522,7 @@ class NotaFiscalProduto(Entidade): numero_pedido = str() # - Item do Pedido de Compra - numero_do_item = str() + numero_item = str() # - Produto especifico (seleciona de lista) - NF_PRODUTOS_ESPECIFICOS produto_especifico = str() diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index b40a44e..4ecd2b6 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -418,7 +418,8 @@ class ComunicacaoSefaz(Comunicacao): raise Exception('Modelo não encontrado! Defina modelo="nfe" ou "nfce"') # Estados que utilizam outros ambientes else: - lista_svrs = ['AC', 'RN', 'PB', 'SC', 'SE', 'PI'] + lista_svrs = ['AC', 'RN', 'PB', 'SC', 'SE', 'RJ', 'PI'] + lista_svan = ['MA','PA'] if self.uf.upper() in lista_svrs: if self._ambiente == 1: ambiente = 'HTTPS' @@ -432,6 +433,19 @@ class ComunicacaoSefaz(Comunicacao): self.url = NFCE['SVRS'][ambiente] + NFCE['SVRS'][consulta] else: raise Exception('Modelo não encontrado! Defina modelo="nfe" ou "nfce"') + elif self.uf.upper() in lista_svan: + if self._ambiente == 1: + ambiente = 'HTTPS' + else: + ambiente = 'HOMOLOGACAO' + if modelo == 'nfe': + # nfe Ex: https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3 + self.url = NFE['SVAN'][ambiente] + NFE['SVAN'][consulta] + elif modelo == 'nfce': + # nfce Ex: https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3 + self.url = NFCE['SVAN'][ambiente] + NFCE['SVAN'][consulta] + else: + raise Exception('Modelo não encontrado! Defina modelo="nfe" ou "nfce"') else: raise Exception('UF com URL não definida!') return self.url @@ -551,6 +565,7 @@ class ComunicacaoSefaz(Comunicacao): # result.encoding = 'utf-8' # return result print(url) + print(xml) # Faz o request com o servidor result = requests.post(url, xml, headers=self._post_header(), cert=chave_cert, verify=False, timeout=120) result.encoding = 'utf-8' diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 67c1dd6..ee7d2e7 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -240,6 +240,14 @@ class SerializacaoXML(Serializacao): """ etree.SubElement(prod, 'indTot').text = str(produto_servico.ind_total) + """ Informação de interesse do emissor para controle do B2B.(v2.0) """ + # Número do Pedido de Compra. Tam 1-15 + if produto_servico.numero_pedido: + etree.SubElement(prod, 'xPed').text = str(produto_servico.numero_pedido) + # Item do Pedido de Compra. Tam 6 + if produto_servico.numero_item: + etree.SubElement(prod, 'nItemPed').text = str(produto_servico.numero_item) + # Imposto imposto = etree.SubElement(raiz, 'imposto') @@ -250,7 +258,7 @@ class SerializacaoXML(Serializacao): ### ICMS icms = etree.SubElement(imposto, 'ICMS') - icms_csosn = ('102', '103', '300', '400') + icms_csosn = ('102', '103', '300', '400', '500') if produto_servico.icms_modalidade in icms_csosn: icms_item = etree.SubElement(icms, 'ICMSSN'+produto_servico.icms_modalidade) etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem) @@ -580,8 +588,10 @@ class SerializacaoXML(Serializacao): vol = etree.SubElement(transp, 'vol') etree.SubElement(vol, 'qVol').text = str(volume.quantidade) etree.SubElement(vol, 'esp').text = volume.especie - etree.SubElement(vol, 'marca').text = volume.marca - etree.SubElement(vol, 'nVol').text = volume.numeracao + if volume.marca: + etree.SubElement(vol, 'marca').text = volume.marca + if volume.numeracao: + etree.SubElement(vol, 'nVol').text = volume.numeracao etree.SubElement(vol, 'pesoL').text = str(volume.peso_liquido) etree.SubElement(vol, 'pesoB').text = str(volume.peso_bruto)