From d9f3c8a747d04d5b98861f10c4276e139aa12f4e Mon Sep 17 00:00:00 2001 From: oliver Date: Mon, 3 Aug 2026 08:51:04 -0300 Subject: [PATCH] DPD Fix --- app.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app.js b/app.js index 76f4d9c..119e031 100644 --- a/app.js +++ b/app.js @@ -261,17 +261,33 @@ function updateQueuePill() { } // ── Barcode extraction ──────────────────────────────────────────────── -// Scanned codes have 8 space-separated blocks; the 3rd through 6th -// (0-indexed 2..5) form the real scan code, concatenated without spaces. -// E.g. "0003 580 0626 5027 3077 23 328 040" → "06265027307723" +// Handles multiple formats: +// 1. DPD barcode starting with %: +// % + 7-char postcode + 14-digit tracking + 3-digit service + 3-digit country +// E.g. "%000460006265029820831328040" → "06265029820831" +// 2. Space-separated blocks: 3rd through 6th (0-indexed 2..5) joined +// E.g. "0003 580 0626 5027 3077 23 328 040" → "06265027307723" function extractCode(raw) { // Strip parentheses first const cleaned = raw.trim().replace(/[()]/g, ""); + + // Handle %-prefixed DPD barcode + if (cleaned.startsWith("%")) { + const withoutPct = cleaned.slice(1); + if (withoutPct.length >= 21) { + // Skip 7-char postcode, take 14-digit tracking number, drop the rest + return withoutPct.slice(7, 21); + } + return withoutPct; // fallback: return everything after % + } + + // Handle space-separated format const parts = cleaned.split(/\s+/); if (parts.length >= 6) { return parts.slice(2, 6).join(""); } - return cleaned; // fallback: use cleaned input + + return cleaned; // fallback: use as-is } // ── Enqueue (called immediately on Enter) ──────────────────────────────