fix(sync): detect deleted orders and invoices in ROA
Previously, orders deleted from Oracle (sters=1) remained as IMPORTED in SQLite, and deleted invoices kept stale cache data. Now the refresh button and sync cycle re-verify all imported orders against Oracle: - Deleted orders → marked DELETED_IN_ROA with cleared id_comanda - Deleted invoices → invoice cache fields cleared - New status badge for DELETED_IN_ROA in dashboard and logs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,3 +43,33 @@ def check_invoices_for_orders(id_comanda_list: list) -> dict:
|
||||
database.pool.release(conn)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def check_orders_exist(id_comanda_list: list) -> set:
|
||||
"""Check which id_comanda values still exist in Oracle COMENZI (sters=0).
|
||||
Returns set of id_comanda that exist.
|
||||
"""
|
||||
if not id_comanda_list or database.pool is None:
|
||||
return set()
|
||||
|
||||
existing = set()
|
||||
conn = database.get_oracle_connection()
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
for i in range(0, len(id_comanda_list), 500):
|
||||
batch = id_comanda_list[i:i+500]
|
||||
placeholders = ",".join([f":c{j}" for j in range(len(batch))])
|
||||
params = {f"c{j}": cid for j, cid in enumerate(batch)}
|
||||
|
||||
cur.execute(f"""
|
||||
SELECT id_comanda FROM COMENZI
|
||||
WHERE id_comanda IN ({placeholders}) AND sters = 0
|
||||
""", params)
|
||||
for row in cur:
|
||||
existing.add(row[0])
|
||||
except Exception as e:
|
||||
logger.warning(f"Order existence check failed: {e}")
|
||||
finally:
|
||||
database.pool.release(conn)
|
||||
|
||||
return existing
|
||||
|
||||
Reference in New Issue
Block a user