"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.nxPartType={slug:this.dataset.slug,name:this.dataset.name},Ce(1)}))}))}else pe("Sin tipos","No hay tipos de parte en este subgrupo.")}))}()}))}))):pe("Sin subgrupos","No hay subgrupos con partes disponibles.")}))}))}))):pe("Sin supplies","No hay grupos de Shop Supplies disponibles.")}))}if(!(!j.engine||!j.engine.id_mye))return j.level="categories",void Te();try{De()}catch(e){}j.level="brands",j.brand=j.model=j.year=j.engine=null,he()}}else alert("Catálogo OEM próximamente. Por favor usa el modo Local o Shop Supplies.")}},Re(),se(),function(){var a="nexus:years-all",t=sessionStorage.getItem(a);if(t){var n=JSON.parse(t),o=n.data||n||[];if(!o.length){o=[];for(var i=2026;i>=1990;i--)o.push({id_year:i,year_car:i})}F.innerHTML=''+o.map((function(e){return'"})).join("")}else de(e+"/years-all").then((function(e){if(e){var t=e.data||e;if(!t||!t.length){t=[];for(var n=2026;n>=1990;n--)t.push({id_year:n,year_car:n})}sessionStorage.setItem(a,JSON.stringify(e)),F.innerHTML=''+t.map((function(e){return'"})).join("")}})).catch((function(){for(var e=[],a=2026;a>=1990;a--)e.push(a);F.innerHTML=''+e.map((function(e){return'"})).join("")}))}(),he()}else window.location.href="/pos/login";function se(){document.querySelectorAll("#modeToggle button").forEach((function(e){e.getAttribute("data-mode")===q?e.classList.add("is-active"):e.classList.remove("is-active")}))}function le(){if(!R){var e=JSON.parse(JSON.stringify(j));e.page=O,history.pushState(e,"","/pos/catalog")}}function de(e){V&&(V.abort(),V=null);var a={headers:t};return(0===e.indexOf("/pos/api/")&&-1!==e.indexOf("mode=")||-1!==e.indexOf("/years")||-1!==e.indexOf("/brands")||-1!==e.indexOf("/models")||-1!==e.indexOf("/engines")||-1!==e.indexOf("/categories")||-1!==e.indexOf("/groups")||-1!==e.indexOf("/part-types")||-1!==e.indexOf("/parts")||-1!==e.indexOf("/search"))&&(V=new AbortController,a.signal=V.signal),fetch(e,a).then((function(e){return 401===e.status?(localStorage.removeItem("pos_token"),window.location.href="/pos/login",null):e.json()})).catch((function(e){return"AbortError"===e.name||console.error("API error:",e),null}))}function ce(){l.classList.add("is-visible"),p.innerHTML="",m.style.display="none",m.innerHTML="",d.classList.remove("is-visible"),v.innerHTML="";var e=document.getElementById("diagLink");e&&"categories"!==j.level&&(e.style.display="none")}function ue(){l.classList.remove("is-visible")}function pe(e,a){c.textContent=e,u.textContent=a||"",d.classList.add("is-visible"),p.innerHTML="",m.style.display="none"}function me(e){return(parseFloat(e)||0).toFixed(2)}function ve(e){if(!e)return"";var a=document.createElement("div");return a.textContent=e,a.innerHTML}function ge(){var e=[];e.push({label:"Catalogo",action:"loadBrands"}),j.brand&&e.push({label:j.brand.name,action:"loadModels"}),j.model&&e.push({label:j.model.name,action:"loadYears"}),j.year&&e.push({label:String(j.year.year),action:"loadEngines"}),j.engine&&e.push({label:j.engine.name,action:"loadCategories"}),j.nxGroup?e.push({label:j.nxGroup.name,action:"loadNxSubgroups"}):j.category&&e.push({label:j.category.name,action:"loadGroups"}),j.nxSubgroup?e.push({label:j.nxSubgroup.name,action:"loadNxPartTypes"}):j.group&&e.push({label:j.group.name,action:"loadPartTypes"}),j.nxPartType?e.push({label:j.nxPartType.name,action:null}):j.partType&&e.push({label:j.partType.name,action:null});for(var a="",t=0;t0&&(a+='/'),t'+ve(e[t].label)+"":a+=''+ve(e[t].label)+"";n.innerHTML=a,n.querySelectorAll("[data-bc-action]").forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.bcAction;"loadBrands"===e?(ye(),he()):"loadModels"===e?(fe("models"),be()):"loadYears"===e?(fe("years"),xe()):"loadEngines"===e?(fe("engines"),Ee()):"loadCategories"===e?(fe("categories"),Te()):"loadGroups"===e?(fe("groups"),ke()):"loadPartTypes"===e?(fe("part_types"),Ie()):"loadNxSubgroups"===e?(fe("groups"),Se()):"loadNxPartTypes"===e&&(fe("part_types"),Le())}))}))}function ye(){j.level="brands",le(),j.brand=j.model=j.year=j.engine=j.category=j.group=j.partType=null,j.nxGroup=j.nxSubgroup=j.nxPartType=null}function fe(e){var a=["brands","models","years","engines","categories","groups","part_types","parts"].indexOf(e);if(a<=0)ye();else{j.level=e;for(var t=[null,["model"],["year"],["engine"],["category","nxGroup"],["group","nxSubgroup"],["partType","nxPartType"],null],n=a;n=0?"":"none"}))}}function he(){j.level="brands",le(),ge(),r.textContent="Selecciona una marca",_e(!0),ce();var a="nexus:brands:"+q,t=sessionStorage.getItem(a);if(t)return ue(),void function(e){if(!e||!e.data||!e.data.length)return e?void pe("Sin marcas","El catalogo no tiene marcas con partes disponibles."):void ze();p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.name_brand)+"
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.brand={id:parseInt(this.dataset.brandId),name:this.dataset.name},be()}))}))}(JSON.parse(t));de(e+"/brands?mode="+q).then((function(e){if(ue(),e&&e.data&&sessionStorage.setItem(a,JSON.stringify(e)),!e||!e.data||!e.data.length)return e?void pe("Sin marcas","El catalogo no tiene marcas con partes disponibles."):void ze();p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.name_brand)+"
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.brand={id:parseInt(this.dataset.brandId),name:this.dataset.name},be()}))}))}))}function be(){j.level="models",le(),ge(),r.textContent="Modelos de "+j.brand.name,_e(!0),ce(),de(e+"/models?brand_id="+j.brand.id).then((function(e){ue(),e&&e.data&&e.data.length?(p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.display_name||e.name_model)+"
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.model={id:parseInt(this.dataset.modelId),name:this.dataset.name},xe()}))}))):pe("Sin modelos","No hay modelos con partes para "+j.brand.name)}))}function xe(){j.level="years",le(),ge(),r.textContent=j.brand.name+" "+j.model.name+" — Anios",_e(!1),ce(),de(e+"/years?model_id="+j.model.id).then((function(e){ue(),e&&e.data&&e.data.length?(p.className="nav-grid nav-grid--years",p.innerHTML=e.data.map((function(e){return'
'+e.year_car+"
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.year={id:parseInt(this.dataset.yearId),year:parseInt(this.dataset.year)},Ee()}))}))):pe("Sin anios","No hay anios con partes para este modelo.")}))}function Ee(){j.level="engines",le(),ge(),r.textContent=j.brand.name+" "+j.model.name+" "+j.year.year+" — Motor",_e(!1),ce(),de(e+"/engines?model_id="+j.model.id+"&year_id="+j.year.id).then((function(e){if(ue(),e&&e.data&&e.data.length){if(1===e.data.length){var a=e.data[0];return j.engine={id_mye:a.id_mye,name:a.name_engine+(a.trim_level?" "+a.trim_level:"")},void Te()}p.className="nav-grid",p.innerHTML=e.data.map((function(e){var a=e.name_engine+(e.trim_level?" — "+e.trim_level:"");return'
'+ve(e.name_engine)+"
"+(e.trim_level?'
'+ve(e.trim_level)+"
":"")+"
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.engine={id_mye:parseInt(this.dataset.myeId),name:this.dataset.name},Te()}))}))}else pe("Sin motores","No hay configuraciones de motor para esta combinacion.")}))}function ke(){j.level="groups",le(),ge(),r.textContent=j.category.name,_e(!0),ce(),de(e+"/groups?mye_id="+j.engine.id_mye+"&category_id="+j.category.id).then((function(e){ue(),e&&e.data&&e.data.length?(p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.name)+'
'+e.part_count+" partes
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.group={id:parseInt(this.dataset.groupId),name:this.dataset.name},j.partType=null,Ie()}))}))):pe("Sin subcategorias","No hay subcategorias para "+j.category.name)}))}function Ie(){j.level="part_types",j.partType=null,le(),ge(),r.textContent=j.group.name,_e(!0),ce(),de(e+"/part-types?mye_id="+j.engine.id_mye+"&group_id="+j.group.id).then((function(e){if(ue(),e&&e.data&&e.data.length){if(1===e.data.length){var a=e.data[0];return j.partType={slug:a.slug,name:a.name},void Me(1)}p.className="nav-grid",p.innerHTML=e.data.map((function(e){var a=e.sample_image?'':"";return'
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.nxGroup={slug:this.dataset.slug,name:this.dataset.name},j.nxSubgroup=null,j.nxPartType=null,Se()}))}))):pe("Sin categorias Local","Ninguna parte de este vehiculo mapea al catalogo Local.")}))):(j.level="categories",le(),ge(),r.textContent="Categorias de partes",_e(!0),ce(),de(e+"/categories?mye_id="+j.engine.id_mye).then((function(e){ue(),e&&e.data&&e.data.length?(p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.name)+'
'+e.part_count+" partes
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.category={id:parseInt(this.dataset.catId),name:this.dataset.name},ke()}))}))):pe("Sin categorias","No hay partes catalogadas para este vehiculo.")})))}function Se(){j.level="groups",le(),ge(),r.textContent=j.nxGroup.name,_e(!0),ce(),de(e+"/groups?mode=local&mye_id="+j.engine.id_mye+"&category_slug="+encodeURIComponent(j.nxGroup.slug)).then((function(e){ue(),e&&e.data&&e.data.length?(p.className="nav-grid",p.innerHTML=e.data.map((function(e){return'
'+ve(e.name)+'
'+e.part_count+" partes
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.nxSubgroup={slug:this.dataset.slug,name:this.dataset.name},j.nxPartType=null,Le()}))}))):pe("Sin subcategorias","No hay subcategorias en "+j.nxGroup.name)}))}function Le(){j.level="part_types",j.nxPartType=null,le(),ge(),r.textContent=j.nxSubgroup.name,_e(!0),ce(),de(e+"/part-types?mode=local&mye_id="+j.engine.id_mye+"&group_slug="+encodeURIComponent(j.nxGroup.slug)+"&subgroup_slug="+encodeURIComponent(j.nxSubgroup.slug)).then((function(e){if(ue(),e&&e.data&&e.data.length){if(1===e.data.length){var a=e.data[0];return j.nxPartType={slug:a.slug,name:a.name},void Me(1)}p.className="nav-grid",p.innerHTML=e.data.map((function(e){var a=e.sample_image?'':"";return'
"})).join(""),p.querySelectorAll(".nav-card").forEach((function(e){e.addEventListener("click",(function(){j.nxPartType={slug:this.dataset.slug,name:this.dataset.name},Me(1)}))}))}else pe("Sin tipos de parte","No hay tipos de parte en "+j.nxSubgroup.name)}))}function Ce(a){j.level="parts",le(),O=a||1,ge(),r.textContent=j.nxPartType.name,_e(!1),ce(),p.innerHTML="",de(e+"/shop-supplies/parts?group_slug="+encodeURIComponent(j.nxGroup.slug)+"&subgroup_slug="+encodeURIComponent(j.nxSubgroup.slug)+"&part_type_slug="+encodeURIComponent(j.nxPartType.slug)+"&page="+O+"&per_page=30").then((function(e){ue(),e&&e.data&&e.data.length?(m.style.display="",m.innerHTML=e.data.map((function(e){var a;a=e.in_stock_network||e.bodega_count>0?''+e.bodega_count+" bodega"+(e.bodega_count>1?"s":"")+"":'Sin stock';var t=e.image_url?'':'',n=1===e.priority_tier?" part-card--tier1":2===e.priority_tier?" part-card--tier2":"",o="";if(e.manufacturer){var i=1===e.priority_tier?'★':"";o='
"})).join(""),m.querySelectorAll(".part-card").forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.partId;"string"==typeof e&&0===e.indexOf("inv:")||we(parseInt(e))}))})),e.pagination&&Be(e.pagination)}else pe("Sin partes","No hay partes en este grupo.")}))}function Be(e){if(!e||e.total_pages<=1)v.innerHTML="";else{var a="";e.page<=1?a+='':a+='',function(e,a){if(a<=7){for(var t=[],n=1;n<=a;n++)t.push(n);return t}var o=[1];e>3&&o.push("...");for(var i=Math.max(2,e-1);i<=Math.min(a-1,e+1);i++)o.push(i);e...':t===e.page?a+='":a+='"})),e.page>=e.total_pages?a+='':a+='',v.innerHTML=a,v.querySelectorAll("[data-page]").forEach((function(e){e.addEventListener("click",(function(){g.scrollTo({top:0,behavior:"smooth"}),Me(parseInt(this.dataset.page))}))}))}}function we(a){_.innerHTML='
'})).join(""),M.textContent="$"+me(a),B.textContent="$"+me(t),w.textContent="$"+me(a+t)}function $e(){var e=T.classList.toggle("open");S.classList.toggle("open",e)}function Ve(){$.length&&(localStorage.setItem("pos_cart",JSON.stringify($)),window.location.href="/pos/sale")}function ze(){document.getElementById("offlineBanner").style.display="",document.getElementById("offlineBannerText").innerHTML="Modo offline — Mostrando solo tu inventario local.",r.textContent="Inventario local",_e(!1),pe("Sin conexion al catalogo","Verifica tu conexion. El catalogo TecDoc requiere acceso al servidor central.")}function Je(){var e=W.value;if(e){var a=F.options[F.selectedIndex].text,t=Y.options[Y.selectedIndex].text,n=Q.options[Q.selectedIndex].text,o=W.options[W.selectedIndex].text;j.brand={id:parseInt(Y.value),name:t},j.model={id:parseInt(Q.value),name:n},j.year={id:parseInt(F.value),year:a},j.engine={id_mye:parseInt(e),name:o},j.level="categories",le(),Te(),setTimeout((function(){var e=document.getElementById("pageBody");e&&e.scrollIntoView({behavior:"smooth",block:"start"})}),300)}}function De(){F.value="",Y.innerHTML='',Q.innerHTML='',W.innerHTML='',Y.disabled=!0,Q.disabled=!0,W.disabled=!0,X.style.display="none",j.level="brands",j.brand=null,j.model=null,j.year=null,j.engine=null,j.category=null,j.group=null,j.partType=null,j.nxGroup=null,j.nxSubgroup=null,j.nxPartType=null,O=1,le(),he()}function Ze(e,a){ae.style.display=e?"":"none",ae.textContent=e,ae.style.color=a?"var(--color-error)":"var(--color-text-muted)"}function Fe(){var a=(ee.value||"").trim().toUpperCase();!a||a.length<5?Ze("Ingresa una placa valida (Ej: ABC-1234).",!0):(Ze("Buscando placa...",!1),de(e+"/plate/"+encodeURIComponent(a)).then((function(e){if(e)if(e.error)Ze(e.error,!0);else{if(!e.found)return ae.style.display="",ae.innerHTML='Placa no registrada. Registrar vehiculo',void(ae.style.color="var(--color-warning, #e6a700)");var a=[];e.year&&a.push(e.year),e.make&&a.push(e.make),e.model&&a.push(e.model);var t=a.join(" ")||"Vehiculo encontrado",n=e.catalog_match;n&&n.brand_id?(Ze(t+" — Cargando catalogo...",!1),Qe(n,e)):Ze(t+" — No encontrado en el catalogo TecDoc.",!1)}else Ze("Error de conexion al buscar placa.",!0)})))}function Ye(){var a=(oe.value||"").trim().toUpperCase();17===a.length?(We("Decodificando VIN...",!1),de(e+"/vin/"+encodeURIComponent(a)).then((function(e){if(e)if(!e.error||e.make){var a=[];e.year&&a.push(e.year),e.make&&a.push(e.make),e.model&&a.push(e.model),e.engine&&a.push(e.engine);var t=a.join(" ")||"Vehiculo no reconocido",n=e.catalog_match;n&&n.brand_id?(We(t+" — Encontrado en catalogo, cargando...",!1),Qe(n,e)):We(t+" — No encontrado en el catalogo TecDoc.",!1)}else We(e.error,!0);else We("Error de conexion al decodificar VIN.",!0)}))):We("El VIN debe tener exactamente 17 caracteres.",!0)}function Qe(a,t){a.year_id&&(F.value=String(a.year_id),de(e+"/brands?year_id="+a.year_id).then((function(t){var n=t&&(t.data||t);n&&(Y.innerHTML=''+n.map((function(e){return'"})).join(""),Y.disabled=!1,X.style.display="",a.brand_id&&(Y.value=String(a.brand_id),de(e+"/models?brand_id="+a.brand_id+"&year_id="+a.year_id).then((function(t){var n=t&&(t.data||t);n&&(Q.innerHTML=''+n.map((function(e){return'"})).join(""),Q.disabled=!1,a.model_id&&(Q.value=String(a.model_id),de(e+"/engines?model_id="+a.model_id+"&year_id="+a.year_id).then((function(e){var t=e&&(e.data||e);t&&(W.innerHTML=''+t.map((function(e){var a=e.name_engine+(e.trim_level?" ("+e.trim_level+")":"");return'"})).join(""),W.disabled=!1,a.id_mye?(W.value=String(a.id_mye),Je(),We("Vehiculo cargado desde VIN.",!1)):1===t.length?(W.value=t[0].id_mye,Je(),We("Vehiculo cargado desde VIN.",!1)):We("Selecciona el motor para continuar.",!1))}))))}))))})))}function We(e,a){ie.style.display=e?"":"none",ie.textContent=e,ie.style.color=a?"var(--color-error)":"var(--color-text-muted)"}}();