diff --git a/extranet_notas_debito.py b/extranet_notas_debito.py index 37699a9..7d2d57f 100644 --- a/extranet_notas_debito.py +++ b/extranet_notas_debito.py @@ -1,8 +1,15 @@ import os import requests import pyodbc +import subprocess from datetime import datetime, timedelta +# Configurações de rede +NETWORK_SHARE = "//10.77.77.11/Contabilidade" +MOUNT_POINT = "/mnt/contabilidade" +SMB_USERNAME = "andrey.cunha" # ⚠️ ALTERE AQUI +SMB_PASSWORD = "88253332Wa@" # ⚠️ ALTERE AQUI + # Caminho para Linux (compartilhamento de rede montado) OUTPUT_DIR_BASE = "/mnt/contabilidade/AUTOMAÇÃO/NotadeDebito" @@ -14,6 +21,50 @@ DB_CONN = ( "PWD=88253332Wa@;" ) +# 🔧 Montar compartilhamento de rede +def mount_network_share(): + print("📁 Montando compartilhamento de rede...") + try: + # Criar ponto de montagem se não existir + os.makedirs(MOUNT_POINT, exist_ok=True) + + # Verificar se já está montado + result = subprocess.run(['mountpoint', '-q', MOUNT_POINT], capture_output=True) + if result.returncode == 0: + print("✅ Compartilhamento já está montado.") + return True + + # Montar o compartilhamento + mount_cmd = [ + 'sudo', 'mount', '-t', 'cifs', + NETWORK_SHARE, + MOUNT_POINT, + '-o', f'username={SMB_USERNAME},password={SMB_PASSWORD},iocharset=utf8' + ] + result = subprocess.run(mount_cmd, capture_output=True, text=True) + + if result.returncode == 0: + print("✅ Compartilhamento montado com sucesso.") + return True + else: + print(f"❌ Erro ao montar: {result.stderr}") + return False + except Exception as e: + print(f"❌ Erro ao montar compartilhamento: {e}") + return False + +# 🔧 Desmontar compartilhamento de rede +def unmount_network_share(): + print("📁 Desmontando compartilhamento de rede...") + try: + result = subprocess.run(['sudo', 'umount', MOUNT_POINT], capture_output=True, text=True) + if result.returncode == 0: + print("✅ Compartilhamento desmontado com sucesso.") + else: + print(f"⚠️ Aviso ao desmontar: {result.stderr}") + except Exception as e: + print(f"⚠️ Erro ao desmontar compartilhamento: {e}") + # 1️⃣ Token def get_token(): print("🔐 Obtendo token...") @@ -152,28 +203,41 @@ def download_pdf(token, franchise_id, doc_id, image_name, invoice_date): # 🚀 Main def main(): - token = get_token() - conn = pyodbc.connect(DB_CONN) - cursor = conn.cursor() + # Montar compartilhamento de rede + if not mount_network_share(): + print("❌ Não foi possível montar o compartilhamento. Abortando.") + return - # Filtrar apenas notas do dia 29-10-2025 - data_especifica = datetime(2025, 10, 29) - todos = get_all_documents(token) - documentos = filter_documents_by_date(todos, data_especifica, data_especifica) + try: + token = get_token() + conn = pyodbc.connect(DB_CONN) + cursor = conn.cursor() - novos, ignorados = 0, 0 - for doc in documentos: - if record_exists(cursor, doc["id"]): - ignorados += 1 - continue - insert_record(cursor, doc) - novos += 1 - download_pdf(token, doc["franchiseId"], doc["id"], doc["imageName"], doc["invoiceDate"]) + # Filtrar apenas notas do dia 29-10-2025 + data_especifica = datetime(2025, 10, 27) + todos = get_all_documents(token) + documentos = filter_documents_by_date(todos, data_especifica, data_especifica) - conn.commit() - conn.close() - print(f"\n✅ Finalizado. {novos} novos registros, {ignorados} já existiam.") - print(f"🕓 Execução concluída em {datetime.now().strftime('%H:%M:%S')}") + novos, ignorados = 0, 0 + for doc in documentos: + if record_exists(cursor, doc["id"]): + ignorados += 1 + continue + insert_record(cursor, doc) + novos += 1 + download_pdf(token, doc["franchiseId"], doc["id"], doc["imageName"], doc["invoiceDate"]) + + conn.commit() + conn.close() + print(f"\n✅ Finalizado. {novos} novos registros, {ignorados} já existiam.") + print(f"🕓 Execução concluída em {datetime.now().strftime('%H:%M:%S')}") + + except Exception as e: + print(f"❌ Erro durante execução: {e}") + + finally: + # Desmontar compartilhamento de rede + unmount_network_share() if __name__ == "__main__": main()