Σελίδα 1 από 1
Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 04 Ιουν 2019, 10:11
από ckesisis
Καλημέρα παιδιά,
Έχω δημιουργήσει μία ομάδα πελατών για Τιμολόγιο με 4 πεδία.
1) Επωνυμία
2) ΑΦΜ
3) Επαγγελμα
4) ΔΟΥ
όταν καταχωρώ μια παραγγελία με αυτά τα πεδία συμπληρωμένα, αποθηκεύονται στην βάση δεδομένων και συγκεκριμένο στον πίνακα oc_order, στην στήλη custom_field
Παράδειγμα αποθήκευσης
["","TOP STORE IKE","800861662","\u0395 \u0398\u0395\u03a3\u03a3\u0391\u039b\u039f\u039d\u0399\u039a\u0397\u03a3","\u0395\u039c\u03a0\u039f\u03a1\u0399\u039f \u03a3\u03a5\u03a3\u039a\u0395\u03a9\u039d \u03a4\u0397\u039b\u0395\u03a6\u03a9\u039d\u03a5\u0391\u03a3"]
Πως θα μπορούσα να αλλαξω τον τρόπο αποθήκευσης σε JSON με indexes? Παράδειγμα παρακάτω
Επιθυμητό αποτέλεσμα
{
"eponymia":"TOP STORE IKE",
"AFM":"800861662",
"DOY":"\u0395 \u0398\u0395\u03a3\u03a3\u0391\u039b\u039f\u039d\u0399\u039a\u0397\u03a3",
"Epaggelma":"\u0395\u039c\u03a0\u039f\u03a1\u0399\u039f \u03a3\u03a5\u03a3\u039a\u0395\u03a9\u039d \u03a4\u0397\u039b\u0395\u03a6\u03a9\u039d\u03a5\u0391\u03a3"
}
Ευχαριστώ εκ των προτέρων
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 05 Ιουν 2019, 0:42
από Alexandra
Καλημέρα,
Σε vanilla OpenCart τα προσαρμοσμένα πεδία αποθηκεύονται indexed στη βάση έτσι: {"2":"kappoia-doy","1":"kapoio-afm"}
Μπορείς να αντικαταστήσεις τους αριθμούς στο json σε associative array με κλειδιά όπως ανέφερες, όμως υπάρχουν πολλά σημεία που θα μπορούσες να κάνεις τη μετατροπή. Επειδή δεν μας έχεις δώσει πληροφορίες σχετικά με το τι θες να κάνεις με τα δεδομένα, θα πρότεινα σαν πιο ασφαλές μέρος το model στο catalog/model/checkout/order.php.
μετά το
και
Κώδικας: Επιλογή όλωνpublic function editOrder($order_id, $data) {
πρόσθεσε
Κώδικας: Επιλογή όλων$temp_cf['afm'] = !empty($data['custom_field']['1']) ? $data['custom_field']['1'] : '';
$temp_cf['doy'] = !empty($data['custom_field']['2']) ? $data['custom_field']['2'] : '';
... κλπ τα διάφορα προσαρμοσμένα πεδία που θες...
$data['custom_field'] = $temp_cf;
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 05 Ιουν 2019, 10:29
από ckesisis
Καλημέρα Αλεξάνδρα,
Ευχαριστώ για την άμεση απάντηση.
Χρησιμοποιώ Journal 3 οπότε η αλλαγή χρειάστηκε να πραγματοποιηθεί στο catalog/model/journal3/order.php
Δούλεψε όπως ακριβώς ήθελα.
Για την ιστορία, θα το χρησιμοποιήθω για την γέφυρα με το SOFT1 ERP έτσι ώστε να δημιουργεί αυτόματα τιμολόγια.
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 23 Ιούλ 2019, 12:47
από stavrosa
Καλημέρα και στους δυο
Μηπως ξερετε πως μπορώ να κρατήσω το φορματ σε ελληνικά utf-8 στη βαση στα custom_fields και οχι τους χαρακτηρές /u234 κτλ?
Ευχαριστώ
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 23 Ιούλ 2019, 15:04
από Alexandra
Καλησπέρα,
Σε vanilla OpenCart στο catalog/model/checkout/order.php αντικαθιστάς τα:
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field'])
json_encode($data['payment_custom_field'])
json_encode($data['shipping_custom_field'])
σε
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field'], JSON_UNESCAPED_UNICODE)
json_encode($data['payment_custom_field'], JSON_UNESCAPED_UNICODE)
json_encode($data['shipping_custom_field'], JSON_UNESCAPED_UNICODE)
Αν χρησιμοποιείς Journal που έχει δικό του model, τότε οι αλλαγές πρέπει να γίνουν:
Για Journal 2 στο : catalog/model/journal2/checkout.php
Για Journal 3 στο : catalog/model/journal3/order.php και catalog/model/journal3/checkout.php
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 24 Ιούλ 2019, 11:16
από stavrosa
Σε ευχαριστώ @Alexandra!
Edit:
Για οσους το ξαναψάξουν στο μέλλον, το json_encode των custom_fields υπάρχει σε ακόμα 3 σήμεια για να μην γίνει η αλλαγή. Η σελίδα που ο customer αλλάζει τα στοιχεία του και η σελίδα που ο admin αποθηκεύει τον customer
admin/model/customer/customer.php
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field'], JSON_UNESCAPED_UNICODE)
catalog/model/account/customer.php
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field']['account'], JSON_UNESCAPED_UNICODE)
catalog/model/account/address.php
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field']['address'], JSON_UNESCAPED_UNICODE)
Re: Αλλαγή Τρόπου Αποθήκευσης Custom Field Παραγγελίας
Δημοσιεύτηκε: 25 Μάιος 2020, 0:11
από stavrosa
EDIT
και μια 4η
catalog/model/checkout/order.php
Κώδικας: Επιλογή όλωνjson_encode($data['custom_field'], JSON_UNESCAPED_UNICODE)
Κώδικας: Επιλογή όλωνjson_encode($data['payment_custom_field'], JSON_UNESCAPED_UNICODE)
Κώδικας: Επιλογή όλωνjson_encode($data['shipping_custom_field'], JSON_UNESCAPED_UNICODE)
