JS
Mi joyeríaAdministración privada · JoyaSuite
Cuenta de dueño
01 / ADMINISTRACIÓN

Panel del dueño

Acceso seguro a inventario, recibos y herramientas de tu joyería.

Entrar como dueño

Introduce tu correo y contraseña. Si necesitas otra, solicita un enlace de recuperación.

+Number(p.retail_price||0).toFixed(2)+' — Ver detalles';card.append(heading); const detail=document.createElement('div');detail.className='product-detail'; const lines=[['Nombre',p.title||'Sin registrar'],['Descripción','No hay descripción registrada en este inventario'],['SKU',p.sku||'Sin registrar'],['Código de barras',p.barcode||'Sin registrar'],['Precio de venta',' $('productArea').hidden=false;out.textContent=(data||[]).length+' artículos encontrados. Solo lectura.'; }catch(e){out.textContent='Error al consultar: '+e.message;} }; $('signOut').onclick=async()=>{await client.auth.signOut();$('dashboard').hidden=true;$('login').hidden=false;status('Sesión cerrada.')}; client.auth.onAuthStateChange((event)=>{if(event==='PASSWORD_RECOVERY')recoveryScreen();}); if(recoveryMode)recoveryScreen(); (async()=>{try{const params=new URLSearchParams(location.search);if(params.get('token_hash')&¶ms.get('type')==='recovery'){const {error}=await client.auth.verifyOtp({token_hash:params.get('token_hash'),type:'recovery'});if(error)throw error;recoveryScreen();}if(!recoveryMode)await show();}catch(e){status('No se pudo verificar: '+e.message);$('resetStatus').textContent=e.message;}})(); })(); +Number(p.retail_price||0).toFixed(2)],['Cantidad',p.quantity_on_hand??'Sin registrar'],['Existencia',p.active===false?'Inactivo':'Activo'],['Conteo',p.stock_verified?'Verificado':'No verificado'],['Impuestos',p.taxable===true?'Sujeto a impuestos':p.taxable===false?'No sujeto a impuestos':'No indicado']]; for(const [label,value] of lines){const line=document.createElement('p');const b=document.createElement('strong');b.textContent=label+': ';line.append(b,document.createTextNode(String(value)));detail.append(line)} if(p.image_url&&/^https:\/\//i.test(p.image_url)){const img=document.createElement('img');img.src=p.image_url;img.alt='Imagen de '+(p.title||'artículo');img.loading='lazy';img.referrerPolicy='no-referrer';img.style.cssText='max-width:150px;max-height:150px;object-fit:contain;border-radius:8px';detail.prepend(img)} card.append(detail);$('productList').append(card); } $('productArea').hidden=false;out.textContent=(data||[]).length+' artículos encontrados. Solo lectura.'; }catch(e){out.textContent='Error al consultar: '+e.message;} }; $('signOut').onclick=async()=>{await client.auth.signOut();$('dashboard').hidden=true;$('login').hidden=false;status('Sesión cerrada.')}; client.auth.onAuthStateChange((event)=>{if(event==='PASSWORD_RECOVERY')recoveryScreen();}); if(recoveryMode)recoveryScreen(); (async()=>{try{const params=new URLSearchParams(location.search);if(params.get('token_hash')&¶ms.get('type')==='recovery'){const {error}=await client.auth.verifyOtp({token_hash:params.get('token_hash'),type:'recovery'});if(error)throw error;recoveryScreen();}if(!recoveryMode)await show();}catch(e){status('No se pudo verificar: '+e.message);$('resetStatus').textContent=e.message;}})(); })();