• Fotobatohy
  • Rádi vám poradíme
    +420 228 811 811
    Po - Pia: 9:00 - 18:00
  • Moje konto
  • je prázdny
    za 0 Kč

PGYTECH OneMo Lite P-CB-115 22L (černá)

PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
  • PGYTECH OneMo Lite P-CB-115 22L (černá)
    Fotobatoh PGYTECH OneMo se bude dobře hodit například pro pracovní nebo cestovní účely. Díky objemu 22 l se vám do něj vejde nejen fotografické vybavení, ale i zamýšlené příslušenství, notebook nebo dokumenty. Přiložené přihrádky vám umožní uspořádat prostor batohu a kvalitní materiály ochrání batoh P-CB-115 i jeho obsah před poškozením.
    ID produktu
    1005352
    Výrobca
    PGYTech
    • Zvolený variant
    • černá
    Bežná cena: 4 370 Kč s DPH / ks, Ušetríte: 870 Kč s DPH / ks (20%)
    2 892,56 Kč bez DPH
    3 500 KčCena s DPH
    Centrálny sklad
    9 ks – doručení do 5 pracovních dnů
    Fotobatoh PGYTECH OneMo se bude dobře hodit například pro pracovní nebo cestovní účely. Díky objemu 22 l se vám do něj vejde nejen fotografické vybavení, ale i zamýšlené příslušenství, notebook nebo dokumenty. Přiložené přihrádky vám umožní uspořádat prostor batohu a kvalitní materiály ochrání batoh P-CB-115 i jeho obsah před poškozením.

    Praktický fotobatoh pro profesionály

    Fotobatoh PGYTECH OneMo má modulární konstrukci, takže je na vás, jak si jeho prostor naplánujete. K tomu vám pomůže 8 přihrádek různých typů. Takové řešení vám také pomůže udržet si pořádek.

    Potřebujete rychle pořídit fotografii? Žádný problém! Fotobatoh PGYTECH OneMo je vybaven boční kapsou, takže rychle dosáhnete na fotoaparát a nepřijdete o důležitý záběr. Kromě toho můžete přední část batohu zcela otevřít a vyjmout z něj jakoukoli věc. Užijte si řešení, která P-CB-115 nabízí.

    Batoh je navržen tak, aby jeho používání bylo pohodlné. Batoh P-CB-115 se vyznačuje ergonomickým designem a díky použití prodyšných materiálů jej můžete používat dlouhou dobu, aniž byste se cítili unavení nebo nepohodlně. Kromě toho má široké popruhy a 3 držadla, která usnadní přepravu batohu.

    Batoh PGYTECH OneMo P-CB-115 byl dokončen materiálem PU, díky němuž je odolný proti stříkající vodě a opotřebení. Má také utěsněné zipy, které chrání obsah batohu před poškozením. Kromě toho umožňuje bezpečně uložit dokumenty, notebook nebo tablet. To ale není všechno! Vyhrazené kapsy na baterie jsou vybaveny speciálními indikátory, kterými označíte úroveň jejich nabití.

     Špecifikácia
    ZnačkaPGYTech
    Hmotnost1,6 kg
    Rozměry (švh)33 x 46 x 23,5 cm
    Objem22 litrů
    Materiálpolyester
    PU
    Typ zapínánízip
    Počet tělnespecifikováno ks
    Vlastnostimísto na stativ
    voděodolný
    Přístup k technicepřední přístup
    rychlý přístup z boku
    Způsob přenášenídva ramenní
    hrudní
    Určenídámské
    pánské
    Vnitřní uspořádánípevné
    Specializovánouniverzální
     Podobné produkty
     Články
     Pro lepší péči
       
      Súbory cookies používame pre správne fungovanie našej webovej stránky a jej funkcií. Pomocou súborov cookies si tiež napríklad pamätáme váš preferovaný jazyk, zvyšujeme pre vás relevantnosť zobrazovaných reklám, počítame návštevnosť stránok a pamätáme si vaše nastavenia vykonané na stránke.
      (function () { "use strict"; const CUT_OFF_HOUR = 7; // po 7:00 = start další prac. den /* ========================================================= MANUÁLNÍ DNY MIMO PROVOZ (dovolená, inventura, ...) Formát: "dd.mm" (bez roku) ========================================================= */ const EXTRA_BLOCKED_DATES_DDMM = [ // "03.02", // "04.02", // "15.08", ]; /* ========================================================= */ const ADDITION_SELECTOR = ".p_detail_info_box.p_detail_info_addition"; const AVAIL_SELECTOR = ".p_detail_availability"; const AVAIL_SPAN_SELECTOR = '.p_detail_availability span[data-variant="availability"]'; function pad2(n) { return String(n).padStart(2, "0"); } function formatDDMM(dateLocal) { return `${pad2(dateLocal.getDate())}.${pad2(dateLocal.getMonth() + 1)}.`; } // "Teď" v Europe/Prague (nezávisle na TZ uživatele) function nowInPragueParts() { const dtf = new Intl.DateTimeFormat("cs-CZ", { timeZone: "Europe/Prague", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }); const parts = dtf.formatToParts(new Date()); const get = (type) => parts.find(p => p.type === type)?.value; return { year: Number(get("year")), month: Number(get("month")), day: Number(get("day")), hour: Number(get("hour")), minute: Number(get("minute")), second: Number(get("second")) }; } // UTC midnight helper (aby nepřekvapilo DST) function makeDateUTC(y, m, d) { return new Date(Date.UTC(y, m - 1, d, 0, 0, 0)); } function dateToKeyUTC(d) { return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`; } // Easter Sunday (Gregorian) function easterSunday(year) { const a = year % 19; const b = Math.floor(year / 100); const c = year % 100; const d = Math.floor(b / 4); const e = b % 4; const f = Math.floor((b + 8) / 25); const g = Math.floor((b - f + 1) / 3); const h = (19 * a + b - d - g + 15) % 30; const i = Math.floor(c / 4); const k = c % 4; const l = (32 + 2 * e + 2 * i - h - k) % 7; const m = Math.floor((a + 11 * h + 22 * l) / 451); const month = Math.floor((h + l - 7 * m + 114) / 31); const day = ((h + l - 7 * m + 114) % 31) + 1; return makeDateUTC(year, month, day); } function addExtraBlockedDatesToSet(holidaysSet, year, todayUTC) { EXTRA_BLOCKED_DATES_DDMM.forEach((ddmm) => { const m = ddmm.match(/^(\d{2})\.(\d{2})$/); if (!m) return; const dd = Number(m[1]); const mm = Number(m[2]); if (!Number.isFinite(dd) || !Number.isFinite(mm) || mm < 1 || mm > 12 || dd < 1 || dd > 31) return; const dThisYear = makeDateUTC(year, mm, dd); holidaysSet.add(dateToKeyUTC(dThisYear)); // pokud už datum letos proběhlo, přidáme i příští rok (praktické při údržbě) if (dThisYear.getTime() < todayUTC.getTime()) { const dNextYear = makeDateUTC(year + 1, mm, dd); holidaysSet.add(dateToKeyUTC(dNextYear)); } }); } function buildCZHolidaysSet(years, todayUTC) { const set = new Set(); years.forEach((y) => { // Fixní svátky CZ const fixed = [ [1, 1], [5, 1], [5, 8], [7, 5], [7, 6], [9, 28], [10, 28], [11, 17], [12, 24], [12, 25], [12, 26] ]; fixed.forEach(([mm, dd]) => set.add(dateToKeyUTC(makeDateUTC(y, mm, dd)))); // Velký pátek (-2) a Velikonoční pondělí (+1) const easter = easterSunday(y); const goodFriday = new Date(easter.getTime() - 2 * 24 * 3600 * 1000); const easterMonday = new Date(easter.getTime() + 1 * 24 * 3600 * 1000); set.add(dateToKeyUTC(goodFriday)); set.add(dateToKeyUTC(easterMonday)); // + ručně blokované dny addExtraBlockedDatesToSet(set, y, todayUTC); }); return set; } function isWeekendUTC(d) { const wd = d.getUTCDay(); return wd === 0 || wd === 6; } function isHolidayUTC(d, holidaysSet) { return holidaysSet.has(dateToKeyUTC(d)); } function isBusinessDayUTC(d, holidaysSet) { return !isWeekendUTC(d) && !isHolidayUTC(d, holidaysSet); } function nextBusinessDayUTC(d, holidaysSet) { let cur = new Date(d.getTime()); do { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } while (!isBusinessDayUTC(cur, holidaysSet)); return cur; } function computeShipBaseUTC(holidaysSet) { const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const beforeCutoff = (p.hour < CUT_OFF_HOUR); // 0..6 if (beforeCutoff && isBusinessDayUTC(todayUTC, holidaysSet)) return todayUTC; // po cut-off nebo nepracovní den => nejbližší další pracovní den if (isBusinessDayUTC(todayUTC, holidaysSet)) return nextBusinessDayUTC(todayUTC, holidaysSet); let cur = new Date(todayUTC.getTime()); while (!isBusinessDayUTC(cur, holidaysSet)) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } return cur; } // "+N" pracovních dnů přesně function addBusinessDaysUTC(startUTC, n, holidaysSet) { let cur = new Date(startUTC.getTime()); let added = 0; while (added < n) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); if (isBusinessDayUTC(cur, holidaysSet)) added++; } return cur; } function normalizeText(s) { return (s || "") .replace(/\u00A0/g, " ") .replace(/[–—]/g, "-") .replace(/\s+/g, " ") .trim(); } function parseAddition(text) { // "8 ks – doručení do 5 pracovních dnů" const t = normalizeText(text); const stockMatch = t.match(/(\d+)\s*ks/i); const daysMatch = t.match(/doru[cč]en[ií]\s*do\s*(\d+)\s*prac/i); if (!stockMatch || !daysMatch) return null; const stock = Number(stockMatch[1]); const leadDays = Number(daysMatch[1]); if (!Number.isFinite(stock) || !Number.isFinite(leadDays)) return null; return { stock, leadDays }; } function getAvailabilityMode() { const avail = document.querySelector(AVAIL_SELECTOR); if (!avail) return { mode: "unknown" }; const schemaLink = avail.querySelector('link[itemprop="availability"]'); const schemaHref = schemaLink?.getAttribute("href") || ""; const span = avail.querySelector(AVAIL_SPAN_SELECTOR); const label = normalizeText(span?.textContent || ""); if (/OutOfStock/i.test(schemaHref) || /Dostupnost k ověření/i.test(label)) { return { mode: "verify", avail, span, label }; } if (/^Skladem/i.test(label)) { return { mode: "local", avail, span, label }; } if (/^Centrální sklad/i.test(label)) { return { mode: "central", avail, span, label }; } return { mode: "unknown", avail, span, label }; } function removeExistingEstimate() { document.querySelectorAll(".delivery-estimate").forEach(el => el.remove()); } function insertEstimateUnderSpan(spanEl, dateDDMM) { removeExistingEstimate(); if (!spanEl || !spanEl.parentNode) return; const line = document.createElement("span"); line.className = "delivery-estimate"; line.textContent = `Obdržíte do ${dateDDMM}`; spanEl.insertAdjacentElement("afterend", line); } function applyDeliveryLogic() { const addition = document.querySelector(ADDITION_SELECTOR); if (addition) addition.classList.add("delivery-hide"); const { mode, span } = getAvailabilityMode(); // verify/unknown => jen schovat addition a nic nepřidávat if (mode === "verify" || mode === "unknown") { removeExistingEstimate(); return; } const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const holidays = buildCZHolidaysSet([p.year, p.year + 1], todayUTC); // lokální sklad => +1 prac. den if (mode === "local") { const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, 1, holidays); insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); return; } // centrální sklad => vyčíst z addition if (mode === "central") { const parsed = addition ? parseAddition(addition.textContent) : null; // parsing selže nebo stock=0 => nic nepřidávat if (!parsed || parsed.stock <= 0) { removeExistingEstimate(); return; } const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, parsed.leadDays, holidays); if (span) span.textContent = `Centrální sklad ${parsed.stock} ks`; insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", applyDeliveryLogic); } else { applyDeliveryLogic(); } })();