ΕΛΤΑ Courier και δυσπρόσιτοι προορισμοί στο WooCommerce: Υπολογισμός κόστους μεταφορικών

Ορεινό Λασιθίου

Η ΕΛΤΑ Courier προσφέρει μια σειρά από εγχώριες υπηρεσίες. Οι μη αυθημερόν υπηρεσίες εντός της Ελλάδας χρεώνονται διαφορετικά, ανάλογα με το αν ο προορισμός είναι:

  • Εντός της ίδιας πόλης ή οικισμού
  • Νησιωτικός
  • Εντός Κρήτης
  • Δυσπρόσιτος
  • Σε άλλη πόλη ή οικισμό που δεν εμπίπτει στις πιο πάνω κατηγορίες

Η διεύθυνση παράδοσης στο WooCommerce

Αρχικά, ο πελάτης του καταστήματός μας θα καταχωρίσει μια διεύθυνση παράδοσης. Η παράδοση θα αποτελείται κυρίως από έναν ΤΚ, ένα όνομα πόλης (ή άλλου οικισμού), μία διοικητική ενότητα και προαιρετικά μια οδό και αριθμό. Η διοικητική ενότητα θα καταχωριστεί σωστά, καθώς το WooCommerce εμφανίζει dropdown. Το τοπωνύμιο, όμως, μπορεί να δωθεί στο πεδίο city του WooCommerce ή στο πεδίο address_1 ή ακόμα και στο address_2, καθώς οι έννοιες “πόλη”, “κωμόπολη”, “χωριό”, “οικισμός” κ.α. δεν είναι σαφώς καθορισμένες. Επιπλέον, ο πελάτης μπορεί να έχει καταχωρίσει τη διεύθυνσή του με μη κανονική σειρά ή μορφή.

Γεωκωδικοποίηση της διεύθυνσης παράδοσης

Για να γνωρίζουμε, σε κάθε περίπτωση, πού ανήκει κάποια διεύθυνση που έχει δώσει ο πελάτης του καταστήματός μας, είναι απαραίτητη η γεωκωδικοποίηση της διεύθυνσης.

Η γεωκωδικοποίηση γίνεται με αναζήτηση της διεύθυνσης σε βάση γεωγραφικών δεδομένων. Από την αναζήτηση λαμβάνουμε κανονικοποιημένα και επαληθευμένα δεδομένα για τη διεύθυνση. Κυρίως, μας ενδιαφέρει η διοικητική ενότητα στην οποία ανήκει η διεύθυνση, έτσι ώστε να μπορούμε να κρίνουμε σε ποια κατηγορία εμπίπτει.

Μηχανική γεωκωδικοποίηση μπορούμε να κάνουμε επί πληρωμή με το API της Google ή με την δωρεάν υπηρεσία Nominatim, η οποία χρησιμοποιεί ανοιχτά γεωγραφικά δεδομένα από την υπηρεσία OpenStreetMap.

Νησιωτικοί προορισμοί

Τα νησιά μπορούν να οριστούν ως όλες οι περιοχές που διοικητικά ανήκουν στο Αιγαίο, στο Ιώνιο, καθώς και στην Περιφερειακή Ενότητα Νήσων Αττικής. Επίσης, πρέπει να προσθέσουμε τη Θάσο και τη Σαμοθράκη, που διοικητικά ανήκουν στην Περιφέρεια Ανατολικής Μακεδονίας και Θράκης, τις Σποράδες που, αν και βρίσκονται στο Αιγαίο, ανήκουν διοικητικά στην Περιφέρεια της Θεσσαλίας, και τη Σκύρο, που διοικητικά ανήκει στην Περιφέρεια της Στερεάς Ελλάδας.

Κρήτη

Οι προορισμοί εντός Κρήτης μπορούν να οριστούν εύκολα ως όλες οι περιοχές που διοικητικά ανήκουν στην Περιφέρεια Κρήτης.

Δυσπρόσιτοι προορισμοί

Η πραγματική δυσκολία, λοιπόν, είναι να ορίσουμε τους δυσπρόσιτους προορισμούς. Οι δυσπρόσιτοι προορισμοί είναι κυρίως χωριά και μικροί οικισμοί που βρίσκονται μακριά από τις κεντρικές αρτηρίες του οδικού δικτύου και που, συνεπώς, προστάζουν μεγαλύτερο κόστος.

Σε κάθε περίπτωση, η εταιρεία παρέχει μια λίστα από 5116 προορισμούς που θεωρούνται δυσπρόσιτοι στο αρχείο disprositoi-proorismoi_Jan2024_23-01.pdf. Ο πίνακας έχει τρεις στήλες: Τοπωνύμιο, ΤΚ, και Σταθμός Εξυπηρέτησης.

Στην αγγλική μετάφραση του τιμοκαταλόγου της ΕΛΤΑ Courier, οι δυσπρόσιτοι προορισμοί αναφέρονται λανθασμένα ως “Inaccessible destinations”. Φυσικά, αυτοί οι προορισμοί δεν είναι “μη προσβάσιμοι”, αλλά δύσκολα προσβάσιμοι, και μια καλύτερη μετάφραση θα ήταν “Hard-to-reach destinations”.

Το τοπωνύμιο συχνά δίνεται στην καθαρεύουσα (π.χ. “Ελληνοχώριον” αντί για “Ελληνοχώρι”, “Καλόν Χωρίον” αντί για “Καλό Χωρίο”), και πολλές φορές περιέχει την ευρύτερη περιοχή για να προσδιορίσει ομόνυμους οικισμούς (π.χ. Πλατανόβρυση Πυλίας). Ο ταχυδρομικός κώδικας πολλές φορές είναι λανθασμένος. Για παράδειγμα, στην πρώτη γραμμή του πίνακα το “Ελληνοχώριων” ή Ελληνοχώρι στο Βραχάτι Κορινθίας έχει ΤΚ 20002 και όχι 20006. Ο σταθμός εξυπηρέτησης ονομάζεται είτε με το όνομα της πόλης στην οποία βρίσκεται, είτε με το όνομα του Νομού. Οι νομοί είναι μια διοικητική βαθμίδα που έχει καταργηθεί από το 2011 και μετά με το πρόγραμμα Καλλικράτη, και έτσι δεν αναφέρονται στις βάσεις γεωκωδικοποίησης.

Ο πίνακας περιλαμβάνει πολλές διπλές εγγραφές, καθώς και χωριά που έχουν εγκαταλειφθεί από κατοίκους εδώ και δεκαετίες. Κυρίως οι οικισμοί που τελειώνουν σε “-αίικα”, π.χ. “Αλευραίικα”, “Αντωνοπουλαίικα”, Άνω Δουκαναίικα” είναι είτε εντελώς εγκαταλειμμένοι ή κατοικούνται από λιγότερους από 10 κατοίκους, σύμφωνα με την τελευταία απογραφή.

Μια απλοϊκή προσέγγιση θα ήταν να αναζητήσουμε τον Ταχυδρομικό Κώδικα της διεύθυνσής μας στον πίνακα που μας παρέχεται. Υπάρχουν, όμως, ταχυδρομικοί κώδικες που αντιστοιχούν και σε δυσπρόσιτες και σε μη δυσπρόσιτες περιοχές. Για παράδειγμα, η περιοχή Νότιας Κυνουρίας με ΤΚ 22300 περιέχει το Λεωνίδιο, που δεν είναι δυσπρόσιτος προορισμός, και μαζί περιέχει 19 δυσπρόσιτες περιοχές (χωριά) με τον ίδιο ΤΚ. Αυτά τα χωριά αναφέρονται ονομαστικά στον κατάλογο.

Από τα παραπάνω, προκύπτει ότι θα πρέπει να ταιριάξουμε και το όνομα του οικισμού, έτσι όπως μας το έχει δώσει ο πελάτης του καταστήματος, με το τοπωνύμιο, όπως αυτό δίνεται στον κατάλογο. Αυτό, φυσικά, οδηγεί σε άλλα προβλήματα: Το όνομα πόλης ή οικισμού μπορεί να έχει καταχωριστεί με λάθη (είτε στα ελληνικά είτε με greeklish είτε ακόμα και στα αγγλικά) ή με κακή ορθογραφία ή με παραλλαγές. Η περιοχή “Αγιος Ιωάννης” μπορεί να αναφερθεί και ως “Αγ. Ιωάννης” ή “Ag. Ioannis” ή “Ag Ioanis”. Απαιτείται κάποια κανονικοποίηση πριν την αναζήτηση στο Nominatim, αν και η ίδια η υπηρεσία μπορεί να διορθώσει μερικά απλά λάθη ορθογραφίας.

Εάν ταιριάξουμε το όνομα και τον Ταχυδρομικό Κώδικα ανάμεσα στη διεύθυνση που έδωσε ο πελάτης και μια περιοχή του πίνακα, τότε μόνο μπορούμε να είμαστε αρκετά σίγουροι ότι η περιοχή είναι δυσπρόσιτη. Καλό είναι, βέβαια, να χρησιμοποιήσουμε και την διοικητική περιφέρεια ως περιορισμό στην αναζήτησή μας, για να αποφύγουμε τυχόν λάθη με ομόνυμες περιοχές. Για αυτόν τον σκοπό, καλό είναι να έχουμε προσθέσει στον πίνακά μας μια στήλη με τις περιφέρειες της Ελλάδας, έτσι όπως αυτές δίνονται στο WooCommerce. Εδώ μία δυσκολία είναι ότι το WooCommerce χρησιμοποιεί το πρότυπο ISO3166-2 για κωδικοποίηση των περιφερειών, τις οποίες τις ονομάζει “states”, ενώ η υπηρεσία Nominatim επιτρέπει αναζήτηση με “counties”, τις οποίες και επιστρέφει ως “Level 5 administrative regions”. Απαιτείται μια απλή μετάφραση ανάμεσα στα δύο είδη κωδικοποίησης, πριν γίνει σύγκριση.

Εάν καταλήξουμε ότι ο προορισμός δεν είναι δυσπρόσιτος, μένει να επιβεβαιώσουμε ότι η περιοχή παράδοσης δεν ανήκει στην ίδια πόλη με τη διεύθυνση του καταστήματός μας. Αυτό ακούγεται απλό, αφού έχουμε ήδη γεωκωδικοποιήσει τη διεύθυνση, και έχουμε διαθέσιμο το πεδίο “city” από το OpenStreetMaps. Υπάρχουν, όμως, και εκεί δυσκολίες: Σε περιοχές εντός της Αθήνας ή της Θεσσαλονίκης, για παράδειγμα, το πεδίο “city” θα είναι διαφορετικό ανάλογα με την περιοχή, όμως οι περιοχές αυτές λογίζονται (και χρεώνονται) ως “εντός της ίδιας πόλης”. Επιπλέον, στο πρότυπο geocodejson που επιστρέφει το API της υπηρεσίας Nominatim, η πόλη που αναζητούμε μπορεί να αναφέρεται στα πεδία διοικητικών περιοχών town ή city ή ως σχέση τύπου “Municipality”, “district”, “subdistrict” ή, τέλος, ως τύπος OSM town ή city ή ακόμα και σαν village, hamlet, κλπ. Τέλος, το όνομα της πόλης στην οποία ανήκει η διεύθυνση που αναζητούμε μπορεί να δίνεται στην βάση δεδομένων OSM είτε στα Ελληνικά, είτε στα Αγγλικά. Για παράδειγμα, μια αναζήτηση για την πόλη της Πάτρας μπορεί να επιστρέψει:

type=city

name="Patras"
display_name="Patras, Municipal Unit of Patras, Municipality of Patras, Achaia Regional Unit, Western Greece, Peloponnese, Western Greece and the Ionian, 262 21, Greece"

Αυτό μπορεί να συμβεί ακόμα και αν ζητήσουμε τα αποτελέσματα της αναζήτησης να είναι στα Ελληνικά (language=el). Αυτό συμβαίνει διότι για πολλά τοπωνύμια δεν έχουν καταχωριστεί όλες οι μεταφράσεις στη βάση δεδομένων OSM.

Μια απλή λύση

Αυτά τα προβλήματα λύνει το plugin ELTA Courier Shipping Costs για το WooCommerce. Το plugin περιέχει ένα αντίγραφο της λίστας με τις δυσπρόσιτες περιοχές, με επιπλέον πληροφορίες για την κάθε περιοχή, όπως εναλλακτικά τοπωνύμια, διορθωμένοι ΤΚ, σύγχρονες διοικητικές περιφέρειες, και αντιστοιχία με OSM IDs. Έτσι, γίνεται γρήγορα η κανονικοποίηση, γεωκωδικοποίηση και αναζήτηση της διεύθυνσης που παρέχει ο πελάτης. Στο checkout εμφανιζεται το κόστος αποστολής με τον σωστό τιμοκατάλογο της υπηρεσίας “Πόλη – Πόλη”, σε κάθε περίπτωση και χωρίς καθυστέρηση.