feat: prominent ML shipping config error message + skip-validation checkbox

- Add skip-validation checkbox for accounts where ML validation fails due to config
- Detect 'User has not mode' errors and show detailed actionable help box
- Include direct links to ML seller config and support
This commit is contained in:
2026-05-26 06:39:23 +00:00
parent 584cc385b9
commit 91caf91b79
2 changed files with 18 additions and 1 deletions

View File

@@ -1068,7 +1068,20 @@
var success = (data.success || []).length;
var failedList = data.failed || [];
var failed = failedList.length;
var hasModeError = failedList.some(function(f) { return (f.error || '').toLowerCase().indexOf('user has not mode') !== -1; });
var html = '<div style="margin-bottom:var(--space-2);"><span style="color:var(--color-success);">✅ ' + success + ' publicado(s)</span> · <span style="color:var(--color-error);">❌ ' + failed + ' fallo(s)</span></div>';
if (hasModeError) {
html += '<div style="background:var(--color-surface-2);border:1px solid var(--color-error);border-radius:var(--radius-md);padding:var(--space-3);margin:var(--space-2) 0;font-size:var(--text-caption);color:var(--color-text-primary);">' +
'<strong>⚠️ Tu cuenta de MercadoLibre no tiene modos de envío configurados.</strong><br>' +
'Esto es un requisito de MercadoLibre, no de Nexus.<br>' +
'Pasos para solucionarlo:<br>' +
'1. Entrá a <a href="https://www.mercadolibre.com.mx" target="_blank" style="color:var(--color-primary);text-decoration:underline;">mercadolibre.com.mx</a> con la cuenta de vendedor<br>' +
'2. Andá a <strong>Vender &gt; Configuración de envíos</strong><br>' +
'3. Completá tu dirección de retiro y activá al menos un método de envío<br>' +
'4. Si no te aparece la opción, contactá a <a href="https://www.mercadolibre.com.mx/ayuda" target="_blank" style="color:var(--color-primary);text-decoration:underline;">soporte de MercadoLibre</a><br>' +
'<em>Nota: Algunas cuentas nuevas necesitan verificar identidad antes de poder configurar envíos.</em>' +
'</div>';
}
if (failedList.length) {
html += '<ul style="margin:0;padding-left:var(--space-4);font-size:var(--text-caption);color:var(--color-text-secondary);">';
failedList.forEach(function(f) {

View File

@@ -882,6 +882,10 @@
<label>Costo de Envío (MXN)</label>
<input type="number" id="meliShippingCost" value="150" min="0" step="1" />
</div>
<div class="inv-field" style="display:flex;align-items:center;gap:8px;margin-top:var(--space-2);">
<input type="checkbox" id="meliSkipValidate" style="width:auto;height:auto;" />
<label for="meliSkipValidate" style="margin:0;font-size:var(--text-caption);color:var(--color-text-muted);text-transform:none;">Saltear validación y publicar directamente (si la validación falla por config de cuenta)</label>
</div>
</div>
<!-- Dynamic required attributes section -->
@@ -914,7 +918,7 @@
<script src="/pos/static/js/pos-utils.js" defer></script>
<script src="/pos/static/js/sidebar.js" defer></script>
<script src="/pos/static/js/virtual-scroll.js?v=2" defer></script>
<script src="/pos/static/js/inventory.js?v=14" defer></script>
<script src="/pos/static/js/inventory.js?v=15" defer></script>
<script src="/pos/static/js/offline-banner.js" defer></script>
<script src="/pos/static/js/sync-engine.js" defer></script>
<script>if('serviceWorker' in navigator){navigator.serviceWorker.register('/pos/sw.js',{scope:'/pos/'});}</script>