From b6a327c98cfce65fb3218d7f1e0ed0d0f991631c Mon Sep 17 00:00:00 2001 From: consultoria-as Date: Tue, 26 May 2026 09:30:14 +0000 Subject: [PATCH] feat(ui): barcode scanner feedback in POS, timeline & kanban CSS, image comparator modal, ticket preview modal --- pos/static/js/pos.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pos/static/js/pos.js b/pos/static/js/pos.js index 9cf9755..f5528a3 100644 --- a/pos/static/js/pos.js +++ b/pos/static/js/pos.js @@ -242,6 +242,7 @@ const POS = (() => { if (existing) { existing.quantity += (item.quantity || 1); renderCart(); + if (window.BarcodeFeedback) BarcodeFeedback.success(); return; } @@ -502,6 +503,19 @@ const POS = (() => { if (data.data.length === 0) { container.innerHTML = '
Sin resultados
'; + if (window.BarcodeFeedback) BarcodeFeedback.error(); + } else if (data.data.length === 1 && q.length >= 8) { + // Auto-select single result on barcode scan (long codes) + const item = data.data[0]; + let price = item.price_1; + if (currentCustomer) { + const tier = currentCustomer.price_tier || 1; + price = tier === 3 ? item.price_3 : tier === 2 ? item.price_2 : item.price_1; + } + addFromSearch(item, price); + input.value = ''; + hideSearchResults(); + return; } else { let html = ''; data.data.forEach(item => { @@ -542,6 +556,7 @@ const POS = (() => { price_2: item.price_2, price_3: item.price_3, }); + if (window.BarcodeFeedback) BarcodeFeedback.success(); hideSearchResults(); document.getElementById('itemSearch').value = ''; document.getElementById('itemSearch').focus();