\n\n
$0
0
Buscar producto

Productos buscados

Escribe al menos 2 letras para ver resultados.

Datos del cliente

Para generar el pedido necesitamos nombre, telefono y correo.

'); popup.document.close(); await imprimirCotizacionCarta(popup); }function togglePrintOptions(){ document.getElementById('pos-print-options').classList.toggle('is-open'); }function closePrintOptions(){ document.getElementById('pos-print-options').classList.remove('is-open'); }async function imprimirCotizacionCarta(popup){ if(!productosAgregados.length){ mostrarNoti('No hay productos para imprimir.'); popup.close(); return; }let pedido = null; try{ pedido = await crearPedidoDesdeCarrito(); } catch(error){ mostrarNoti(error?.message || 'No se pudo generar el pedido.'); popup.close(); return; }const totalPedido = numeroAPrecio(calcularTotalPedido()); const fecha = new Date().toLocaleString('es-CL'); const filas = productosAgregados.map((item, idx) => { const cantidad = Number(item.cantidad || 1); const total = item.total || numeroAPrecio((typeof item.total_num !== 'undefined') ? Number(item.total_num || 0) : (precioTextoANumero(item.precio) * cantidad)); return `${idx + 1}${escaparHtml(item.nombre)}${item.variacion ? `
${escaparHtml(item.variacion)}
` : ''}${escaparHtml(item.sku || '')}${cantidad}${escaparHtml(item.precio || '$0')}${escaparHtml(total)} `; }).join('');const html = `Cotizacion

Cotizacion

Pedido #${escaparHtml(pedido?.order_number || '')} Pos generado por Ticket
Fecha: ${escaparHtml(fecha)}
Documento: Hoja carta
${filas}
#ProductoCodigoCant.PrecioTotal
Total cotizacion
${escaparHtml(totalPedido)}
`;popup.document.open(); popup.document.write(html); popup.document.close(); const imprimirAhora = function () { popup.focus(); setTimeout(function () { popup.print(); }, 120); }; popup.onload = function () { const printButton = popup.document.getElementById('print-now-btn'); if ( printButton ) { printButton.addEventListener('click', imprimirAhora); } setTimeout(function () { imprimirAhora(); }, 500); }; popup.focus(); }async function imprimirTicketTermico(mmPapel, mmContenido, popup){ if(!productosAgregados.length){ mostrarNoti('No hay productos para imprimir.'); popup.close(); return; }let pedido = null; try{ pedido = await crearPedidoDesdeCarrito(); } catch(error){ mostrarNoti(error?.message || 'No se pudo generar el pedido.'); popup.close(); return; }const totalPedido = numeroAPrecio(calcularTotalPedido()); const fecha = new Date().toLocaleString('es-CL'); const lineas = productosAgregados.map((item) => { const cantidad = Number(item.cantidad || 1); const total = item.total || numeroAPrecio((typeof item.total_num !== 'undefined') ? Number(item.total_num || 0) : (precioTextoANumero(item.precio) * cantidad)); return `
${escaparHtml(item.nombre)}
Precio: ${escaparHtml(item.precio || '$0')} Cant: ${cantidad} Total: ${escaparHtml(total)}
${item.variacion ? `
${escaparHtml(item.variacion)}
` : ''}
`; }).join('');const ticketHtml = `Ticket ${mmPapel}mm
Detalle de pedido
Pedido #${escaparHtml(pedido?.order_number || '')} Pos generado por Ticket
${escaparHtml(fecha)}
${lineas}
TOTAL ${escaparHtml(totalPedido)}
Gracias por su compra
`;popup.document.open(); popup.document.write(ticketHtml); popup.document.close(); popup.onload = function () { popup.print(); popup.onafterprint = function () { popup.close(); }; }; }function quitarAgregado(key){ const data = new FormData(); data.append('action', 'pos_table_fixed_remove_cart_item'); data.append('nonce', posCartNonce); data.append('cart_item_key', key);fetch(posAjaxUrl, { method: 'POST', body: data, credentials: 'same-origin' }) .then((response) => response.json()) .then((result) => { if(!result?.success){ mostrarNoti(result?.data?.message || 'No se pudo quitar el producto.'); return; } productosAgregados = Array.isArray(result.data?.items) ? result.data.items : []; renderAgregados(); if(window.jQuery){ jQuery(document.body).trigger('wc_fragment_refresh'); } mostrarNoti('Producto quitado del carrito'); }) .catch(() => mostrarNoti('No se pudo quitar el producto.')); }function limpiarBusqueda(){ buscador.value = ''; sugerenciaActiva = -1; productosFiltrados = []; document.getElementById('pos-resultados').innerHTML = '
Escribe al menos 2 letras para ver resultados.
'; buscador.focus(); }function enfocarPrimerResultado(){ const primerCampo = document.querySelector('.pos-result-qty'); if(primerCampo){ primerCampo.focus(); primerCampo.select(); } }function actualizarSugerenciaActiva(){ return; }function seleccionarSugerencia(indice){ const producto = productosFiltrados[indice]; if(!producto){ return; } buscador.value = producto.nombre; sugerenciaActiva = -1; renderResultadosBuscados([producto]); setTimeout(enfocarPrimerResultado, 30); }/* --- AUTOCOMPLETADO --- */ const buscador = document.getElementById('pos-buscador'); const sugerencias = document.getElementById('pos-sugerencias'); buscador.addEventListener('input',()=>{ const val = buscador.value.trim(); if(busquedaTimer){ clearTimeout(busquedaTimer); } if(val.length<2){ sugerenciaActiva = -1; productosFiltrados = []; document.getElementById('pos-resultados').innerHTML = '
Escribe al menos 2 letras para ver resultados.
'; return; } document.getElementById('pos-resultados').innerHTML = '
Buscando...
'; busquedaTimer = setTimeout(async () => { const data = new FormData(); data.append('action', 'pos_table_fixed_search_products'); data.append('nonce', posCartNonce); data.append('term', val);try{ const response = await fetch(posAjaxUrl, { method: 'POST', body: data, credentials: 'same-origin' }); const result = await response.json(); const filtrados = result?.success && Array.isArray(result.data?.items) ? result.data.items : []; productosFiltrados = filtrados; sugerenciaActiva = productosFiltrados.length ? 0 : -1; renderResultadosBuscados(filtrados); } catch(error){ productosFiltrados = []; sugerenciaActiva = -1; document.getElementById('pos-resultados').innerHTML = '
No se pudo buscar.
'; } }, 180); });buscador.addEventListener('keydown', (event) => { if(event.key === 'ArrowDown' && productosFiltrados.length){ event.preventDefault(); sugerenciaActiva = (sugerenciaActiva + 1) % productosFiltrados.length; actualizarSugerenciaActiva(); } if(event.key === 'ArrowUp' && productosFiltrados.length){ event.preventDefault(); sugerenciaActiva = (sugerenciaActiva - 1 + productosFiltrados.length) % productosFiltrados.length; actualizarSugerenciaActiva(); } if(event.key === 'Enter'){ event.preventDefault(); if(productosFiltrados.length && sugerenciaActiva >= 0){ seleccionarSugerencia(sugerenciaActiva); } else { enfocarPrimerResultado(); } } if(event.key === 'Escape'){ event.preventDefault(); limpiarBusqueda(); } });document.addEventListener('keydown', (event) => { if(event.key === 'F2'){ event.preventDefault(); buscador.focus(); buscador.select(); } });renderTabla(); renderAgregados(); window.addEventListener('focus', sincronizarCarritoSilencioso); document.addEventListener('visibilitychange', () => { if(document.visibilityState === 'visible'){ sincronizarCarritoSilencioso(); } }); if(window.jQuery){ jQuery(document.body).on('added_to_cart wc_fragments_refreshed updated_wc_div removed_from_cart', () => { sincronizarCarritoSilencioso(); }); } window.setInterval(sincronizarCarritoSilencioso, 5000);
Carro
Tu carrito esta vacío
Calcule Los Gastos De Envío

Ingresar a

COMERCIAL CR