Jump to content

[ΛΗΘΥΚΕ] ΚΕΦΑΛΑΙΑ ΣΤΗΝ ΕΓΓΡΑΦΗ


Site-View

Recommended Posts

Καλησπέρα στην ομάδα

Ήθελα να ρωτήσω εάν έχει κάποιος κάποια ιδέα.

Θέλει ο πελάτης όταν κάποιος κάνει εγγραφή, όπως και να τα γράφει , όλα τα στοιχεία του να περνάνε στην βάση όλα κεφάλαια.

Δεν θέλει να τα βλέπει απλά κεφαλαία, που άπλα πειράζεις το css , θέλει να αποθηκευονται κεφαλαία, ετσι ώστε σε όλα να βγαίνουν ετσι,τιμολόγια,εμαιλ κτλ.

πείραξα το Address.php μέσα στο /classes/ στην γραμμή 169 και την έκανα 

   public function add($autodate = true, $null_values = false)
{
  if (!parent::add($autodate, $null_values)) {
      return false;
  }
  
  // Capitalize the first name
  $this->firstname = Tools::strtoupper($this->firstname);
  
  // Capitalize the first name
  $this->lastname = Tools::strtoupper($this->lastname);
  
  // Capitalize the address fields
  $this->address1 = Tools::strtoupper($this->address1);
  $this->address2 = Tools::strtoupper($this->address2);
  
  if (Validate::isUnsignedId($this->id_customer)) {
      Customer::resetAddressCache($this->id_customer, $this->id);
  }
  return true;
}

    public function update($null_values = false)
{
  // Empty related caches
  if (isset(self::$_idCountries[$this->id])) {
      unset(self::$_idCountries[$this->id]);
  }
  if (isset(self::$_idZones[$this->id])) {
      unset(self::$_idZones[$this->id]);
  }
  
  // Capitalize the first name
  $this->firstname = Tools::strtoupper($this->firstname);
  
  // Capitalize the first name
  $this->lastname = Tools::strtoupper($this->lastname);
  
  // Capitalize the address fields
  $this->address1 = Tools::strtoupper($this->address1);
  $this->address2 = Tools::strtoupper($this->address2);
  
  if (Validate::isUnsignedId($this->id_customer)) {
      Customer::resetAddressCache($this->id_customer, $this->id);
  }

  return parent::update($null_values);
}

Άλλα δεν είχε κάποιο αποτέλεσμα.

Όποιος έχει κάποια ιδέα ,ευπρόσδεκτη.

Edited by Site-View (see edit history)
Link to comment
Share on other sites

Αλλάζοντας στο controllers/front/AuhController.php στη γραμμή 412 και βάζοντας αυτό :

$_POST['lastname'] = strtoupper(Tools::getValue('customer_lastname', $lastnameAddress));
$_POST['firstname'] = strtoupper(Tools::getValue('customer_firstname', $firstnameAddress));

Παίζει όταν κάνεις εγγραφή με λατινικούς χαρακτήρες, αλλά δεν δουλεύει στα Ελληνικά.

 

Link to comment
Share on other sites

Καταρχήν είναι μεγάλο λάθος να αποθηκέψεις τα δεδομένα αλλάζοντας τα.

Όπως και να τα έχεις αποθηκευμένα μπορείς εύκολα να τα αλλάξεις σε upper ή σε lower ή capitalize, αλλά να τα ξανακάνεις όπως ήταν με τόνους δεν γίνετε. (αναλόγως την υλοποίηση του upper ή του lower μπορείς να αφαιρεί τους τόνους)

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

Παρόλα αυτά... Εγώ θα κοιτούσα να το κάνω πάνω στο query που κάνει το save στην βάση με upper() .

Μπορείς να κάνεις και δοκιμές για να δεις το αποτέλεσμα σε διάφορες γλώσσες - τρόπους γραφής με select upper("This is a test") ή select upper("Κάνε μία δοκιμή") για να δεις πως συμπεριφέρεται με τους τόνους.

Για τι έκδοση prestashop μιλάμε?

Υ.Γ. Άλλο το capitalize άλλο το upper

Υ.Γ.2 Όταν κάνεις αλλαγές κάνεις clear cache ή έχεις disable την cache?  

Edited by sanctusmob (see edit history)
Link to comment
Share on other sites

Στα υπάρχων δεδομένα τα έχω κάνει όλα με upper ,άλλα σε νέους πελάτες θα πρέπει να τρέχει στη βάση κάθε τόσο και τα αλλάζει και δεν θέλουμε κάτι τέτοιο.

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

Είναι όπως στης αεροπορικές εταιρίες,που ότι και να γράψεις το βγάζει κεφαλαία, σαρεσει δε σαρεσει, και έχει λογική ,ειδικά σε κάποιες γλώσσες,όποτε το κάνεις για όλους.

Όταν γράφει ο πελάτης το έχω κάνει να βγαίνει κατευθείαν κεφάλαια ,στο authentication.tpl βάζοντας style="text-transform: uppercase;",αλλά δεν το σώνει στη βάση.

Πειράζοντας το AuhController.php ,γράφει στη βάση το όνομα και το επώνυμο στα λατινικά και δεν μου το παίρνει στα ελληνικά.

Έκδοση 1.6.1.17

 

*Έπαιξε και στα ελληνικά ,ήθελε Tools::strtoupper όχι σκέτο strtoupper

τώρα μένει να πειράξω για διεύθυνση, πόλη, δραστηριοτητα, ΔΟΥ κτλ.

Edited by Site-View (see edit history)
Link to comment
Share on other sites

Έχω κολλήσει κάπου.

Όταν ένας πελάτης κάνει εγγραφή,περνάει ονοματεπωνυμο ΚΕΦΑΛΑΙΑ, αλλά δεν περνάει διεύθυνση ,πόλη,ΔΟΥ και δραστηριοτητα στα κεφαλαία.

Εαν μετά την εγγραφή κάνει απλά ενημέρωση στην διεύθυνση ,τότε περνιούνται στα κεφαλαία, άρα το Addresscontroller.php είναι οκ.

Εαν είναι απλός πελάτης και πάει να κάνει ενημέρωση με  Εταιρία, ΔΟΥ, Δραστηριοτητα ή νέα διεύθυνσή, τότε περνάει κανονικά τα κεφαλαία, άρα το  identitycontroller.php είναι οκ.

Ξέρετε που κάνει import στην βάση ,σε αρχική καταχώριση την διεύθυνση ,πόλη ,ape ,siret? στο AuthController.php δεν είναι.

 

Edited by Site-View (see edit history)
Link to comment
Share on other sites

Θέλω να το βρω και για άλλα project, με αλλά template, εξάλλου αυτό παίζει εάν θες το πρώτο γράμμα κεφάλαιο η όλα έχει πολλές εφαρμογές.

Link to comment
Share on other sites

Δοκίμασε αυτό στο Address.php

public function add($autodate = true, $null_values = false)
    {
        // Capitalize the first name
        $this->firstname = grstrtoupper($this->firstname);
        $this->lastname = grstrtoupper($this->lastname);
        $this->address1 = grstrtoupper($this->address1);
        $this->address2 = grstrtoupper($this->address2);
        $this->city = grstrtoupper($this->city);

        if (!parent::add($autodate, $null_values)) {
            return false;
        }

        if (Validate::isUnsignedId($this->id_customer)) {
            Customer::resetAddressCache($this->id_customer, $this->id);
        }

        return true;
    }

--------------------------------------------

και πρόσθεσε αυτό το function

function grstrtoupper($string) {
    

        $latin_check = '/[\x{0030}-\x{007f}]/u';

        if (preg_match($latin_check, $string))
        {

            $string = strtoupper($string);

        }

        $letters                                  = array('α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω');
        $letters_accent                         = array('ά', 'έ', 'ή', 'ί', 'ό', 'ύ', 'ώ');
        $letters_upper_accent                     = array('Ά', 'Έ', 'Ή', 'Ί', 'Ό', 'Ύ', 'Ώ');
        $letters_upper_solvents                 = array('ϊ', 'ϋ');
        $letters_other                             = array('ς');

        $letters_to_uppercase                    = array('Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω');
        $letters_accent_to_uppercase             = array('Α', 'Ε', 'Η', 'Ι', 'Ο', 'Υ', 'Ω');
        $letters_upper_accent_to_uppercase         = array('Α', 'Ε', 'Η', 'Ι', 'Ο', 'Υ', 'Ω');
        $letters_upper_solvents_to_uppercase     = array('Ι', 'Υ');
        $letters_other_to_uppercase             = array('Σ');

        $lowercase = array_merge($letters, $letters_accent, $letters_upper_accent, $letters_upper_solvents, $letters_other);
        $uppercase = array_merge($letters_to_uppercase, $letters_accent_to_uppercase, $letters_upper_accent_to_uppercase, $letters_upper_solvents_to_uppercase, $letters_other_to_uppercase);

        $uppecase_string = str_replace($lowercase, $uppercase, $string);

        return $uppecase_string;

    }

Link to comment
Share on other sites

Καλησπέρα,

Καταρχάς σε ευχαριστώ που απασχολήθηκες.

Δεν παίζει χτυπάει .

 PHP Parse error:  syntax error, unexpected ' ' (T_STRING), expecting ';' or '{' in /home/xxxxxxx/public_html/classes/Address.php on line 169

H γραμμή 169 είναι η  

 

$this->firstname = grstrtoupper($this->firstname);
$this->lastname = grstrtoupper($this->lastname);
$this->address1 = grstrtoupper($this->address1);
$this->address2 = grstrtoupper($this->address2);
$this->city = grstrtoupper($this->city);

Link to comment
Share on other sites

Σε ευχαριστώ το βρήκα.

Έπαιξε με αυτό :

public function add($autodate = true, $null_values = false)
    {
        // Capitalize the first name

  $this->address1 = Tools::strtoupper($this->address1);
  $this->address2 = Tools::strtoupper($this->address2);
  $this->city = Tools::strtoupper($this->city);
  $this->company = Tools::strtoupper($this->company);
  
        if (!parent::add($autodate, $null_values)) {
            return false;
        }

        if (Validate::isUnsignedId($this->id_customer)) {
            Customer::resetAddressCache($this->id_customer, $this->id);
        }
        return true;
    }

 

και χωρίς την function

 

 

Link to comment
Share on other sites

Τώρα το μόνο που δεν περνάει  είναι το εταιρία,ape,siret στον πελάτη.

Εταιρία στην διεύθυνση την περνάει κανονικά κεφάλαια.

Είναι ενεργοποιημενο το B2B.

Link to comment
Share on other sites

Έπαιξε και αυτό με το παρακάτω κωδικά στο AuthController.php

 

// Preparing customer
        $customer = new Customer();
        $lastnameAddress = Tools::getValue('lastname');
        $firstnameAddress = Tools::getValue('firstname');
        $firstcompany = Tools::getValue('company');
        $firstsiret = Tools::getValue('siret');
        $firstape = Tools::getValue('ape');
        $_POST['lastname'] = Tools::strtoupper(Tools::getValue('customer_lastname', $lastnameAddress));
        $_POST['firstname'] = Tools::strtoupper(Tools::getValue('customer_firstname', $firstnameAddress));
        $_POST['company'] = Tools::strtoupper(Tools::getValue('customer_company', $firstcompany));
        $_POST['siret'] = Tools::strtoupper(Tools::getValue('customer_siret', $firstsiret));
        $_POST['ape'] = Tools::strtoupper(Tools::getValue('customer_ape', $firstape));
        $addresses_types = array('address');
        if (!Configuration::get('PS_ORDER_PROCESS_TYPE') && Configuration::get('PS_GUEST_CHECKOUT_ENABLED') && Tools::getValue('invoice_address')) {
            $addresses_types[] = 'address_invoice';
        }

 

Θα τα μαζέψω όλα μαζί και θα το γράψω αναλυτικά το θέμα, μήπως το χρειαστεί και κάποιος άλλος.

Edited by Site-View (see edit history)
  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...