""" Script that checks Brazilian Tax Authority for Fiscal Notes Status
"""
import re
import xlsxwriter
import urllib3
from pynfe.processamento.comunicacao import ComunicacaoSefaz
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
BASE_FOLDER = 'C:/Users/XXXXXXXXXX/Desktop/Teste Consulta/'
workbook = xlsxwriter.Workbook(f'{BASE_FOLDER}Consulta NFs.xlsx')
worksheet = workbook.add_worksheet()
ROW = 0
COL = 0
worksheet.write (ROW, COL, "Access_Key")
worksheet.write (ROW, COL+1, "Status")
#This is just a reminder for usage when looking for entries invoices
#Alterar no inicio da utilizacao
#EMPRESA = 'XXX'
#EMPRESA = 'XXXXXX'
#if EMPRESA == 'XXX':
# CERTIFICADO = 'C:/Users/XXXXXXXXXX/Desktop/XXX_Fiscal_Certificate_Review_102023.pfx'
# SENHA = 'XXX'
#if EMPRESA == 'XXXXXXX':
# CERTIFICADO = 'C:/Users/XXXXXXXXXX/Desktop/XXXXXX_Fiscal_Certificate_Review_102023.pfx'
# SENHA = 'XXX'
MODELO = '55'
HOMOLOGACAO = False
f = open(r"C:\Users\XXXXXXXXXX\Desktop\Teste Consulta\Teste.txt")
ROW = 1
COL = 0
while True:
#try:
# begin while loop
# read each line from .txt file + cut off line break char
CURRENT_LINE = str(f.readline().strip('\n'))
CHAVE_ACESSO = str(CURRENT_LINE[:44])
UF = str(CURRENT_LINE[-2:])
XXX = CHAVE_ACESSO.find('33333333')
XXXXXX = CHAVE_ACESSO.find('47474747')
if XXX > 0:
CERTIFICADO = ('C:/Users/XXXXXXXXXX/Desktop/'
'XXX_Fiscal_Certificate_Review_102023.pfx')
SENHA = 'XXX'
if XXXXXXX > 0:
CERTIFICADO = ('C:/Users/XXXXXXXXXX/Desktop/'
'PX_Fiscal_Certificate_Review_102023.pfx')
SENHA = 'XXXXXX'
#suffix = '.xml'
if len(CHAVE_ACESSO) == 0:
break
#chave_acesso = chave
try:
con = ComunicacaoSefaz(UF, CERTIFICADO, SENHA, HOMOLOGACAO)
#envio = con.consulta_distribuicao(cnpj, cpf, chave_acesso, nsu=0)
envio = con.consulta_nota('nfe', CHAVE_ACESSO) # nfe ou nfce
#print (envio.text.encode('utf-8')) # SEFAZ SP utilizar envio.content
# print (envio.content)
# xml_arquivo = f'{chave_acesso}.xml'
# with open(xml_arquivo, "w") as arquivo:
# if uf == "SP":
# arquivo.write(envio.content)
# else:
# arquivo.write(envio.text)
XML = envio.text
def matching(standard,text,position):
"""
Checks for data wihin the XML file
"""
match=re.search(standard,text)
if match:
valor=match.group(int(position))
else:
valor=""
return valor
def matching_several(standard,text):
"""
Checks for data wihin the XML file
"""
match=re.search(standard,text)
if match:
valor=match.group()
else:
valor=""
return valor
STATUS = matching(r'<xMotivo>((.|\n)*?)</xMotivo>',XML,1)
print (CHAVE_ACESSO, STATUS, ROW)
except ConnectionError as EXCEPTION_1:
print("Fim")
except Exception as EXCEPTION_2:
STATUS = "Erro na consulta - Envie novamente"
print (CHAVE_ACESSO, STATUS, ROW)
report_data = (
[CHAVE_ACESSO, STATUS],
)
for CHAVE_ACESSO, STATUS in report_data:
worksheet.write (ROW, COL, CHAVE_ACESSO)
worksheet.write (ROW, COL+1, STATUS)
ROW += 1
# Zero length indicates EOF
if len(CHAVE_ACESSO) == 0:
break
# end of while loop
# close the file
f.close()
workbook.close()
# main end