fix(sync): backfill address_mismatch for orders missing blue dot
Orders synced before address_mismatch was deployed had stale 0 values, causing missing blue dots in the dashboard. Adds startup backfill from stored address JSON + recomputes on each sync for ALREADY_IMPORTED orders. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1172,6 +1172,48 @@ async def update_order_partner_data(order_number: str, partner_data: dict):
|
||||
await db.close()
|
||||
|
||||
|
||||
async def update_gomag_addresses_batch(updates: list[dict]):
|
||||
"""Update GoMag addresses and recompute address_mismatch for a batch of orders.
|
||||
|
||||
Each dict: {order_number, adresa_livrare_gomag, adresa_facturare_gomag}
|
||||
"""
|
||||
if not updates:
|
||||
return
|
||||
from ..services.sync_service import _addr_match
|
||||
db = await get_sqlite()
|
||||
try:
|
||||
for u in updates:
|
||||
order_number = u["order_number"]
|
||||
livr_gomag = u.get("adresa_livrare_gomag")
|
||||
fact_gomag = u.get("adresa_facturare_gomag")
|
||||
# Update GoMag addresses
|
||||
await db.execute("""
|
||||
UPDATE orders SET
|
||||
adresa_livrare_gomag = COALESCE(?, adresa_livrare_gomag),
|
||||
adresa_facturare_gomag = COALESCE(?, adresa_facturare_gomag),
|
||||
updated_at = datetime('now')
|
||||
WHERE order_number = ?
|
||||
""", (livr_gomag, fact_gomag, order_number))
|
||||
# Recompute address_mismatch from stored addresses
|
||||
cursor = await db.execute(
|
||||
"SELECT adresa_livrare_gomag, adresa_livrare_roa, "
|
||||
"adresa_facturare_gomag, adresa_facturare_roa FROM orders WHERE order_number = ?",
|
||||
(order_number,)
|
||||
)
|
||||
row = await cursor.fetchone()
|
||||
if row and (row[1] or row[3]): # has at least one ROA address
|
||||
livr_ok = _addr_match(row[0], row[1])
|
||||
fact_ok = _addr_match(row[2], row[3])
|
||||
new_val = 1 if (not livr_ok or not fact_ok) else 0
|
||||
await db.execute(
|
||||
"UPDATE orders SET address_mismatch = ? WHERE order_number = ?",
|
||||
(new_val, order_number)
|
||||
)
|
||||
await db.commit()
|
||||
finally:
|
||||
await db.close()
|
||||
|
||||
|
||||
async def get_orders_missing_anaf() -> list[dict]:
|
||||
"""Get orders with cod_fiscal_roa set but no ANAF data (for backfill)."""
|
||||
db = await get_sqlite()
|
||||
|
||||
Reference in New Issue
Block a user