/** * create carriers * * @return mixed */ protected function _getCarriers() { $resultsCarrier = array(); $mobileCarrierUse = unserialize(base64_decode(Configuration::get('SG_MOBILE_CARRIER'))); if ($this->_deliveryAddress) { foreach (Carrier::getCarriersForOrder(Address::getZoneById($this->_deliveryAddress->id), $this->getPlugin()->getContext()->customer->getGroups(), $this->getPlugin()->getContext()->cart) as $carrier) { /** @var CarrierCore $carrierItem */ $carrierItem = new Carrier($carrier['id_carrier'], $this->getPlugin()->getContext()->language->id); $taxRulesGroup = new TaxRulesGroup($carrierItem->id_tax_rules_group); $resultCarrier = new ShopgateShippingMethod(); /** * check is defined as mobile carrier */ $idColumn = version_compare(_PS_VERSION_, '1.5.0.1', '>=') ? 'id_reference' : 'id_carrier'; if (is_array($mobileCarrierUse) && empty($mobileCarrierUse[$carrier[$idColumn]])) { continue; } $resultCarrier->setId($carrier['id_carrier']); $resultCarrier->setTitle($carrier['name']); $resultCarrier->setDescription($carrier['delay']); $resultCarrier->setSortOrder($carrier['position']); $resultCarrier->setAmount($carrier['price_tax_exc']); $resultCarrier->setAmountWithTax($carrier['price']); $resultCarrier->setTaxClass($taxRulesGroup->name); if (version_compare(_PS_VERSION_, '1.5.0', '<')) { $carrierTax = Tax::getCarrierTaxRate($carrierItem->id, $this->_deliveryAddress->id); } else { $carrierTax = $carrierItem->getTaxesRate($this->_deliveryAddress); } $resultCarrier->setTaxPercent($carrierTax); $resultCarrier->setInternalShippingInfo(serialize(array('carrierId' => $carrier['id_carrier']))); $resultsCarrier[] = $resultCarrier; } } return $resultsCarrier; }