Beispiel #1
0
    /**
     * Process changes on an address
     */
    protected function processSubmitAddress()
    {
        $address = new Address();
        $this->errors = $address->validateController();
        $address->id_customer = (int) $this->context->customer->id;
        // Check page token
        if ($this->context->customer->isLogged() && !$this->isTokenValid()) {
            $this->errors[] = Tools::displayError('Invalid token.');
        }
        // Check phone
        if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile')) {
            $this->errors[] = Tools::displayError('You must register at least one phone number.');
        }
        if ($address->id_country) {
            // Check country
            if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
                throw new PrestaShopException('Country cannot be loaded with address->id_country');
            }
            if ((int) $country->contains_states && !(int) $address->id_state) {
                $this->errors[] = Tools::displayError('This country requires you to chose a State.');
            }
            // US customer: normalize the address
            if ($address->id_country == Country::getByIso('US') && Configuration::get('PS_TAASC')) {
                include_once _PS_TAASC_PATH_ . 'AddressStandardizationSolution.php';
                $normalize = new AddressStandardizationSolution();
                $address->address1 = $normalize->AddressLineStandardization($address->address1);
                $address->address2 = $normalize->AddressLineStandardization($address->address2);
            }
            $postcode = Tools::getValue('postcode');
            /* Check zip code format */
            if ($country->zip_code_format && !$country->checkZipCode($postcode)) {
                $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
            } elseif (empty($postcode) && $country->need_zip_code) {
                $this->errors[] = Tools::displayError('A Zip / Postal code is required.');
            } elseif ($postcode && !Validate::isPostCode($postcode)) {
                $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.');
            }
            // Check country DNI nox fix
            /*if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni'))))
            			$this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
            		else if (!$country->isNeedDni())
            			$address->dni = null;*/
            if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
                $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
            } elseif (!$country->need_identification_number) {
                ${$addresses_type}->dni = null;
            }
        }
        // Check if the alias exists
        if (!$this->context->customer->is_guest && !empty($_POST['alias']) && (int) $this->context->customer->id > 0) {
            $id_address = Tools::getValue('id_address');
            if (Configuration::get('PS_ORDER_PROCESS_TYPE') && (int) Tools::getValue('opc_id_address_' . Tools::getValue('type')) > 0) {
                $id_address = Tools::getValue('opc_id_address_' . Tools::getValue('type'));
            }
            if (Db::getInstance()->getValue('
				SELECT count(*)
				FROM ' . _DB_PREFIX_ . 'address
				WHERE `alias` = \'' . pSql($_POST['alias']) . '\'
				AND id_address != ' . (int) $id_address . '
				AND id_customer = ' . (int) $this->context->customer->id . '
				AND deleted = 0') > 0) {
                $this->errors[] = sprintf(Tools::displayError('The alias "%s" has already been used. Please select another one.'), Tools::safeOutput($_POST['alias']));
            }
        }
        // Check the requires fields which are settings in the BO
        $this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
        // Don't continue this process if we have errors !
        if ($this->errors && !$this->ajax) {
            return;
        }
        // If we edit this address, delete old address and create a new one
        if (Validate::isLoadedObject($this->_address)) {
            if (Validate::isLoadedObject($country) && !$country->contains_states) {
                $address->id_state = 0;
            }
            $address_old = $this->_address;
            if (Customer::customerHasAddress($this->context->customer->id, (int) $address_old->id)) {
                if ($address_old->isUsed()) {
                    $address_old->delete();
                } else {
                    $address->id = (int) $address_old->id;
                    $address->date_add = $address_old->date_add;
                }
            }
        }
        if ($this->ajax && Tools::getValue('type') == 'invoice' && Configuration::get('PS_ORDER_PROCESS_TYPE')) {
            $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
            if (count($this->errors)) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors);
                die(Tools::jsonEncode($return));
            }
        }
        // Save address
        if ($result = $address->save()) {
            // Update id address of the current cart if necessary
            if (isset($address_old) && $address_old->isUsed()) {
                $this->context->cart->updateAddressId($address_old->id, $address->id);
            } else {
                // Update cart address
                $this->context->cart->autosetProductAddress();
            }
            if ((bool) Tools::getValue('select_address', false) == true or Tools::getValue('type') == 'invoice' && Configuration::get('PS_ORDER_PROCESS_TYPE')) {
                $this->context->cart->id_address_invoice = (int) $address->id;
            } elseif (Configuration::get('PS_ORDER_PROCESS_TYPE')) {
                $this->context->cart->id_address_invoice = (int) $this->context->cart->id_address_delivery;
            }
            $this->context->cart->update();
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => (int) $this->context->cart->id_address_delivery, 'id_address_invoice' => (int) $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            }
            // Redirect to old page or current page
            if ($back = Tools::getValue('back')) {
                if ($back == Tools::secureReferrer(Tools::getValue('back'))) {
                    Tools::redirect(html_entity_decode($back));
                }
                $mod = Tools::getValue('mod');
                Tools::redirect('index.php?controller=' . $back . ($mod ? '&back=' . $mod : ''));
            } else {
                Tools::redirect('index.php?controller=addresses');
            }
        }
        $this->errors[] = Tools::displayError('An error occurred while updating your address.');
    }
Beispiel #2
0
 protected function processSubmitAccount()
 {
     if (!$this->isOpcModuleActive()) {
         return parent::processSubmitAccount();
     }
     // Entire override is here just because of rigid address set-up. Original PS do not expect
     // address being set to cart prior to processSubmitAccount call and thus always creates new Address
     $inv_first_on = Configuration::get('OPC_INVOICE_FIRST') == "1";
     Hook::exec('actionBeforeSubmitAccount');
     $this->create_account = true;
     if (Tools::isSubmit('submitAccount')) {
         $this->context->smarty->assign('email_create', 1);
     }
     // New Guest customer
     if (!Tools::getValue('is_new_customer', 1) && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
         $this->errors[] = Tools::displayError('You cannot create a guest account.');
     }
     // Customer (not-guest) checkout, password field is hidden and password is automatically generated
     if ((!Tools::getIsset('passwd') || trim($_POST['passwd']) == "") && trim(Tools::getValue('email')) != "" && Configuration::get('OPC_CREATE_CUSTOMER_PASSWORD') && !CustomerCore::customerExists(Tools::getValue('email'))) {
         $_POST['is_new_customer'] = 1;
         $_POST['passwd'] = Tools::passwdGen(5);
     } elseif (!Tools::getValue('is_new_customer', 1)) {
         $_POST['passwd'] = md5(time() . _COOKIE_KEY_);
     }
     if (Tools::getIsset('guest_email') && $_POST['guest_email']) {
         $_POST['email'] = $_POST['guest_email'];
     }
     // Checked the user address in case he changed his email address
     if (Validate::isEmail($email = Tools::getValue('email')) && !empty($email)) {
         if (Customer::customerExists($email)) {
             $this->errors[] = Tools::displayError('An account is already registered with this e-mail.', false);
         }
     }
     // Preparing customer
     $customer = new Customer();
     $_POST['lastname'] = Tools::getValue('customer_lastname');
     $_POST['firstname'] = Tools::getValue('customer_firstname');
     //        if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile') &&
     //            (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || Configuration::get('PS_GUEST_CHECKOUT_ENABLED')))
     //            $this->errors[] = Tools::displayError('You must register at least one phone number');
     $error_phone = false;
     if (Configuration::get('PS_ONE_PHONE_AT_LEAST')) {
         $inv_suffix = $inv_first_on ? "_invoice" : "";
         if (Tools::isSubmit('submitGuestAccount') || !Tools::getValue('is_new_customer')) {
             if (!Tools::getValue('phone' . $inv_suffix) && !Tools::getValue('phone_mobile' . $inv_suffix)) {
                 $error_phone = true;
             }
         } elseif ((Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || Configuration::get('PS_ORDER_PROCESS_TYPE')) && (Configuration::get('PS_ORDER_PROCESS_TYPE') && !Tools::getValue('email_create')) && (!Tools::getValue('phone' . $inv_suffix) && !Tools::getValue('phone_mobile' . $inv_suffix))) {
             $error_phone = true;
         } elseif (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Configuration::get('PS_ORDER_PROCESS_TYPE') && Tools::getValue('email_create') && (!Tools::getValue('phone' . $inv_suffix) && !Tools::getValue('phone_mobile' . $inv_suffix))) {
             $error_phone = true;
         }
     }
     if ($error_phone) {
         $this->errors[] = Tools::displayError('You must register at least one phone number.');
     }
     $this->errors = array_unique(array_merge($this->errors, $customer->validateController()));
     // Check the requires fields which are settings in the BO
     $this->errors = array_merge($this->errors, $customer->validateFieldsRequiredDatabase());
     if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) {
         if (!count($this->errors)) {
             if (Tools::isSubmit('newsletter')) {
                 $this->processCustomerNewsletter($customer);
             }
             $customer->birthday = empty($_POST['years']) ? '' : (int) $_POST['years'] . '-' . (int) $_POST['months'] . '-' . (int) $_POST['days'];
             if (!Validate::isBirthDate($customer->birthday)) {
                 $this->errors[] = Tools::displayError('Invalid birthday.');
             }
             $customer->active = 1;
             // New Guest customer
             if (Tools::isSubmit('is_new_customer')) {
                 $customer->is_guest = !Tools::getValue('is_new_customer', 1);
             } else {
                 $customer->is_guest = 0;
             }
             if (!count($this->errors)) {
                 if (!$customer->add()) {
                     $this->errors[] = Tools::displayError('An error occurred while creating your account.');
                 } else {
                     if (!$customer->is_guest) {
                         if (!$this->sendConfirmationMail($customer)) {
                             $this->errors[] = Tools::displayError('Cannot send e-mail');
                         }
                     }
                     $this->updateContext($customer);
                     $this->context->cart->update();
                     Hook::exec('actionCustomerAccountAdd', array('_POST' => $_POST, 'newCustomer' => $customer));
                     if ($this->ajax) {
                         $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int) $this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false));
                         die(Tools::jsonEncode($return));
                     }
                     // redirection: if cart is not empty : redirection to the cart
                     if (count($this->context->cart->getProducts(true)) > 0) {
                         Tools::redirect('index.php?controller=order&multi-shipping=' . (int) Tools::getValue('multi-shipping'));
                     } else {
                         Tools::redirect('index.php?controller=my-account');
                     }
                 }
             }
         }
     } else {
         $lastnameAddress = $inv_first_on ? $_POST['lastname_invoice'] : $_POST['lastname'];
         $firstnameAddress = $inv_first_on ? $_POST['firstname_invoice'] : $_POST['firstname'];
         // Preparing address
         $id_address = isset($this->context->cart->id_address_delivery) ? (int) $this->context->cart->id_address_delivery : 0;
         if ($id_address > 0) {
             $address = new Address($id_address);
         } else {
             $address = new Address();
         }
         $_POST['lastname'] = $lastnameAddress;
         $_POST['firstname'] = $firstnameAddress;
         $address->id_customer = 1;
         $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
         // US customer: normalize the address
         if (version_compare(_PS_VERSION_, "1.6.0") < 0 && $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);
         }
         $inv_suffix = $inv_first_on ? "_invoice" : "";
         $country = new Country((int) Tools::getValue('id_country' . $inv_suffix));
         if ($country->need_zip_code) {
             if (($postcode = Tools::getValue('postcode' . $inv_suffix)) && $country->zip_code_format) {
                 if (!$country->checkZipCode($postcode)) {
                     $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                 }
             } elseif ($country->zip_code_format && !$this->context->cart->isVirtualCart()) {
                 $this->errors[] = Tools::displayError('Zip/Postal code is required.');
             } elseif ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) {
                 $this->errors[] = Tools::displayError('Zip/Postal code is invalid.');
             }
         }
         /*if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni'))))
                     $this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
                 elseif (!$country->need_identification_number)
           $address->dni = null;*/
     }
     if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '' && Tools::getValue('days') == '' && Tools::getValue('years') == '')) {
         $this->errors[] = Tools::displayError('Invalid date of birth');
     }
     if (!count($this->errors)) {
         if (Customer::customerExists(Tools::getValue('email'))) {
             $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please enter your password or request a new one.', false);
         }
         if (Tools::isSubmit('newsletter')) {
             $this->processCustomerNewsletter($customer);
         }
         $customer->birthday = empty($_POST['years']) ? '' : (int) $_POST['years'] . '-' . (int) $_POST['months'] . '-' . (int) $_POST['days'];
         if (!Validate::isBirthDate($customer->birthday)) {
             $this->errors[] = Tools::displayError('Invalid birthday.');
         }
         if (!count($this->errors)) {
             // if registration type is in one step, we save the address
             if (Configuration::get('PS_REGISTRATION_PROCESS_TYPE')) {
                 if (!($country = new Country($address->id_country, Configuration::get('PS_LANG_DEFAULT'))) || !Validate::isLoadedObject($country)) {
                     die(Tools::displayError());
                 }
             }
             $contains_state = isset($country) && is_object($country) ? (int) $country->contains_states : 0;
             $id_state = isset($address) && is_object($address) ? (int) $address->id_state : 0;
             if ($contains_state && !$id_state) {
                 $this->errors[] = Tools::displayError('This country requires a state selection.');
             } else {
                 $customer->active = 1;
                 // New Guest customer
                 if (Tools::isSubmit('is_new_customer')) {
                     $customer->is_guest = !Tools::getValue('is_new_customer', 1);
                 } else {
                     $customer->is_guest = 0;
                 }
                 if (!$customer->add()) {
                     $this->errors[] = Tools::displayError('An error occurred while creating your account.');
                 } else {
                     $address->id_customer = (int) $customer->id;
                     $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
                     if (!count($this->errors) && (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || $this->ajax || Tools::isSubmit('submitGuestAccount'))) {
                         if ($address->id > 0 && !$address->update() || !($address->id > 0) && !$address->add()) {
                             $this->errors[] = Tools::displayError('An error occurred while creating your address.');
                         } else {
                             if (!$customer->is_guest) {
                                 $this->context->customer = $customer;
                                 $customer->cleanGroups();
                                 // we add the guest customer in the default customer group
                                 $customer->addGroups(array((int) Configuration::get('PS_CUSTOMER_GROUP')));
                                 if (!$this->sendConfirmationMail($customer)) {
                                     $this->errors[] = Tools::displayError('Cannot send e-mail');
                                 }
                             } else {
                                 $customer->cleanGroups();
                                 // we add the guest customer in the guest customer group
                                 $customer->addGroups(array((int) Configuration::get('PS_GUEST_GROUP')));
                             }
                             $this->updateContext($customer);
                             $this->context->cart->id_address_delivery = Address::getFirstCustomerAddressId((int) $customer->id);
                             if ($this->context->cart->id_address_invoice == 0) {
                                 $this->context->cart->id_address_invoice = Address::getFirstCustomerAddressId((int) $customer->id);
                             }
                             // If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated
                             $this->context->cart->update();
                             // Avoid articles without delivery address on the cart
                             $this->context->cart->autosetProductAddress();
                             Hook::exec('actionCustomerAccountAdd', array('_POST' => $_POST, 'newCustomer' => $customer));
                             if ($this->ajax) {
                                 $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int) $this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false));
                                 die(Tools::jsonEncode($return));
                             }
                             // if registration type is in two steps, we redirect to register address
                             if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) {
                                 Tools::redirect('index.php?controller=address');
                             }
                             if ($back = Tools::getValue('back')) {
                                 Tools::redirect($back);
                             }
                             Tools::redirect('index.php?controller=my-account');
                             // redirection: if cart is not empty : redirection to the cart
                             if (count($this->context->cart->getProducts(true)) > 0) {
                                 Tools::redirect('index.php?controller=order&multi-shipping=' . (int) Tools::getValue('multi-shipping'));
                             } else {
                                 Tools::redirect('index.php?controller=my-account');
                             }
                         }
                     }
                 }
             }
         }
     }
     if (count($this->errors)) {
         //for retro compatibility to display guest account creation form on authentication page
         if (Tools::getValue('submitGuestAccount')) {
             $_GET['display_guest_checkout'] = 1;
         }
         if (!Tools::getValue('is_new_customer')) {
             unset($_POST['passwd']);
         }
         if ($this->ajax) {
             $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => false, 'id_customer' => 0);
             die(Tools::jsonEncode($return));
         }
         $this->context->smarty->assign('account_error', $this->errors);
     }
 }
 /**
  * AdminController::postProcess() override
  * @see AdminController::postProcess()
  */
 public function postProcess()
 {
     // checks access
     if (Tools::isSubmit('submitAdd' . $this->table) && !($this->tabAccess['add'] === '1')) {
         $this->errors[] = Tools::displayError('You do not have permission to add suppliers.');
         return parent::postProcess();
     }
     if (Tools::isSubmit('submitAdd' . $this->table)) {
         if (Tools::isSubmit('id_supplier') && !($obj = $this->loadObject(true))) {
             return;
         }
         // updates/creates address if it does not exist
         if (Tools::isSubmit('id_address') && (int) Tools::getValue('id_address') > 0) {
             $address = new Address((int) Tools::getValue('id_address'));
         } else {
             $address = new Address();
         }
         // creates address
         $address->alias = Tools::getValue('name', null);
         $address->lastname = 'supplier';
         // skip problem with numeric characters in supplier name
         $address->firstname = 'supplier';
         // skip problem with numeric characters in supplier name
         $address->address1 = Tools::getValue('address', null);
         $address->address2 = Tools::getValue('address2', null);
         $address->postcode = Tools::getValue('postcode', null);
         $address->phone = Tools::getValue('phone', null);
         $address->phone_mobile = Tools::getValue('phone_mobile', null);
         $address->id_country = Tools::getValue('id_country', null);
         $address->id_state = Tools::getValue('id_state', null);
         $address->city = Tools::getValue('city', null);
         $validation = $address->validateController();
         // checks address validity
         if (count($validation) > 0) {
             foreach ($validation as $item) {
                 $this->errors[] = $item;
             }
             $this->errors[] = Tools::displayError('The address is not correct. Please make sure all of the required fields are completed.');
         } else {
             if (Tools::isSubmit('id_address') && Tools::getValue('id_address') > 0) {
                 $address->update();
             } else {
                 $address->save();
                 $_POST['id_address'] = $address->id;
             }
         }
         return parent::postProcess();
     } elseif (Tools::isSubmit('delete' . $this->table)) {
         if (!($obj = $this->loadObject(true))) {
             return;
         } elseif (SupplyOrder::supplierHasPendingOrders($obj->id)) {
             $this->errors[] = $this->l('It is not possible to delete a supplier if there are pending supplier orders.');
         } else {
             //delete all product_supplier linked to this supplier
             Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'product_supplier` WHERE `id_supplier`=' . (int) $obj->id);
             $id_address = Address::getAddressIdBySupplierId($obj->id);
             $address = new Address($id_address);
             if (Validate::isLoadedObject($address)) {
                 $address->deleted = 1;
                 $address->save();
             }
             return parent::postProcess();
         }
     } else {
         return parent::postProcess();
     }
 }
 public function validateAddressDictionary($encoder, $addressDictionary)
 {
     global $cookie;
     // prepare the fields inside the POST (so we can use Prestashop's validateController)
     $_POST['alias'] = $this->SHIPPING_ADDRESS_ALIAS;
     unset($_POST['firstname']);
     if (isset($addressDictionary['FirstName'])) {
         $_POST['firstname'] = $addressDictionary['FirstName'];
     }
     unset($_POST['lastname']);
     if (isset($addressDictionary['LastName'])) {
         $_POST['lastname'] = $addressDictionary['LastName'];
     }
     unset($_POST['address1']);
     if (isset($addressDictionary['Street1'])) {
         $_POST['address1'] = $addressDictionary['Street1'];
     }
     unset($_POST['address2']);
     if (isset($addressDictionary['Street2'])) {
         $_POST['address2'] = $addressDictionary['Street2'];
     }
     unset($_POST['phone']);
     if (isset($addressDictionary['Phone1'])) {
         $_POST['phone'] = $addressDictionary['Phone1'];
     }
     unset($_POST['phone_mobile']);
     if (isset($addressDictionary['Phone2'])) {
         $_POST['phone_mobile'] = $addressDictionary['Phone2'];
     }
     unset($_POST['postcode']);
     if (isset($addressDictionary['Zipcode'])) {
         $_POST['postcode'] = $addressDictionary['Zipcode'];
     }
     unset($_POST['city']);
     if (isset($addressDictionary['City'])) {
         $_POST['city'] = $addressDictionary['City'];
     }
     unset($_POST['id_country']);
     if (isset($addressDictionary['Country'])) {
         $_POST['id_country'] = $addressDictionary['Country'];
     }
     unset($_POST['id_state']);
     if (isset($addressDictionary['State'])) {
         $_POST['id_state'] = $addressDictionary['State'];
     }
     // code taken from AddressController::preProcess
     $address = new Address();
     if (_PS_VERSION_ < '1.5') {
         $errors = $address->validateControler();
     } else {
         $errors = $errors = $address->validateController();
     }
     $address->id_customer = (int) $cookie->id_customer;
     if (!Tools::getValue('phone') and !Tools::getValue('phone_mobile')) {
         $errors[] = Tools::displayError('You must register at least one phone number');
     }
     if (!($country = new Country((int) $address->id_country)) or !Validate::isLoadedObject($country)) {
         CartAPI_Helpers::dieOnErrors($encoder, 'InvalidAddress', CartAPI_Handlers_Helpers::removeHtmlTags($errors));
     }
     /* 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)) {
                 $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) {
             $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)) {
             $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'))))
     	$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)
     	$errors[] = Tools::displayError('Invalid token');
     */
     if ((int) $country->contains_states and !(int) $address->id_state) {
         $errors[] = Tools::displayError('This country requires a state selection.');
     }
     // finished
     if (count($errors) > 0) {
         CartAPI_Helpers::dieOnErrors($encoder, 'InvalidAddress', CartAPI_Handlers_Helpers::removeHtmlTags($errors));
     }
     return $address;
 }
 protected function updateAddress()
 {
     // updates/creates address if it does not exist
     if (Tools::isSubmit('id_address') && (int) Tools::getValue('id_address') > 0) {
         $address = new Address((int) Tools::getValue('id_address'));
     } else {
         $address = new Address();
     }
     // creates address
     // sets the address
     $address->alias = Tools::getValue('reference', null);
     $address->lastname = 'warehouse';
     // skip problem with numeric characters in warehouse name
     $address->firstname = 'warehouse';
     // skip problem with numeric characters in warehouse name
     $address->address1 = Tools::getValue('address', null);
     $address->address2 = Tools::getValue('address2', null);
     $address->postcode = Tools::getValue('postcode', null);
     $address->phone = Tools::getValue('phone', null);
     $address->id_country = Tools::getValue('id_country', null);
     $address->id_state = Tools::getValue('id_state', null);
     $address->city = Tools::getValue('city', null);
     // validates the address
     $validation = $address->validateController();
     // checks address validity
     if (count($validation) > 0) {
         foreach ($validation as $item) {
             $this->errors[] = $item;
         }
         $this->errors[] = Tools::displayError('The address is not correct. Please make sure all of the required fields are completed.');
     } else {
         if (Tools::isSubmit('id_address') && Tools::getValue('id_address') > 0) {
             $address->update();
         } else {
             $address->save();
             $_POST['id_address'] = $address->id;
         }
     }
 }
Beispiel #6
0
 /**
  * Process changes on an address
  */
 protected function processSubmitAddress()
 {
     $address = new Address();
     $this->errors = $address->validateController();
     $address->id_customer = (int) $this->context->customer->id;
     // Check page token
     if ($this->context->customer->isLogged() && !$this->isTokenValid()) {
         $this->errors[] = Tools::displayError('Invalid token.');
     }
     // Check phone
     if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile')) {
         $this->errors[] = Tools::displayError('You must register at least one phone number.');
     }
     if ($address->id_country) {
         // Check country
         if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
             throw new PrestaShopException('Country cannot be loaded with address->id_country');
         }
         // if ((int)$country->contains_states && !(int)$address->id_state)
         // 	$this->errors[] = Tools::displayError('This country requires you to chose a State.');
         if (!$country->active) {
             $this->errors[] = Tools::displayError('This country is not active.');
         }
         // Check country DNI
         if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
             $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
         } elseif (!$country->isNeedDni()) {
             $address->dni = null;
         }
     }
     // Check if the alias exists
     if (!$this->context->customer->is_guest && !empty($_POST['alias']) && (int) $this->context->customer->id > 0) {
         $id_address = Tools::getValue('id_address');
         if (Configuration::get('PS_ORDER_PROCESS_TYPE') && (int) Tools::getValue('opc_id_address_' . Tools::getValue('type')) > 0) {
             $id_address = Tools::getValue('opc_id_address_' . Tools::getValue('type'));
         }
         if (Address::aliasExist(Tools::getValue('alias'), (int) $id_address, (int) $this->context->customer->id)) {
             $this->errors[] = sprintf(Tools::displayError('The alias "%s" has already been used. Please select another one.'), Tools::safeOutput(Tools::getValue('alias')));
         }
     }
     // Check the requires fields which are settings in the BO
     $this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
     // Don't continue this process if we have errors !
     if ($this->errors && !$this->ajax) {
         return;
     }
     // If we edit this address, delete old address and create a new one
     if (Validate::isLoadedObject($this->_address)) {
         if (Validate::isLoadedObject($country) && !$country->contains_states) {
             $address->id_state = 0;
         }
         $address_old = $this->_address;
         if (Customer::customerHasAddress($this->context->customer->id, (int) $address_old->id)) {
             if ($address_old->isUsed()) {
                 $address_old->delete();
             } else {
                 $address->id = (int) $address_old->id;
                 $address->date_add = $address_old->date_add;
             }
         }
     }
     if ($this->ajax && Configuration::get('PS_ORDER_PROCESS_TYPE')) {
         $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
         if (count($this->errors)) {
             $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors);
             $this->ajaxDie(Tools::jsonEncode($return));
         }
     }
     // Save address
     if ($result = $address->save()) {
         // Update id address of the current cart if necessary
         if (isset($address_old) && $address_old->isUsed()) {
             $this->context->cart->updateAddressId($address_old->id, $address->id);
         } else {
             // Update cart address
             $this->context->cart->autosetProductAddress();
         }
         if ((bool) Tools::getValue('select_address', false) == true || Tools::getValue('type') == 'invoice' && Configuration::get('PS_ORDER_PROCESS_TYPE')) {
             $this->context->cart->id_address_invoice = (int) $address->id;
         } elseif (Configuration::get('PS_ORDER_PROCESS_TYPE')) {
             $this->context->cart->id_address_invoice = (int) $this->context->cart->id_address_delivery;
         }
         $this->context->cart->update();
         if ($this->ajax) {
             $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => (int) $this->context->cart->id_address_delivery, 'id_address_invoice' => (int) $this->context->cart->id_address_invoice);
             $this->ajaxDie(Tools::jsonEncode($return));
         }
         // Redirect to old page or current page
         if ($back = Tools::getValue('back')) {
             if ($back == Tools::secureReferrer(Tools::getValue('back'))) {
                 Tools::redirect(html_entity_decode($back));
             }
             $mod = Tools::getValue('mod');
             Tools::redirect('index.php?controller=' . $back . ($mod ? '&back=' . $mod : ''));
         } else {
             Tools::redirect('index.php?controller=addresses');
         }
     }
     $this->errors[] = Tools::displayError('An error occurred while updating your address.');
 }
 /**
  * AdminController::postProcess() override
  * @see AdminController::postProcess()
  */
 public function postProcess()
 {
     require_once _PS_MODULE_DIR_ . 'erpillicopresta/models/ErpFeature.php';
     $this->context->smarty->assign(array('erp_feature' => ErpFeature::getFeaturesWithToken($this->context->language->iso_code), 'template_path' => $this->template_path));
     if (Tools::isSubmit('export_csv')) {
         $this->renderCSV();
     }
     // checks access
     if (Tools::isSubmit('submitAdd' . $this->table) && !($this->tabAccess['add'] === '1')) {
         $this->errors[] = Tools::displayError($this->l('You do not have permission to add suppliers.'));
         return parent::postProcess();
     }
     if (Tools::isSubmit('submitAdd' . $this->table)) {
         if (Tools::isSubmit('id_supplier') && !($obj = $this->loadObject(true))) {
             return;
         }
         // updates/creates address if it does not exist
         if (Tools::isSubmit('id_address') && (int) Tools::getValue('id_address') > 0) {
             $address = new Address((int) Tools::getValue('id_address'));
         } else {
             $address = new Address();
         }
         // creates address
         $address->alias = Tools::getValue('name', null);
         $address->lastname = 'supplier';
         // skip problem with numeric characters in supplier name
         $address->firstname = 'supplier';
         // skip problem with numeric characters in supplier name
         $address->address1 = Tools::getValue('address', null);
         $address->address2 = Tools::getValue('address2', null);
         $address->postcode = Tools::getValue('postcode', null);
         $address->phone = Tools::getValue('phone', null);
         $address->id_country = Tools::getValue('id_country', null);
         $address->id_state = Tools::getValue('id_state', null);
         $address->city = Tools::getValue('city', null);
         $validation = $address->validateController();
         // checks address validity
         if (count($validation) > 0) {
             foreach ($validation as $item) {
                 $this->errors[] = $item;
             }
             $this->errors[] = Tools::displayError($this->l('The address is not correct. Please make sure all of the required fields are completed.'));
         } else {
             if (Tools::isSubmit('id_address') && Tools::getValue('id_address') > 0) {
                 $address->update();
             } else {
                 $address->save();
                 $_POST['id_address'] = $address->id;
             }
         }
         //--ERP informations
         // updates/creates erp_supplier if it does not exist
         if (Tools::isSubmit('id_erpip_supplier') && (int) Tools::getValue('id_erpip_supplier') > 0) {
             $erp_supplier = new ErpSupplier((int) Tools::getValue('id_erpip_supplier'));
         } else {
             $erp_supplier = new ErpSupplier();
         }
         // creates erp_supplier
         $erp_supplier->email = Tools::getValue('email', null);
         $erp_supplier->fax = Tools::getValue('fax', null);
         $erp_supplier->franco_amount = Tools::getValue('franco_amount', null);
         $erp_supplier->discount_amount = Tools::getValue('discount_amount', null);
         $erp_supplier->shipping_amount = Tools::getValue('shipping_amount', null);
         $erp_supplier->escompte = Tools::getValue('escompte', null);
         $erp_supplier->delivery_time = Tools::getValue('delivery_time', null);
         $erp_supplier->account_number_accounting = Tools::getValue('account_number_accounting', null);
         $validation2 = $erp_supplier->validateController();
         //print_r($validation2);
         // checks erp_supplier validity
         if (count($validation2) > 0) {
             foreach ($validation2 as $item) {
                 $this->errors[] = $item;
             }
             $this->errors[] = Tools::displayError($this->l('The ErpIllicopresta Supplier is not correct. Please make sure all of the required fields are completed.'));
         } else {
             if (Tools::isSubmit('id_erpip_supplier') && Tools::getValue('id_erpip_supplier') > 0) {
                 $erp_supplier->update();
             } else {
                 $erp_supplier->save();
                 $_POST['id_erpip_supplier'] = $erp_supplier->id;
             }
         }
         return parent::postProcess();
     } else {
         if (Tools::isSubmit('delete' . $this->table)) {
             if (!($obj = $this->loadObject(true))) {
                 return;
             } else {
                 if (SupplyOrder::supplierHasPendingOrders($obj->id)) {
                     $this->errors[] = $this->l('It is not possible to delete a supplier if there are pending supplier orders.');
                 } else {
                     //delete all product_supplier linked to this supplier
                     Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'product_supplier` WHERE `id_supplier`=' . (int) $obj->id);
                     $id_address = Address::getAddressIdBySupplierId($obj->id);
                     $address = new Address($id_address);
                     if (Validate::isLoadedObject($address)) {
                         $address->deleted = 1;
                         $address->save();
                     }
                     //delete erp supplier
                     $id_erpip_supplier = ErpSupplier::getErpSupplierIdBySupplierId($obj->id);
                     $erp_supplier = new ErpSupplier($id_erpip_supplier);
                     if (Validate::isLoadedObject($erp_supplier)) {
                         $erp_supplier->delete();
                     }
                     return parent::postProcess();
                 }
             }
         } else {
             return parent::postProcess();
         }
     }
 }
    /**
     * Process changes on an address
     */
    protected function processSubmitAddress()
    {
        /*if ($this->context->customer->is_guest)
        		Tools::redirect('index.php?controller=addresses');*/
        $address = new Address();
        $this->errors = $address->validateController();
        $address->id_customer = (int) $this->context->customer->id;
        // Check page token
        if ($this->context->customer->isLogged() && !$this->isTokenValid()) {
            $this->errors[] = Tools::displayError('Invalid token');
        }
        // Check phone
        if (!Tools::getValue('phone') && !Tools::getValue('phone_mobile')) {
            $this->errors[] = Tools::displayError('You must register at least one phone number');
        }
        if ($address->id_country) {
            // Check country
            if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
                throw new PrestaShopException('Country cannot be loaded with address->id_country');
            }
            if ((int) $country->contains_states && !(int) $address->id_state) {
                $this->errors[] = Tools::displayError('This country requires a state selection.');
            }
            // 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);
            }
            // Check country zip code
            $zip_code_format = $country->zip_code_format;
            if ($country->need_zip_code) {
                if (($postcode = Tools::getValue('postcode')) && $zip_code_format) {
                    if (!$country->checkZipCode($postcode)) {
                        $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                    }
                } else {
                    if ($zip_code_format) {
                        $this->errors[] = Tools::displayError('Zip/Postal code is required.');
                    } else {
                        if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) {
                            $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                        }
                    }
                }
            }
            // Check country DNI
            if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
                $this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
            } else {
                if (!$country->isNeedDni()) {
                    $address->dni = null;
                }
            }
        }
        // Check if the alias exists
        if (!empty($_POST['alias']) && (int) $this->context->customer->id > 0 && Db::getInstance()->getValue('
				SELECT count(*)
				FROM ' . _DB_PREFIX_ . 'address
				WHERE `alias` = \'' . pSql($_POST['alias']) . '\'
				AND id_address != ' . (int) Tools::getValue('id_address') . '
				AND id_customer = ' . (int) $this->context->customer->id . '
				AND deleted = 0') > 0) {
            $this->errors[] = sprintf(Tools::displayError('The alias "%s" is already used, please chose another one.'), Tools::safeOutput($_POST['alias']));
        }
        // Check the requires fields which are settings in the BO
        $this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
        // Don't continue this process if we have errors !
        if ($this->errors && !$this->ajax) {
            return;
        }
        // If we edit this address, delete old address and create a new one
        if (Validate::isLoadedObject($this->_address)) {
            if (Validate::isLoadedObject($country) && !$country->contains_states) {
                $address->id_state = 0;
            }
            $address_old = $this->_address;
            if (Customer::customerHasAddress($this->context->customer->id, (int) $address_old->id)) {
                if ($address_old->isUsed()) {
                    $address_old->delete();
                } else {
                    $address->id = (int) $address_old->id;
                    $address->date_add = $address_old->date_add;
                }
            }
        }
        // Save address
        if ($result = $address->save()) {
            // Update id address of the current cart if necessary
            if (isset($address_old) && $address_old->isUsed()) {
                $this->context->cart->updateAddressId($address_old->id, $address->id);
            } else {
                // Update cart address
                $this->context->cart->autosetProductAddress();
            }
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            }
            // Redirect to old page or current page
            if ($back = Tools::getValue('back')) {
                $mod = Tools::getValue('mod');
                Tools::redirect('index.php?controller=' . $back . ($mod ? '&back=' . $mod : ''));
            } else {
                Tools::redirect('index.php?controller=addresses');
            }
        }
        $this->errors[] = Tools::displayError('An error occurred while updating your address.');
    }
Beispiel #9
0
 /**
  * Process submit on an account
  */
 protected function processSubmitAccount()
 {
     Hook::exec('actionBeforeSubmitAccount');
     $this->create_account = true;
     if (Tools::isSubmit('submitAccount')) {
         $this->context->smarty->assign('email_create', 1);
     }
     // New Guest customer
     if (!Tools::getValue('is_new_customer', 1) && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
         $this->errors[] = Tools::displayError('You cannot create a guest account..');
     }
     if (!Tools::getValue('is_new_customer', 1)) {
         $_POST['passwd'] = md5(time() . _COOKIE_KEY_);
     }
     if (isset($_POST['guest_email']) && $_POST['guest_email']) {
         $_POST['email'] = $_POST['guest_email'];
     }
     // Checked the user address in case he changed his email address
     if (Validate::isEmail($email = Tools::getValue('email')) && !empty($email)) {
         if (Customer::customerExists($email)) {
             $this->errors[] = Tools::displayError('An account using this email address has already been registered.', false);
         }
     }
     // Preparing customer
     $customer = new Customer();
     $lastnameAddress = $_POST['lastname'];
     $firstnameAddress = $_POST['firstname'];
     $_POST['lastname'] = Tools::getValue('customer_lastname');
     $_POST['firstname'] = Tools::getValue('customer_firstname');
     $error_phone = false;
     if (Configuration::get('PS_ONE_PHONE_AT_LEAST')) {
         if (Tools::isSubmit('submitGuestAccount') || !Tools::getValue('is_new_customer')) {
             if (!Tools::getValue('phone') && !Tools::getValue('phone_mobile')) {
                 $error_phone = true;
             }
         } elseif ((Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || Configuration::get('PS_ORDER_PROCESS_TYPE')) && (Configuration::get('PS_ORDER_PROCESS_TYPE') && !Tools::getValue('email_create')) && (!Tools::getValue('phone') && !Tools::getValue('phone_mobile'))) {
             $error_phone = true;
         } elseif (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Configuration::get('PS_ORDER_PROCESS_TYPE') && Tools::getValue('email_create') && (!Tools::getValue('phone') && !Tools::getValue('phone_mobile'))) {
             $error_phone = true;
         }
     }
     if ($error_phone) {
         $this->errors[] = Tools::displayError('You must register at least one phone number.');
     }
     $this->errors = array_unique(array_merge($this->errors, $customer->validateController()));
     // Check the requires fields which are settings in the BO
     $this->errors = array_merge($this->errors, $customer->validateFieldsRequiredDatabase());
     if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) {
         if (!count($this->errors)) {
             if (Tools::isSubmit('newsletter')) {
                 $this->processCustomerNewsletter($customer);
             }
             $customer->birthday = empty($_POST['years']) ? '' : (int) $_POST['years'] . '-' . (int) $_POST['months'] . '-' . (int) $_POST['days'];
             if (!Validate::isBirthDate($customer->birthday)) {
                 $this->errors[] = Tools::displayError('Invalid date of birth.');
             }
             // New Guest customer
             $customer->is_guest = Tools::isSubmit('is_new_customer') ? !Tools::getValue('is_new_customer', 1) : 0;
             $customer->active = 1;
             if (!count($this->errors)) {
                 if ($customer->add()) {
                     if (!$customer->is_guest) {
                         if (!$this->sendConfirmationMail($customer)) {
                             $this->errors[] = Tools::displayError('The email cannot be sent.');
                         }
                     }
                     $this->updateContext($customer);
                     $this->context->cart->update();
                     Hook::exec('actionCustomerAccountAdd', array('_POST' => $_POST, 'newCustomer' => $customer));
                     if ($this->ajax) {
                         $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int) $this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false));
                         die(Tools::jsonEncode($return));
                     }
                     if ($back = Tools::getValue('back')) {
                         Tools::redirect(html_entity_decode($back));
                     }
                     // redirection: if cart is not empty : redirection to the cart
                     if (count($this->context->cart->getProducts(true)) > 0) {
                         Tools::redirect('index.php?controller=order&multi-shipping=' . (int) Tools::getValue('multi-shipping'));
                     } else {
                         Tools::redirect('index.php?controller=' . ($this->authRedirection !== false ? url_encode($this->authRedirection) : 'my-account'));
                     }
                 } else {
                     $this->errors[] = Tools::displayError('An error occurred while creating your account..');
                 }
             }
         }
     } else {
         // Preparing address
         $address = new Address();
         $_POST['lastname'] = $lastnameAddress;
         $_POST['firstname'] = $firstnameAddress;
         $address->id_customer = 1;
         $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
         // 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);
         }
         if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
             $this->errors[] = Tools::displayError('Country cannot be loaded with address->id_country');
         }
         $postcode = Tools::getValue('postcode');
         /* Check zip code format */
         if ($country->zip_code_format && !$country->checkZipCode($postcode)) {
             $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
         } elseif (empty($postcode) && $country->need_zip_code) {
             $this->errors[] = Tools::displayError('A Zip / Postal code is required.');
         } elseif ($postcode && !Validate::isPostCode($postcode)) {
             $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.');
         }
         if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
             $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
         } elseif (!$country->need_identification_number) {
             $address->dni = null;
         }
     }
     if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '' && Tools::getValue('days') == '' && Tools::getValue('years') == '')) {
         $this->errors[] = Tools::displayError('Invalid date of birth');
     }
     if (!count($this->errors)) {
         if (Customer::customerExists(Tools::getValue('email'))) {
             $this->errors[] = Tools::displayError('An account using this email address has already been registered. Please enter a valid password or request a new one. ', false);
         }
         if (Tools::isSubmit('newsletter')) {
             $this->processCustomerNewsletter($customer);
         }
         $customer->birthday = empty($_POST['years']) ? '' : (int) $_POST['years'] . '-' . (int) $_POST['months'] . '-' . (int) $_POST['days'];
         if (!Validate::isBirthDate($customer->birthday)) {
             $this->errors[] = Tools::displayError('Invalid date of birth');
         }
         if (!count($this->errors)) {
             // if registration type is in one step, we save the address
             if (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || Tools::isSubmit('submitGuestAccount')) {
                 if (!($country = new Country($address->id_country, Configuration::get('PS_LANG_DEFAULT'))) || !Validate::isLoadedObject($country)) {
                     die(Tools::displayError());
                 }
             }
             $contains_state = isset($country) && is_object($country) ? (int) $country->contains_states : 0;
             $id_state = isset($address) && is_object($address) ? (int) $address->id_state : 0;
             if (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && $contains_state && !$id_state) {
                 $this->errors[] = Tools::displayError('This country requires you to chose a State.');
             } else {
                 $customer->active = 1;
                 // New Guest customer
                 if (Tools::isSubmit('is_new_customer')) {
                     $customer->is_guest = !Tools::getValue('is_new_customer', 1);
                 } else {
                     $customer->is_guest = 0;
                 }
                 if (!$customer->add()) {
                     $this->errors[] = Tools::displayError('An error occurred while creating your account..');
                 } else {
                     $address->id_customer = (int) $customer->id;
                     $this->errors = array_unique(array_merge($this->errors, $address->validateController()));
                     if (!count($this->errors) && (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || $this->ajax || Tools::isSubmit('submitGuestAccount')) && !$address->add()) {
                         $this->errors[] = Tools::displayError('An error occurred while creating your address.');
                     } else {
                         if (!$customer->is_guest) {
                             $this->context->customer = $customer;
                             $customer->cleanGroups();
                             // we add the guest customer in the default customer group
                             $customer->addGroups(array((int) Configuration::get('PS_CUSTOMER_GROUP')));
                             if (!$this->sendConfirmationMail($customer)) {
                                 $this->errors[] = Tools::displayError('The email cannot be sent.');
                             }
                         } else {
                             $customer->cleanGroups();
                             // we add the guest customer in the guest customer group
                             $customer->addGroups(array((int) Configuration::get('PS_GUEST_GROUP')));
                         }
                         $this->updateContext($customer);
                         $this->context->cart->id_address_delivery = Address::getFirstCustomerAddressId((int) $customer->id);
                         $this->context->cart->id_address_invoice = Address::getFirstCustomerAddressId((int) $customer->id);
                         // If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated
                         $this->context->cart->update();
                         // Avoid articles without delivery address on the cart
                         $this->context->cart->autosetProductAddress();
                         Hook::exec('actionCustomerAccountAdd', array('_POST' => $_POST, 'newCustomer' => $customer));
                         if ($this->ajax) {
                             $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int) $this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false));
                             die(Tools::jsonEncode($return));
                         }
                         // if registration type is in two steps, we redirect to register address
                         if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) {
                             Tools::redirect('index.php?controller=address');
                         }
                         if ($back = Tools::getValue('back')) {
                             Tools::redirect(html_entity_decode($back));
                         }
                         // redirection: if cart is not empty : redirection to the cart
                         if (count($this->context->cart->getProducts(true)) > 0) {
                             Tools::redirect('index.php?controller=order&multi-shipping=' . (int) Tools::getValue('multi-shipping'));
                         } else {
                             Tools::redirect('index.php?controller=' . ($this->authRedirection !== false ? url_encode($this->authRedirection) : 'my-account'));
                         }
                     }
                 }
             }
         }
     }
     if (count($this->errors)) {
         //for retro compatibility to display guest account creation form on authentication page
         if (Tools::getValue('submitGuestAccount')) {
             $_GET['display_guest_checkout'] = 1;
         }
         if (!Tools::getValue('is_new_customer')) {
             unset($_POST['passwd']);
         }
         if ($this->ajax) {
             $return = array('hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => false, 'id_customer' => 0);
             die(Tools::jsonEncode($return));
         }
         $this->context->smarty->assign('account_error', $this->errors);
     }
 }
Beispiel #10
0
    protected function _processSubmitAddress($id_address, $type)
    {
        if (isset($id_address) && $id_address > 0) {
            $address = new Address($id_address);
        } else {
            $address = new Address();
        }
        $this->errors = $address->validateController();
        $fields_to_check = array("address2", "company", "vat_number", "phone", "phone_mobile", "other");
        foreach ($fields_to_check as $field1) {
            if (Tools::getValue($field1) && trim(Tools::getValue($field1)) == "") {
                $address->{$field1} = "";
            }
        }
        if (empty($this->errors)) {
            // So that dummyvalue address doesn't get customer id assigned
            $address->id_customer = (int) $this->context->customer->id;
        }
        if ($this->context->customer->isLogged() && !$this->isTokenValid()) {
            $this->errors[] = Tools::displayError('Invalid token');
        }
        if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile') && !Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && $type == 'delivery') {
            $this->errors[] = Tools::displayError('You must register at least one phone number');
        }
        if ($address->id_country) {
            if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
                throw new PrestaShopException('Country cannot be loaded with address->id_country');
            }
            if ((int) $country->contains_states && !(int) $address->id_state) {
                $this->errors[] = Tools::displayError('This country requires a state selection.');
            }
            if (version_compare(_PS_VERSION_, "1.6.0") < 0 && $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 = trim(Tools::getValue('postcode'))) && $zip_code_format) {
                    if (!$country->checkZipCode($postcode)) {
                        $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                    }
                } else {
                    if ($zip_code_format && !$this->context->cart->isVirtualCart()) {
                        $this->errors[] = Tools::displayError('Zip/Postal code is required.');
                    } else {
                        if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) {
                            $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                        }
                    }
                }
            }
        }
        if (isset($id_address) && $id_address > 0) {
            $alias_id_address = $id_address;
        } else {
            $alias_id_address = (int) Tools::getValue('id_address');
        }
        if (!$this->context->customer->is_guest && Tools::getValue('alias') && (int) $this->context->customer->id > 0 && Db::getInstance()->getValue('
				SELECT count(*)
				FROM ' . _DB_PREFIX_ . 'address
				WHERE `alias` = \'' . pSql(Tools::getValue('alias')) . '\'
				AND id_address != ' . $alias_id_address . '
				AND id_customer = ' . (int) $this->context->customer->id . '
				AND deleted = 0') > 0) {
            $address->alias .= '_' . $alias_id_address;
        }
        $this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
        if ($this->errors) {
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            } else {
                return;
            }
        }
        $this->context->cart->setNoMultishipping();
        // As the cart is no multishipping, set each delivery address lines with the main delivery address
        $address->alias = preg_replace('/[!<>?=+@{}_$%]/', '', $address->alias);
        if ($result = $address->save()) {
            if (isset($address_old) && $address_old->isUsed()) {
                $this->context->cart->updateAddressId($address_old->id, $address->id);
            } else {
                // Update cart address
                $this->context->cart->autosetProductAddress();
            }
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            }
            if ($back = Tools::getValue('back')) {
                $mod = Tools::getValue('mod');
                Tools::redirect('index.php?controller=' . $back . ($mod ? '&back=' . $mod : ''));
            } else {
                Tools::redirect('index.php?controller=addresses');
            }
        }
        $this->errors[] = Tools::displayError('An error occurred while updating your address.');
    }
Beispiel #11
0
    protected function _processSubmitAddress($id_address, $type)
    {
        /*if ($this->context->customer->is_guest)
          Tools::redirect('index.php?controller=addresses');*/
        if (isset($id_address) && $id_address > 0) {
            $address = new Address($id_address);
        } else {
            $address = new Address();
        }
        $this->errors = $address->validateController();
        // Update address2 and company if they're empty (non mandatory fields) - default validateController ignores them
        $fields_to_check = array("address2", "company", "vat_number", "phone", "phone_mobile", "other");
        foreach ($fields_to_check as $field1) {
            if (Tools::getValue($field1) && trim(Tools::getValue($field1)) == "") {
                $address->{$field1} = "";
            }
        }
        if (empty($this->errors)) {
            // So that dummyvalue address doesn't get customer id assigned
            $address->id_customer = (int) $this->context->customer->id;
        }
        // Check page token
        if ($this->context->customer->isLogged() && !$this->isTokenValid()) {
            $this->errors[] = Tools::displayError('Invalid token');
        }
        // Check phone
        if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile') && !Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && $type == 'delivery') {
            $this->errors[] = Tools::displayError('You must register at least one phone number');
        }
        if ($address->id_country) {
            // Check country
            if (!($country = new Country($address->id_country)) || !Validate::isLoadedObject($country)) {
                throw new PrestaShopException('Country cannot be loaded with address->id_country');
            }
            if ((int) $country->contains_states && !(int) $address->id_state) {
                $this->errors[] = Tools::displayError('This country requires a state selection.');
            }
            // US customer: normalize the address
            if (version_compare(_PS_VERSION_, "1.6.0") < 0 && $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);
            }
            // Check country zip code
            $zip_code_format = $country->zip_code_format;
            if ($country->need_zip_code) {
                if (($postcode = trim(Tools::getValue('postcode'))) && $zip_code_format) {
                    if (!$country->checkZipCode($postcode)) {
                        $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                    }
                } else {
                    if ($zip_code_format && !$this->context->cart->isVirtualCart()) {
                        $this->errors[] = Tools::displayError('Zip/Postal code is required.');
                    } else {
                        if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) {
                            $this->errors[] = sprintf(Tools::displayError('Zip/Postal code is invalid. Must be typed as follows: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))));
                        }
                    }
                }
            }
            // Check country DNI
            /*if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni'))))
                        $this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
                    else if (!$country->isNeedDni())
              $address->dni = null;*/
        }
        if (isset($id_address) && $id_address > 0) {
            $alias_id_address = $id_address;
        } else {
            $alias_id_address = (int) Tools::getValue('id_address');
        }
        // Check if the alias exists
        if (!$this->context->customer->is_guest && Tools::getValue('alias') && (int) $this->context->customer->id > 0 && Db::getInstance()->getValue('
				SELECT count(*)
				FROM ' . _DB_PREFIX_ . 'address
				WHERE `alias` = \'' . pSql(Tools::getValue('alias')) . '\'
				AND id_address != ' . $alias_id_address . '
				AND id_customer = ' . (int) $this->context->customer->id . '
				AND deleted = 0') > 0) {
            $address->alias .= '_' . $alias_id_address;
        }
        //$this->errors[] = sprintf(Tools::displayError('The alias "%s" is already used, please chose another one.'), Tools::safeOutput(Tools::getValue('alias')));
        // Check the requires fields which are settings in the BO
        $this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
        // Don't continue this process if we have errors !
        if ($this->errors) {
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            } else {
                return;
            }
        }
        // If we edit this address, delete old address and create a new one
        /*if (Validate::isLoadedObject($this->_address))
          {
              if (Validate::isLoadedObject($country) && !$country->contains_states)
                  $address->id_state = 0;
              $address_old = $this->_address;
              if (Customer::customerHasAddress($this->context->customer->id, (int)$address_old->id))
              {
                  // OPCKT update - never delete existing address!
                  if (false && $address_old->isUsed())
                      $address_old->delete();
                  else
                  {
                      $address->id = (int)($address_old->id);
                      $address->date_add = $address_old->date_add;
                  }
              }
          }*/
        $this->context->cart->setNoMultishipping();
        // As the cart is no multishipping, set each delivery address lines with the main delivery address
        // Fix alias
        $address->alias = preg_replace('/[!<>?=+@{}_$%]/', '', $address->alias);
        // Save address
        if ($result = $address->save()) {
            // Update id address of the current cart if necessary
            if (isset($address_old) && $address_old->isUsed()) {
                $this->context->cart->updateAddressId($address_old->id, $address->id);
            } else {
                // Update cart address
                $this->context->cart->autosetProductAddress();
            }
            if ($this->ajax) {
                $return = array('hasError' => (bool) $this->errors, 'errors' => $this->errors, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice);
                die(Tools::jsonEncode($return));
            }
            // Redirect to old page or current page
            if ($back = Tools::getValue('back')) {
                $mod = Tools::getValue('mod');
                Tools::redirect('index.php?controller=' . $back . ($mod ? '&back=' . $mod : ''));
            } else {
                Tools::redirect('index.php?controller=addresses');
            }
        }
        $this->errors[] = Tools::displayError('An error occurred while updating your address.');
    }
 /**
  * Manage address
  */
 public function processAddress()
 {
     $customer = new Customer();
     if (!Tools::getValue('email')) {
         return true;
     }
     if (!$customer->getByEmail(Tools::getValue('email'))) {
         $_POST['passwd'] = md5(time() . _COOKIE_KEY_);
         $this->errors += $customer->validateController();
         $customer->active = 1;
         if (empty($this->errors) && !$customer->add()) {
             $this->errors[] = Tools::displayError('An error occurred while creating your account.');
         }
     }
     $addresses = $customer->getAddresses($this->context->language->id);
     $id_address = null;
     foreach ($addresses as $address) {
         if ($address['firstname'] != $_POST['firstname']) {
             continue;
         }
         if ($address['lastname'] != $_POST['lastname']) {
             continue;
         }
         if (isset($_POST['city'])) {
             if ($address['city'] != $_POST['city']) {
                 continue;
             }
         }
         if ($address['phone'] != $_POST['phone']) {
             continue;
         }
         $id_address = $address['id_address'];
         break;
     }
     if (!$id_address) {
         $address = new Address();
         $address->id_customer = $customer->id;
         $_POST['id_country'] = 177;
         $_POST['alias'] = 'Address ' + count($addresses) + 1;
         $_POST['address1'] = 'some address';
         $_POST['city'] = 'some city';
         $this->errors += $address->validateController();
         if (empty($this->errors) && !$address->add()) {
             $this->errors[] = Tools::displayError('An error occurred while creating your account.');
         } else {
             $id_address = $address->id;
             $data = array();
             $data['email'] = $customer->email;
             $data['firstname'] = $customer->firstname;
             $data['lastname'] = $customer->lastname;
             $data['ip_registration_newsletter'] = !empty($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : $_SERVER['REMOTE_ADDR'];
             $data['newsletter_date_add'] = date("d.m.y");
             $data['phone'] = $address->phone;
             function charset($str)
             {
                 if (!$str) {
                     exit;
                 }
                 $charset = mb_detect_encoding($str, "auto");
                 if ($charset != "UTF-8") {
                     $str = iconv($charset, 'utf-8', $str);
                 }
                 return $str;
             }
             //ключ доступа к API (из Личного Кабинета)
             $api_key = "58priw95sdjt7umw17ixbnkkkudtoq5u7nmfcacy";
             // Список контактов
             $list = "4734062";
             //dev-etagerca
             $POST = array('api_key' => $api_key, 'field_names[0]' => 'email', 'field_names[1]' => 'Name', 'field_names[2]' => 'email_request_ip', 'field_names[3]' => 'email_add_time', 'field_names[4]' => 'phone', 'field_names[5]' => 'email_list_ids');
             for ($i = 0; $i < 1; $i++) {
                 $POST['data[' . $i . '][0]'] = $data['email'];
                 $POST['data[' . $i . '][1]'] = charset($data['firstname']) . ' ' . charset($data['lastname']);
                 $POST['data[' . $i . '][2]'] = $data['ip_registration_newsletter'];
                 $POST['data[' . $i . '][3]'] = $data['newsletter_date_add'];
                 $POST['data[' . $i . '][4]'] = $data['phone'];
                 $POST['data[' . $i . '][5]'] = $list;
             }
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_POST, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
             curl_setopt($ch, CURLOPT_TIMEOUT, 10);
             curl_setopt($ch, CURLOPT_URL, 'http://api.unisender.com/ru/api/importContacts?format=json');
             $result = curl_exec($ch);
             //                    if ($result) {
             //                        // Раскодируем ответ API-сервера
             //                        $jsonObj = json_decode($result);
             //
             //                        if(null===$jsonObj) {
             //                            // Ошибка в полученном ответе
             //                            echo "Invalid JSON";
             //
             //                        }
             //                        elseif(!empty($jsonObj->error)) {
             //                            // Ошибка импорта
             //                            echo("An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")");
             //
             //                        } else {
             //                            // Новые подписчики успешно добавлены
             //                            echo("Success! Added " . $jsonObj->result->new_emails . " new e-mail addresses");
             //
             //                        }
             //                    } else {
             //                        // Ошибка соединения с API-сервером
             //                        echo("API access error");
             //                    }
         }
     }
     $this->context->cookie->id_customer = $customer->id;
     $this->context->cart->id_customer = $customer->id;
     $this->context->cart->id_address_delivery = $id_address;
     $this->context->cart->id_address_invoice = $id_address;
     /*
     		if (!Tools::getValue('multi-shipping'))
     			$this->context->cart->setNoMultishipping();
     		
     		$same = Tools::isSubmit('same');
     		if(!Tools::getValue('id_address_invoice', false) && !$same)
     			$same = true;
     
     		if (!Customer::customerHasAddress($this->context->customer->id, (int)Tools::getValue('id_address_delivery'))
     			|| (!$same && Tools::getValue('id_address_delivery') != Tools::getValue('id_address_invoice')
     				&& !Customer::customerHasAddress($this->context->customer->id, (int)Tools::getValue('id_address_invoice'))))
     			$this->errors[] = Tools::displayError('Invalid address', !Tools::getValue('ajax'));
     		else
     		{
     			$this->context->cart->id_address_delivery = (int)Tools::getValue('id_address_delivery');
     			$this->context->cart->id_address_invoice = $same ? $this->context->cart->id_address_delivery : (int)Tools::getValue('id_address_invoice');
     			
     			CartRule::autoRemoveFromCart($this->context);
     			CartRule::autoAddToCart($this->context);
     			
     			if (!$this->context->cart->update())
     				$this->errors[] = Tools::displayError('An error occurred while updating your cart.', !Tools::getValue('ajax'));
     
     			if (!$this->context->cart->isMultiAddressDelivery())
     				$this->context->cart->setNoMultishipping(); // If there is only one delivery address, set each delivery address lines with the main delivery address
     
     			if (Tools::isSubmit('message'))
     				$this->_updateMessage(Tools::getValue('message'));
     						
     			// Add checking for all addresses
     			$address_without_carriers = $this->context->cart->getDeliveryAddressesWithoutCarriers();
     			if (count($address_without_carriers) && !$this->context->cart->isVirtualCart())
     			{
     				if (count($address_without_carriers) > 1)
     					$this->errors[] = sprintf(Tools::displayError('There are no carriers that deliver to some addresses you selected.', !Tools::getValue('ajax')));
     				elseif ($this->context->cart->isMultiAddressDelivery())
     					$this->errors[] = sprintf(Tools::displayError('There are no carriers that deliver to one of the address you selected.', !Tools::getValue('ajax')));
     				else
     					$this->errors[] = sprintf(Tools::displayError('There are no carriers that deliver to the address you selected.', !Tools::getValue('ajax')));
     			}
     		}
     */
     if ($this->errors) {
         if (Tools::getValue('ajax')) {
             die('{"hasError" : true, "errors" : ["' . implode('\',\'', $this->errors) . '"]}');
         }
         $this->step = 1;
     }
     if ($this->ajax) {
         die(true);
     }
 }