'}))}function f(e){var n=document.getElementById("inv-pagination");if(!e||!e.total_pages||e.total_pages<=1)n.innerHTML="";else{var r=e.page||e.current_page||1,o=e.total_pages,a="";a+="';var i=Math.max(1,r-2),c=Math.min(o,r+2);i>1&&(a+='',i>2&&(a+=""));for(var s=i;s<=c;s++)a+='";c..."),a+='"),a+="',n.innerHTML=a,n.querySelectorAll("button[data-page]").forEach((function(e){e.addEventListener("click",(function(){t=parseInt(e.getAttribute("data-page"),10),g()}))}))}}l.addEventListener("click",(function(){u.click()})),l.addEventListener("dragover",(function(e){e.preventDefault(),l.classList.add("dragover")})),l.addEventListener("dragleave",(function(){l.classList.remove("dragover")})),l.addEventListener("drop",(function(e){e.preventDefault(),l.classList.remove("dragover"),e.dataTransfer.files.length&&m(e.dataTransfer.files[0])})),u.addEventListener("change",(function(){u.files.length&&m(u.files[0])})),document.getElementById("btn-clear-file").addEventListener("click",(function(){e=null,u.value="",document.getElementById("selected-file").style.display="none",document.getElementById("btn-upload").disabled=!0})),document.getElementById("btn-upload").addEventListener("click",(function(){if(e){var t=document.getElementById("btn-upload"),n=document.getElementById("upload-status");t.disabled=!0,n.textContent="Subiendo...",n.className="status-msg";var o=new FormData;o.append("file",e),fetch("/api/inventory/upload",{method:"POST",headers:{Authorization:"Bearer "+r()},body:o}).then((function(e){return 401===e.status?a().then((function(){return fetch("/api/inventory/upload",{method:"POST",headers:{Authorization:"Bearer "+r()},body:o})})):e})).then((function(e){return e.json().then((function(t){if(!e.ok)throw new Error(t.error||"Error al subir");return t}))})).then((function(r){n.textContent="",function(e){var t=document.getElementById("upload-result"),n=e.imported||e.imported_count||0,r=e.errors||e.error_count||0,o=e.error_samples||[],a="
Resultado de la Carga
";a+='
',a+='Importados: '+n+"",a+='Errores: '+r+"",a+="
",o.length&&(a+='
',a+="Ejemplos de errores:",o.forEach((function(e){a+="
"+c("string"==typeof e?e:JSON.stringify(e))+"
"})),a+="
");t.innerHTML=a,t.style.display="block"}(r),s("Archivo procesado correctamente.","success"),p(),e=null,u.value="",document.getElementById("selected-file").style.display="none",t.disabled=!0})).catch((function(e){n.textContent=e.message||"Error al subir archivo.",n.className="status-msg error",t.disabled=!1}))}})),document.getElementById("btn-inv-search").addEventListener("click",(function(){n=document.getElementById("inv-search").value.trim(),t=1,g()})),document.getElementById("inv-search").addEventListener("keydown",(function(e){"Enter"===e.key&&(n=this.value.trim(),t=1,g())})),document.getElementById("btn-clear-all").addEventListener("click",(function(){var e,t,n;e="Limpiar Inventario",t="Se eliminaran todos los articulos de tu inventario. Esta accion no se puede deshacer.",n=function(){i("/api/inventory/items",{method:"DELETE",headers:o()}).then((function(){s("Inventario limpiado correctamente.","success"),g()})).catch((function(e){s(e.message||"Error al limpiar inventario.","error")}))},document.getElementById("confirm-title").textContent=e,document.getElementById("confirm-msg").textContent=t,document.getElementById("confirm-modal").classList.add("active"),y=n}));var v,h,y=null;document.getElementById("confirm-cancel").addEventListener("click",(function(){document.getElementById("confirm-modal").classList.remove("active"),y=null})),document.getElementById("confirm-ok").addEventListener("click",(function(){document.getElementById("confirm-modal").classList.remove("active"),y&&(y(),y=null)})),document.getElementById("confirm-modal").addEventListener("click",(function(e){e.target===this&&(this.classList.remove("active"),y=null)})),v=r(),h=function(){var e=r();if(!e)return null;try{return JSON.parse(atob(e.split(".")[1])).role||null}catch(e){return null}}(),(v&&("BODEGA"===h||"ADMIN"===h)||(window.location.href="/login.html",0))&&i("/api/inventory/mapping").then((function(e){e.part_number&&(document.getElementById("map-part-number").value=e.part_number),e.price&&(document.getElementById("map-price").value=e.price),e.stock&&(document.getElementById("map-stock").value=e.stock),e.location&&(document.getElementById("map-location").value=e.location)})).catch((function(){}))}();