att
This commit is contained in:
parent
45858dc952
commit
67aa7d311d
@ -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()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user