Αιτήματα Δωρεάν Ανάπτυξης
#5767 από ckesisis
04 Ιουν 2019, 10:11
Καλημέρα παιδιά,

Έχω δημιουργήσει μία ομάδα πελατών για Τιμολόγιο με 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"
}

Ευχαριστώ εκ των προτέρων
#5768 από Alexandra
05 Ιουν 2019, 0:42
Καλημέρα,

Σε vanilla OpenCart τα προσαρμοσμένα πεδία αποθηκεύονται indexed στη βάση έτσι: {"2":"kappoia-doy","1":"kapoio-afm"}

Μπορείς να αντικαταστήσεις τους αριθμούς στο json σε associative array με κλειδιά όπως ανέφερες, όμως υπάρχουν πολλά σημεία που θα μπορούσες να κάνεις τη μετατροπή. Επειδή δεν μας έχεις δώσει πληροφορίες σχετικά με το τι θες να κάνεις με τα δεδομένα, θα πρότεινα σαν πιο ασφαλές μέρος το model στο catalog/model/checkout/order.php.

μετά το
Κώδικας: Επιλογή όλωνpublic function addOrder($data) {


και
Κώδικας: Επιλογή όλων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;
#5769 από ckesisis
05 Ιουν 2019, 10:29
Καλημέρα Αλεξάνδρα,

Ευχαριστώ για την άμεση απάντηση.

Χρησιμοποιώ Journal 3 οπότε η αλλαγή χρειάστηκε να πραγματοποιηθεί στο catalog/model/journal3/order.php

Δούλεψε όπως ακριβώς ήθελα.

Για την ιστορία, θα το χρησιμοποιήθω για την γέφυρα με το SOFT1 ERP έτσι ώστε να δημιουργεί αυτόματα τιμολόγια.
#5828 από Alexandra
23 Ιουλ 2019, 15:04
Καλησπέρα,

Σε 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
#5833 από stavrosa
24 Ιουλ 2019, 11:16
Σε ευχαριστώ @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)

ΣΥΝΔΕΔΕΜΕΝΑ ΜΕΛΗ

Μέλη σε αυτό το φόρουμ: Δεν υπάρχουν εγγεγραμμένα μέλη και 7 επισκέπτες