att
This commit is contained in:
parent
45858dc952
commit
67aa7d311d
@ -1,5 +1,4 @@
|
|||||||
import requests
|
import requests
|
||||||
from itertools import product
|
|
||||||
import pyodbc
|
import pyodbc
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -142,33 +141,28 @@ def to_date(value):
|
|||||||
|
|
||||||
def expand_sell_orders(sell_orders_list):
|
def expand_sell_orders(sell_orders_list):
|
||||||
"""
|
"""
|
||||||
Garante:
|
Retorna uma única tupla com os sellOrders concatenados por marca.
|
||||||
- 1 sellOrder por coluna
|
Se houver múltiplos sellOrders para uma marca, junta com vírgula (sem duplicatas).
|
||||||
- duplica linhas quando houver mais de um sellOrder por marca
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sell_map = {
|
sell_map = {
|
||||||
"BOT": [],
|
"BOT": set(),
|
||||||
"EUD": [],
|
"EUD": set(),
|
||||||
"QDB": []
|
"QDB": set()
|
||||||
}
|
}
|
||||||
|
|
||||||
for item in sell_orders_list:
|
for item in sell_orders_list:
|
||||||
bu = item.get("businessUnit")
|
bu = item.get("businessUnit")
|
||||||
orders = item.get("sellOrders", [])
|
orders = item.get("sellOrders", [])
|
||||||
if bu in sell_map:
|
if bu in sell_map and orders:
|
||||||
sell_map[bu] = orders or [""]
|
sell_map[bu].update(orders)
|
||||||
|
|
||||||
# garante pelo menos 1 linha
|
# Concatena múltiplos sellOrders com vírgula (ordenados), ou string vazia se não houver
|
||||||
for k in sell_map:
|
sell_bot = ", ".join(sorted(sell_map["BOT"])) if sell_map["BOT"] else ""
|
||||||
if not sell_map[k]:
|
sell_eud = ", ".join(sorted(sell_map["EUD"])) if sell_map["EUD"] else ""
|
||||||
sell_map[k] = [""]
|
sell_qdb = ", ".join(sorted(sell_map["QDB"])) if sell_map["QDB"] else ""
|
||||||
|
|
||||||
return list(product(
|
# Retorna sempre uma única combinação
|
||||||
sell_map["BOT"],
|
return [(sell_bot, sell_eud, sell_qdb)]
|
||||||
sell_map["EUD"],
|
|
||||||
sell_map["QDB"]
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
def process_store_with_retry(store, headers, max_retries=3, retry_delay=5, token_refresh_callback=None):
|
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_response.raise_for_status()
|
||||||
|
|
||||||
pdvs_data = pdvs_response.json()
|
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 ''}")
|
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
|
# Deletar registros existentes dos pedidos
|
||||||
if unique_orders:
|
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})"
|
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
|
stats["registros_deletados"] += cursor.rowcount
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user