Σελίδα 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 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;

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)
:roll: