Order withdrawal

Ρύθμιση

Το πρόσθετο slx_order_withdrawal προσθέτει στο κατάστημα την ηλεκτρονική λειτουργία υπαναχώρησης του Άρθρου 3ζα ν. 2251/1994 (Άρθρο 11a Οδηγίας 2011/83/ΕΕ όπως τροποποιήθηκε από την 2023/2673): σύνδεσμο «Υπαναχώρηση αγοράς» στην παραγγελία, διπλή επιβεβαίωση (double opt-in) μέσω email, και λίστα διαχείρισης αιτημάτων στο backend.

Οι ρυθμίσεις βρίσκονται στο AdministrationAddonsSlx Order WithdrawalSettings.

ow-1.png

  • Προθεσμία υπαναχώρησης (ημερολογιακές ημέρες): Πόσες ημέρες διαρκεί η προθεσμία υπαναχώρησης (προεπιλογή 14). Αυτή η τιμή χρησιμοποιείται παντού όπου εμφανίζεται ο αριθμός 14 στο πρόσθετο (κείμενα σελίδων/email), άρα αλλάζοντας την ενημερώνουμε τον πελάτη αλλάζουμε και τον πραγματικό χρόνο που έχει ο πελάτης για να υπαναχωρήσει.

Προειδοποίηση

Το νόμιμο ελάχιστο της ΕΕ/Ελλάδας είναι 14 ημερολογιακές ημέρες (άρθρο 3ε ν. 2251/1994). Η ρύθμιση υπάρχει για την περίπτωση που το κατάστημα θέλει να προσφέρει μεγαλύτερη προθεσμία εθελοντικά ως πολιτική - μην ορίσετε ποτέ τιμή μικρότερη του 14.

  • Υπολογισμός προθεσμίας από: Πότε ξεκινά να μετράει η προθεσμία που ορίσαμε παραπάνω.

    • Ημερομηνία παραγγελίας: κατάλληλο μόνο για υπηρεσίες/ψηφιακά αγαθά χωρίς φυσική παράδοση.

    • Ημερομηνία παράδοσης (προεπιλογή, νομικά ορθή για φυσικά αγαθά κατά το Άρθρο 3ε ν. 2251/1994): η προθεσμία δεν ξεκινά να τρέχει πριν η παραγγελία φτάσει σε κάποια από τις παρακάτω «καταστάσεις παράδοσης» - μέχρι τότε ο πελάτης έχει ούτως ή άλλως δικαίωμα υπαναχώρησης, απλά χωρίς προθεσμία λήξης.

  • Καταστάσεις παραγγελίας "Παραδόθηκε": Πολλαπλή επιλογή. Η/οι κατάσταση(εις) παραγγελίας που θεωρούμε ότι σηματοδοτούν παράδοση και ξεκινούν την προθεσμία. Συνήθως χρειάζονται δύο καταστάσεις εδώ όταν συνυπάρχουν αντικαταβολή και κάρτα: π.χ. Open (η παραγγελία θεωρείται παραδομένη με την αντικαταβολή) και Paid (η παραγγελία θεωρείται παραδομένη μόλις πληρωθεί online). Μόνο όταν Υπολογισμός προθεσμίας από είναι Ημερομηνία παράδοσης.

  • Να μην εμφανίζεται ποτέ η επιλογή υπαναχώρησης για αυτές τις καταστάσεις: Πολλαπλή επιλογή. Καταστάσεις όπου δεν βγάζει νόημα να προσφέρεται υπαναχώρηση (π.χ. ήδη ακυρωμένη, αποτυχημένη παραγγελία).

  • Ισχύς συνδέσμου επιβεβαίωσης (ώρες): Πόσες ώρες παραμένει έγκυρος ο σύνδεσμος επιβεβαίωσης που στέλνεται με email στο βήμα 2 (προεπιλογή 48).

  • Χρόνος αναμονής επαναποστολής email (δευτερόλεπτα): Ελάχιστος χρόνος αναμονής πριν ο πελάτης μπορεί να ζητήσει ξανά αποστολή του email επιβεβαίωσης (προεπιλογή 60).

Προειδοποίηση

Η κατάσταση παραγγελίας που επιλέγουμε στο Καταστάσεις παραγγελίας "Παραδόθηκε" δεν χρειάζεται να σημαίνει ότι το προϊόν παραδόθηκε φυσικά στον πελάτη (το πρόσθετο δεν έχει τρόπο να το γνωρίζει αυτό με σιγουριά) - είναι απλά η κατάσταση που εμείς ορίζουμε ως σημείο εκκίνησης της προθεσμίας, ανά τρόπο πληρωμής. Επιλέγουμε προσεκτικά, σύμφωνα με τη ροή καταστάσεων του δικού μας καταστήματος.

Σημείωση

Αν αλλάξουμε χειροκίνητα την κατάσταση μίας παραγγελίας ξανά σε κάποια από τις καταστάσεις Παραδόθηκε (π.χ. διόρθωση λάθους), η προθεσμία επανεκκινεί από την τρέχουσα στιγμή. Αυτό είναι σκόπιμο - δίνει στον διαχειριστή έλεγχο στην προθεσμία μέσω απλής αλλαγής κατάστασης.

Διαχείριση

Λίστα αιτημάτων υπαναχώρησης

Στο μενού OrdersΑιτήματα υπαναχώρησης εμφανίζεται η λίστα όλων των αιτημάτων (Εκκρεμεί / Επιβεβαιώθηκε / Ολοκληρώθηκε). Στη λίστα δεν εμφανίζονται παραγγελίες που έφτασαν σε κατάσταση παράδοσης αλλά ο πελάτης δεν έχει ζητήσει υπαναχώρηση (κατάσταση Δεν έχει ζητηθεί) - μπορούμε να τις δούμε επιλέγοντας ρητά αυτό το φίλτρο κατάστασης.

ow-2.png

Από το φίλτρο αναζήτησης στο πλάι μπορούμε να φιλτράρουμε ανά κατάσταση και ανά διάστημα ημερομηνιών (ημερομηνία αιτήματος).

Επεξεργασία αιτήματος

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

ow-3.png

Όταν το αίτημα είναι σε κατάσταση Εκκρεμεί, εμφανίζεται επιπλέον το κουμπί Εξαναγκασμένη επιβεβαίωση και αποστολή email: περνάει το αίτημα κατευθείαν σε Επιβεβαιώθηκε χωρίς να χρειαστεί ο πελάτης να πατήσει το σύνδεσμο στο email του, και στέλνει τα ίδια email επιβεβαίωσης/ειδοποίησης σαν να το είχε πατήσει. Χρήσιμο για πελάτες που δεν βρίσκουν ή δεν εμπιστεύονται το email επιβεβαίωσης.

ow-4.png

Πληροφορίες υπαναχώρησης στην παραγγελία

Στις λεπτομέρειες της παραγγελίας (backend), αν υπάρχει ενεργό αίτημα υπαναχώρησης, εμφανίζεται σχετικό πλαίσιο με κατάσταση και ημερομηνίες. Αν η κατάσταση είναι Επιβεβαιώθηκε, εμφανίζεται και το κουμπί Σήμανση ως ολοκληρωμένο (π.χ. αφού ολοκληρωθεί η επιστροφή/επιστροφή χρημάτων).

ow-5.png

Πλευρά πελάτη

Σύνδεσμος στην παραγγελία

Στις λεπτομέρειες της παραγγελίας (my account), όσο η παραγγελία είναι εντός προθεσμίας, εμφανίζεται ο σύνδεσμος Υπαναχώρηση αγοράς δίπλα στο Re-order.

ow-6.png

Βήμα 2 - Επιβεβαίωση στοιχείων

Πατώντας τον σύνδεσμο (είτε από την παραγγελία, είτε από το email, είτε μετά από αναζήτηση ως μη εγγεγραμμένος χρήστης) εμφανίζεται σελίδα με τα στοιχεία της παραγγελίας και το κουμπί Επιβεβαίωση υπαναχώρησης (ακριβής διατύπωση όπως απαιτεί ο νόμος) και cancel.

ow-7.png

Αναμονή email επιβεβαίωσης

Μετά το Επιβεβαίωση υπαναχώρησης, ο πελάτης βλέπει σελίδα αναμονής με κουμπί επαναποστολής email (σέβεται το Χρόνος αναμονής επαναποστολής).

ow-8.png

Ολοκλήρωση μετά το κλικ στο email

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

ow-9.png

Αν ο σύνδεσμος έχει λήξει ή έχει ήδη χρησιμοποιηθεί, εμφανίζεται σχετικό μήνυμα.

ow-10.png

Αναζήτηση για μη εγγεγραμμένους χρήστες

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

ow-11.png

Σημείωση

Το URL της σελίδας αναζήτησης είναι σταθερό: order_withdrawal.lookup. Ο σύνδεσμος προς αυτή τη σελίδα δεν τοποθετείται αυτόματα πουθενά στο my account - προστίθεται χειροκίνητα ανά κατάστημα, μέσω μενού ή στατικής σελίδας, ανάλογα με το πού θέλουμε να είναι ορατός.

Προειδοποίηση

Η φόρμα αναζήτησης δεν έχει ακόμα CAPTCHA - προγραμματίζεται να συνδεθεί με το πρόσθετο recaptcha όταν ενεργοποιηθεί στο κατάστημα.

Email

Το πρόσθετο στέλνει τέσσερα email, όλα ξεχωριστά από το κανονικό email επιβεβαίωσης παραγγελίας του CS-Cart (δεν το τροποποιεί):

  1. Ειδοποίηση δικαιώματος - στέλνεται μία φορά, αμέσως μετά την καταχώρηση της παραγγελίας, ενημερώνει τον πελάτη για το δικαίωμα υπαναχώρησης με σύνδεσμο προς τη σελίδα υπαναχώρησης (η προθεσμία στο κείμενο του email αντανακλά την ρύθμιση Προθεσμία υπαναχώρησης).

  2. Email επιβεβαίωσης - στέλνεται μόλις ο πελάτης πατήσει Επιβεβαίωση υπαναχώρησης στο βήμα 2, περιέχει τον σύνδεσμο επιβεβαίωσης (double opt-in).

  3. Επιβεβαίωση προς πελάτη - στέλνεται μόλις ο πελάτης πατήσει τον σύνδεσμο επιβεβαίωσης (ή μετά από χειροκίνητη «εξαναγκασμένη επιβεβαίωση» από τον διαχειριστή).

  4. Ειδοποίηση διαχειριστή - στέλνεται ταυτόχρονα με το #3, στο company_orders_department, με σύνδεσμο προς την παραγγελία στο backend.

Τα templates των email είναι διαθέσιμα προς επεξεργασία από DesignEmail templates (αναζήτηση order withdrawal).

Εναλλακτικά: σύνδεσμος μέσα στο κύριο email παραγγελίας

Αν δεν θέλουμε να στέλνεται ξεχωριστό email #1 (Ειδοποίηση δικαιώματος) - π.χ. γιατί ο πελάτης μπερδεύεται με δύο email μετά την παραγγελία - το πρόσθετο εκθέτει τον σύνδεσμο υπαναχώρησης ως μεταβλητή εγγράφου (document variable), διαθέσιμη σε οποιοδήποτε template τύπου order (Twig), συμπεριλαμβανομένου του ίδιου του κύριου email επιβεβαίωσης παραγγελίας του CS-Cart - χωρίς να χρειάζεται να αντικαταστήσουμε κανένα core template.

Για να το χρησιμοποιήσουμε:

  1. Απενεργοποιούμε τη ρύθμιση Αποστολή email δικαιώματος υπαναχώρησης μετά την καταχώρηση παραγγελίας στις ρυθμίσεις του προσθέτου.

  2. Επεξεργαζόμαστε το δικό μας template επιβεβαίωσης παραγγελίας (DesignEmail templatesOrder placement, ή όποιο άλλο template τύπου παραγγελίας θέλουμε) και προσθέτουμε τη μεταβλητή:

    <a href="{{ slx_order_withdrawal_link.url }}">
        {{ __("slx_order_withdrawal.email_link_text", {"[days]": slx_order_withdrawal_link.days}) }}
    </a>
    

Σημείωση

Η μεταβλητή slx_order_withdrawal_link είναι πάντα διαθέσιμη σε κάθε template τύπου order (invoice, credit memo, κύριο email παραγγελίας κ.λπ.), ανεξάρτητα από τη ρύθμιση παραπάνω - η ρύθμιση ελέγχει μόνο αν θα σταλεί το ξεχωριστό email #1, όχι αν θα υπάρχει η μεταβλητή. Μπορούμε δηλαδή να έχουμε και τα δύο ενεργά αν θέλουμε (π.χ. για δοκιμή πριν απενεργοποιήσουμε το ξεχωριστό email).

Προειδοποίηση

Αν απενεργοποιήσουμε το ξεχωριστό email χωρίς να προσθέσουμε τη μεταβλητή σε κανένα δικό μας template, ο πελάτης δεν θα ενημερωθεί καθόλου για το δικαίωμα υπαναχώρησης μέσω email (θα εξακολουθεί βέβαια να βλέπει τον σύνδεσμο Υπαναχώρηση αγοράς στην παραγγελία του, βλέπε Πλευρά πελάτη παραπάνω).

Τεχνικά, η μεταβλητή υλοποιείται ως κλάση που υλοποιεί το Tygh\Template\IVariable (Slx\OrderWithdrawal\Variables\WithdrawalLinkVariable), δηλωμένη στο schemas/documents/order.post.php - το ίδιο μοτίβο που χρησιμοποιεί και το πρόσθετο as_invoices_mods για τη δική του μεταβλητή invoice_due.

Προειδοποίηση

Προσοχή για το σύστημα των ειδοποιήσεων, για το παλιο σύστημα πρέπει να κάνουμε το παρακάτω.

Για την περίπτωση παλαιού συστήματος ειδοποιήσεων (αρχεια tpl), προσθέτουμε στο

common/letter_footer.tpl

και στο backend και στο theme, το παρακάτω:

{if $order_info}
    <p>

        {$ow = slx_order_withdrawal_email_link($order_info.order_id, $order_info.status)}
        {if $ow}
        <br />
        <a href="{$ow.url}">
            {__("slx_order_withdrawal.email_link_text", ["[days]" => $ow.days])}
        </a>
        {/if}			    
    </p>
{/if}