private function carrierCompatibility($carrier) { // fix a bug in Prestashop before version 1.4.4.0 classes/cart.php function isCarrierInRange() range behavior $rangePrices = RangePrice::getRanges($carrier->id); if (empty($rangePrices)) { $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = 0.0; $rangePrice->delimiter2 = 1000000.0; if (!$rangePrice->add()) { $this->log('installation adding rangePrice failed', ShopgateLogger::LOGTYPE_ACCESS); return false; } } else { $rangePrice = new RangeWeight($rangePrices[0]['id_range_price']); } $rangeWeights = RangeWeight::getRanges($carrier->id); if (empty($rangeWeights)) { $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = 0.0; $rangeWeight->delimiter2 = 1000000.0; if (!$rangeWeight->add()) { $this->log('installation adding rangeWeight failed', ShopgateLogger::LOGTYPE_ACCESS); return false; } } else { $rangeWeight = new RangeWeight($rangeWeights[0]['id_range_weight']); } // Zones $zones = Zone::getZones(); foreach ($zones as $zone) { $carrier->addZone($zone['id_zone']); } // create for each zone delivery options foreach ($zones as $zone) { $deliveryRangeWeight = new Delivery(); $deliveryRangeWeight->id_carrier = $carrier->id; $deliveryRangeWeight->id_range_weight = $rangeWeight->id; $deliveryRangeWeight->id_range_price = 0; $deliveryRangeWeight->price = 0; $deliveryRangeWeight->id_zone = $zone['id_zone']; if (!$deliveryRangeWeight->add(true, true)) { $this->log('installation adding deliveryRangeWeight failed', ShopgateLogger::LOGTYPE_ACCESS); return false; } $deliveryRangePrice = new Delivery(); $deliveryRangePrice->id_carrier = $carrier->id; $deliveryRangePrice->id_range_price = $rangePrice->id; $deliveryRangePrice->id_range_weight = 0; $deliveryRangePrice->price = 0; $deliveryRangePrice->id_zone = $zone['id_zone']; if (!$deliveryRangePrice->add(true, true)) { $this->log('installation adding deliveryRangePrice failed', ShopgateLogger::LOGTYPE_ACCESS); return false; } } }
protected function importDeliveries() { $this->truncateTables(array('delivery')); $handle = $this->openCsvFile('deliveries.csv'); for ($current_line = 0; $line = fgetcsv($handle, MAX_LINE_SIZE, ';'); $current_line++) { $res = false; $fields = $this->filterFields('Delivery', $this->delivery_fields, $line); if (!isset($fields['id'])) { $delivery = new Delivery($line[0]); $delivery->id = $line[0]; } else { $delivery = new Delivery($fields['id']); } foreach ($fields as $key => $field) { $delivery->{$key} = $field; } $delivery->force_id = true; if (!$res) { $delivery->add(); } } $this->closeCsvFile($handle); return true; }