diff --git a/blueprints/sync_server.py b/blueprints/sync_server.py index c4c6468..ebc62f0 100644 --- a/blueprints/sync_server.py +++ b/blueprints/sync_server.py @@ -40,19 +40,26 @@ def sync_push(): (et, eu) ).fetchone() if not existing: + now = datetime.now(timezone.utc).isoformat() conn.execute( "INSERT INTO sync_deletions (entity_type, entity_uuid, deleted_at) VALUES (?, ?, ?)", - (et, eu, synced_at) + (et, eu, now) ) if et == 'debtor': conn.execute("DELETE FROM debtors WHERE uuid = ?", (eu,)) elif et == 'ticket': + row = conn.execute("SELECT id FROM debtor_tickets WHERE uuid = ?", (eu,)).fetchone() + if row: + conn.execute("DELETE FROM debtor_ticket_items WHERE ticket_id = ?", (row[0],)) conn.execute("DELETE FROM debtor_tickets WHERE uuid = ?", (eu,)) elif et == 'dicom': conn.execute("DELETE FROM dicom WHERE uuid = ?", (eu,)) elif et == 'expense': conn.execute("DELETE FROM expenses WHERE uuid = ?", (eu,)) elif et == 'sale': + row = conn.execute("SELECT id FROM sales WHERE uuid = ?", (eu,)).fetchone() + if row: + conn.execute("DELETE FROM sale_items WHERE sale_id = ?", (row[0],)) conn.execute("DELETE FROM sales WHERE uuid = ?", (eu,)) elif et == 'product': conn.execute("DELETE FROM products WHERE barcode = ?", (eu,)) diff --git a/core/sync.py b/core/sync.py index 3038bcd..27d18be 100644 --- a/core/sync.py +++ b/core/sync.py @@ -218,12 +218,18 @@ class SyncManager: if et == 'debtor': conn.execute("DELETE FROM debtors WHERE uuid = ?", (eu,)) elif et == 'ticket': + row = conn.execute("SELECT id FROM debtor_tickets WHERE uuid = ?", (eu,)).fetchone() + if row: + conn.execute("DELETE FROM debtor_ticket_items WHERE ticket_id = ?", (row[0],)) conn.execute("DELETE FROM debtor_tickets WHERE uuid = ?", (eu,)) elif et == 'dicom': conn.execute("DELETE FROM dicom WHERE uuid = ?", (eu,)) elif et == 'expense': conn.execute("DELETE FROM expenses WHERE uuid = ?", (eu,)) elif et == 'sale': + row = conn.execute("SELECT id FROM sales WHERE uuid = ?", (eu,)).fetchone() + if row: + conn.execute("DELETE FROM sale_items WHERE sale_id = ?", (row[0],)) conn.execute("DELETE FROM sales WHERE uuid = ?", (eu,)) elif et == 'product': conn.execute("DELETE FROM products WHERE barcode = ?", (eu,))