Plugin pro dopravu přes Zásilkovnu / Packetu ve VirtueMart. Umožňuje zákazníkům vybrat výdejní místo nebo Z-Box přímo v košíku, e-shopu exportovat zásilky do Packety (jednotlivě i hromadně) a tisknout štítky.
| Požadavek | Verze |
|---|---|
| Joomla | 4.x, 5.x |
| VirtueMart | 4.x |
| PHP | 8.0+ |
| MySQL | 5.7+ / MariaDB 10.3+ |
| Aktuální verze | 1.3.2 |
1. Požadavky
- Joomla 4.x nebo 5.x (VirtueMart zatím Joomlu 6 nepodporuje)
- VirtueMart 4.x
- PHP 8.0 nebo novější
- MySQL 5.7+ / MariaDB 10.3+
- Aktivní účet u Zásilkovny / Packety s přístupem k API
Údaje z Packety, které budete potřebovat
| Údaj | Kde ho najdete | K čemu slouží |
|---|---|---|
| API klíč (Widget) | Klientská sekce Packety > Nastavení > API | Zobrazení widgetu pro výběr výdejního místa na frontendu |
| API heslo | Klientská sekce Packety > Nastavení > API | Export zásilek a tisk štítků (backend) |
| Označení odesílatele | Klientská sekce Packety > Informace o uživateli > Odesílatele | Identifikace odesílatele v zásilce (povinné) |
| Carrier ID (jen pro HD) | Feed dopravců – viz sekce 7 | ID dopravce pro doručení na adresu |
2. Instalace
- Stáhněte instalační ZIP soubor
plg_vmshipment_semazasilkovna_X.Y.Z.zip. - Přihlaste se do administrace Joomla.
- Přejděte do System > Install > Extensions.
- Nahrajte ZIP soubor.
- Po úspěšné instalaci se zobrazí hláška o nainstalování pluginu.
Upgrade: Stejný postup jako instalace. Joomla použije
method="upgrade"a zachová všechna existující data.
Součástí balíčku je i systémový plugin plg_system_semazasilkovna, který se nainstaluje a povolí automaticky. Zajišťuje tlačítka pro hromadný export v přehledu objednávek VirtueMart (viz sekce 11).
3. Aktivace pluginu
Po instalaci je nutné plugin dopravy ručně povolit:
- Přejděte do Extensions > Plugins (nebo System > Manage > Plugins).
- Vyhledejte
semazasilkovnaneboZasilkovna. - Klikněte na název pluginu SemaShipping Packeta - Zásilkovna pro VirtueMart (skupina
vmshipment) a nastavte Status = Enabled. - Uložte.
Systémový plugin
plg_system_semazasilkovnase povoluje sám při instalaci – ručně ho zapínat nemusíte.
Plugin sám o sobě nic nezobrazuje – až po vytvoření metody dopravy ve VirtueMart (viz sekce 5).
4. Globální konfigurace
V nastavení pluginu (Extensions > Plugins > klik na název) vyplňte globální parametry, které platí pro všechny metody dopravy založené na tomto pluginu:
| Parametr | Popis |
|---|---|
| API klíč (Widget) | Veřejný API klíč pro Packeta Widget v6 (16 znaků). Zobrazuje se na frontendu – není tajný. |
| API heslo | Tajné API heslo pro volání REST API (export zásilek, štítky). NIKDY se nezobrazuje na frontendu. |
| Označení odesílatele | Název odesílatele přesně tak, jak je uveden v klientské sekci Packety (Informace o uživateli > Odesílatele). Packeta ho při exportu vyžaduje – při neshodě vrací chybu. |
| Výchozí váha (kg) | Náhradní váha zásilky v kg, pokud není uvedena u produktu. Výchozí: 1 kg. |
| ID plateb = dobírka | Čárkou oddělená ID platebních metod VirtueMart, které jsou dobírkou. Při exportu se u nich automaticky nastaví dobírková částka (viz sekce 13). |
| Formát štítků | Formát PDF štítků pro tisk: A6 on A4, A7 on A4, A6 on A6, A7 on A7. |
| Stav objednávek pro export | Kód stavu objednávky VirtueMart, ze kterého se bere seznam objednávek pro hromadný export. Výchozí: C (potvrzeno). |
Důležité: Bez vyplněného API klíče a API hesla nebude plugin funkční. API klíč je nutný pro widget na frontendu, API heslo pro export zásilek a tisk štítků v administraci.
5. Vytvoření metody dopravy
Plugin se ve VirtueMart používá jako základ pro metody dopravy. Jednu instalaci pluginu můžete použít pro libovolný počet metod – např. jednu pro výdejní místa v ČR a další pro doručení na adresu v každé zahraniční zemi.
Postup
- V administraci VirtueMart přejděte do Shop > Shipment Methods.
- Klikněte na New.
- Vyplňte:
- Shipment Name: Název zobrazený zákazníkovi (např. "Zásilkovna – výdejní místo")
- Published: Yes
- Shipment Description: Volitelný popis
- Shipment Method: Zvolte SemaShipping Packeta - Zásilkovna pro VirtueMart
- Přejděte na záložku Configuration (per-method nastavení).
- Nastavte parametry popsané v následujících sekcích.
- Uložte.
6. Typ doručení
Každá metoda dopravy má parametr Typ doručení (radio):
Výdejní místa + Z-Boxy (pickup)
- Na frontendu se zobrazí widget pro výběr výdejního místa.
- Zákazník musí vybrat bod před odesláním objednávky.
- Podporuje interní body Zásilkovny i externí (Z-Boxy, Alzaboxy apod.).
- Podrobnosti viz sekce 8.
Doručení na adresu (hd)
- Na frontendu se zobrazí jen radio button s cenou – bez widgetu.
- Adresa se přebírá z objednávky (dodací adresa, při jejím chybění fakturační).
- Vyžaduje vyplnění HD Carrier ID – viz sekce 7.
Parametry související s typem doručení
| Parametr | Popis |
|---|---|
| Země pro widget | ISO kód země pro filtrování bodů ve widgetu (např. cz, sk). Výchozí: cz. Platí jen pro typ pickup. |
| Filtr dopravců (widget) | Čárkou oddělená ID dopravců pro filtrování widgetu. Prázdné = vše. Platí jen pro typ pickup. |
| HD Carrier ID | ID dopravce Packety pro doručení na adresu. Platí jen pro typ hd. |
7. Doručení na adresu (HD)
Doručení na adresu funguje bez widgetu – zásilka se odesílá na dodací adresu z objednávky. Každá metoda dopravy ale nese jedno HD Carrier ID, které platí pro jednu zemi a jednoho dopravce.
Pravidlo: jedna země = jedna metoda dopravy. Pro doručení do pěti zemí vytvořte pět metod, každou s vlastním Carrier ID a vlastním omezením země.
Postup pro jednu zemi
- Vytvořte novou metodu dopravy podle sekce 5.
- Typ doručení = Doručení na adresu (hd).
- HD Carrier ID = ID dopravce pro danou zemi (viz tabulka níže).
- Země = pouze ta jedna země, do které metoda doručuje.
- Nastavte cenu, daň a případně váhový rozsah (viz sekce 9).
- Uložte.
Doporučená Carrier ID pro nejčastější země
| Země | Carrier ID | Dopravce | Měna | Vlastní číslo popisné | Dobírka |
|---|---|---|---|---|---|
| Česká republika | 106 | CZ Zásilkovna domů HD | CZK | ne | ano |
| Slovensko | 131 | SK Packeta Home HD | EUR | ne | ano |
| Maďarsko | 4159 | HU Doručení na adresu HD | HUF | ne | ano |
| Německo | 13613 | DE Home Delivery HD | EUR | ano | ano |
| Polsko | 1406 | PL DPD HD | PLN | ne | ano |
| Rakousko | 80 | AT Rakouská pošta HD | EUR | ne | ano |
Další dostupné varianty (pokud vám vyhovují lépe podmínky konkrétního dopravce):
| Země | Carrier ID | Dopravce | Vlastní číslo popisné | Dobírka |
|---|---|---|---|---|
| Maďarsko | 763 | HU Maďarská pošta HD | ano | ano |
| Maďarsko | 3828 | HU Express One HD | ne | ano |
| Německo | 6373 | DE Hermes HD | ano | ano |
| Polsko | 272 | PL Polská pošta 48 HD | ne | ano |
| Polsko | 3603 | PL InPost HD | ne | ano |
| Polsko | 4162 | PL Doručení na adresu HD | ano | ano |
| Rakousko | 6830 | AT DPD HD | ano | ne |
Všichni uvedení dopravci mají limit 30 kg na zásilku.
Pozor na sloupec "Vlastní číslo popisné": dopravci s hodnotou "ano" (
separateHouseNumber) vyžadují číslo popisné v samostatném poli. Viz Číslo popisné níže.
Jak si Carrier ID ověřit nebo najít další
Seznam dopravců se mění – ID si před nasazením ověřte ve svém účtu. Feed dopravců pro doručení na adresu stáhněte z:
https://www.zasilkovna.cz/api/v4/<API_HESLO>/branch.json?address-delivery
<API_HESLO> nahraďte svým tajným API heslem (stejným, jaké máte v globální konfiguraci pluginu – ne 16znakovým API klíčem widgetu).
Odpověď je JSON s objektem carriers. U každého dopravce jsou důležitá tato pole:
| Pole | Význam |
|---|---|
id | Hodnota pro parametr HD Carrier ID |
country | ISO kód země (cz, sk, hu, de, pl, at ...) |
pickupPoints | false = doručení na adresu (HD), true = výdejní místo / box |
apiAllowed | Musí být true, jinak dopravce nelze použít přes API |
currency | Měna, ve které dopravce přijímá dobírku |
separateHouseNumber | true = vyžaduje číslo popisné v samostatném poli |
disallowsCod | true = dopravce nepodporuje dobírku |
maxWeight | Maximální váha zásilky v kg |
Stejný feed najdete i v klientské sekci Packety pod položkou Feed dopravců.
Číslo popisné
Někteří zahraniční dopravci (separateHouseNumber: true) vyžadují číslo popisné oddělené od ulice. Plugin ho čte z uživatelského pole objednávky s názvem house_number, které VirtueMart standardně nemá.
Pokud používáte dopravce s tímto požadavkem:
- Přejděte do VirtueMart > Shop > User Fields.
- Vytvořte nové pole s názvem (Name) přesně
house_number. - Nastavte ho jako povinné a zobrazené v dodací i fakturační adrese.
- Uložte.
Bez tohoto pole vrátí Packeta při exportu chybu
PacketAttributesFault.
Měna a dobírka
Každý HD dopravce přijímá dobírku v jedné pevné měně (sloupec Měna v tabulkách výše). Pokud objednávku vystavíte v jiné měně, Packeta dobírku odmítne.
- Buď pro danou zemi nastavte ve VirtueMart odpovídající měnu,
- nebo u této metody dopravy dobírku nenabízejte.
Viz také sekce 14.
8. Widget pro výběr výdejního místa
U metod s typem doručení Výdejní místa + Z-Boxy se na frontendu zobrazí tlačítko "Vybrat výdejní místo", které otevře interaktivní mapu Packeta Widget v6.
Jak to funguje
- Zákazník v košíku zvolí metodu dopravy se Zásilkovnou.
- Klikne na tlačítko "Vybrat výdejní místo".
- Otevře se widget s mapou a seznamem bodů.
- Po výběru bodu se jeho název zobrazí pod tlačítkem.
- Výběr se uloží a přežije změnu platební metody, aktualizaci košíku i přechod mezi kroky objednávky.
Session persistence
Vybraný bod se ukládá do PHP session. Díky tomu:
- Výběr přežije změnu platební metody nebo jiného nastavení košíku.
- Při AJAX přenačtení stránky se bod automaticky obnoví.
- Session se vyčistí až po úspěšném odeslání objednávky.
Filtrování bodů
- Země: Parametr "Země pro widget" omezí body na konkrétní zemi (např.
czpro ČR,skpro Slovensko). - Dopravci: Parametr "Filtr dopravců" umožní zobrazit jen určité typy bodů (např. jen Z-Boxy, jen Alzaboxy). ID dopravců výdejních míst získáte ze stejného feedu jako u HD, jen s hodnotou
pickupPoints: true– viz sekce 7.
Validace: Pokud zákazník nevybere výdejní místo a pokusí se dokončit objednávku, zobrazí se hláška "Prosím vyberte výdejní místo Zásilkovny."
9. Cena dopravy
Každá metoda dopravy má vlastní cenové nastavení:
| Parametr | Popis |
|---|---|
| Cena dopravy | Základní cena dopravy. |
| Poplatek za balení | Příplatek za balení / manipulaci (přičítá se k ceně dopravy). |
| Daňové pravidlo | Daňové pravidlo VirtueMart pro cenu dopravy (DPH). |
| Doprava zdarma od | Částka objednávky, od které je doprava zdarma. Prázdné = doprava zdarma nikdy. |
Omezení zobrazení metody
| Parametr | Popis |
|---|---|
| Země | Povolené země pro tuto metodu dopravy. U HD metod zde nastavte právě jednu zemi odpovídající Carrier ID. |
| Blokované země | Země, pro které tato metoda NENÍ dostupná. |
| Minimální váha | Minimální váha objednávky pro zobrazení této metody. |
| Maximální váha | Maximální váha objednávky pro zobrazení této metody. Doporučujeme nastavit podle limitu dopravce (maxWeight z feedu, zpravidla 30 kg). |
| Jednotka váhy | Jednotka váhy (KG nebo LB). |
10. Export zásilek do Packety
Po přijetí objednávky s dopravou přes Zásilkovnu můžete zásilku exportovat do systému Packety přímo z administrace VirtueMart.
Postup
- Přejděte do VirtueMart > Orders.
- Otevřete detail objednávky.
- V sekci dopravy uvidíte informace o vybraném bodě (nebo adrese u HD).
- Klikněte na tlačítko "Vytvořit zásilku v Packetě".
- Plugin odešle data do Packeta API a zobrazí potvrzení s číslem zásilky.
Co se exportuje
- Výdejní místo: ID bodu, jméno příjemce, e-mail, telefon, váha, hodnota.
- Externí bod (Z-Box): ID dopravce + ID bodu, plus údaje příjemce.
- Doručení na adresu: ID dopravce + kompletní adresa (ulice, číslo popisné, město, PSČ).
- Dobírka: Pokud je platební metoda dobírka, nastaví se dobírková částka.
Bezpečnost
- Každý export je chráněný CSRF tokenem.
- API heslo se nikdy nezobrazuje na frontendu.
- Všechny API požadavky a odpovědi se logují do tabulky
#__sema_zasilkovna_log(API heslo je v logu maskované). - Zásilku nelze exportovat dvakrát – pokud už byla exportována, zobrazí se hláška "Zásilka již byla exportována."
11. Hromadný export a štítky
Pro odbavení více objednávek najednou slouží tlačítka přímo v přehledu objednávek VirtueMart. Zajišťuje je systémový plugin plg_system_semazasilkovna, který se instaluje automaticky spolu s pluginem dopravy.
Postup
- Přejděte do VirtueMart > Orders.
- V horní liště (vedle tlačítka "Aktualizovat objednávky") uvidíte tlačítko "Export do Zásilkovny".
- Kliknutím odešle plugin do Packety všechny dosud neexportované objednávky se stavem nastaveným v parametru Stav objednávek pro export (výchozí
C). - Výsledek se zobrazí v proužku pod listou – pro každou objednávku úspěch s číslem zásilky, nebo chybová hláška.
- Po exportu se objeví tlačítko "Stáhnout štítky", které stáhne jedno PDF se štítky pro všechny exportované zásilky.
Co je dobré vědět
- Objednávka, která už byla exportována, se přeskočí – opakovaný export nic nezdvojí. Pokud není co exportovat, zobrazí se "Žádné neexportované objednávky".
- Chyba u jedné objednávky nezastaví zpracování ostatních. Nepodařené objednávky vyřešíte jednotlivě z detailu objednávky.
- Hromadné štítky fungují jen pro interní body Zásilkovny. Pro externí body (Z-Box) a doručení na adresu je nutné stáhnout štítek jednotlivě z detailu objednávky – Packeta API pro kurýrní štítky hromadné stahování nenabízí.
- Export i stahování štítků je přístupné jen uživatelům s oprávněním do administrace a je chráněno CSRF tokenem.
12. Tisk štítků
Po úspěšném exportu zásilky můžete stáhnout PDF štítek:
- V detailu objednávky klikněte na "Stáhnout štítek (PDF)".
- Prohlížeč stáhne PDF soubor se štítkem.
Hromadné stažení štítků pro více objednávek najednou viz sekce 11.
Formáty štítků
Formát se nastavuje v globálním nastavení pluginu:
| Formát | Popis |
|---|---|
| A6 on A4 | Štítek A6 na papíru A4 (výchozí) |
| A7 on A4 | Štítek A7 na papíru A4 |
| A6 on A6 | Štítek A6 na papíru A6 (pro štítkové tiskárny) |
| A7 on A7 | Štítek A7 na papíru A7 (pro štítkové tiskárny) |
Typy štítků
Plugin automaticky vybere správný typ štítků podle druhu doručení:
- Interní body Zásilkovny: Standardní štítek Zásilkovny (
packetLabelPdf). - Externí body (Z-Box) a HD: Kurýrní štítek (
packetCourierLabelPdf) – plugin si nejdříve vyžádá trackovací číslo od Packety.
13. Dobírka (COD)
Plugin podporuje automatickou detekci dobírky:
- V globálním nastavení pluginu vyplňte parametr "ID plateb = dobírka".
- Zadejte čárkou oddělená ID platebních metod VirtueMart, které jsou dobírkou.
- Při exportu zásilky plugin automaticky zkontroluje, zda objednávka používá dobírku, a nastaví správnou částku.
Jak zjistit ID platební metody
- Přejděte do VirtueMart > Payment Methods.
- Otevřete platební metodu dobírky.
- ID je viditelné v URL (parametr
virtuemart_paymentmethod_id).
Omezení u zahraničních dopravců
- Dobírka musí být v měně dopravce – viz sekce 7 a sekce 14.
- Někteří dopravci dobírku nepodporují vůbec (
disallowsCod: true, např. AT DPD HD). U takové metody dobírkovou platbu nenabízejte.
14. Měny a zaokrouhlování
Plugin posílá do Packety měnu objednávky (pole currency) spolu s hodnotou zásilky a případnou dobírkou.
- CZK a HUF nemají setinnou jednotku – Packeta u nich odmítá desetinná místa a vrací chybu
PacketAttributesFault. Plugin proto hodnotu i dobírku u těchto měn automaticky zaokrouhlí na celé číslo. - EUR, PLN a další se odesílají s desetinnými místy beze změny.
- Měna objednávky by měla odpovídat měně dopravce (sloupec Měna v tabulkách v sekci 7), jinak Packeta dobírku odmítne.
15. Odinstalace
Postup
- Extensions > Manage > Extensions
- Vyhledejte
semazasilkovna. - Odinstalujte plugin dopravy SemaShipping Packeta - Zásilkovna pro VirtueMart.
Co se smaže
- Plugin dopravy (PHP, JS, CSS, jazykové soubory)
- Systémový plugin
plg_system_semazasilkovna(odstraní se automaticky) - Tabulka
#__virtuemart_shipment_plg_semazasilkovna(data o zásilkách v objednávkách)
Co ZŮSTANE zachováno
- Tabulka
#__sema_zasilkovna_log(auditní záznamy o API voláních)
Proč se log nemaže? Záznamy o exportovaných zásilkách slouží jako audit trail. Automatické smazání při odinstalaci by mohlo způsobit ztrátu důležitých informací. Pokud tabulku chcete odstranit, proveďte to ručně:
DROP TABLE IF EXISTS `#__sema_zasilkovna_log`;(nahraďte
#__vaším skutečným prefixem tabulek)
16. Řešení problémů
Widget se nezobrazuje
- Ověřte, že plugin je povolený.
- Ověřte, že metoda dopravy má typ doručení Výdejní místa + Z-Boxy (ne HD).
- Zkontrolujte, že je vyplněný API klíč (Widget) v globálním nastavení pluginu.
- Zkontrolujte konzoli prohlížeče (F12) na JavaScript chyby.
- Ověřte, že stránku neblokuje Content Security Policy (CSP) pro doménu
widget.packeta.com.
Zákazník nemůže dokončit objednávku
- U metody typu "Výdejní místa" zákazník MUSÍ vybrat bod. Hláška "Prosím vyberte výdejní místo Zásilkovny" se zobrazuje správně.
- U metody typu "Doručení na adresu" se žádná validace bodu neprovádí – pokud zákazník nemůže dokončit objednávku, problém je jinde.
Chyba při exportu zásilky
- Ověřte, že je vyplněné API heslo v globálním nastavení pluginu.
- Ověřte, že Označení odesílatele přesně odpovídá názvu odesílatele v klientské sekci Packety.
- Zkontrolujte hlášení chyby – plugin zobrazuje přesnou odpověď Packeta API.
- Zkontrolujte log v tabulce
#__sema_zasilkovna_logpro detaily požadavku a odpovědi.
Chyba PacketAttributesFault
Nejčastější příčiny:
- Chybí číslo popisné u dopravce s
separateHouseNumber: true– viz Číslo popisné. - Desetinná místa v CZK nebo HUF – řeší zaokrouhlení v sekci 14.
- Nesouhlasí Označení odesílatele s klientskou sekcí Packety.
- Chybí telefon nebo e-mail u dopravce s
requiresPhone/requiresEmail. - Přetečení limitu váhy dopravce (
maxWeight, zpravidla 30 kg).
Metoda dopravy pro doručení na adresu neposílá správného dopravce
- Ověřte, že HD Carrier ID odpovídá zemi nastavené v parametru Země.
- Ověřte, že dopravce má ve feedu
apiAllowed: true– např. "Packeta večerní doručení Bratislava HD" (ID 132) přes API použít nelze. - Ověřte, že Typ doručení je nastaven na hd (ne pickup).
Štítek se nestáhne
- Ověřte, že zásilka byla úspěšně exportována (musí existovat číslo zásilky).
- Zkontrolujte, že formát štítků v nastavení pluginu je platný.
- Pro externí body a HD: plugin potřebuje získat trackovací číslo od Packety. Pokud selže, zkontrolujte API log.
- U hromadného stahování: externí body a HD nejsou součástí hromadného PDF, stáhněte je jednotlivě.
Tlačítka hromadného exportu se nezobrazují
- Ověřte, že systémový plugin
plg_system_semazasilkovnaje nainstalovaný a povolený (Extensions > Plugins, skupinasystem). - Ověřte, že jste na stránce VirtueMart > Orders (tlačítka se jinde nezobrazují).
- Zkontrolujte konzoli prohlížeče na JavaScript chyby.
Dobírka se nenastavuje
- Ověřte, že ID platební metody dobírky je správně zadané v parametru "ID plateb = dobírka".
- ID musí být číslo odpovídající
virtuemart_paymentmethod_idv URL platební metody. - Více ID oddělujte čárkou bez mezer (např.
3,7). - Ověřte, že dopravce dobírku vůbec podporuje (
disallowsCod: false).
Metoda dopravy se nezobrazuje
- Ověřte nastavení zemí (povolené / blokované).
- Ověřte váhové omezení (min/max váha).
- Ověřte, že metoda je Published ve VirtueMart.
- Ověřte, že plugin je Enabled.
Kontrolní seznam pro spuštění
- Plugin nainstalován a povolen
- API klíč (Widget) vyplněn
- API heslo vyplněno
- Označení odesílatele vyplněno a shoduje se s klientskou sekcí Packety
- Metoda dopravy vytvořena ve VirtueMart a publikovaná
- Typ doručení zvolen (pickup nebo hd)
- Země pro widget nastavena (pokud pickup)
- HD Carrier ID vyplněno a ověřeno ve feedu dopravců (pokud hd)
- Pro HD: v parametru Země je nastavena právě jedna země
- Pole
house_numbervytvořeno (pokud dopravce vyžaduje vlastní číslo popisné) - Měna objednávek odpovídá měně dopravce
- ID dobírkových plateb vyplněno (pokud používáte dobírku)
- Formát štítků zvolen
- Stav objednávek pro export nastaven
- Testovací objednávka provedena a zásilka úspěšně exportována
- Štítek stažen a vytištěn
- Hromadný export otestován v přehledu objednávek
Packeta® a Zásilkovna® jsou registrované ochranné známky jejich příslušných vlastníků. Tento produkt je nezávislé rozšíření a není s provozovatelem služby Packeta / Zásilkovna spojen ani jím schválen.