diff --git a/Pedidos_mar.py b/Pedidos_mar.py index 74ff51a..6e598f5 100644 --- a/Pedidos_mar.py +++ b/Pedidos_mar.py @@ -1,5 +1,4 @@ import requests -from itertools import product import pyodbc import time @@ -142,33 +141,28 @@ def to_date(value): def expand_sell_orders(sell_orders_list): """ - Garante: - - 1 sellOrder por coluna - - duplica linhas quando houver mais de um sellOrder por marca + Retorna uma única tupla com os sellOrders concatenados por marca. + Se houver múltiplos sellOrders para uma marca, junta com vírgula (sem duplicatas). """ - sell_map = { - "BOT": [], - "EUD": [], - "QDB": [] + "BOT": set(), + "EUD": set(), + "QDB": set() } for item in sell_orders_list: bu = item.get("businessUnit") orders = item.get("sellOrders", []) - if bu in sell_map: - sell_map[bu] = orders or [""] + if bu in sell_map and orders: + sell_map[bu].update(orders) - # garante pelo menos 1 linha - for k in sell_map: - if not sell_map[k]: - sell_map[k] = [""] + # Concatena múltiplos sellOrders com vírgula (ordenados), ou string vazia se não houver + sell_bot = ", ".join(sorted(sell_map["BOT"])) if sell_map["BOT"] else "" + sell_eud = ", ".join(sorted(sell_map["EUD"])) if sell_map["EUD"] else "" + sell_qdb = ", ".join(sorted(sell_map["QDB"])) if sell_map["QDB"] else "" - return list(product( - sell_map["BOT"], - sell_map["EUD"], - sell_map["QDB"] - )) + # Retorna sempre uma única combinação + return [(sell_bot, sell_eud, sell_qdb)] def process_store_with_retry(store, headers, max_retries=3, retry_delay=5, token_refresh_callback=None): @@ -424,9 +418,11 @@ pdvs_response = requests.get(PDVS_API_URL, timeout=30) pdvs_response.raise_for_status() pdvs_data = pdvs_response.json() -STORES = [str(pdv) for pdv in pdvs_data["data"]["pdvs"]] +STORES_FULL = [str(pdv) for pdv in pdvs_data["data"]["pdvs"]] -print(f"Total de lojas encontradas: {len(STORES)}") +STORES = STORES_FULL + +print(f"Total de lojas encontradas: {len(STORES)} (de {len(STORES_FULL)} disponíveis)") print(f"Lojas: {', '.join(STORES[:10])}{'...' if len(STORES) > 10 else ''}") # =============================== @@ -479,9 +475,11 @@ def save_store_data_to_db(store_data, stats): # Deletar registros existentes dos pedidos if unique_orders: - placeholders = ','.join(['?' for _ in unique_orders]) + # Converter para int para garantir compatibilidade com coluna numérica do banco + unique_orders_int = [int(p) for p in unique_orders] + placeholders = ','.join(['?' for _ in unique_orders_int]) delete_query = f"DELETE FROM [GINSENG].[dbo].[extrato_pedidos_mar] WHERE [Pedido] IN ({placeholders})" - cursor.execute(delete_query, unique_orders) + cursor.execute(delete_query, unique_orders_int) stats["registros_deletados"] += cursor.rowcount conn.commit()