/** * creates of a dejala carrier corresponding to $dejalaProduct */ public static function createDejalaCarrier($dejalaConfig, $dejalaProduct) { // MFR091130 - get id zone from the country used in the module (if the store zones were customized) - default is 1 (Europe) $id_zone = 1; $moduleCountryIsoCode = strtoupper($dejalaConfig->country); $countryID = Country::getByIso($moduleCountryIsoCode); if (intval($countryID)) { $id_zone = Country::getIdZone($countryID); } $vatRate = floatval($dejalaProduct['vat']); // MFR091130 - get or create the tax & attach it to our zone if needed $id_tax = Tax::getTaxIdByRate($vatRate); if (!$id_tax) { $tax = new Tax(); $tax->rate = $vatRate; $defaultLanguage = Configuration::get('PS_LANG_DEFAULT'); $tax->name[$defaultLanguage] = $tax->rate . '%'; $tax->add(); $id_tax = Tax::getTaxIdByRate($vatRate); } if (!Tax::zoneHasTax($id_tax, $id_zone)) { // MFR : direct call because $tax->addZone($id_zone) causes errors when called Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'tax_zone` (`id_tax` , `id_zone`) VALUES (' . intval($id_tax) . ', ' . intval($id_zone) . ')'); } $carrier = new Carrier(); $carrier->name = 'dejala'; $carrier->id_tax = $id_tax; $carrier->url = 'http://tracking.dejala.' . $dejalaConfig->country . '/tracker/@'; $carrier->active = true; $carrier->deleted = 0; $carrier->shipping_handling = false; $carrier->range_behavior = 0; $carrier->is_module = 1; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'fr') { $carrier->delay[$language['id_lang']] = utf8_encode('Quand vous voulez... Par coursier, ' . $dejalaProduct['timelimit'] . 'H'); } if ($language['iso_code'] == 'en') { $carrier->delay[$language['id_lang']] = utf8_encode('When you want... Dispatch rider, ' . $dejalaProduct['timelimit'] . 'H range'); } if ($language['iso_code'] == 'es') { $carrier->delay[$language['id_lang']] = utf8_encode('Cuando quiera... Por mensajero, ' . $dejalaProduct['timelimit'] . 'H'); } } $carrier->add(); $sql = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_zone` (`id_carrier` , `id_zone`) VALUES (' . intval($carrier->id) . ', ' . intval($id_zone) . ')'; Db::getInstance()->Execute($sql); $rangeW = new RangeWeight(); $rangeW->id_carrier = $carrier->id; $rangeW->delimiter1 = 0; $rangeW->delimiter2 = $dejalaProduct['max_weight']; $rangeW->add(); $vat_factor = 1 + $dejalaProduct['vat'] / 100; $priceTTC = round($dejalaProduct['price'] * $vat_factor + $dejalaProduct['margin'], 2); $priceHT = round($priceTTC / $vat_factor, 2); $priceList = '(NULL' . ',' . $rangeW->id . ',' . $carrier->id . ',' . $id_zone . ',' . $priceHT . ')'; $carrier->addDeliveryPrice($priceList); return new Carrier($carrier->id); }
public function xdInstall() { foreach ($this->Options->getValue('carrierList') as $carrier_key => $carrier_name) { $carrierId = \Configuration::get($carrier_key); $deleted = false; if ($carrierId > 0) { $carrier = new \Carrier($carrierId); $deleted = $carrier->deleted; } if ($carrierId < 1 || $deleted) { // Create carrier $carrier = new \Carrier(); $carrier->name = $carrier_name; $carrier->id_tax_rules_group = 0; $carrier->active = 1; $carrier->deleted = 0; foreach (\Language::getLanguages(true) as $language) { // TODO Carrier delay $carrier->delay[(int) $language['id_lang']] = ' '; } $carrier->shipping_handling = 0; $carrier->range_behavior = 1; $carrier->is_module = 1; $carrier->shipping_external = 1; $carrier->external_module_name = $this->moduleInstance->name; $carrier->need_range = 1; if (!$carrier->add()) { return false; } // Associate carrier to all groups $groups = \Group::getGroups(true); foreach ($groups as $group) { \Db::getInstance()->insert('carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group'])); } // Create price range $rangePrice = new \RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); // Create weight range $rangeWeight = new \RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); // Associate carrier to all zones $zones = \Zone::getZones(true); foreach ($zones as $zone) { \Db::getInstance()->insert('carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone'])); \Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => null, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); \Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => null, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); } copy(self::$instanceBaseDir . '/img/logo.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); \Configuration::updateValue($carrier_key, $carrier->id); } } return true; }
public function installExternalCarrier($config) { $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Context::getContext()->language->getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'cs') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } else { $carrier->delay[(int) $language['id_lang']] = '2 days'; } } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '1000000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); $sql = 'SELECT DISTINCT id_zone FROM ' . _DB_PREFIX_ . 'country WHERE iso_code="CZ" OR iso_code="SK"'; $zones = Db::getInstance()->executeS($sql); if (is_array($zones)) { foreach ($zones as $zone) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); } } $this->module->copyLogo($carrier->id); if (Configuration::get('PS_TAX')) { $carrier->setTaxRulesGroup(1, true); } return (int) $carrier->id; } $this->messages[] = 'Failed to create external carrier ' . $config['name']; return false; }
public function postProcess() { $id = (int) Tools::getValue('id_' . $this->table); if (Tools::getValue('submitAdd' . $this->table)) { if (Tools::getValue('delimiter1') >= Tools::getValue('delimiter2')) { $this->errors[] = Tools::displayError('Invalid range'); } elseif (!$id && RangeWeight::rangeExist((int) Tools::getValue('id_carrier'), (double) Tools::getValue('delimiter1'), (double) Tools::getValue('delimiter2'))) { $this->errors[] = Tools::displayError('The range already exists'); } elseif (RangeWeight::isOverlapping((int) Tools::getValue('id_carrier'), (double) Tools::getValue('delimiter1'), (double) Tools::getValue('delimiter2'), $id ? (int) $id : null)) { $this->errors[] = Tools::displayError('Error: Ranges are overlapping'); } elseif (!count($this->errors)) { parent::postProcess(); } } else { parent::postProcess(); } }
public function postProcess() { if (isset($_POST['submitAdd' . $this->table])) { $delimiter1 = Tools::getValue('delimiter1'); $delimiter2 = Tools::getValue('delimiter2'); if ($delimiter1 >= $delimiter2) { $this->_errors[] = Tools::displayError('Invalid range, "From" must be lower than "To"'); } /* Check that a similar range does not exist yet for this carrier */ if (!Tools::isSubmit('id_range_weight') && !count($this->_errors) && ($ranges = RangeWeight::getRanges((int) Tools::getValue('id_carrier')))) { foreach ($ranges as $range) { if (!($delimiter2 <= $range['delimiter1'] || $delimiter1 >= $range['delimiter2'])) { $this->_errors[] = Tools::displayError('Invalid range, this range is overlapping an existing range'); break; } } } } parent::postProcess(); }
public static function installExternalCarrier($config) { $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->id_tax = $config['id_tax']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'fr') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'en') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'es') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'carrier_group` VALUES (\'' . (int) $carrier->id . '\',\'' . (int) $group['id_group'] . '\')'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '15'; $rangeWeight->add(); $id_zone = Zone::getIdByName('Europe'); Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'carrier_zone` VALUES (\'' . (int) $carrier->id . '\',\'' . (int) $id_zone . '\')'); Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'delivery` (`id_carrier`, `id_range_price`, `id_range_weight`, `id_zone`, `price`) VALUES (\'' . (int) $carrier->id . '\',\'' . (int) $rangePrice->id . '\',NULL,\'' . (int) $id_zone . '\',\'' . (double) $config['price'] . '\'), (\'' . (int) $carrier->id . '\',NULL,\'' . (int) $rangeWeight->id . '\',\'' . (int) $id_zone . '\',\'' . (double) $config['price'] . '\')'); Configuration::updateValue('KIALASMALL_CARRIER_ID', (int) $carrier->id); //copy logo if (!copy(dirname(__FILE__) . '/carrier.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg')) { return false; } return true; } else { return false; } }
public static function installExternalCarrier($config) { $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->id_zone = $config['id_zone']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'fr') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'en') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == Language::getIsoById(Configuration::get('PS_LANG_DEFAULT'))) { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); } // Copy Logo if (!copy(dirname(__FILE__) . '/carrier.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg')) { return false; } // Return ID Carrier return (int) $carrier->id; } return false; }
protected function addRanges($carrier) { $range_price = new RangePrice(); $range_price->id_carrier = $carrier->id; $range_price->delimiter1 = '0'; $range_price->delimiter2 = '10000'; $range_price->add(); $range_weight = new RangeWeight(); $range_weight->id_carrier = $carrier->id; $range_weight->delimiter1 = '0'; $range_weight->delimiter2 = '10000'; $range_weight->add(); }
public static function installExternalCarrier($config) { $carrier = new Carrier(); $carrier->hydrate($config); $carrier->name = $config['name']; $carrier->id_zone = $config['id_zone']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $carrier->setTaxRulesGroup($config['id_tax_rules_group'], true); $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'lv') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'lt') { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == Language::getIsoById(Configuration::get('PS_LANG_DEFAULT'))) { $carrier->delay[(int) $language['id_lang']] = $config['delay'][$language['iso_code']]; } } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } // $range_price = new RangePrice(); // $range_price->id_carrier = $carrier->id; // $range_price->delimiter1 = '0'; // $range_price->delimiter2 = '10000'; // $range_price->add(); // $range_weight = new RangeWeight(); // $range_weight->id_carrier = $carrier->id; // $range_weight->delimiter1 = '0'; // $range_weight->delimiter2 = '10000'; // $range_weight->add(); // Add weight ranges to carrier $rangePrices = array(); foreach ($config['ranges'] as $range) { $rangeWeight = new RangeWeight(); $rangeWeight->hydrate(array('id_carrier' => $carrier->id, 'delimiter1' => (double) $range['delimiter1'], 'delimiter2' => (double) $range['delimiter2'])); $rangeWeight->add(); // Save range ID and price and set it after the Zones have been added $rangePrices[] = array('id_range_weight' => $rangeWeight->id, 'price' => $range['price']); } // Update prices in delivery table for each range (need IDs) foreach ($rangePrices as $rangePrice) { $data = array('price' => $rangePrice['price']); $where = 'id_range_weight = ' . $rangePrice['id_range_weight']; Db::getInstance()->update('delivery', $data, $where); } // Add Europe for EVERY carrier range // Automatically creates rows in delivery table, price is 0 $id_zone_europe = Zone::getIdByName('Europe'); $carrier->addZone($id_zone_europe ? $id_zone_europe : 1); // Copy Logo if (!Tools::copy(dirname(__FILE__) . '/logo.png', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.png')) { return false; } DpdCarrierOptions::setCarrierOptions((int) $carrier->id, (int) $carrier->id, $config['type']); // Return ID Carrier return (int) $carrier->id; } return false; }
/** * create shopgate carrier */ public function createShopgateCarrier() { /** @var CarrierCore $carrier */ $carrier = new Carrier(); $carrier->name = self::MODULE_CARRIER_NAME; $carrier->active = true; $carrier->deleted = true; $carrier->shipping_handling = false; $carrier->range_behavior = true; $carrier->delay[Configuration::get('PS_LANG_DEFAULT')] = self::MODULE_CARRIER_NAME; $carrier->shipping_external = true; $carrier->is_module = true; $carrier->external_module_name = self::DEFAULT_EXTERNAL_MODULE_CARRIER_NAME; $carrier->need_range = true; foreach (Language::getLanguages() as $language) { $carrier->delay[$language['id_lang']] = 'Depends on Shopgate selected carrier'; } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } /** @var RangePriceCore $rangePrice */ $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '1000000'; $rangePrice->add(); /** @var RangeWeightCore $rangeWeight */ $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '1000000'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $zone) { /** @var $zone ZoneCore */ Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => null, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => null, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); } } Configuration::updateValue('SG_CARRIER_ID', $carrier->id); }
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; } } }
public static function createChronopostCarriers($carrierConfig) { if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } // Create carriers from config foreach ($carrierConfig as $carrierName => $config) { $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->url = $config['url']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if (array_key_exists($language['iso_code'], $config['delay'])) { $carrier->delay[$language['id_lang']] = $config['delay'][$language['iso_code']]; } else { $carrier->delay[$language['id_lang']] = $config['delay']['fr']; } } if ($carrier->add()) { Configuration::updateValue($config['configuration_item'], (int) $carrier->id); // ASSIGN GROUPS $groups = Group::getgroups(true); foreach ($groups as $group) { Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_group VALUE (\'' . (int) $carrier->id . '\',\'' . (int) $group['id_group'] . '\')'); } // ASSIGN ZONES $zones = Zone::getZones(); foreach ($zones as $zone) { $carrier->addZone($zone['id_zone']); } // RANGE PRICE $rp = new RangePrice(); $rp->id_carrier = $carrier->id; $rp->delimiter1 = 0; $rp->delimiter2 = 100000; $rp->add(); $fp = fopen(_MYDIR_ . '/csv/' . $carrierName . '.csv', 'r'); // insert prices per weight range while ($line = fgetcsv($fp)) { $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = $line[0]; $rangeWeight->delimiter2 = $line[1]; $rangeWeight->price_to_affect = $line[2]; $rangeWeight->add(); } //copy logo if (!copy(dirname(__FILE__) . '/views/img/' . $config['logo_filename'] . '.jpg', _PS_SHIP_IMG_DIR_ . '/' . $carrier->id . '.jpg')) { return false; } } } return true; }
private function installCarrier($is_COD = 0) { $carrier = new Carrier(); $carrier->name = 'Почта России'; //Проверяем какого перевозчика создаем if ($is_COD) { $carrier->name .= ' (наложенный платеж)'; } // @deprecated since 1.5.0 //$carrier->id_tax_rules_group' = 0; // TODO: проверить -- это точно обязательно? //Способ доставки активен $carrier->active = true; // TODO: проверить -- это точно обязательно? //Не удален. При удалении способа доставки он не удаляется из //базы данных, а только помечается как удаленный $carrier->deleted = 0; // TODO: это может быть интересным -- стоимость упаковки и пр. //Доставка и обработка $carrier->shipping_handling = false; // Что делать, если Out Of Range. 0 -- считать, 1 -- не считать // Мы, ведь, сами определяем можем или не можем, настроек range // никаких не будет. //Исключения: применить наибольшую цену доставки $carrier->range_behavior = 0; // Тут зависимости от языка // TODO: по идее это время доставки, но для разных пунктов // оно может сильно отличасться. Посмотреть, можно-ли это как-то // динамически править $delay_str_list = array('ru' => 'Срок доставки зависит от удаленности', 'default' => 'Delivery time depens on distance'); $languages = Language::getLanguages(false); foreach ($languages as $language) { //Проверяем есть ли текущий язык в списке предусмотренных языков if (!isset($delay_str_list[$language['iso_code']])) { //Если нет, то ставим фразу по умолчанию $carrier->delay[(int) $language['id_lang']] = $delay_str_list['default']; } else { //Иначе берем фразу из конфига $carrier->delay[(int) $language['id_lang']] = $delay_str_list[$language['iso_code']]; } } // Этот перевозчик связан с модулем //Расчет производится из внешнего источника $carrier->shipping_external = true; //Признак того, что способ доставки принадлежит модулю $carrier->is_module = true; //Имя модуля, которому принадлежит способ доставки $carrier->external_module_name = 'russianpostcarrier'; // Если я правильно понял, то заданные лимиты // нам не уперлись, у нас внутре свои лимиты задаются // UPD: Но оно в этом случае, похоже, не работает. Придется задавать лимиты $carrier->need_range = true; // TODO: еще полезные переменные, мы ими потом займемся, // надо понять, как оно считает // $carrier->max_width => 1; // $carrier->max_height => 1; // $carrier->max_depth => 1; // $carrier->max_weight => 1; // вот это вот особенно! if ($carrier->add()) { // Добавим нашего несчастного перевозчика всем группам $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } // Без указания пределов по весу и стоимости оно не заработало // Сделаем, хотя оно нам не надо $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '100500'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '100500'; //Предельные тяжеловесные посылки 20 кг $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $z) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $z['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); } copy(dirname(__FILE__) . '/carrier.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); return $carrier->id; } return false; }
public static function createSoColissimoCarrier($config) { $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->id_zone = $config['id_zone']; $carrier->url = $config['url']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'fr') { $carrier->delay[$language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'en') { $carrier->delay[$language['id_lang']] = $config['delay'][$language['iso_code']]; } } if ($carrier->add()) { Configuration::updateValue('SOCOLISSIMO_CARRIER_ID', (int) $carrier->id); $groups = Group::getgroups(true); foreach ($groups as $group) { Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_group VALUE (\'' . (int) $carrier->id . '\',\'' . (int) $group['id_group'] . '\')'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_zone VALUE (\'' . (int) $carrier->id . '\',\'' . (int) $zone['id_zone'] . '\')'); Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'delivery VALUE (\'\',\'' . (int) $carrier->id . '\',\'' . (int) $rangePrice->id . '\',NULL,\'' . (int) $zone['id_zone'] . '\',\'1\')'); Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'delivery VALUE (\'\',\'' . (int) $carrier->id . '\',NULL,\'' . (int) $rangeWeight->id . '\',\'' . (int) $zone['id_zone'] . '\',\'1\')'); } //copy logo if (!copy(dirname(__FILE__) . '/socolissimo.jpg', _PS_SHIP_IMG_DIR_ . '/' . $carrier->id . '.jpg')) { return false; } return true; } else { return false; } }
public function installCarriers() { $id_lang_default = Language::getIsoById(Configuration::get('PS_LANG_DEFAULT')); $carriers_list = array('MYMOD_CA_CLDE' => 'Classic delivery', 'MYMOD_CA_REPO' => 'Relay Point'); foreach ($carriers_list as $carrier_key => $carrier_name) { if (Configuration::get($carrier_key) < 1) { // Create new carrier $carrier = new Carrier(); $carrier->name = $carrier_name; $carrier->id_tax_rules_group = 0; $carrier->active = 1; $carrier->deleted = 0; foreach (Language::getLanguages(true) as $language) { $carrier->delay[(int) $language['id_lang']] = 'Delay ' . $carrier_name; } $carrier->shipping_handling = false; $carrier->range_behavior = 0; $carrier->is_module = true; $carrier->shipping_external = true; $carrier->external_module_name = $this->name; $carrier->need_range = true; if (!$carrier->add()) { return false; } // Associate carrier to all groups $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->insert('carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group'])); } // Create price range $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); // Create weight range $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); // Associate carrier to all zones $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->insert('carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone'])); Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); } // Copy the carrier logo copy(dirname(__FILE__) . '/views/img/' . $carrier_key . '.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); // Save the carrier ID in the Configuration table Configuration::updateValue($carrier_key, $carrier->id); } } return true; }
public static function createSoColissimoCarrierSeller($config) { $carrier = new Carrier(); $carrier->name = $config['name'] . ' - Commerce de proximité'; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->id_zone = $config['id_zone']; $carrier->url = $config['url']; $carrier->active = 0; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'fr') { $carrier->delay[$language['id_lang']] = $config['delay_seller'][$language['iso_code']]; } if ($language['iso_code'] == 'en') { $carrier->delay[$language['id_lang']] = $config['delay_seller'][$language['iso_code']]; } } if ($carrier->add()) { if (!version_compare(_PS_VERSION_, '1.5', '<')) { if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } } Configuration::updateValue('SOCOLISSIMO_CARRIER_ID_SELLER', (int) $carrier->id); $groups = Group::getgroups(true); foreach ($groups as $group) { Db::getInstance()->execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_group VALUE (\'' . (int) $carrier->id . '\',\'' . (int) $group['id_group'] . '\')'); } $range_price = new RangePrice(); $range_price->id_carrier = $carrier->id; $range_price->delimiter1 = '0'; $range_price->delimiter2 = '10000'; $range_price->add(); $range_weight = new RangeWeight(); $range_weight->id_carrier = $carrier->id; $range_weight->delimiter1 = '0'; $range_weight->delimiter2 = '10000'; $range_weight->add(); //copy logo if (!copy(dirname(__FILE__) . '/img/socolissimo.jpg', _PS_SHIP_IMG_DIR_ . '/' . $carrier->id . '.jpg')) { return false; } return true; } return false; }
public function cAddCarrierPost() { $db = Db::getInstance(); if (!Tools::getIsset('packetery_add_carrier') || !Tools::getValue('packetery_add_carrier')) { return; } $carrier = new Carrier(); $carrier->name = Tools::getValue('packetery_carrier_name'); $carrier->active = true; $carrier->shipping_method = defined('Carrier::SHIPPING_METHOD_WEIGHT') ? Carrier::SHIPPING_METHOD_WEIGHT : 1; $carrier->deleted = 0; $carrier->range_behavior = true; // true disables this carrier if outside weight range $carrier->is_module = false; $carrier->external_module_name = "packetery"; $carrier->need_range = true; foreach (Language::getLanguages(true) as $language) { if (Tools::getIsset('delay_' . $language['id_lang']) && Tools::getValue('delay_' . $language['id_lang'])) { $carrier->delay[$language['id_lang']] = Tools::getValue('delay_' . $language['id_lang']); } } if (!$carrier->add()) { return false; } $country = ""; $countries = Tools::getValue('packetery_carrier_country'); foreach ($countries as $key => $countryCode) { $country .= $countryCode; if ($key != count($countries) - 1) { $country .= ','; } } $db->execute('insert into `' . _DB_PREFIX_ . 'packetery_carrier` set id_carrier=' . (int) $carrier->id . ', country="' . pSQL($country ? $country : 'cz,sk') . '", list_type=' . (int) Tools::getValue('packetery_carrier_list_type') . ', is_cod=' . (Tools::getIsset('packetery_carrier_is_cod') ? (int) Tools::getValue('packetery_carrier_is_cod') : 0)); foreach (Group::getGroups(true) as $group) { $db->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '5'; $rangeWeight->add(); $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '1000000'; $rangePrice->add(); $zones = Zone::getZones(true); foreach ($zones as $zone) { $db->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone']), 'INSERT'); $db->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => null, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); $db->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => null, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); } if (Tools::getIsset('packetery_carrier_logo') && Tools::strlen(Tools::getValue('packetery_carrier_logo')) == 2) { copy(dirname(__FILE__) . '/logo-' . Tools::getValue('packetery_carrier_logo') . '.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); } }
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; }
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; }
/** * * @param type $config * @return boolean */ public function installExternalCarrier($config) { $check = Db::getInstance()->executeS("SELECT id_carrier FROM " . _DB_PREFIX_ . "carrier WHERE name = '" . $config['name'] . "' "); if (is_array($check) && !empty($check)) { return Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier', array('deleted' => 0), 'UPDATE', ' name = "' . $config['name'] . '" '); } $carrier = new Carrier(); $carrier->name = $config['name']; $carrier->url = $config['url']; $carrier->id_tax_rules_group = $config['id_tax_rules_group']; $carrier->id_zone = $config['id_zone']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->delay = $config['delay']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behavior = $config['range_behavior']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { $carrier->delay[(int) $language['id_lang']] = $config['delay']['br']; } if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '0'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '30'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0'), 'INSERT'); } Configuration::updateValue("PS_CORREIOS_CARRIER_{$carrier->id}", $config['cod_servico']); // Copy Logo if (!copy(dirname(__FILE__) . '/logos/' . $config['cod_servico'] . '.png', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg')) { return false; } // Return ID Carrier return (int) $carrier->id; } return false; }
private function createCarrier($config, $product_id, $name, $debug_mode = false, &$debug_info = array()) { $carrier = new Carrier(); if ($debug_mode) { array_push($debug_info, "Trying to create carrier " . $product_id . " with name " . $name); } $carrier->name = $name; $carrier->id_zone = $config['id_zone']; $carrier->url = $config['url']; $carrier->active = $config['active']; $carrier->deleted = $config['deleted']; $carrier->shipping_handling = $config['shipping_handling']; $carrier->range_behaviour = $config['range_behaviour']; $carrier->is_module = $config['is_module']; $carrier->shipping_external = $config['shipping_external']; $carrier->external_module_name = $config['external_module_name']; $carrier->need_range = $config['need_range']; $languages = Language::getLanguages(true); foreach ($languages as $language) { if ($language['iso_code'] == 'en') { $carrier->delay[$language['id_lang']] = $config['delay'][$language['iso_code']]; } if ($language['iso_code'] == 'no') { $carrier->delay[$language['id_lang']] = $config['delay'][$language['iso_code']]; } } if ($debug_mode) { array_push($debug_info, "Adding carrier"); } if ($carrier->add()) { if ($debug_mode) { array_push($debug_info, "Carrier added, setting up associations"); } $carriers_str = Configuration::get('FRAKTGUIDE_CREATED_CARRIER_IDS'); $carriers = $carriers_str ? explode(';', Configuration::get('FRAKTGUIDE_CREATED_CARRIER_IDS')) : array(); $carriers[] = $carrier->id; Configuration::updateValue('FRAKTGUIDE_CREATED_CARRIER_IDS', implode(';', $carriers)); $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_zone VALUE(\'' . (int) $carrier->id . '\', \'' . (int) $zone['id_zone'] . '\')'); } $groups = Group::getgroups(true); foreach ($groups as $group) { Db::getInstance()->execute('INSERT INTO ' . _DB_PREFIX_ . 'carrier_group VALUE (\'' . (int) $carrier->id . '\',\'' . (int) $group['id_group'] . '\')'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); if ($debug_mode) { array_push($debug_info, "Trying to update product name table"); } if (!Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'fraktguide_product_names`(`id_carrier`, `product_id`) VALUES(' . $carrier->id . ', \'' . $product_id . '\')')) { return false; } if (!copy(dirname(__FILE__) . '/img/logo.png', _PS_SHIP_IMG_DIR_ . '/' . $carrier->id . '.jpg')) { return false; } if ($debug_mode) { array_push($debug_info, "Success"); } // Link to correct tax group (ps_carrier_tax_rules_group_shop aparently...) if (!Db::getInstance()->insert('carrier_tax_rules_group_shop', array('id_carrier' => $carrier->id, 'id_tax_rules_group' => Configuration::get('FRAKTGUIDE_ID_TAX_RULES_GROUP'), 'id_shop' => Context::getContext()->shop->id))) { return false; } return true; } else { Tools::dieOrLog("Error creating carrier " . $product_id); return false; } }
protected function createCarriers($eta) { // Sameday(ETA: 18:00) foreach ($this->carriers as $key => $value) { //Create new carrier $carrier = new Carrier(); $carrier->name = $key; $carrier->active = true; $carrier->deleted = 0; $carrier->shipping_handling = false; $carrier->range_behavior = 0; $carrier->delay[Configuration::get('PS_LANG_DEFAULT')] = $eta; $carrier->shipping_external = true; $carrier->is_module = true; $carrier->external_module_name = $this->name; $carrier->need_range = true; $carrier->url = 'https://send24.com/track?@'; if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group']), 'INSERT'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '5'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '5'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $z) { if ($z['name'] == 'Europe') { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $z['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => null, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => null, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); } } copy(dirname(__FILE__) . '/views/img/send24.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); Configuration::updateValue(self::PREFIX . $value, $carrier->id); Configuration::updateValue(self::PREFIX . $value . '_reference', $carrier->id); } } return true; }
/** * @return bool * @throws Exception * @throws PrestaShopDatabaseException * * @author Panagiotis Vagenas <*****@*****.**> * @since ${VERSION} */ public function installCarriers() { foreach (\acsws\classes\ACSWSOptions::getInstance()->getValue('carrierList') as $carrier_key => $carrier_name) { $carrierId = Configuration::get($carrier_key); if ($carrierId < 1) { // Create carrier $carrier = new Carrier(); $carrier->name = $carrier_name; $carrier->id_tax_rules_group = 0; $carrier->active = 1; $carrier->deleted = 0; foreach (Language::getLanguages(true) as $language) { // TODO Carrier delay $carrier->delay[(int) $language['id_lang']] = '' . $carrier_name; } $carrier->shipping_handling = 1; $carrier->range_behavior = 0; $carrier->is_module = 1; $carrier->shipping_external = 1; $carrier->external_module_name = $this->name; $carrier->need_range = 1; if (!$carrier->add()) { return false; } // Associate carrier to all groups $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->insert('carrier_group', array('id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group'])); } // Create price range $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '10000'; $rangePrice->add(); // Create weight range $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '10000'; $rangeWeight->add(); // Associate carrier to all zones $zones = Zone::getZones(true); foreach ($zones as $zone) { Db::getInstance()->insert('carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $zone['id_zone'])); Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => null, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); Db::getInstance()->insert('delivery', array('id_carrier' => (int) $carrier->id, 'id_range_price' => null, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $zone['id_zone'], 'price' => '0')); } copy(dirname(__FILE__) . '/img/logo.png', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); Configuration::updateValue($carrier_key, $carrier->id); } } return true; }
/** * Add zone */ public function addZone($id_zone) { if (Db::getInstance()->execute(' INSERT INTO `' . _DB_PREFIX_ . 'carrier_zone` (`id_carrier` , `id_zone`) VALUES (' . (int) $this->id . ', ' . (int) $id_zone . ') ')) { // Get all ranges for this carrier $ranges_price = RangePrice::getRanges($this->id); $ranges_weight = RangeWeight::getRanges($this->id); // Create row in ps_delivery table if (count($ranges_price) || count($ranges_weight)) { $sql = 'INSERT INTO `' . _DB_PREFIX_ . 'delivery` (`id_carrier`, `id_range_price`, `id_range_weight`, `id_zone`, `price`) VALUES '; if (count($ranges_price)) { foreach ($ranges_price as $range) { $sql .= '(' . (int) $this->id . ', ' . (int) $range['id_range_price'] . ', 0, ' . (int) $id_zone . ', 0),'; } } if (count($ranges_weight)) { foreach ($ranges_weight as $range) { $sql .= '(' . (int) $this->id . ', 0, ' . (int) $range['id_range_weight'] . ', ' . (int) $id_zone . ', 0),'; } } $sql = rtrim($sql, ','); return Db::getInstance()->execute($sql); } return true; } return false; }
protected function importCarriers() { $this->truncateTables(array('carrier', 'carrier_group', 'carrier_lang', 'carrier_shop', 'carrier_tax_rules_group_shop', 'carrier_zone', 'range_weight', 'range_price')); $handle = $this->openCsvFile('carriers.csv'); for ($current_line = 0; $line = fgetcsv($handle, MAX_LINE_SIZE, ';'); $current_line++) { $res = false; $fields = $this->filterFields('Carrier', $this->carriers_fields, $line); if (!isset($fields['id'])) { $carrier = new Carrier((int) $line[0]); $carrier->id = $line[0]; } else { $carrier = new Carrier((int) $fields['id']); } foreach ($fields as $key => $field) { if ($key == 'delay') { $carrier->{$key} = $this->multilFild($field); } else { $carrier->{$key} = $field; } } if (!Tools::isEmpty($line[2])) { $values = array('id_carrier' => (int) $line[0], 'id_tax_rules_group' => (int) $line[2], 'id_shop' => (int) Context::getContext()->shop->id); Cache::clean('carrier_id_tax_rules_group_' . (int) $line[0] . '_' . (int) Context::getContext()->shop->id); Db::getInstance()->insert('carrier_tax_rules_group_shop', $values); } if (trim($line[22])) { $groups = explode(',', $line[22]); foreach ($groups as $group) { $values = array('id_carrier' => (int) $line[0], 'id_group' => (int) $group); Db::getInstance()->insert('carrier_group', $values); } } if (trim($line[23])) { $zones = explode(',', $line[23]); foreach ($zones as $zone) { $values = array('id_carrier' => (int) $line[0], 'id_zone' => (int) $zone); Db::getInstance()->insert('carrier_zone', $values); } } if (trim($line[24])) { $range_line = explode(',', $line[24]); foreach ($range_line as $range) { $rp_res = false; $values = explode('-', $range); $rp = new RangePrice(); $rp->id_carrier = (int) $line[0]; $rp->delimiter1 = $values[0]; $rp->delimiter2 = $values[1]; if (!$rp_res) { $rp->add(); } } } if (trim($line[25])) { $range_line = explode(',', $line[25]); foreach ($range_line as $range) { $rw_res = false; $values = explode('-', $range); $rw = new RangeWeight(); $rw->id_carrier = (int) $line[0]; $rw->delimiter1 = $values[0]; $rw->delimiter2 = $values[1]; if (!$rw_res) { $rw->add(); } } } $carrier->force_id = true; if (!$res) { $carrier->add(); } } $this->closeCsvFile($handle); return true; }