예제 #1
0
 /**
  * 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;
 }