const { useState, useEffect, useMemo, useRef, useCallback } = React; /* ═══════════════════════════════════════════════════ BRAND ═══════════════════════════════════════════════════ */ const BRAND = { nombre: "iCompany", registered: true, direccion: "Panamericana Km 52,5, Colectora Este Ramal Pilar, Edificio Meridiano Local 15", ciudad: "B1630 Pilar Centro, Provincia de Buenos Aires", telefono: "+54 9 11 2648-1136", instagram: "@icompany.pilar", whatsappNum: "5491126481136", logoUrl: "/assets/logo.png", qrLlegar: "/assets/qr_llegar.png", qrInstagram: "/assets/qr_instagram.png", qrWhatsapp: "/assets/qr_whatsapp.png", }; /* ═══════════════════════════════════════════════════ FRASES BÍBLICAS (Proverbios y Eclesiastés - dominio público) ═══════════════════════════════════════════════════ */ const FRASES = [ { texto: "El que trabaja su tierra se saciará de pan, mas el que sigue a los vagos es falto de entendimiento.", ref: "Proverbios 12:11" }, { texto: "Los pensamientos del diligente ciertamente tienden a la abundancia; mas todo el que se apresura alocadamente, de cierto va a la pobreza.", ref: "Proverbios 21:5" }, { texto: "Todo lo que te viniere a la mano para hacer, hazlo según tus fuerzas.", ref: "Eclesiastés 9:10" }, { texto: "El alma del perezoso desea, y nada alcanza; mas el alma de los diligentes será prosperada.", ref: "Proverbios 13:4" }, { texto: "El hombre que confía en sus amigos, que se inclina hacia ellos, verá que los ojos de sus hijos desfallecen.", ref: "Proverbios 17:17" }, { texto: "La honra del hombre está en responder con sabiduría, y el necio que calla es tenido por sabio.", ref: "Proverbios 17:28" }, { texto: "El corazón alegre constituye buen remedio; mas el espíritu triste seca los huesos.", ref: "Proverbios 17:22" }, { texto: "Como ciudad derribada y sin muro es el hombre cuyo espíritu no tiene rienda.", ref: "Proverbios 25:28" }, { texto: "No te jactes del día de mañana; porque no sabes qué dará de sí el día.", ref: "Proverbios 27:1" }, { texto: "El que es fiel en lo muy poco, también en lo más es fiel; y el que en lo muy poco es injusto, también en lo más es injusto.", ref: "Lucas 16:10" }, { texto: "El hierro se afila con el hierro, y el hombre en el trato con el hombre.", ref: "Proverbios 27:17" }, { texto: "Mejor es el pobre que camina en su integridad que el de perversos labios y fatuo.", ref: "Proverbios 19:1" }, { texto: "Dios ha hecho que todo sea hermoso a su tiempo; y ha puesto eternidad en el corazón de ellos.", ref: "Eclesiastés 3:11" }, { texto: "Fíate de Jehová de todo tu corazón, y no te apoyes en tu propia prudencia.", ref: "Proverbios 3:5" }, { texto: "La sabiduría es lo principal; adquiere sabiduría, y sobre todas tus posesiones adquiere inteligencia.", ref: "Proverbios 4:7" }, { texto: "Una respuesta gentil aparta el furor, mas la palabra áspera hace subir la ira.", ref: "Proverbios 15:1" }, { texto: "El inicio de la sabiduría es el temor del Señor, y conocer al Santo es la inteligencia.", ref: "Proverbios 9:10" }, { texto: "La diligencia del hombre le hace estar delante de los reyes.", ref: "Proverbios 22:29" }, { texto: "El corazón del entendido adquiere sabiduría, y el oído de los sabios busca la ciencia.", ref: "Proverbios 18:15" }, { texto: "No digas a tu prójimo: Anda, y vuelve, y mañana te daré; cuando tienes contigo qué darle.", ref: "Proverbios 3:28" }, { texto: "En toda labor hay fruto; mas las vanas palabras de los labios empobrecen.", ref: "Proverbios 14:23" }, { texto: "El que tiene en poco la disciplina menosprecia su alma; mas el que escucha la corrección tiene entendimiento.", ref: "Proverbios 15:32" }, { texto: "Honra a Jehová con tus bienes, y con las primicias de todos tus frutos.", ref: "Proverbios 3:9" }, { texto: "El orgullo del hombre le abate; pero al humilde de espíritu sustenta la honra.", ref: "Proverbios 29:23" }, ]; /* ═══════════════════════════════════════════════════ SUPABASE CONFIG ═══════════════════════════════════════════════════ */ const SB_URL = "https://ugeahpbnvbczjymrwdvg.supabase.co"; const SB_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVnZWFocGJudmJjemp5bXJ3ZHZnIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzYxODU5MzIsImV4cCI6MjA5MTc2MTkzMn0.ybXdBiYpoOT_-kmyFXBQHLoNzel5tPwMcTq8wwJmskQ"; const SB_HDR = {"Content-Type":"application/json","apikey":SB_KEY,"Authorization":`Bearer ${SB_KEY}`}; // Tabla por clave lógica const SK = { usuarios:"ic_usuarios", ventas:"ic_ventas", ordenes:"ic_ordenes", clientes:"ic_clientes", catalogo:"ic_catalogo", cotiz:"ic_cotiz", movCaja:"ic_movcaja", }; // Cada tabla tiene una sola fila con id="singleton" y data=jsonb const sg = async(tabla)=>{ try{ const r=await fetch(`${SB_URL}/rest/v1/${tabla}?id=eq.singleton&select=data`,{headers:SB_HDR}); const j=await r.json(); return j&&j[0]?j[0].data:null; }catch{return null;} }; const ss = async(tabla,val)=>{ try{ await fetch(`${SB_URL}/rest/v1/${tabla}`,{ method:"POST", headers:{...SB_HDR,"Prefer":"resolution=merge-duplicates"}, body:JSON.stringify({id:"singleton",data:val}), }); }catch{} }; /* ═══════════════════════════════════════════════════ MÉTODOS DE PAGO (8 métodos) ═══════════════════════════════════════════════════ */ const METODOS = [ {id:"efectivo", label:"Efectivo", moneda:"pesos",caja:"pesos", esEfectivo:true }, {id:"usd", label:"USD", moneda:"usd", caja:"usd", esEfectivo:false}, {id:"mp_ag", label:"MP AG", moneda:"pesos",caja:"ninguna",esEfectivo:false}, {id:"mp_ic", label:"MP IC", moneda:"pesos",caja:"ninguna",esEfectivo:false}, {id:"ic_sa", label:"IC SA", moneda:"pesos",caja:"ninguna",esEfectivo:false}, {id:"tranf_dir", label:"Tranf 3ro directo", moneda:"pesos",caja:"ninguna",esEfectivo:false}, {id:"tranf_usd", label:"Tranf 3ro Usd", moneda:"usd", caja:"ninguna",esEfectivo:false}, {id:"crypto", label:"Crypto (USDT)", moneda:"usd", caja:"ninguna",esEfectivo:false}, ]; const mById = id => METODOS.find(m=>m.id===id); /* ═══════════════════════════════════════════════════ CATEGORÍAS QUE TIENEN DESCUENTO EFECTIVO Solo Accesorios, Reparaciones, Servicios — NO Productos/iPhone ═══════════════════════════════════════════════════ */ const CATS_CON_DESCUENTO = ["Baterias","Cables","Cargadores","Fundas","Pantallas","Templados","camara","otro repuesto","pin de carga","vidrio trasero"]; const CATS_SIN_DESCUENTO = ["iPhone","Otro"]; const itemTieneDescuento = (item) => CATS_CON_DESCUENTO.includes(item.cat); /* ═══════════════════════════════════════════════════ CATÁLOGO INICIAL (413 productos de tu base) ═══════════════════════════════════════════════════ */ const CATALOGO_INICIAL = [{"id":"db1","nombre":"pantalla iphone 7","precio":58.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db2","nombre":"pantalla iphone 8","precio":58.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db3","nombre":"pantalla iphoneSE","precio":68.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db4","nombre":"pantalla iphone X","precio":79.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db5","nombre":"pantalla iphone Xr","precio":79.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db6","nombre":"pantalla iphone XS","precio":79.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db7","nombre":"pantalla iphone Xs Max","precio":92.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db8","nombre":"pantalla iphone 11","precio":106.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db9","nombre":"pantalla iphone 11Pro","precio":130.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db10","nombre":"pantalla iphone 11Pro Max","precio":118.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db11","nombre":"pantalla iphone 12mini","precio":167.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db12","nombre":"pantalla iphone 12/12Pro","precio":183.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db13","nombre":"pantalla iphone 12Pro Max","precio":210.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db14","nombre":"pantalla iphone 13mini","precio":157.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db15","nombre":"pantalla iphone 13","precio":131.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db16","nombre":"pantalla iphone 13 Pro","precio":210.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db17","nombre":"pantalla iphone 13 Pro Max","precio":233.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db18","nombre":"pantalla iphone 14","precio":180.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db19","nombre":"pantalla iphone 14 Plus","precio":210.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db20","nombre":"pantalla iphone 14 Pro","precio":223.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db21","nombre":"pantalla iphone 14 Pro Max","precio":260.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db22","nombre":"pantalla iphone 15","precio":210.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db23","nombre":"pantalla iphone 15 Pro","precio":250.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db24","nombre":"pantalla iphone 15 Pro Max","precio":263.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db25","nombre":"pantalla iphone 16","precio":0.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db26","nombre":"pantalla iphone 16 Pro","precio":0.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db27","nombre":"pantalla iphone 16 Pro Max","precio":0.0,"costo":0.0,"stock":0,"cat":"Pantallas","stockMin":1},{"id":"db30","nombre":"bateria iphone 8","precio":68.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db31","nombre":"bateria iphone 8 Plus","precio":68.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db32","nombre":"bateria iphone SE 2020","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db33","nombre":"bateria iphone SE 2022","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db34","nombre":"bateria iphone X","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db35","nombre":"bateria iphone Xr","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db36","nombre":"bateria iphone Xs","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db37","nombre":"bateria iphone XS Max","precio":75.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db38","nombre":"bateria iphone 11","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db39","nombre":"bateria iphone 11Pro","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db40","nombre":"bateria iphone 11 Pro Max","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db41","nombre":"bateria iphone 12 mini","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db42","nombre":"bateria iphone 12/12 Pro","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db43","nombre":"bateria iphone 12 Pro Max","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db44","nombre":"bateria iphone 13mini","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db45","nombre":"bateria iphone 13","precio":110.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db46","nombre":"bateria iphone 13 Pro","precio":120.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db47","nombre":"bateria iphone 13 Pro Max","precio":125.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db48","nombre":"bateria iphone 14","precio":105.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db49","nombre":"bateria iphone 14 Plus","precio":120.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db50","nombre":"bateria iphone 14 Pro","precio":129.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db51","nombre":"bateria iphone 14 Pro Max","precio":132.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db52","nombre":"bateria iphone 15","precio":160.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db53","nombre":"bateria iphone 15 Pro","precio":160.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db54","nombre":"bateria iphone 15 Pro Max","precio":160.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db55","nombre":"bateria iphone 16","precio":0.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db56","nombre":"bateria iphone 16 Plus","precio":0.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db57","nombre":"bateria iphone 16 Pro","precio":0.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db58","nombre":"bateria iphone 16 Pro Max","precio":0.0,"costo":0.0,"stock":0,"cat":"Baterias","stockMin":1},{"id":"db60","nombre":"vidrio trasero iphone 8","precio":40.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db61","nombre":"vidrio trasero iphone 8 Plus","precio":40.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db62","nombre":"vidrio trasero iphone SE","precio":60.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db63","nombre":"vidrio trasero iphone X","precio":72.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db64","nombre":"vidrio trasero iphone Xr","precio":72.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db65","nombre":"vidrio trasero iphone Xs","precio":72.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db66","nombre":"vidrio trasero iphone XS Max","precio":80.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db67","nombre":"vidrio trasero iphone 11","precio":90.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db68","nombre":"vidrio trasero iphone 11 Pro","precio":90.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db69","nombre":"vidrio trasero iphone 11 Pro Max","precio":100.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db70","nombre":"vidrio trasero iphone 12mini","precio":100.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db71","nombre":"vidrio trasero iphone 12","precio":120.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db72","nombre":"vidrio trasero iphone 12Pro","precio":117.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db73","nombre":"vidrio trasero iphone 12Pro Max","precio":117.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db74","nombre":"vidrio trasero iphone 13mini","precio":110.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db75","nombre":"vidrio trasero iphone 13","precio":110.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db76","nombre":"vidrio trasero iphone 13 Pro","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db77","nombre":"vidrio trasero iphone 13 Pro Max","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db78","nombre":"vidrio trasero iphone 14","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db79","nombre":"vidrio trasero iphone 14 Plus","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db80","nombre":"vidrio trasero iphone 14 Pro","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db81","nombre":"vidrio trasero iphone 14Pro Max","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db82","nombre":"vidrio trasero iphone 15","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db83","nombre":"vidrio trasero iphone 15 Pro","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db84","nombre":"vidrio trasero iphone 15 Pro Max","precio":124.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db85","nombre":"vidrio trasero iphone 16","precio":146.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db86","nombre":"vidrio trasero iphone 16 Plus","precio":146.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db87","nombre":"vidrio trasero iphone 16 Pro","precio":146.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db88","nombre":"vidrio trasero iphone 16 Pro Max","precio":146.0,"costo":0.0,"stock":0,"cat":"vidrio trasero","stockMin":1},{"id":"db93","nombre":"carcasa iphone Xr","precio":79.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db94","nombre":"carcasa iphone Xs","precio":79.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db95","nombre":"carcasa iphone XSMax","precio":92.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db96","nombre":"carcasa iphone 11","precio":106.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db97","nombre":"carcasa iphone 11 Pro","precio":130.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db98","nombre":"carcasa iphone 11 Pro Max","precio":118.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db99","nombre":"carcasa iphone 12mini","precio":167.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db100","nombre":"carcasa iphone 12","precio":182.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db101","nombre":"carcasa iphone 12 Pro","precio":182.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db102","nombre":"carcasa iphone 12 Pro Max","precio":209.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db103","nombre":"carcasa iphone 13mini","precio":157.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db104","nombre":"carcasa iphone 13","precio":132.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db105","nombre":"carcasa iphone 13 Pro","precio":209.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db106","nombre":"carcasa iphone 13 Pro Max","precio":233.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db107","nombre":"carcasa iphone 14","precio":180.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db108","nombre":"carcasa iphone 14 Plus","precio":209.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db109","nombre":"carcasa iphone 14 Pro","precio":223.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db110","nombre":"carcasa iphone 14 Pro Max","precio":260.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db111","nombre":"carcasa iphone 15","precio":209.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db112","nombre":"carcasa iphone 15 Pro","precio":250.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db113","nombre":"carcasa iphone 15 Pro Max","precio":263.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db114","nombre":"carcasa iphone 16","precio":0.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db115","nombre":"carcasa iphone 16 Pro","precio":0.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db116","nombre":"carcasa iphone 16 Pro Max","precio":0.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db119","nombre":"lente/parlante iphone 8","precio":42.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db120","nombre":"lente/parlante iphone SE","precio":42.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db121","nombre":"lente/parlante iphone Xr","precio":58.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db122","nombre":"lente/parlante iphone Xs","precio":58.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db123","nombre":"lente/parlante iphone XS Max","precio":74.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db124","nombre":"lente/parlante iphone 11","precio":83.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db125","nombre":"lente/parlante iphone 11 Pro","precio":92.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db126","nombre":"lente/parlante iphone 11 Pro Max","precio":92.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db127","nombre":"lente/parlante iphone 12 mini","precio":100.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db128","nombre":"lente/parlante iphone 12/12Pro","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db129","nombre":"lente/parlante iphone 12 Pro Max","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db130","nombre":"lente/parlante iphone 13 mini","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db131","nombre":"lente/parlante iphone 13","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db132","nombre":"lente/parlante iphone 13 Pro","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db133","nombre":"lente/parlante iphone 13 Pro Max","precio":112.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db134","nombre":"lente/parlante iphone 14","precio":120.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db135","nombre":"lente/parlante iphone 14 Plus","precio":120.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db136","nombre":"lente/parlante iphone 14 Pro","precio":147.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db137","nombre":"lente/parlante iphone 14 Pro Max","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db138","nombre":"lente/parlante iphone 15","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db139","nombre":"lente/parlante iphone 15 Pro","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db140","nombre":"lente/parlante iphone 15 Pro Max","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db141","nombre":"lente/parlante iphone 16","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db142","nombre":"lente/parlante iphone 16 Pro","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db143","nombre":"lente/parlante iphone 16 Pro Max","precio":150.0,"costo":0.0,"stock":0,"cat":"otro repuesto","stockMin":1},{"id":"db148","nombre":"pin de carga iphone 8","precio":100.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db149","nombre":"pin de carga iphoneSE","precio":112.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db150","nombre":"pin de carga iphone Xr","precio":112.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db151","nombre":"pin de carga iphone Xs","precio":112.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db152","nombre":"pin de carga iphone Xs Max","precio":112.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db153","nombre":"pin de carga iphone 11","precio":170.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db154","nombre":"pin de carga iphone 11 Pro","precio":170.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db155","nombre":"pin de carga iphone 11 Pro Max","precio":170.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db156","nombre":"pin de carga iphone 12 Mini","precio":170.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db157","nombre":"pin de carga iphone 12/12 Pro","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db158","nombre":"pin de carga iphone 12 Pro Max","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db159","nombre":"pin de carga iphone 13mini","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db160","nombre":"pin de carga iphone 13","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db161","nombre":"pin de carga iphone 13 Pro","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db162","nombre":"pin de carga iphone 13 Pro Max","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db163","nombre":"pin de carga iphone 14","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db164","nombre":"pin de carga iphone 14 Plus","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db165","nombre":"pin de carga iphone 14 Pro","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db166","nombre":"pin de carga iphone 14 Pro Max","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db167","nombre":"pin de carga iphone 15","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db168","nombre":"pin de carga iphone 15 Pro","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db169","nombre":"pin de carga iphone 15 Pro Max","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db170","nombre":"pin de carga iphone 16","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db171","nombre":"pin de carga iphone 16 Plus","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db172","nombre":"pin de carga iphone 16 Pro","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db173","nombre":"pin de carga iphone 16 Pro Max","precio":175.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db177","nombre":"cámara principal iphone 8","precio":100.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db178","nombre":"cámara principal iphone SE","precio":88.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db179","nombre":"cámara principal iphone Xr","precio":88.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db180","nombre":"cámara principal iphone Xs","precio":88.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db181","nombre":"cámara principal iphone Xs Max","precio":88.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db182","nombre":"cámara principal iphone 11","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db183","nombre":"cámara principal iphone 11 Pro","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db184","nombre":"cámara principal iphone 11 Pro Max","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db185","nombre":"cámara principal iphone 12 Mini","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db186","nombre":"cámara principal iphone 12","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db187","nombre":"cámara principal iphone 12/12 Pro","precio":134.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db188","nombre":"cámara principal iphone 12 Pro Max","precio":135.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db189","nombre":"cámara principal iphone 13 Mini","precio":0.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db190","nombre":"cámara principal iphone 13","precio":127.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db191","nombre":"cámara principal iphone 13 Pro","precio":190.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db192","nombre":"cámara principal iphone 13 Pro Max","precio":280.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db193","nombre":"cámara principal iphone 14","precio":190.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db194","nombre":"cámara principal iphone 14 Plus","precio":172.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db195","nombre":"cámara principal iphone 14 Pro","precio":190.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db196","nombre":"cámara principal iphone 14 Pro Max","precio":280.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db197","nombre":"cámara principal iphone 15","precio":190.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db198","nombre":"cámara principal iphone 15 Pro","precio":280.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db199","nombre":"cámara principal iphone 15 Pro Max","precio":190.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db200","nombre":"cámara principal iphone 16","precio":342.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db201","nombre":"cámara principal iphone 16 Plus","precio":0.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db202","nombre":"cámara principal iphone 16 Pro","precio":0.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db203","nombre":"cámara principal iphone 16 Pro Max","precio":0.0,"costo":0.0,"stock":0,"cat":"camara","stockMin":1},{"id":"db206","nombre":"cargador 20w OEM","precio":79.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db207","nombre":"cargador 40w OEM","precio":140.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db208","nombre":"cargador generico 5w","precio":38.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db209","nombre":"cargador generico 20w","precio":50.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db210","nombre":"cargador Mac 61w","precio":120.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db211","nombre":"Magsafe OEM","precio":105.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db212","nombre":"Magsafe generico","precio":60.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db213","nombre":"adaptador magsafe 2","precio":65.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db214","nombre":"robot porta cámara","precio":30.0,"costo":0.0,"stock":0,"cat":"Cargadores","stockMin":1},{"id":"db215","nombre":"robot magsafe","precio":80.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db216","nombre":"cable OEM Thunderbolt","precio":59.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db217","nombre":"cable lightning genérico","precio":32.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db218","nombre":"cable OEM lightning","precio":55.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db219","nombre":"cable OEM lightning 2mts","precio":60.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db220","nombre":"cable Anker/Ringke","precio":45.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db221","nombre":"cable usbc to lightning genérico","precio":40.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db222","nombre":"cable OEM usbc to lightning","precio":68.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db223","nombre":"cable OEM usbc","precio":60.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db224","nombre":"cable usbc genérico","precio":40.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db225","nombre":"usb y usbc watch OEM","precio":70.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db226","nombre":"cable OEM original usbc 2mts","precio":75.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db227","nombre":"cable genérico usbc 2mts","precio":40.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db228","nombre":"adaptador Mac Usb + Usbc + HDMI","precio":67.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db229","nombre":"cable adaptador Red a usbC","precio":35.0,"costo":8.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db230","nombre":"cable adaptador arg Macbook","precio":52.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db231","nombre":"cable Magsafe 3","precio":80.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db232","nombre":"cable enchufe viaje (USB,USBC)","precio":60.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db233","nombre":"ficha patas Argentinas","precio":30.0,"costo":0.0,"stock":0,"cat":"Cables","stockMin":1},{"id":"db235","nombre":"Funda puntera transparente iphone 7/8","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db236","nombre":"Funda puntera transparente iphone SE","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db237","nombre":"Funda puntera transparente iphone X/Xs","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db238","nombre":"Funda puntera transparente iphone Xr/11","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db239","nombre":"Funda puntera transparente iphone XsMax/11PM","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db240","nombre":"Funda puntera transparente iphone 12mini","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db241","nombre":"Funda puntera transparente iphone 12/12P","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db242","nombre":"Funda puntera transparente iphone 12PM","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db243","nombre":"Funda puntera transparente iphone 13mini","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db244","nombre":"Funda puntera transparente iphone 13/13P","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db245","nombre":"Funda puntera transparente iphone 13PM","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db246","nombre":"Funda puntera transparente iphone 14","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db247","nombre":"Funda puntera transparente iphone 14Plus","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db248","nombre":"Funda puntera transparente iphone 14P","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db249","nombre":"Funda puntera transparente iphone 14PM","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db250","nombre":"Funda puntera transparente iphone 15+","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db252","nombre":"Funda fotosensible iphone 11","precio":15.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db253","nombre":"Funda fotosensible iphone 13","precio":24.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db254","nombre":"Funda fotosensible iphone 14PM","precio":24.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db256","nombre":"Funda Magsafe transparente","precio":22.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db257","nombre":"Funda Magsafe transparente iphone 11","precio":22.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db258","nombre":"Funda Magsafe transparente iphone 11P","precio":22.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db259","nombre":"Funda Magsafe transparente iphone 11PM","precio":22.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db260","nombre":"Funda Magsafe transparente iphone 12/12P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db261","nombre":"Funda Magsafe transparente iphone 12PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db262","nombre":"Funda Magsafe transparente iphone 13/16e","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db263","nombre":"Funda Magsafe transparente iphone 13mini","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db264","nombre":"Funda Magsafe transparente iphone 13P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db265","nombre":"Funda Magsafe transparente iphone 13PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db266","nombre":"Funda Magsafe transparente iphone 14","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db267","nombre":"Funda Magsafe transparente iphone 14Plus","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db268","nombre":"Funda Magsafe transparente iphone 14P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db269","nombre":"Funda Magsafe transparente iphone 14PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db270","nombre":"Funda Magsafe transparente iphone 15","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db271","nombre":"Funda Magsafe transparente iphone 15P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db272","nombre":"Funda Magsafe transparente iphone 15PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db273","nombre":"Funda Magsafe transparente iphone 16","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db274","nombre":"Funda Magsafe transparente iphone 15plus/16plus","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db275","nombre":"Funda Magsafe transparente iphone 16P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db276","nombre":"Funda Magsafe transparente iphone 16PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db277","nombre":"Funda Magsafe transparente iphone 17","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db278","nombre":"Funda Magsafe transparente iphone Air","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db279","nombre":"Funda Magsafe transparente iphone 17P","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db280","nombre":"Funda Magsafe transparente iphone 17PM","precio":40.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db282","nombre":"Funda ipad 10gen","precio":58.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db283","nombre":"Funda protector teclado M1","precio":25.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db284","nombre":"Llavero para airtag","precio":20.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db285","nombre":"soporte iman","precio":30.0,"costo":0.0,"stock":0,"cat":"Fundas","stockMin":1},{"id":"db287","nombre":"templado 5D 7/8","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db288","nombre":"templado 5D 7plus/8plus","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db289","nombre":"templado 5D Xr/11","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db290","nombre":"templado 5D X/Xs/11Pro","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db291","nombre":"templado 5D Xsmax/11Pro Max","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db292","nombre":"templado 5D 12mini","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db293","nombre":"templado 5D 12/12P","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db294","nombre":"templado 5D 12PM","precio":20.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db295","nombre":"templado 5D 13mini","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db296","nombre":"templado 5D 13/13P/14/16e","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db297","nombre":"templado 5D 13PM/14plus","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db298","nombre":"templado 5D 14P/14PM","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db299","nombre":"templado 5D 15/16","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db300","nombre":"templado 5D 15P","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db301","nombre":"templado 5D 15/16plus","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db302","nombre":"templado 5D 15PM","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db303","nombre":"templado 5D 16P/17","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db304","nombre":"templado 5D 16PM","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db305","nombre":"templado 5D Air","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db306","nombre":"templado 5D 17P","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db307","nombre":"templado 5D 17PM","precio":45.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db309","nombre":"templado común standard","precio":16.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db311","nombre":"protector cámara 5D","precio":25.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db314","nombre":"templado para ipad","precio":52.0,"costo":0.0,"stock":0,"cat":"Templados","stockMin":1},{"id":"db317","nombre":"airpods 2da gen","precio":230.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db318","nombre":"airpods 3ra gen","precio":320.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db319","nombre":"airpods Pro 2","precio":300.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db320","nombre":"airpods 4","precio":280.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db321","nombre":"earpods","precio":52.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db322","nombre":"airtag","precio":60.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db323","nombre":"atril MacBook","precio":45.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db324","nombre":"Battery Pack","precio":0.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db325","nombre":"Pencil Usb C","precio":200.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db326","nombre":"Pencil 1era gen","precio":200.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db327","nombre":"Pencil 2da gen","precio":0.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db328","nombre":"Magic Mouse","precio":0.0,"costo":0.0,"stock":0,"cat":"Otro","stockMin":1},{"id":"db330","nombre":"pin/restauración/parlantes iphone 8","precio":28.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db331","nombre":"pin/restauración/parlantes iphone SE/X","precio":35.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db332","nombre":"pin/restauración/parlantes iphone Xr/11","precio":38.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db333","nombre":"pin/restauración/parlantes iphone 12","precio":52.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db334","nombre":"pin/restauración/parlantes iphone 13/macbook","precio":75.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db335","nombre":"pin/restauración/parlantes iphone 14","precio":75.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db336","nombre":"pin/restauración/parlantes iphone 15","precio":75.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db337","nombre":"pin/restauración/parlantes iphone 16","precio":85.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db338","nombre":"pin/restauración/parlantes iphone 17","precio":85.0,"costo":0.0,"stock":0,"cat":"pin de carga","stockMin":1},{"id":"db340","nombre":"iPhone X 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db341","nombre":"iPhone X 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db342","nombre":"iPhone XR 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db343","nombre":"iPhone XR 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db344","nombre":"iPhone XR 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db345","nombre":"iPhone XS 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db346","nombre":"iPhone XS 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db347","nombre":"iPhone XS 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db348","nombre":"iPhone XS Max 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db349","nombre":"iPhone XS Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db350","nombre":"iPhone XS Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db351","nombre":"iPhone 11 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db352","nombre":"iPhone 11 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db353","nombre":"iPhone 11 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db354","nombre":"iPhone 11 Pro 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db355","nombre":"iPhone 11 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db356","nombre":"iPhone 11 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db357","nombre":"iPhone 11 Pro Max 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db358","nombre":"iPhone 11 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db359","nombre":"iPhone 11 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db360","nombre":"iPhone SE 2da gen 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db361","nombre":"iPhone SE 2da gen 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db362","nombre":"iPhone SE 2da gen 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db363","nombre":"iPhone 12 mini 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db364","nombre":"iPhone 12 mini 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db365","nombre":"iPhone 12 mini 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db366","nombre":"iPhone 12 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db367","nombre":"iPhone 12 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db368","nombre":"iPhone 12 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db369","nombre":"iPhone 12 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db370","nombre":"iPhone 12 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db371","nombre":"iPhone 12 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db372","nombre":"iPhone 12 Pro Max 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db373","nombre":"iPhone 12 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db374","nombre":"iPhone 12 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db375","nombre":"iPhone 13 mini 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db376","nombre":"iPhone 13 mini 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db377","nombre":"iPhone 13 mini 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db378","nombre":"iPhone 13 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db379","nombre":"iPhone 13 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db380","nombre":"iPhone 13 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db381","nombre":"iPhone 13 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db382","nombre":"iPhone 13 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db383","nombre":"iPhone 13 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db384","nombre":"iPhone 13 Pro 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db385","nombre":"iPhone 13 Pro Max 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db386","nombre":"iPhone 13 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db387","nombre":"iPhone 13 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db388","nombre":"iPhone 13 Pro Max 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db389","nombre":"iPhone SE 3ra gen 64GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db390","nombre":"iPhone SE 3ra gen 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db391","nombre":"iPhone SE 3ra gen 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db392","nombre":"iPhone 14 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db393","nombre":"iPhone 14 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db394","nombre":"iPhone 14 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db395","nombre":"iPhone 14 Plus 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db396","nombre":"iPhone 14 Plus 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db397","nombre":"iPhone 14 Plus 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db398","nombre":"iPhone 14 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db399","nombre":"iPhone 14 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db400","nombre":"iPhone 14 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db401","nombre":"iPhone 14 Pro 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db402","nombre":"iPhone 14 Pro Max 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db403","nombre":"iPhone 14 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db404","nombre":"iPhone 14 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db405","nombre":"iPhone 14 Pro Max 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db406","nombre":"iPhone 15 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db407","nombre":"iPhone 15 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db408","nombre":"iPhone 15 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db409","nombre":"iPhone 15 Plus 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db410","nombre":"iPhone 15 Plus 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db411","nombre":"iPhone 15 Plus 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db412","nombre":"iPhone 15 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db413","nombre":"iPhone 15 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db414","nombre":"iPhone 15 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db415","nombre":"iPhone 15 Pro 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db416","nombre":"iPhone 15 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db417","nombre":"iPhone 15 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db418","nombre":"iPhone 15 Pro Max 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db419","nombre":"iPhone 16 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db420","nombre":"iPhone 16 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db421","nombre":"iPhone 16 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db422","nombre":"iPhone 16 Plus 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db423","nombre":"iPhone 16 Plus 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db424","nombre":"iPhone 16 Plus 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db425","nombre":"iPhone 16 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db426","nombre":"iPhone 16 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db427","nombre":"iPhone 16 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db428","nombre":"iPhone 16 Pro 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db429","nombre":"iPhone 16 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db430","nombre":"iPhone 16 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db431","nombre":"iPhone 16 Pro Max 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db432","nombre":"iPhone 17 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db433","nombre":"iPhone 17 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db434","nombre":"iPhone 17 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db435","nombre":"iPhone 17 Plus 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db436","nombre":"iPhone 17 Plus 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db437","nombre":"iPhone 17 Plus 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db438","nombre":"iPhone 17 Pro 128GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db439","nombre":"iPhone 17 Pro 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db440","nombre":"iPhone 17 Pro 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db441","nombre":"iPhone 17 Pro 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db442","nombre":"iPhone 17 Pro Max 256GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db443","nombre":"iPhone 17 Pro Max 512GB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1},{"id":"db444","nombre":"iPhone 17 Pro Max 1TB","precio":0.0,"costo":0.0,"stock":0,"cat":"iPhone","stockMin":1}]; /* ═══════════════════════════════════════════════════ HELPERS ═══════════════════════════════════════════════════ */ const usd = n=>`USD ${Number(n).toFixed(2)}`; const ars = (n,c)=>c?`$${Math.round(n*c).toLocaleString("es-AR")}`:`$${Math.round(n).toLocaleString("es-AR")}`; const newId = ()=>Date.now().toString(36)+Math.random().toString(36).slice(2,5); const todayStr = ()=>new Date().toISOString().slice(0,10); const fmtDate = iso=>new Date(iso).toLocaleString("es-AR",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"}); const fmtDay = iso=>new Date(iso).toLocaleDateString("es-AR",{day:"2-digit",month:"2-digit",year:"2-digit"}); const monthsAgo=(iso,n)=>new Date(iso)>=new Date(Date.now()-n*30*24*3600*1000); const fraseDia = ()=>FRASES[new Date().getHours() % FRASES.length]; /* ═══════════════════════════════════════════════════ ESTADOS ÓRDENES ═══════════════════════════════════════════════════ */ const ESTADOS = ["Señado","Listo para retirar","Entregado"]; const ESTADO_COLOR = {"Señado":"#f59e0b","Listo para retirar":"#10b981","Entregado":"#64748b"}; /* ═══════════════════════════════════════════════════ DESIGN SYSTEM — MINIMALISTA CLARO ═══════════════════════════════════════════════════ */ const C = { bg:"#f8f9fb", surface:"#ffffff", card:"#ffffff", border:"#e8ecf0", borderHi:"#1a1a2e", text:"#1a1a2e", muted:"#8892a4", faint:"#f0f2f5", accent:"#1a1a2e", accentSoft:"#1a1a2e15", green:"#059669", red:"#dc2626", amber:"#d97706", blue:"#2563eb", gold:"#b8860b", }; const inp = { background:"#f8f9fb", border:`1.5px solid ${C.border}`, borderRadius:8, color:C.text, padding:"9px 12px", fontSize:13, width:"100%", fontFamily:"'DM Sans',sans-serif", }; const Card=({children,style={}})=>(
{children}
); const STitle=({children,sm})=>(

{children}

); const Chip=({children,active,onClick,color=C.accent,small})=>( ); const Badge=({children,color=C.accent})=>( {children} ); const Btn=({children,onClick,color=C.accent,disabled,full,sm,outline})=>( ); const StatCard=({label,value,sub,color=C.accent,icon})=>(
{icon&&{icon}}

{label}

{value}

{sub&&

{sub}

}
); const MiniBar=({label,value,max,color=C.accent,right})=>(
{label} {right||usd(value)}
0?Math.min(100,(value/max)*100):0}%`,background:color,height:"100%",borderRadius:4,transition:"width .6s"}}/>
); const Row=({label,val,bold,accent,valColor})=>(
{label} {val}
); /* ═══════════════════════════════════════════════════ LOGO COMPONENT ═══════════════════════════════════════════════════ */ const Logo=({size=28,dark=true})=>(
iCompany{e.target.style.display="none";}}/> iCompany®
); /* ═══════════════════════════════════════════════════ FRASE MOTIVACIONAL ═══════════════════════════════════════════════════ */ const FraseBanner=()=>{ const f = fraseDia(); return(

"{f.texto}"

— {f.ref}

); }; /* ═══════════════════════════════════════════════════ APP ROOT ═══════════════════════════════════════════════════ */ function App(){ const [session,setSession]=useState(null); const [usuarios,setUsuarios]=useState(null); const [ventas,setVentas]=useState([]); const [ordenes,setOrdenes]=useState([]); const [clientes,setClientes]=useState([]); const [catalogo,setCatalogo]=useState([]); const [cotiz,setCotiz]=useState(1000); const [movCaja,setMovCaja]=useState([]); const [ready,setReady]=useState(false); useEffect(()=>{ Promise.all([sg(SK.usuarios),sg(SK.ventas),sg(SK.ordenes),sg(SK.clientes),sg(SK.catalogo),sg(SK.cotiz),sg(SK.movCaja)]) .then(([u,v,o,cl,cat,co,mc])=>{ const usrs=u||[{id:"owner",nombre:"Dueño",rol:"owner",pass:"1234",activo:true}]; if(!u) ss(SK.usuarios,usrs); setUsuarios(usrs); setVentas(v||[]); setOrdenes(o||[]); setClientes(cl||[]); setCatalogo(cat||CATALOGO_INICIAL); setCotiz(co||1450); setMovCaja(mc||[]); setReady(true); }); },[]); const persist=async(tabla,setter,val)=>{setter(val);await ss(tabla,val);}; if(!ready) return(

Iniciando sistema…

); if(!session) return persist(SK.usuarios,setUsuarios,usrs)}/>; const ctx={session,usuarios,setUsuarios,ventas,setVentas,ordenes,setOrdenes, clientes,setClientes,catalogo,setCatalogo,cotiz,setCotiz,movCaja,setMovCaja,persist,SK}; return setSession(null)}/>; } /* ═══════════════════════════════════════════════════ LOGIN ═══════════════════════════════════════════════════ */ function LoginScreen({usuarios,onLogin,onSetup}){ const [step,setStep]=useState("select"); const [sel,setSel]=useState(null); const [pass,setPass]=useState(""); const [np,setNp]=useState(""); const [np2,setNp2]=useState(""); const [err,setErr]=useState(""); const activos=(usuarios||[]).filter(u=>u.activo); const sel_u=u=>{setSel(u);setPass("");setErr("");setStep(u.pass?"pass":"newpass");}; const doLogin=()=>{if(sel.pass!==pass){setErr("Contraseña incorrecta");return;}onLogin(sel);}; const doSetPass=()=>{ if(np.length<4){setErr("Mínimo 4 caracteres");return;} if(np!==np2){setErr("No coinciden");return;} const upd=usuarios.map(u=>u.id===sel.id?{...u,pass:np}:u); onSetup(upd); onLogin({...sel,pass:np}); }; return(
iCompany{e.target.style.display="none";}}/>

Sistema de gestión · Pilar

{/* FRASE EN LOGIN */} {step==="select"&&( <> ¿Quién sos?
{activos.map(u=>( ))}
)} {step==="pass"&&( <> Hola, {sel?.nombre} 👋

Ingresá tu contraseña

{setPass(e.target.value);setErr("");}} onKeyDown={e=>e.key==="Enter"&&doLogin()} placeholder="Contraseña" style={inp}/> {err&&

{err}

}
Ingresar
)} {step==="newpass"&&( <> ¡Bienvenido, {sel?.nombre}!

Es tu primer acceso. Elegí una contraseña.

{setNp(e.target.value);setErr("");}} placeholder="Nueva contraseña (mín. 4 caracteres)" style={{...inp,marginBottom:8}}/> {setNp2(e.target.value);setErr("");}} placeholder="Repetir contraseña" style={inp}/> {err&&

{err}

}
Guardar y entrar
)}
); } /* ═══════════════════════════════════════════════════ MAIN APP ═══════════════════════════════════════════════════ */ function MainApp({ctx,onLogout}){ const isOwner=ctx.session.rol==="owner"; const tabs=isOwner ?[["venta","🧾","Venta"],["ordenes","📋","Órdenes"],["clientes","👤","Clientes"],["stock","📦","Stock"],["caja","💵","Caja"],["dashboard","📊","Dashboard"]] :[["venta","🧾","Venta"],["ordenes","📋","Órdenes"],["clientes","👤","Clientes"],["caja","💵","Mi Caja"]]; const [tab,setTab]=useState("venta"); return(
{ctx.session.nombre} Salir
{tab==="venta" &&} {tab==="ordenes" &&} {tab==="clientes" &&} {tab==="stock" &&isOwner&&} {tab==="caja" &&} {tab==="dashboard"&&isOwner&&}
); } /* ═══════════════════════════════════════════════════ VISTA VENTA ═══════════════════════════════════════════════════ */ function VentaView({ctx}){ const {session,catalogo,cotiz,ventas,setVentas,persist,SK}=ctx; const [items,setItems]=useState([]); const [pagos,setPagos]=useState([]); const [nota,setNota]=useState(""); const [busq,setBusq]=useState(""); const [catFil,setCatFil]=useState("Todos"); const [ok,setOk]=useState(false); const [lastVenta,setLastVenta]=useState(null); const [showLastDetail,setShowLastDetail]=useState(false); const [custom,setCustom]=useState({show:false,nombre:"",precio:"",costo:"",cat:"Pantallas"}); const cats=["Todos",...new Set(catalogo.map(p=>p.cat))]; const filtrados=catalogo.filter(p=>{ const matchCat=catFil==="Todos"||p.cat===catFil; const matchBusq=!busq||busq.trim().split(/\s+/).every(w=>p.nombre.toLowerCase().includes(w.toLowerCase())); return matchCat&&matchBusq; }); // Calcular descuento: solo si TODOS los items son de cats con descuento Y solo pago en efectivo pesos const soloEfec=pagos.length===1&&mById(pagos[0]?.metodoId)?.esEfectivo; const todosConDescuento=items.length>0&&items.every(i=>itemTieneDescuento(i)); const aplicaDescuento=soloEfec&&todosConDescuento; const subtotalUSD=items.reduce((s,i)=>s+i.precio*i.qty,0); const descuento=aplicaDescuento?subtotalUSD*0.15:0; const totalUSD=subtotalUSD-descuento; const totalPesos=totalUSD*cotiz; const pagadoUSD=pagos.reduce((s,p)=>{ const m=mById(p.metodoId);if(!m)return s; const v=parseFloat(p.monto)||0; return s+(m.moneda==="usd"?v:v/cotiz); },0); const restaUSD=Math.max(0,totalUSD-pagadoUSD); const restaARS=restaUSD*cotiz; const completo=totalUSD>0&&Math.abs(restaUSD)<0.005; const toggleItem=p=>{ setItems(prev=>prev.find(i=>i.id===p.id)?prev.filter(i=>i.id!==p.id):[...prev,{...p,qty:1}]); }; const chQty=(id,d)=>setItems(prev=>prev.map(i=>i.id===id?{...i,qty:Math.max(1,i.qty+d)}:i)); const rmItem=id=>setItems(prev=>prev.filter(i=>i.id!==id)); const addCustom=()=>{ if(!custom.nombre||!custom.precio)return; setItems(prev=>[...prev,{id:"c"+newId(),nombre:custom.nombre,precio:parseFloat(custom.precio), costo:parseFloat(custom.costo)||0,cat:custom.cat,qty:1}]); setCustom({show:false,nombre:"",precio:"",costo:"",cat:"Pantallas"}); }; const addMetodo=id=>{ if(pagos.find(p=>p.metodoId===id))return; const m=mById(id); const sug=m.moneda==="usd"?restaUSD.toFixed(2):Math.round(restaARS).toString(); setPagos(prev=>[...prev,{metodoId:id,monto:sug}]); }; const rmMetodo=id=>setPagos(prev=>prev.filter(p=>p.metodoId!==id)); const chMonto=(id,v)=>setPagos(prev=>prev.map(p=>p.metodoId===id?{...p,monto:v}:p)); const guardar=async()=>{ if(!completo||items.length===0)return; const gananciaUSD=items.reduce((s,i)=>s+(i.precio-(i.costo||0))*i.qty,0)-descuento; const v={id:newId(),fecha:new Date().toISOString(), empleadoId:session.id,empleadoNombre:session.nombre, items,pagos,nota,subtotalUSD,descuento,totalUSD,totalPesos,gananciaUSD,cotizUsada:cotiz}; const newCat=catalogo.map(c=>{ const it=items.find(i=>i.id===c.id); if(it&&c.stock<99)return{...c,stock:Math.max(0,c.stock-it.qty)};return c; }); await persist(SK.catalogo,ctx.setCatalogo,newCat); await persist(SK.ventas,setVentas,[v,...ventas]); setLastVenta(v); setItems([]);setPagos([]);setNota(""); setOk(true);setTimeout(()=>setOk(false),3000); }; return(
💱 Cotización USD
${cotiz.toLocaleString("es-AR")} por dólar
Solo el dueño puede modificarla
Seleccionar ítems

Precios en USD · tocá para agregar

setBusq(e.target.value)} placeholder="Buscar producto…" style={{...inp,flex:1,minWidth:160}}/>
{cats.slice(0,8).map(c=>( setCatFil(c)} small>{c} ))} {cats.length>8&&cats.slice(8).map(c=>( setCatFil(c)} small>{c} ))}
{filtrados.slice(0,120).map(p=>{ const sel=!!items.find(i=>i.id===p.id); const sinStock=false; return( ); })}
{custom.show&&(
setCustom(p=>({...p,nombre:e.target.value}))} placeholder="Descripción" style={inp}/>
setCustom(p=>({...p,precio:e.target.value}))} placeholder="Precio USD" type="number" style={{...inp,flex:1}}/> setCustom(p=>({...p,costo:e.target.value}))} placeholder="Costo USD" type="number" style={{...inp,flex:1}}/>
Agregar ítem
)}
📝 Nota (opcional)