OpenCart-Hellas 

Η Ελληνική κοινότητα υποστήριξης του Opencart

Εδώ μπορείτε να ζητάτε δωρεάν βοήθεια για την ανάπτυξη απλών τροποποιήσεων (Mods) στον κώδικα του Opencart.
#5767
Καλημέρα παιδιά,

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

Σε 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
Καλημέρα Αλεξάνδρα,

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

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

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

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

Σε 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
Σε ευχαριστώ @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)
#6393
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:

Μπορείς να κάνεις css overrides από τις ρυθμίσεις […]

Τα links δεν δουλευουν

Ευχαριστώ πάρα πολύ. Τα σέβη μου.

Καλημέρα, - Δοκίμασε πρώτα να δημιουργήσεις μέσα[…]

Πριν ζητήσετε βοήθεια στο φόρουμ, παρακαλούμε ελέγξτε αν υπάρχει έτοιμη λύση στο OpenCart Extension Marketplace!