Sonic Spatial Restrictions — kézikönyv

Alapok · 01

A bolt eldönti, hogy kiszállít-e arra a címre

A WooCommerce saját szállítási zónái irányítószámig jutnak el. Egy étteremnél ez túl durva: a település egyetlen irányítószám, a kiszállítási körzet viszont annak a fele. Ez a bővítmény utcaszinten mondja meg, hova szállítotok, mennyiért, és mekkora rendeléstől.

Mit csinál

Fölveszel körzeteket. Egy körzet egy összefüggő darabja a kiszállítási területnek: település, utcák (ha kell, házszám-tartománnyal), egy kiszállítási díj és egy minimum rendelési érték.

Amikor a vendég a pénztárnál megadja a címét, a bővítmény megkeresi, melyik körzetbe esik. Ha egyikbe sem, a rendelés nem megy át. Ha igen, a körzet díja rákerül a kosárra, és a körzet minimumát is ellenőrzi.

Előkészítés
Rendelés
Ellenőrzés
Kosár
Lezárás
Admin
Körzetet vesz felutcák, díj, minimum
Látja a körzeteta rendelésen
Vendég
Megadja a címéttelepülés, utca, házszám
Látja a díjat
Fizet
Bővítmény
Körzetet keresutcanév + házszám
Díjat számolminimumot néz
Körzetet ráíra rendelésre
A körzet a cím megadásakor dől el, nem a fizetésnél — ezért látja a vendég a díjat még a rendelés előtt.

Melyik fejezet kinek szól

02

A pénztár

Amit a vendég lát: mikor jelenik meg a díj, és mi történik, ha a címére nem szállítotok.

03–06

Admin fejezetek

Körzet fölvétele, a térképes szerkesztő, a CSV-s tömeges betöltés, és a kategóriánkénti korlátozás.

Amit szándékosan nem csinál

Ez a rész több támogatói kérdést előz meg, mint bármi más a kézikönyvben.

  • Nem számol útvonalat vagy távolságot. Az „5 km-en belül közúton” egy másik feladat, más eszközzel. Itt a kérdés az, hogy egy utca benne van-e a körzetben.
  • Nem köt be futárszolgálatot. A körzetek a saját kiszállítási területeteket írják le.
  • Nem geokódolja a vendég címét. Az illesztés a boltban, hálózati hívás nélkül fut le. A vendég címe soha nem megy ki harmadik félhez — és a pénztár nem tud külső szolgáltatásra várni.
  • Nem tölti ki a vendég helyett az utcát. A vendég beírja a címét; a bővítmény ellenőrzi. Legördülő utcalistát nem tesz a pénztárra.
Miért így

A körzet-illesztés szándékosan „buta”: összehasonlít két szöveget, és kész. Ez azért fontos, mert a pénztár a bolt legérzékenyebb pontja — ha az ellenőrzés egy külső térkép-szolgáltatásra várna, egy lassú válasz azt jelentené, hogy a vendég nem tud fizetni. A térkép csak a szerkesztéshez kell, a működéshez nem.


Amit a vendég lát · 02

Három dolog történhet a címmel

A vendég szempontjából a bővítménynek egyetlen felülete van: a pénztár. Vagy átengedi, vagy díjat tesz rá, vagy megállítja — és mindhárom esetben megmondja, miért.

  1. Megadja a címet

    Település, utca és házszám a szokásos WooCommerce mezőkben. Ha külön szállítási cím van bejelölve, azt nézzük; ha nincs, a számlázásit.

  2. Megjelenik a kiszállítási díj

    A kosár összesítőjében külön sorként, a körzet nevével: Delivery — Mintaváros. Ha a körzet díja nulla, nem jelenik meg semmi.

  3. A rendelés átmegy — vagy nem

    Körzeten kívüli cím, vagy a minimum alatti kosár esetén a „Megrendelés” gomb hibaüzenetet ad, és a rendelés nem jön létre.

bolt.hu/penztar/
Szállítási cím
TelepülésMintaváros 1 UtcaPetőfi utca Házszám16 2
A rendelésed
TételÖsszesen
Pizza Margherita
1 db
2 990 Ft
Részösszeg2 990 Ft
Delivery — Mintaváros 3590 Ft
Összesen3 580 Ft
Megrendelés elküldése
A díj a körzet nevével jelenik meg, hogy a vendég lássa, mi alapján számoltuk.
  1. A település dönti el, melyik körzetekben keresünk. Ha a körzetnél nincs település megadva, az „bármelyik település” — egytelepüléses boltnál ez a kényelmes beállítás.
  2. A házszám csak akkor számít, ha az utcához tartomány van megadva. Tartomány nélkül az egész utca benne van.
  3. A díj a körzeté, nem a rendelésé. Ugyanaz a kosár másik címre másik díjat kap.

Amikor nem szállítotok oda

Ha a cím egyetlen aktív körzetbe sem esik, a pénztár ezt írja ki, és a rendelés nem jön létre:

Sorry, we do not deliver to this address.Az üzenet szövege szabadon átírható — lásd a fejezet végi megjegyzést.
The minimum order for Kisrét is 6 000 Ft — you are 3 010 Ft short.Külön üzenet arra, ha a cím rendben van, de a kosár kevés.
A két elutasítás külön okot mond: az egyik a címről szól, a másik a kosár értékéről.
Figyelj

A minimumot a termékek részösszegére nézzük, nem a végösszegre. A kiszállítási díj tehát nem segít elérni a minimumot — különben a drágább körzet magától „megoldaná” a saját minimumát.

A kosárban is szól, nem csak a pénztárnál

Ha a cím már ismert és a kosár a minimum alatt van, a figyelmeztetés a kosároldalon is megjelenik — mielőtt a vendég belekezd a pénztár kitöltésébe.

Miért így

Egy elutasítás a fizetés pillanatában a legrosszabb helyen ér. A kosárban ugyanaz az információ még döntést enged: a vendég tesz hozzá valamit, vagy odébb áll — de nem tölt ki előtte egy egész űrlapot fölöslegesen.

Jó tudni

Csak digitális terméket tartalmazó kosárnál a bővítmény nem szól bele semmibe: ha a WooCommerce szerint a rendelésnek nincs szüksége szállításra, nincs mit körzethez kötni.


Amit az admin csinál · 03

Egy körzet: hol, mennyiért, mekkora rendeléstől

A körzetek a WordPress bal oldali menüjében, a Delivery Zones pont alatt élnek. Minden körzet egy külön bejegyzés, a címe a körzet neve — ez látszik majd a vendégnek a díj mellett.

MezőMit csinál
Címa bejegyzés címeA körzet neve. Ez jelenik meg a vendégnek a díjsorban (Delivery — …), a rendelésen és a CSV-ben is. Az importálás is ezen a néven azonosítja a körzetet.
SettlementA település. Üresen hagyva bármelyik településre illeszkedik — egytelepüléses boltnál ez a kényelmes beállítás. Több település esetén mindig töltsd ki.
PostcodeIrányítószám. Tájékoztató adat; az illesztés nem ezen múlik.
Delivery feeA kiszállítás díja ebbe a körzetbe. Nulla esetén nem kerül díjsor a kosárra.
Minimum orderEkkora termék-részösszeg alatt a rendelés nem megy át. 0 = nincs minimum.
ActiveKikapcsolva a körzet létezik, de nem szállítotok oda. Az utcalista megmarad — nyáron kikapcsolt körzetet télen elég visszakapcsolni.
StreetsAz utcák, soronként egy. Lásd lent.
wp-admin/post.php?post=…&action=edit

Edit Delivery Zone

Zone settings
SettlementMintaváros 1
Postcode1111
Delivery fee590 Ft 2
Minimum order2500 Ft 0 = no minimum
Active☑ Deliver to this zone 3
Streets

One street per line. Optionally a house-number range: "Fő utca;2;15". No range means the whole street. — draw this zone on a map instead 4

Ady Endre utca
Akácfa utca
Arany János utca
Petőfi utca
Fő utca;2;15
…

165 streets currently.

A két doboz: fent a körzet szabályai, lent a hozzá tartozó utcák.
  1. A település üresen „bármelyik”. Két település között csak akkor tud különbséget tenni a bővítmény, ha ki van töltve.
  2. A díj és a minimum körzetenként külön áll. Emiatt éri meg egy települést több körzetre bontani, ha a távolabbi rész többe kerül.
  3. A kikapcsolás nem törlés. Az utcalista megmarad.
  4. Innen nyílik a térképes szerkesztő — a következő fejezet.

Az utcalista formátuma

Soronként egy utca. Ha a teljes utcába szállítotok, elég a név:

Petőfi utca            # az egész utca
Fő utca;2;15              # csak a 2–15. házszám
Tavasz utca;5;8           # csak az 5–8. házszám
Figyelj

Ha házszám-tartományt írsz, mindkét határ beleértendő: a Fő utca;2;15 a 2-est és a 15-öst is beengedi, a 16-ost már nem. Tartomány nélkül az egész utca benne van — ne írj oda nullát, hogy „bármi”, mert az minden házszámot kizárna.

Miért illeszkedik a „FŐ U. 16” is

A vendég nem úgy írja le a címét, ahogy ti fölvettétek. Az összehasonlítás ezért nem betűre pontos: nem számít a kis- és nagybetű, az ékezet, a többszörös szóköz, és a gyakori magyar rövidítések is föloldódnak — az u. utcára, a krt. körútra, az ltp. lakótelepre.

A házszámból az első szám számít, tehát a 16/A és a 16-18 is 16-nak olvasódik.

Jó tudni

Ha egy utca két körzetben is szerepel, és a cím mindkettőre illeszkedik, a vendégnek kedvezőbb — vagyis az olcsóbb díjú — körzet nyer.


Amit az admin csinál · 04

Rajzold be a körzetet, az utcák maguktól jönnek

Egy város utcalistája több száz sor. Kézzel begépelni napokig tart, és minden elgépelés egy cím, amire hiába rendelnének. A térképes szerkesztő ezt fordítja meg: te a területet adod meg, az utcaneveket az OpenStreetMap adja.

Megnyitás: Delivery Zones → Map editor, vagy a körzet szerkesztőjében a draw this zone on a map instead hivatkozás.

  1. Válaszd ki a körzetet

    Fent a Zone legördülőben. Ide fog menteni a szerkesztő.

  2. Navigálj a településre

    Írd be a nevét a Centre on mezőbe, és nyomd meg a Go gombot. A térkép a településre ugrik.

  3. Rajzold körbe a területet

    A térkép jobb szélén lévő rajzoló eszközzel: sokszög vagy téglalap. Egyszerre egy terület él — ha újat rajzolsz, az előző eltűnik.

  4. Kérd le az utcákat

    Find streets in area. Néhány másodperc, és a jobb oldali listában megjelenik minden elnevezett utca, ami a területbe esik.

  5. Nézd át, majd mentsd

    Ami nem kell, az ×-szel kivehető. Aztán Save to zone.

wp-admin/edit.php?post_type=delivery_zone&page=sonic-zone-map

Zone map editor

Draw your delivery area on the map. Every named street inside it is pulled from OpenStreetMap and becomes the zone's street list. Nothing is saved until you press Save.

Zone Mintaváros 1   Centre on Mintaváros Go   Find streets in area 3   Save to zone 4

Fő utca Petőfi u. 2 © OpenStreetMap contributors
Streets (165)
  • Ady Endre utca ×
  • Akácfa utca ×
  • Arany János utca ×
  • Petőfi utca ×
  • Fő utca ×
  • Kossuth Lajos utca ×
  • Tavasz utca ×

165 streets inside the area.

A bal oldal a rajzolt terület, a jobb oldal az, ami abból kijött. A mentés csak a listát rögzíti.
  1. A körzet választása nélkül nincs hova menteni. A Save to zone ilyenkor szól, hogy válassz egyet.
  2. A terület csak segédeszköz. A rendeléskor nem a sokszöget nézzük, hanem az elmentett utcalistát. A rajz azért marad meg, hogy később igazítani lehessen rajta.
  3. A lekérés hozzáad, nem cserél. Két területet is bejárhatsz egymás után, a találatok összeadódnak.
  4. Semmi nem íródik ki mentés előtt. Nyugodtan kísérletezz.
Miért így

A sokszög nem kerül bele a rendelés ellenőrzésébe, pedig kézenfekvő lenne. Két oka van. Egy: ahhoz a vendég címét koordinátává kellene alakítani, vagyis kiküldeni egy külső szolgáltatásnak — a pénztárban, minden rendelésnél. Kettő: a településhatárok és az utcák nem esnek egybe a rajzolt vonallal, így egy fél utca bent lenne, a másik fele kint. Az utcanév egyértelmű; a vonal nem.

Figyelj

Az utcaadat az OpenStreetMap ingyenes, közös szolgáltatásából jön, ami korlátozza a lekérdezéseket. Ha ezt látod — OpenStreetMap returned HTTP 429… — várj egy percet és próbáld újra. Ugyanarra a területre a válasz egy napig el van tárolva, tehát az ismételt lekérés nem terheli újra.

Jó tudni

Az autópályák és a fel-/lehajtók kimaradnak a találatokból — azokon nem lakik senki. Ami bekerül, az elnevezett közterület.

Amit a térkép nem tud

Házszám-tartományt nem tud megadni: a területből utcanevek jönnek, tartomány nélkül, vagyis a teljes utca. Ha egy utcának csak egy szakaszába szállítotok, azt a körzet szerkesztőjében kell utólag beírni (Fő utca;2;15) — vagy CSV-ből betölteni.


Amit az admin csinál · 05

Amikor a lista már megvan valahol

A térkép akkor jó, ha nulláról indultok. Ha viszont a kiszállítási lista már létezik — egy régi rendszerben, egy táblázatban, az ügyféltől kapva —, a CSV a rövidebb út. Ugyanezen a képernyőn, a térkép alatt.

A formátum

Fejléces CSV. Vesszővel vagy pontosvesszővel elválasztva — magától fölismeri, melyikkel.

settlement,postcode,street,zone,fee,min_order
Mintaváros,1111,Fő utca,Mintaváros,590,2500
Mintaváros,1111,Petőfi utca,Mintaváros,590,2500
Újfalu,2222,Budai út,Újfalu - alsón túl,1490,6000
OszlopMit jelent
streetkötelezőAz utca neve. Ez az egyetlen oszlop, ami nélkül nem indul el az import.
zoneMelyik körzetbe kerüljön. Ez fogja a sorokat körzetekbe. Ha nincs megadva, a settlement lesz a körzet neve.
settlementA körzet települése.
postcode, fee, min_orderA körzet irányítószáma, díja és minimuma. Körzetenként elég egyszer szerepelnie — az első sorból vesszük.
house_min, house_maxnem kötelezőHázszám-tartomány az adott utcára. Üresen az egész utca.
Jó tudni

A magyar fejléceket is elfogadja, tehát egy meglévő táblázatot általában át sem kell nevezni: varos, iranyitoszam, utca, zona, szallitasi_dij, min_rendeles. Az ismeretlen oszlopokat figyelmen kívül hagyja.

Előbb nézd meg, aztán töltsd be

A Preview import semmit nem ír ki: végigolvassa a fájlt, és megmutatja, mi történne — hány körzet, hányban hány utca, melyik létezik már. Csak ezután jön az Import.

wp-admin/edit.php?post_type=delivery_zone&page=sonic-zone-map
CSV

Columns: settlement, postcode, street, zone, fee, min_order (house_min / house_max optional). Hungarian headers are accepted too.

settlement,postcode,street,zone,fee,min_order
Mintaváros,1111,Fő utca,Mintaváros,590,2500
…

Preview import 1  Import  Export all zones 3

DRY RUN — 1118 street rows, 0 skipped
  Mintaváros: 165 streets → existing zone #14534 (had 2) 2
  Újfalu - alsón túl: 480 streets → NEW zone
  Kisrét: 119 streets → NEW zone
A próbafuttatás körzetenként megmondja, mi lesz új és mi íródik felül — a „had 2” az, ami most van bent.
  1. A próba nem ír semmit. Nyugodtan futtasd, akárhányszor.
  2. Az azonos nevű körzet frissül, nem duplázódik. Ugyanazt a fájlt kétszer betöltve nem lesz két Mintaváros.
  3. Az export ugyanezt a formátumot adja vissza — a jelenlegi körzetek egy fájlban, szerkeszthetően.
Figyelj

Az import az utcalistát lecseréli, nem hozzáfűzi. Ha egy meglévő körzethez akarsz utcákat adni, előbb Export all zones, szerkeszd a fájlt, és azt töltsd vissza — így nem veszik el, ami már bent volt.

Miért így

A körzetet a neve azonosítja, nem egy azonosító szám. Így egy táblázatot a boltot nem ismerő ember is elő tud állítani, és nem kell tudnia, hogy a rendszerben mi a körzet belső száma. Ára: ha átnevezel egy körzetet, a régi nevű CSV már új körzetet fog létrehozni helyette.


Amit az admin csinál · 06

Nem minden termék megy el mindenhova

Fagyi csak a közeli körzetbe, alkohol nem az ipari parkba, a nagy tortát csak oda, ahova el is fér az autó. Ez termékkategóriánként állítható, és a körzeteket használja fel hozzá.

Beállítás: Termékek → Kategóriák, a kategória szerkesztésénél a Deliverable to zones mező.

wp-admin/term.php?taxonomy=product_cat&tag_ID=…

Edit category

Deliverable to zones 1 ☑ Mintaváros
☑ Mintaváros - Ipari park
☐ Újfalu - alsón túl
☐ Kisrét

Leave all unchecked to allow every zone (the default). 2

Frissítés

Kipipálva: csak ezekbe a körzetekbe. Üresen: mindenhova — ez az alapállapot.
  1. A lista az aktív körzeteidből áll össze. Ha még nincs körzet, itt csak egy megjegyzés áll.
  2. Az üres jelölőnégyzet nem tiltás. Semmit nem kipipálva a kategória mindenhova mehet — a bővítmény telepítése önmagában nem korlátoz semmit.

Mit lát a vendég

Ha a kosárban olyan termék van, amit az ő körzetébe nem szállítotok, a rendelés nem megy át, és a hibaüzenet megnevezi a terméket:

Pizza Salami cannot be delivered to Kisrét. Please remove it to continue.Több termék esetén mindegyiket fölsorolja.
A vendég tudja, melyik tételt kell kivennie — nem kell találgatnia.
Jó tudni

A kosároldalon ez is előbb megjelenik, mint a pénztárnál — de csak akkor, ha a cím már ismert. Cím nélkül nincs mihez viszonyítani, és a bővítmény nem szól bele.


Ha baj van · 07

Tünet, ok, teendő

A lenti sorok a bővítmény tényleges ellenőrzéseiből származnak — nem elképzelt esetek. A második oszlop az okot mondja, mert a tünetet már úgyis látod.

TünetOk és teendő
Minden címet elutasít Nincs egyetlen aktív körzet sem, vagy a körzeteknél ki van töltve a Settlement, és nem egyezik azzal, amit a vendég beír. Ellenőrizd az Active jelölőt, és hogy a település neve stimmel-e.
A bővítmény semmit nem csinál Ha nincs egyetlen aktív körzet sem, a bővítmény szándékosan kimarad az útból: nem tesz díjat, nem utasít el. Ez a telepítés utáni alapállapot — vegyél föl egy körzetet.
Létező utcát mégis elutasít Van az utcára házszám-tartomány, és a megadott házszám kívül esik rajta. Nézd meg a körzet Streets mezőjét: ha ott Fő utca;2;15 áll, a 16-os szám nem megy át.
Nem jelenik meg a kiszállítási díj Vagy még nincs kitöltve a cím (addig nincs mihez díjat rendelni), vagy a körzet díja nulla — akkor nem kerül külön sor a kosárra.
A minimum nem lép életbe A kosárban csak olyan termék van, amihez a WooCommerce szerint nem kell szállítás (letölthető/virtuális). Ilyenkor nincs kiszállítás, tehát körzet sincs.
Kevesebb hiányzik, mint gondolnád A minimumot a termékek részösszegére nézzük, a kiszállítási díj nélkül. Ez szándékos — lásd a pénztár fejezetet.
A térkép nem talál utcát Vagy nincs kirajzolt terület (a gomb ilyenkor szól), vagy a terület olyan kicsi, hogy nem esik bele elnevezett közterület. Rajzolj nagyobbat.
„OpenStreetMap returned HTTP 429…” Az OpenStreetMap ingyenes lekérdező szolgáltatása korlátozza a forgalmat. Várj egy percet, és próbáld újra. Ugyanarra a területre a válasz egy napig tárolva marad.
Az import új körzetet csinált a meglévő helyett A CSV-ben lévő zone név nem pontosan egyezik a meglévő körzet címével. Töröld a fölöslegeset, és igazítsd a nevet — vagy indulj az Export all zones fájljából.
Az import elvitte a korábbi utcákat Az import lecseréli az utcalistát, nem hozzáfűzi. Exportálj, szerkeszd azt a fájlt, és töltsd vissza.
Egy kategóriát sehova nem enged A kategóriánál ki van pipálva egy vagy több körzet, de a vendég címe nem azokba esik. Ha a korlátozás nem szándékos, vedd ki az összes pipát — üresen minden körzet engedélyezett.
Rossz körzet díját számolta Az utca két körzetben is szerepel. Ilyenkor a kedvezőbb — olcsóbb — körzet nyer. Ha nem ezt akarod, vedd ki az utcát a másik körzetből.

Ismert korlátok

Ezek nem hibák, hanem tudatos döntések. Mindegyik mellett ott van, mit lehet helyette csinálni.

KorlátMit tehetsz
Nincs távolság vagy útvonal„5 km-en belül” nem megadhatóRajzold körbe a területet a térképen — a végeredmény ugyanaz, csak nem kilométerben van kifejezve.
A pénztárban nincs utca-legördülőA vendég beírja az utcát, a bővítmény ellenőrzi. Az elgépelést az ékezet- és rövidítés-tűrő összehasonlítás nyeli el.
A térkép nem ad házszám-tartománytA területből teljes utcák jönnek. A tartományt utólag írd be a körzet Streets mezőjébe, vagy CSV-ből töltsd be.
A kezelőfelület angolA bővítmény szövegei fordíthatók — ez a kézikönyv ezért idézi a gombokat angolul. Amit a vendég lát a pénztárnál, az szabadon átírható.
A térképszerkesztő internetet igényelCsak a szerkesztéshez. A rendelések ellenőrzése nem hív külső szolgáltatást, tehát a bolt működik akkor is, ha a térkép nem érhető el.
Jó tudni

Minden rendelésre ráíródik, melyik körzetbe ment — a rendelés adminban a szállítási cím alatt látszik Delivery zone: néven. Utólagos vitánál ez mondja meg, mi alapján számoltunk akkor, akkor is, ha a körzetet azóta átszabtátok.