audit and sync

This commit is contained in:
Lucas Tettamanti
2026-01-18 19:00:49 -03:00
parent 3b39e706af
commit 23c3d44490
9 changed files with 404 additions and 19 deletions

View File

@@ -73,7 +73,7 @@ class ProductsCrud extends HTMLElement {
</div>
<div class="toolbar">
<input type="text" id="search" placeholder="Buscar por nombre o SKU..." />
<button id="syncBtn" class="secondary">Sync Woo</button>
<button id="syncBtn" class="secondary" title="Reimportar todos los productos desde WooCommerce (solo emergencias)">Resincronizar</button>
</div>
<div class="list" id="list">
<div class="loading">Cargando productos...</div>
@@ -141,19 +141,37 @@ class ProductsCrud extends HTMLElement {
}
async syncFromWoo() {
// Mostrar confirmación antes de sincronizar
const confirmed = confirm(
"⚠️ Resincronización de emergencia\n\n" +
"Esto reimportará TODOS los productos desde WooCommerce y sobrescribirá los datos locales.\n\n" +
"Usar solo si:\n" +
"• La plataforma estuvo caída mientras se hacían cambios en Woo\n" +
"• Los webhooks no funcionaron correctamente\n" +
"• Necesitás una sincronización completa\n\n" +
"¿Continuar?"
);
if (!confirmed) return;
const btn = this.shadowRoot.getElementById("syncBtn");
btn.disabled = true;
btn.textContent = "Sincronizando...";
try {
await api.syncProducts();
const result = await api.syncFromWoo();
if (result.ok) {
alert(`Sincronización completada: ${result.synced} productos importados`);
} else {
alert("Error: " + (result.error || "Error desconocido"));
}
await this.load();
} catch (e) {
console.error("Error syncing products:", e);
alert("Error sincronizando: " + (e.message || e));
} finally {
btn.disabled = false;
btn.textContent = "Sync Woo";
btn.textContent = "Resincronizar";
}
}