josejumbo Posted February 29, 2012 Share Posted February 29, 2012 Dobrý den, potřeboval bych pomoci v tom, zda-li jdou někde upravit data, které zákazník vložil při vytvoření objednávky, ale sám se neregistroval (Objednávka bez registrace). Děkuji. Link to comment Share on other sites More sharing options...
JAKCRABBIT Posted February 29, 2012 Share Posted February 29, 2012 Jistě, zákazník je veden v administraci jako každý jiný zákazník (akorát on si myslí že není), takže lze údaje upravit/opravit jak je třeba. Link to comment Share on other sites More sharing options...
josejumbo Posted March 1, 2012 Author Share Posted March 1, 2012 Jistě, zákazník je veden v administraci jako každý jiný zákazník (akorát on si myslí že není), takže lze údaje upravit/opravit jak je třeba. Když se to v administraci snažím přepsat, tak mi to dává hlášku: Tato e-mailová adresa není registrovaná. Link to comment Share on other sites More sharing options...
JAKCRABBIT Posted March 1, 2012 Share Posted March 1, 2012 Hm, koukám že to byl bug a už to opravili. Čili tady máš postup jak to obejít: http://www.prestashop.com/forums/index.php?/topic/100490-instant-checkout-address-change-not-possible/page__view__findpost__p__579754 Link to comment Share on other sites More sharing options...
josejumbo Posted March 1, 2012 Author Share Posted March 1, 2012 Hm, koukám že to byl bug a už to opravili. Čili tady máš postup jak to obejít: http://www.prestasho...post__p__579754 Dle tohoto návodu nemohu najít řádek , kde to změnit, v tom souboru jej nevidím, poradí mi někdo? Přikládám soubor, kde se to má měit, dle návodu a anglickém foru. if (Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) include_once(_PS_MODULE_DIR_.'vatnumber/vatnumber.php'); class AddressControllerCore extends FrontController { public $auth = true; public $guestAllowed = true; public $php_self = 'address.php'; public $authRedirection = 'addresses.php'; public $ssl = true; protected $_address; public function preProcess() { parent::preProcess(); if ($back = Tools::getValue('back')) self::$smarty->assign('back', Tools::safeOutput($back)); if ($mod = Tools::getValue('mod')) self::$smarty->assign('mod', Tools::safeOutput($mod)); if (Tools::isSubmit('ajax') AND Tools::isSubmit('type')) { if (Tools::getValue('type') == 'delivery') $id_address = isset(self::$cart->id_address_delivery) ? (int)self::$cart->id_address_delivery : 0; elseif (Tools::getValue('type') == 'invoice') $id_address = (isset(self::$cart->id_address_invoice) AND self::$cart->id_address_invoice != self::$cart->id_address_delivery) ? (int)self::$cart->id_address_invoice : 0; else exit; } else $id_address = (int)Tools::getValue('id_address', 0); if ($id_address) { $this->_address = new Address((int)$id_address); if (Validate::isLoadedObject($this->_address) AND Customer::customerHasAddress((int)(self::$cookie->id_customer), (int)($id_address))) { if (Tools::isSubmit('delete')) { if (self::$cart->id_address_invoice == $this->_address->id) unset(self::$cart->id_address_invoice); if (self::$cart->id_address_delivery == $this->_address->id) unset(self::$cart->id_address_delivery); if ($this->_address->delete()) Tools::redirect('addresses.php'); $this->errors[] = Tools::displayError('This address cannot be deleted.'); } self::$smarty->assign(array('address' => $this->_address, 'id_address' => (int)$id_address)); } elseif (Tools::isSubmit('ajax')) exit; else Tools::redirect('addresses.php'); } if (Tools::isSubmit('submitAddress')) { $address = new Address(); $this->errors = $address->validateControler(); $address->id_customer = (int)(self::$cookie->id_customer); if (!Tools::getValue('phone') AND !Tools::getValue('phone_mobile')) $this->errors[] = Tools::displayError('You must register at least one phone number'); if (!$country = new Country((int)$address->id_country) OR !Validate::isLoadedObject($country)) die(Tools::displayError()); /* US customer: normalize the address */ if ($address->id_country == Country::getByIso('US')) { include_once(_PS_TAASC_PATH_.'AddressStandardizationSolution.php'); $normalize = new AddressStandardizationSolution; $address->address1 = $normalize->AddressLineStandardization($address->address1); $address->address2 = $normalize->AddressLineStandardization($address->address2); } $zip_code_format = $country->zip_code_format; if ($country->need_zip_code) { if (($postcode = Tools::getValue('postcode')) AND $zip_code_format) { $zip_regexp = '/^'.$zip_code_format.'$/ui'; $zip_regexp = str_replace(' ', '( |)', $zip_regexp); $zip_regexp = str_replace('-', '(-|)', $zip_regexp); $zip_regexp = str_replace('N', '[0-9]', $zip_regexp); $zip_regexp = str_replace('L', '[a-zA-Z]', $zip_regexp); $zip_regexp = str_replace('C', $country->iso_code, $zip_regexp); if (!preg_match($zip_regexp, $postcode)) $this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is invalid.').'<br />'.Tools::displayError('Must be typed as follows:').' '.str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $zip_code_format))); } elseif ($zip_code_format) $this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is required.'); elseif ($postcode AND !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) $this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is invalid.').'<br />'.Tools::displayError('Must be typed as follows:').' '.str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $zip_code_format))); } // if ($country->isNeedDni() AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni')))) if ($country->isNeedDni() AND !Validate::isDniLite(Tools::getValue('dni'))) $this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.'); // elseif (!$country->isNeedDni()) // $address->dni = NULL; if (Configuration::get('PS_TOKEN_ENABLE') == 1 AND strcmp(Tools::getToken(false), Tools::getValue('token')) AND self::$cookie->isLogged(true) === true) $this->errors[] = Tools::displayError('Invalid token'); if ((int)($country->contains_states) AND !(int)($address->id_state)) $this->errors[] = Tools::displayError('This country requires a state selection.'); if (!sizeof($this->errors)) { if (isset($id_address)) { $country = new Country((int)($address->id_country)); if (Validate::isLoadedObject($country) AND !$country->contains_states) $address->id_state = 0; $address_old = new Address((int)$id_address); if (Validate::isLoadedObject($address_old) AND Customer::customerHasAddress((int)self::$cookie->id_customer, (int)$address_old->id)) { if ($address_old->isUsed()) { $address_old->delete(); if (!Tools::isSubmit('ajax')) { $to_update = false; if (self::$cart->id_address_invoice == $address_old->id) { $to_update = true; self::$cart->id_address_invoice = 0; } if (self::$cart->id_address_delivery == $address_old->id) { $to_update = true; self::$cart->id_address_delivery = 0; } if ($to_update) self::$cart->update(); } } else { $address->id = (int)($address_old->id); $address->date_add = $address_old->date_add; } } } elseif (self::$cookie->is_guest) Tools::redirect('addresses.php'); if ($result = $address->save()) { /* In order to select this new address : order-address.tpl */ if ((bool)(Tools::getValue('select_address', false)) == true OR (Tools::isSubmit('ajax') AND Tools::getValue('type') == 'invoice')) { /* This new adress is for invoice_adress, select it */ self::$cart->id_address_invoice = (int)($address->id); self::$cart->update(); } if (Tools::isSubmit('ajax')) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'id_address_delivery' => self::$cart->id_address_delivery, 'id_address_invoice' => self::$cart->id_address_invoice ); die(Tools::jsonEncode($return)); } Tools::redirect($back ? ($mod ? $back.'&back='.$mod : $back) : 'addresses.php'); } $this->errors[] = Tools::displayError('An error occurred while updating your address.'); } } elseif (!$id_address) { $customer = new Customer((int)(self::$cookie->id_customer)); if (Validate::isLoadedObject($customer)) { $_POST['firstname'] = $customer->firstname; $_POST['lastname'] = $customer->lastname; } } if (Tools::isSubmit('ajax') AND sizeof($this->errors)) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors ); die(Tools::jsonEncode($return)); } } public function setMedia() { parent::setMedia(); Tools::addJS(_THEME_JS_DIR_.'tools/statesManagement.js'); } public function process() { parent::process(); /* Secure restriction for guest */ if (self::$cookie->is_guest) Tools::redirect('addresses.php'); if (Tools::isSubmit('id_country') AND Tools::getValue('id_country') != NULL AND is_numeric(Tools::getValue('id_country'))) $selectedCountry = (int)Tools::getValue('id_country'); elseif (isset($this->_address) AND isset($this->_address->id_country) AND !empty($this->_address->id_country) AND is_numeric($this->_address->id_country)) $selectedCountry = (int)$this->_address->id_country; elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $array = preg_split('/,|-/', $_SERVER['HTTP_ACCEPT_LANGUAGE']); if (!Validate::isLanguageIsoCode($array[0]) OR !($selectedCountry = Country::getByIso($array[0]))) $selectedCountry = (int)Configuration::get('PS_COUNTRY_DEFAULT'); } else $selectedCountry = (int)Configuration::get('PS_COUNTRY_DEFAULT'); $countries = Country::getCountries((int)self::$cookie->id_lang, true); $countriesList = ''; foreach ($countries AS $country) $countriesList .= '<option value="'.(int)($country['id_country']).'" '.($country['id_country'] == $selectedCountry ? 'selected="selected"' : '').'>'.htmlentities($country['name'], ENT_COMPAT, 'UTF-8').'</option>'; if ((Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) && VatNumber::isApplicable(Configuration::get('PS_COUNTRY_DEFAULT'))) self::$smarty->assign('vat_display', 2); elseif (Configuration::get('VATNUMBER_MANAGEMENT')) self::$smarty->assign('vat_display', 1); else self::$smarty->assign('vat_display', 0); self::$smarty->assign('ajaxurl', _MODULE_DIR_); self::$smarty->assign('vatnumber_ajax_call', (int)file_exists(_PS_MODULE_DIR_.'vatnumber/ajax.php')); self::$smarty->assign(array( 'countries_list' => $countriesList, 'countries' => $countries, 'errors' => $this->errors, 'token' => Tools::getToken(false), 'select_address' => (int)(Tools::getValue('select_address')) )); } protected function _processAddressFormat() { $id_country = is_null($this->_address)? 0 : (int)$this->_address->id_country; $dlv_adr_fields = AddressFormat::getOrderedAddressFields($id_country, true, true); self::$smarty->assign('ordered_adr_fields', $dlv_adr_fields); } public function displayHeader() { if (Tools::getValue('ajax') != 'true') parent::displayHeader(); } public function displayContent() { parent::displayContent(); $this->_processAddressFormat(); self::$smarty->display(_PS_THEME_DIR_.'address.tpl'); } public function displayFooter() { if (Tools::getValue('ajax') != 'true') parent::displayFooter(); } } Link to comment Share on other sites More sharing options...
peter_m Posted March 3, 2012 Share Posted March 3, 2012 stale to nefunguje vo v.1.4.6.2 http://forge.prestashop.com/browse/PSCFI-4798 Link to comment Share on other sites More sharing options...
Wonder.x Posted March 18, 2013 Share Posted March 18, 2013 (edited) Zrovna jsem změnu údajů u guestů řešil. Zde je řešení pro verzi 1.4.6.2. pod tuto funkci v classes/Customer.php cca. řádek 203 public function getByEmail($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); $result = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' AND `deleted` = 0 AND `is_guest` = 0'); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } vložte pozměněnou funkci public function getByEmailGuest($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); $result = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' AND `deleted` = 0'); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } v admin_slozka/tabs/AdminAddresses.php na řádku 82 změňte $customer->getByEmail(Tools::getValue('email')); na $customer->getByEmailGuest(Tools::getValue('email')); Enjoy Edited March 18, 2013 by Wonder.x (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now