public function processRanges($id_carrier) { if (!$this->access('edit') || !$this->access('add')) { $this->errors[] = $this->trans('You do not have permission to use this wizard.', array(), 'Admin.Shipping.Notification'); return; } $carrier = new Carrier((int) $id_carrier); if (!Validate::isLoadedObject($carrier)) { return false; } $range_inf = Tools::getValue('range_inf'); $range_sup = Tools::getValue('range_sup'); $range_type = Tools::getValue('shipping_method'); $fees = Tools::getValue('fees'); $carrier->deleteDeliveryPrice($carrier->getRangeTable()); if ($range_type != Carrier::SHIPPING_METHOD_FREE) { foreach ($range_inf as $key => $delimiter1) { if (!isset($range_sup[$key])) { continue; } $add_range = true; if ($range_type == Carrier::SHIPPING_METHOD_WEIGHT) { if (!RangeWeight::rangeExist(null, (double) $delimiter1, (double) $range_sup[$key], $carrier->id_reference)) { $range = new RangeWeight(); } else { $range = new RangeWeight((int) $key); $range->id_carrier = (int) $carrier->id; $range->save(); $add_range = false; } } if ($range_type == Carrier::SHIPPING_METHOD_PRICE) { if (!RangePrice::rangeExist(null, (double) $delimiter1, (double) $range_sup[$key], $carrier->id_reference)) { $range = new RangePrice(); } else { $range = new RangePrice((int) $key); $range->id_carrier = (int) $carrier->id; $range->save(); $add_range = false; } } if ($add_range) { $range->id_carrier = (int) $carrier->id; $range->delimiter1 = (double) $delimiter1; $range->delimiter2 = (double) $range_sup[$key]; $range->save(); } if (!Validate::isLoadedObject($range)) { return false; } $price_list = array(); if (is_array($fees) && count($fees)) { foreach ($fees as $id_zone => $fee) { $price_list[] = array('id_range_price' => $range_type == Carrier::SHIPPING_METHOD_PRICE ? (int) $range->id : null, 'id_range_weight' => $range_type == Carrier::SHIPPING_METHOD_WEIGHT ? (int) $range->id : null, 'id_carrier' => (int) $carrier->id, 'id_zone' => (int) $id_zone, 'price' => isset($fee[$key]) ? (double) str_replace(',', '.', $fee[$key]) : 0); } } if (count($price_list) && !$carrier->addDeliveryPrice($price_list, true)) { return false; } } } return true; }
private static function createDefaultRanges() { $ids_ranges_seur = array(); $ids_ranges_pos = array(); $ids_ranges_canarias_48 = array(); $ids_ranges_canarias_m = array(); if (self::$carrier_seur->id != self::$carrier_pos->id && self::$carrier_seur->id != self::$carrier_canarias_48->id && self::$carrier_seur->id != self::$carrier_canarias_m->id) { foreach (self::$ranges as $from => $to) { $range_seur = new RangeWeight(); $range_seur->id_carrier = self::$carrier_seur->id; $range_seur->delimiter1 = $from; $range_seur->delimiter2 = $to; $range_seur->save(); $ids_ranges_seur[$from] = $range_seur->id; } } if (self::$carrier_pos->id != self::$carrier_seur->id && self::$carrier_pos->id != self::$carrier_canarias_48->id && self::$carrier_pos->id != self::$carrier_canarias_m->id) { foreach (self::$ranges as $from => $to) { $range_pos = new RangeWeight(); $range_pos->id_carrier = self::$carrier_pos->id; $range_pos->delimiter1 = $from; $range_pos->delimiter2 = $to; $range_pos->save(); $ids_ranges_pos[$from] = $range_pos->id; } } if (self::$carrier_canarias_48->id != self::$carrier_seur->id && self::$carrier_canarias_48->id != self::$carrier_pos->id && self::$carrier_canarias_48->id != self::$carrier_canarias_m->id) { foreach (self::$ranges as $from => $to) { $range_canarias_48 = new RangeWeight(); $range_canarias_48->id_carrier = self::$carrier_canarias_48->id; $range_canarias_48->delimiter1 = $from; $range_canarias_48->delimiter2 = $to; $range_canarias_48->save(); $ids_ranges_canarias_48[$from] = $range_canarias_48->id; } } if (self::$carrier_canarias_m->id != self::$carrier_seur->id && self::$carrier_canarias_m->id != self::$carrier_pos->id && self::$carrier_canarias_m->id != self::$carrier_canarias_48->id) { foreach (self::$ranges as $from => $to) { $range_canarias_m = new RangeWeight(); $range_canarias_m->id_carrier = self::$carrier_canarias_m->id; $range_canarias_m->delimiter1 = $from; $range_canarias_m->delimiter2 = $to; $range_canarias_m->save(); $ids_ranges_canarias_m[$from] = $range_canarias_m->id; } } $range_table_seur = self::$carrier_seur->getRangeTable(); $range_table_pos = self::$carrier_pos->getRangeTable(); $range_table_48 = self::$carrier_canarias_48->getRangeTable(); $range_table_m = self::$carrier_canarias_m->getRangeTable(); self::$carrier_seur->deleteDeliveryPrice($range_table_seur); self::$carrier_pos->deleteDeliveryPrice($range_table_pos); self::$carrier_canarias_48->deleteDeliveryPrice($range_table_48); self::$carrier_canarias_m->deleteDeliveryPrice($range_table_m); if (version_compare(_PS_VERSION_, '1.5', '>=')) { $priceListSeur = array(); $priceListPos = array(); $priceListC_48 = array(); $priceListSeurC_M = array(); foreach (self::$ranges as $from => $to) { /* * carrier_seur */ $priceListSeur[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_seur->id, 'id_zone' => (int) self::$provincia->id, 'price' => 0); $priceListSeur[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_seur->id, 'id_zone' => (int) self::$peninsula->id, 'price' => 0); $priceListSeur[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_seur->id, 'id_zone' => (int) self::$portugal->id, 'price' => 0); $priceListSeur[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_seur->id, 'id_zone' => (int) self::$baleares->id, 'price' => 0); $priceListSeur[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_seur->id, 'id_zone' => (int) self::$ceuta_melilla->id, 'price' => 0); /* * carrier_pos */ if (self::$carrier_seur->id != self::$carrier_pos->id) { $priceListPos[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_pos->id, 'id_zone' => (int) self::$provincia->id, 'price' => 0); $priceListPos[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_pos->id, 'id_zone' => (int) self::$peninsula->id, 'price' => 0); $priceListPos[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_pos->id, 'id_zone' => (int) self::$portugal->id, 'price' => 0); $priceListPos[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_pos->id, 'id_zone' => (int) self::$baleares->id, 'price' => 0); $priceListPos[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_pos->id, 'id_zone' => (int) self::$ceuta_melilla->id, 'price' => 0); } /* * carrier_canarias_48 */ $priceListC_48[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_canarias_48->id, 'id_zone' => (int) self::$canarias->id, 'price' => 0); /* * carrier_canarias_m */ if (self::$carrier_canarias_48->id != self::$carrier_canarias_m->id) { $priceListSeurC_M[] = array('id_range_price' => 'NULL', 'id_range_weight' => (int) $ids_ranges_seur[$from], 'id_carrier' => (int) self::$carrier_canarias_m->id, 'id_zone' => (int) self::$canarias->id, 'price' => 0); } } self::$carrier_seur->addDeliveryPrice($priceListSeur); if (self::$carrier_seur->id != self::$carrier_pos->id) { self::$carrier_pos->addDeliveryPrice($priceListPos); } self::$carrier_canarias_48->addDeliveryPrice($priceListC_48); if (self::$carrier_canarias_48->id != self::$carrier_canarias_m->id) { self::$carrier_canarias_m->addDeliveryPrice($priceListSeurC_M); } } else { foreach (self::$ranges as $from => $to) { /* * self::$carrier_seur */ self::$carrier_seur->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_seur[$from] . ', ' . (int) self::$carrier_seur->id . ', ' . (int) self::$provincia->id . ', 0)'); self::$carrier_seur->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_seur[$from] . ', ' . (int) self::$carrier_seur->id . ', ' . (int) self::$peninsula->id . ', 0)'); self::$carrier_seur->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_seur[$from] . ', ' . (int) self::$carrier_seur->id . ', ' . (int) self::$portugal->id . ', 0)'); self::$carrier_seur->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_seur[$from] . ', ' . (int) self::$carrier_seur->id . ', ' . (int) self::$baleares->id . ', 0)'); self::$carrier_seur->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_seur[$from] . ', ' . (int) self::$carrier_seur->id . ', ' . (int) self::$ceuta_melilla->id . ', 0)'); /* * self::$carrier_pos */ if (self::$carrier_seur->id != self::$carrier_pos->id) { self::$carrier_pos->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_pos[$from] . ', ' . (int) self::$carrier_pos->id . ', ' . (int) self::$provincia->id . ', 0)'); self::$carrier_pos->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_pos[$from] . ', ' . (int) self::$carrier_pos->id . ', ' . (int) self::$peninsula->id . ', 0)'); self::$carrier_pos->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_pos[$from] . ', ' . (int) self::$carrier_pos->id . ', ' . (int) self::$portugal->id . ', 0)'); self::$carrier_pos->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_pos[$from] . ', ' . (int) self::$carrier_pos->id . ', ' . (int) self::$baleares->id . ', 0)'); self::$carrier_pos->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_pos[$from] . ', ' . (int) self::$carrier_pos->id . ', ' . (int) self::$ceuta_melilla->id . ', 0)'); } /* * self::$carrier_canarias_48 */ self::$carrier_canarias_48->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_canarias_48[$from] . ', ' . (int) self::$carrier_canarias_48->id . ', ' . (int) self::$canarias->id . ', 0)'); /* * self::$carrier_canarias_m */ if (self::$carrier_canarias_48->id != self::$carrier_canarias_m->id) { self::$carrier_canarias_m->addDeliveryPrice('(NULL, ' . (int) $ids_ranges_canarias_m[$from] . ', ' . (int) self::$carrier_canarias_m->id . ', ' . (int) self::$canarias->id . ', 0)'); } } } return true; }