194 lines
9.9 KiB
PHP
194 lines
9.9 KiB
PHP
<?php
|
|
require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
|
require_once(dirname(__FILE__).'/../../init.php');
|
|
require_once(dirname(__FILE__).'/../../modules/ant_changeaddress/ant_changeaddress.php');
|
|
$controller->preProcess();
|
|
|
|
$ant_changeaddress = new Ant_Changeaddress();
|
|
|
|
$lang = (int) $cookie->id_lang;
|
|
$isolang = Language::getIsoById($lang);
|
|
$errors = array();
|
|
|
|
if ($cookie->isLogged()) {
|
|
|
|
$smarty->assign('isLogged', 1);
|
|
$customer = new Customer((int)($cookie->id_customer));
|
|
if (!Validate::isLoadedObject($customer)) {
|
|
die(Tools::displayError('Customer not found'));
|
|
}
|
|
|
|
if(Tools::getValue('id_order')) {
|
|
$id_order = Tools::getValue('id_order');
|
|
$order = new Order((int) $id_order);
|
|
$order_cart = new Cart((int) $order->id_cart);
|
|
if((int)$order->id_customer != (int)$customer->id) {
|
|
$errors[] = Tools::displayError('Invalid customer for this order');
|
|
} else {
|
|
if(Tools::isSubmit('submitChangeAddress')) {
|
|
if(Tools::getValue('id_cart')) {
|
|
$mode = Tools::getValue('delivery_mode','');
|
|
if (empty($mode)) {
|
|
$mode = "DOM";
|
|
}
|
|
|
|
if ($mode == "DOM" && Tools::getValue('id_address_delivery')) {
|
|
$newAddressId = Tools::getValue('id_address_delivery');
|
|
} else {
|
|
$newAddressId = $ant_changeaddress->createAddress(
|
|
(int)$customer->id,
|
|
"FR",
|
|
pSQL(Tools::getValue('prname', '')),
|
|
pSQL(Tools::getValue('pradress3', '')),
|
|
pSQL(Tools::getValue('pradress2', '')),
|
|
pSQL(Tools::getValue('przipcode', '')),
|
|
pSQL(Tools::getValue('prtown', '')),
|
|
pSQL(Tools::getValue('cephonenumber', '')),
|
|
pSQL(Tools::getValue('cename', '')),
|
|
pSQL(Tools::getValue('cefirstname', ''))
|
|
);
|
|
}
|
|
|
|
if($newAddressId) {
|
|
$errors = array();
|
|
$delivery = new Address((int)$newAddressId);
|
|
$prefix_postcode = substr($delivery->postcode, 0 ,2);
|
|
|
|
// Checking CANARIES
|
|
if ($delivery->id_country == 6
|
|
&& (intval($prefix_postcode) == 35 || intval($prefix_postcode) == 38)
|
|
) {
|
|
$errors[] = Tools::displayError('Lo sentimos, en estos momentos no distribuimos nuestros productos en Canarias. Si deseas más información, puedes contactar con el Servicio de atención al cliente o llamar al 902 044 399.');
|
|
}
|
|
|
|
// Checking DOM-TOM
|
|
$prefix_postcode = substr($delivery->postcode, 0 ,3);
|
|
$domtom = array(971,972,973,974,975,976,984,986,987,988);
|
|
if ($delivery->id_country == 8 && (in_array(intval($prefix_postcode),$domtom))
|
|
) {
|
|
$errors[] = Tools::displayError('Nous sommes désolé, nous ne livrons pas dans le DOM-TOM');
|
|
}
|
|
|
|
// Checking only in france
|
|
$products_only_fr = array();
|
|
foreach($order_cart->getProducts() as $product) {
|
|
if(($sale = Sale::getSaleFromCategory($product['id_category_default'])) !== NULL) {
|
|
// shipping only in france
|
|
if($sale->shipping_fr == 1 && $delivery->id_country != 8) {
|
|
$errors[] = Tools::displayError('Votre commande contient des produits expédiés uniquement en France');
|
|
}
|
|
}
|
|
}
|
|
|
|
if (empty($errors)) {
|
|
$order->id_address_delivery = (int)$newAddressId;
|
|
$order->update();
|
|
|
|
if(Db::getInstance()->getRow('
|
|
SELECT *
|
|
FROM `'._DB_PREFIX_.'socolissimo_delivery_info`
|
|
WHERE id_cart = '.pSQL(intval(Tools::getValue('id_cart'))).'')
|
|
) {
|
|
Db::getInstance()->Execute('UPDATE ps_socolissimo_delivery_info SET
|
|
delivery_mode = "'.pSQL($mode).'",
|
|
prname = "'.pSQL(Tools::getValue('prname', $delivery->lastname)).'",
|
|
prfirstname = "'.pSQL(Tools::getValue('prfirstname', $delivery->firstname)).'",
|
|
cecompanyname = "'.pSQL(Tools::getValue('cecompanyname', (!empty($delivery->company)?$delivery->company:''))).'",
|
|
cename = "'.pSQL(Tools::getValue('cename', '')).'",
|
|
cefirstname = "'.pSQL(Tools::getValue('cefirstname', '')).'",
|
|
prcompladress = "'.pSQL(Tools::getValue('prcompladress', '')).'",
|
|
pradress1 = "'.pSQL(Tools::getValue('pradress1', (!empty($delivery->address1)?$delivery->address1:''))).'",
|
|
pradress2 = "'.pSQL(Tools::getValue('pradress2', (!empty($delivery->address2)?$delivery->address2:''))).'",
|
|
pradress3 = "'.pSQL(Tools::getValue('pradress3', '')).'",
|
|
pradress4 = "'.pSQL(Tools::getValue('pradress4', '')).'",
|
|
przipcode = "'.pSQL(Tools::getValue('przipcode', (!empty($delivery->postcode)?$delivery->postcode:''))).'",
|
|
prtown = "'.pSQL(Tools::getValue('prtown', (!empty($delivery->city)?$delivery->city:''))).'",
|
|
cephonenumber = "'.pSQL(Tools::getValue('cephonenumber', ($delivery->phone_mobile ? $delivery->phone_mobile : ($delivery->phone ? $delivery->phone : '')) )).'",
|
|
ceemail = "'.pSQL(Tools::getValue('ceemail', (!empty($customer->email)?$customer->email:''))).'",
|
|
cedeliveryinformation = "'.pSQL(Tools::getValue('cedeliveryinformation', '')).'",
|
|
cedoorcode1 = "'.pSQL(Tools::getValue('cedoorcode1', '')).'",
|
|
cedoorcode2 = "'.pSQL(Tools::getValue('cedoorcode2', '')).'",
|
|
prid = "'.pSQL(Tools::getValue('prid', '')).'"
|
|
WHERE id_cart = '.pSQL(intval(Tools::getValue('id_cart'))));
|
|
}
|
|
$smarty->assign(array('confirmation' => 1));
|
|
}
|
|
}
|
|
} else {
|
|
$errors[] = Tools::displayError('An error occured');
|
|
}
|
|
}
|
|
$address = Db::getInstance()->getRow('
|
|
SELECT *
|
|
FROM `'._DB_PREFIX_.'socolissimo_delivery_info`
|
|
WHERE id_cart = '.pSQL(intval($order->id_cart)).'
|
|
');
|
|
if ($address) {
|
|
if ($address['delivery_mode'] == "DOM"){
|
|
$delivery_mode = "DOM";
|
|
$mode = array(
|
|
'2' => 'Livraison à domicile (DOM)',
|
|
'3' => 'Livraison à domicile (DOM)',
|
|
);
|
|
} elseif($address['delivery_mode'] == "BPR" || $address['delivery_mode'] == "CDI") {
|
|
$delivery_mode = "BPR";
|
|
$mode = array(
|
|
'2' => 'Livraison en Bureau de Poste (BPR)',
|
|
'3' => 'Livraison en Bureau de Poste (BPR)',
|
|
);
|
|
} elseif($address['delivery_mode'] == "A2P"){
|
|
$delivery_mode = "A2P";
|
|
$mode = array(
|
|
'2' => 'Livraison Commerce de proximité (A2P)',
|
|
'3' => 'Livraison Commerce de proximité (A2P)',
|
|
);
|
|
}
|
|
if ($delivery_mode == "BPR" || $delivery_mode == "A2P") {
|
|
$pr_coords = Db::getInstance()->getRow('
|
|
SELECT *
|
|
FROM `'._DB_PREFIX_.'lapostews_pr`
|
|
WHERE `id_pr` = '.pSQL($address['prid']).'
|
|
');
|
|
$c_address = htmlentities(preg_replace('/(, ){2,}/', ', ', preg_replace('/(, ){2,}/', ', ', implode(', ', array($address['pradress3'], $address['pradress4'], $address['pradress1'], $address['pradress2']))).', '.$address['przipcode'].' '.$address['prtown'].', FRANCE'));
|
|
$smarty->assign(array(
|
|
'c_address' => $c_address,
|
|
//'pr_coords' => $pr_coords
|
|
));
|
|
}
|
|
} else {
|
|
$delivery_mode = "DOM";
|
|
}
|
|
|
|
|
|
$current_address = $ant_changeaddress->getAddress($order->id_address_delivery);
|
|
$smarty->assign(array(
|
|
'current_address' => $current_address,
|
|
'addresses' => $customer->getAddresses((int)$cookie->id_lang)
|
|
));
|
|
|
|
$smarty->assign(array(
|
|
'address' => $address,
|
|
'mode' => $mode,
|
|
'delivery_mode' => $delivery_mode,
|
|
'order' => $order,
|
|
'order_cart' => $order_cart,
|
|
));
|
|
}
|
|
} else {
|
|
$errors[] = Tools::displayError('Invalid order');
|
|
}
|
|
|
|
}
|
|
|
|
$smarty->assign(array(
|
|
'errors' => $errors,
|
|
));
|
|
|
|
$_POST = array_merge($_POST, $_GET);
|
|
|
|
require_once(dirname(__FILE__).'/../../header.php');
|
|
|
|
echo Module::display(dirname(__FILE__), 'change_address.tpl');
|
|
|
|
require_once(dirname(__FILE__).'/../../footer.php');
|