diff --git a/classes/Carrier.php b/classes/Carrier.php index 3e9da014b..3c3f5039a 100644 --- a/classes/Carrier.php +++ b/classes/Carrier.php @@ -753,7 +753,7 @@ class CarrierCore extends ObjectModel * @param array $priceList Prices list in multiple arrays (changed to array since 1.5.0) * @return boolean Insertion result */ - public function addDeliveryPrice($price_list) + public function addDeliveryPrice($price_list, $delete = false) { if (!$price_list) return false; @@ -772,6 +772,17 @@ class CarrierCore extends ObjectModel if (!isset($values['id_shop_group'])) $values['id_shop_group'] = (Shop::getContext() != Shop::CONTEXT_ALL) ? Shop::getContextShopGroupID() : null; + if ($delete) + Db::getInstance()->execute(' + DELETE FROM `'._DB_PREFIX_.'delivery` + WHERE id_shop = '.(int)$values['id_shop'].' + AND id_shop_group='.(int)$values['id_shop_group'].' + AND id_carrier='.(int)$values['id_carrier']. + ($values['id_range_price'] !== null ? ' AND id_range_price='.(int)$values['id_range_price'] : ''). + ($values['id_range_weight'] !== null ? ' AND id_range_weight='.(int)$values['id_range_weight'] : '').' + AND id_zone='.(int)$values['id_zone'] + ); + $sql .= '('; foreach ($values as $v) { @@ -1280,10 +1291,8 @@ class CarrierCore extends ObjectModel { if ($delete) Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'carrier_group WHERE id_carrier = '.(int)$id_carrier); - if (!count($groups)) return true; - $sql = 'INSERT INTO '._DB_PREFIX_.'carrier_group (id_carrier, id_group) VALUES '; foreach ($groups as $id_group) $sql .= '('.(int)$this->id.', '.(int)$id_group.'),'; diff --git a/controllers/admin/AdminCarrierWizardController.php b/controllers/admin/AdminCarrierWizardController.php index 2099816c3..3cd3ef63d 100644 --- a/controllers/admin/AdminCarrierWizardController.php +++ b/controllers/admin/AdminCarrierWizardController.php @@ -335,8 +335,8 @@ class AdminCarrierWizardControllerCore extends AdminController $range_table = $carrier->getRangeTable(); $range_obj = $carrier->getRangeObject(); $price_by_range = Carrier::getDeliveryPriceByRanges($range_table, (int)$carrier->id); - } + $zones = Zone::getZones(false); foreach ($zones as $zone) $fields_value['zones'][$zone['id_zone']] = Tools::getValue('zone_'.$zone['id_zone'], (in_array($zone['id_zone'], $carrier_zones_ids))); @@ -614,7 +614,7 @@ class AdminCarrierWizardControllerCore extends AdminController 'price' => (float)$fee[$key] ); - if (!$carrier->addDeliveryPrice($price_list)) + if (!$carrier->addDeliveryPrice($price_list, true)) return false; } } @@ -758,11 +758,11 @@ class AdminCarrierWizardControllerCore extends AdminController if (count($carrier->getZone($zone['id_zone']))) { if (!isset($_POST['zone_'.$zone['id_zone']]) || !$_POST['zone_'.$zone['id_zone']]) - $return &= $carrier->deleteZone($zone['id_zone']); + $return &= $carrier->deleteZone((int)$zone['id_zone']); } else if (isset($_POST['zone_'.$zone['id_zone']]) && $_POST['zone_'.$zone['id_zone']]) - $return &= $carrier->addZone($zone['id_zone']); + $return &= $carrier->addZone((int)$zone['id_zone']); return $return; }