From d097d7b5b95247873cc7a1d07bc147cb9641dd0f Mon Sep 17 00:00:00 2001 From: "daniel.rodrigues" Date: Fri, 6 Feb 2026 16:42:32 -0300 Subject: [PATCH] att --- Grgb_sale_receipts.py | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/Grgb_sale_receipts.py b/Grgb_sale_receipts.py index 6991a5e..dc4daec 100644 --- a/Grgb_sale_receipts.py +++ b/Grgb_sale_receipts.py @@ -427,6 +427,29 @@ def worker_inserir_banco(fila, conn_string, stats, stop_event): conn.close() +def deletar_dados_existentes(data_venda): + """Deleta dados existentes para a data especificada antes de inserir novos""" + try: + conn = pyodbc.connect(CONNECTION_STRING) + cursor = conn.cursor() + + # Deletar da tabela principal (itens e pagamentos são deletados automaticamente pelo CASCADE) + cursor.execute("DELETE FROM Grgb_sales_receipts WHERE sale_date = ?", data_venda) + deleted_count = cursor.rowcount + conn.commit() + + if deleted_count > 0: + print(f" 🗑️ Deletados: {deleted_count} registros existentes") + + cursor.close() + conn.close() + return deleted_count + + except Exception as e: + print(f" ⚠ Erro ao deletar dados existentes: {e}") + return 0 + + def processar_dia(data_venda, fila, stats): """Processa um dia específico - busca da API e coloca na fila""" @@ -437,7 +460,12 @@ def processar_dia(data_venda, fila, stats): print(f" {data_venda}: Nenhum registro") return True # Sucesso, apenas não tem dados - print(f" {data_venda}: {total} registros, buscando...") + print(f" {data_venda}: {total} registros encontrados na API") + + # Deletar dados existentes para esta data antes de inserir os novos + deletar_dados_existentes(data_venda) + + print(f" {data_venda}: Buscando dados da API...") # Calcular páginas paginas = list(range(0, total, PAGE_SIZE)) @@ -557,9 +585,10 @@ def processar_periodo(data_inicio_str, data_fim_str): if __name__ == "__main__": - # Configuração do período - DATA_INICIO = "2025-09-24" - DATA_FIM = datetime.now().strftime('%Y-%m-%d') # Hoje + # Configuração do período - sempre pega o dia anterior (ontem) + ONTEM = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d') + DATA_INICIO = ONTEM + DATA_FIM = ONTEM # Permite passar datas como argumentos: python script.py 2025-09-24 2025-12-31 if len(sys.argv) >= 3: