Ejemplo n.º 1
0
 /**
  * TODO: method needs refactoring (nesting level = 6)
  *
  * @param $observer
  */
 public function setTrackingCode($observer)
 {
     $shipment = $observer->getEvent()->getShipment();
     $method = $shipment->getOrder()->getShippingCarrier()->getCarrierCode();
     if ($method == 'etrans') {
         try {
             $helper = Mage::helper('etrans');
             $address = $helper->formatAddress(str_replace("\n", ", ", $shipment->getOrder()->getShippingAddress()->getStreetFull()));
             $data = array('calle' => $address['street'], 'numero_puerta' => $address['number'], 'piso' => '', 'dpto_oficina' => '', 'bque_torre' => '', 'cp' => $shipment->getOrder()->getShippingAddress()->getPostcode(), 'localidad' => $shipment->getOrder()->getShippingAddress()->getCity(), 'partido' => '', 'provincia' => $shipment->getOrder()->getShippingAddress()->getRegion(), 'email' => $shipment->getOrder()->getCustomerEmail(), 'celular' => '', 'nombre_razon_social' => $shipment->getOrder()->getShippingAddress()->getFirstname() . ' ' . $shipment->getOrder()->getShippingAddress()->getLastname(), 'dni_cuit' => $shipment->getOrder()->getCustomerTaxvat(), 'telefono' => $shipment->getOrder()->getBillingAddress()->getTelephone(), 'seguro' => Mage::app()->getStore()->getConfig('carriers/etrans/insurance'), 'horario_retiro' => Mage::app()->getStore()->getConfig('carriers/etrans/pickup_time'), 'horario_entrega' => Mage::app()->getStore()->getConfig('carriers/etrans/delivery_time'));
             $items = $shipment->getAllItems();
             if ($items) {
                 $i = 1;
                 foreach ($items as $item) {
                     $item_qty = (int) $item->getQty();
                     $dimensions = $helper->getProductDimensions($item->getProductId());
                     if ($item_qty > 1) {
                         $item_number = 1;
                         while ($item_number <= $item_qty) {
                             $data['bulto_' . $i] = array('alto' => $dimensions['height'], 'ancho' => $dimensions['width'], 'profundidad' => $dimensions['depth'], 'peso' => $dimensions['weight'], 'valor_declarado' => $dimensions['price']);
                             $i++;
                             $item_number++;
                         }
                     } else {
                         $data['bulto_' . $i] = array('alto' => $dimensions['height'], 'ancho' => $dimensions['width'], 'profundidad' => $dimensions['depth'], 'peso' => $dimensions['weight'], 'valor_declarado' => $dimensions['price']);
                     }
                     $i++;
                 }
             }
             $etrans = new Dc_Etrans_Client(Mage::app()->getStore()->getConfig('carriers/etrans/api_key'), Mage::app()->getStore()->getConfig('carriers/etrans/api_secret'));
             $response = $etrans->setEnvio($data);
             if (is_array($response) && is_array($response['response']['response']['Envios'])) {
                 $message = Mage::helper('etrans')->__('Assigned vouchers: %s.', implode(', ', $response['response']['response']['Envios']));
                 if (!empty($response['response']['response']['Fecha Entrega'])) {
                     $date_format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);
                     $date = Mage::app()->getLocale()->date($response['response']['response']['Fecha Entrega'], $date_format);
                     $delivery_date = Mage::getSingleton('core/date')->gmtDate('d/m/Y', $date->getTimestamp());
                     $message .= Mage::helper('etrans')->__(' Estimated delivery date: %s.', $delivery_date);
                 }
                 $shipment->addComment($message, false, true);
             } else {
                 throw new Mage_Core_Exception(Mage::helper('etrans')->__('Shipment was not created at Etrans.'));
             }
         } catch (Exception $e) {
             Mage::logException($e);
             throw new Mage_Core_Exception(Mage::helper('etrans')->__('There was an error trying to create the shipment at Etrans.'));
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * @param Mage_Shipping_Model_Rate_Request $request
  * @return false|Mage_Core_Model_Abstract
  */
 protected function getShippingRate(Mage_Shipping_Model_Rate_Request $request)
 {
     $helper = Mage::helper('etrans');
     $address = $helper->formatAddress($request->getDestStreet());
     if ($request->getDestCity()) {
         $city = $request->getDestCity();
     } else {
         $city = '-';
     }
     $data = array('calle' => $address['street'], 'numero_puerta' => $address['number'], 'piso' => '', 'dpto_oficina' => '', 'bque_torre' => '', 'cp' => $request->getDestPostcode(), 'localidad' => $city, 'partido' => '', 'provincia' => $this->getRegionName($request->getDestRegionId()), 'email' => '*****@*****.**', 'celular' => '', 'nombre_razon_social' => 'Guest', 'dni_cuit' => '', 'telefono' => '', 'seguro' => $this->getConfigData('insurance'), 'horario_retiro' => $this->getConfigData('pickup_time'), 'horario_entrega' => $this->getConfigData('delivery_time'));
     $items = $request->getAllItems();
     if ($items) {
         $i = 1;
         foreach ($items as $item) {
             $item_qty = (int) $item->getQty();
             $dimensions = $helper->getProductDimensions($item->getProductId());
             if ($item_qty > 1) {
                 $item_number = 1;
                 while ($item_number <= $item_qty) {
                     $data['bulto_' . $i] = array('alto' => $dimensions['height'], 'ancho' => $dimensions['width'], 'profundidad' => $dimensions['depth'], 'peso' => $dimensions['weight'], 'valor_declarado' => $dimensions['price']);
                     $i++;
                     $item_number++;
                 }
             } else {
                 $data['bulto_' . $i] = array('alto' => $dimensions['height'], 'ancho' => $dimensions['width'], 'profundidad' => $dimensions['depth'], 'peso' => $dimensions['weight'], 'valor_declarado' => $dimensions['price']);
             }
             $i++;
         }
     }
     $etrans = new Dc_Etrans_Client($this->getConfigData('api_key'), $this->getConfigData('api_secret'));
     $response = $etrans->crear_parametros($data);
     if (is_array($response) && !empty($response['response']['response']['Costo'])) {
         $rate = Mage::getModel('shipping/rate_result_method');
         $rate->setCarrier($this->_code);
         $rate->setCarrierTitle($this->getConfigData('title'));
         $rate->setMethod('standand');
         $rate->setMethodTitle($this->getConfigData('name'));
         $rate->setPrice($response['response']['response']['Costo']);
         $rate->setCost(0);
         return $rate;
     } else {
         return false;
     }
 }