Ejemplo n.º 1
0
 function createShipment($qwintry_data = array())
 {
     $order = Mage::getModel('sales/order')->loadByIncrementId($qwintry_data['order_id']);
     $shipping_settings = $this->getShippingSettings();
     $dimensions = array('box_length' => 10, 'box_width' => 10, 'box_height' => 10);
     $shippingId = $order->getShippingAddress()->getId();
     $address = Mage::getModel('sales/order_address')->load($shippingId);
     $orderedItems = $order->getAllVisibleItems();
     if ($order->hasInvoices()) {
         $invoice = $order->getInvoiceCollection()->getFirstItem();
         $pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf(array($invoice));
     }
     $pounds = $order->getWeight();
     if (!empty($qwintry_data['box_length']) && !empty($qwintry_data['box_width']) && !empty($qwintry_data['box_height'])) {
         $dimensions = $qwintry_data;
     }
     if (!empty($qwintry_data['box_weight'])) {
         $pounds = $qwintry_data['box_weight'];
     }
     $data = array('Shipment' => array('first_name' => $address->getFirstname(), 'last_name' => $address->getLastname(), 'phone' => $address->getTelephone(), 'email' => $address->getEmail(), 'customer_notes' => '', 'weight' => $pounds > 0.1 ? $pounds : (empty($shipping_settings['default_weight']) ? 4 : $shipping_settings['default_weight']), 'dimensions' => $dimensions['box_length'] . 'x' . $dimensions['box_width'] . 'x' . $dimensions['box_height'], 'insurance' => false, 'external_id' => $qwintry_data['order_id'], 'hub_code' => empty($shipping_settings['hub']) ? 'DE1' : $shipping_settings['hub']));
     if (isset($pdf)) {
         $data['Shipment']['invoices'] = array(0 => array('base64_data' => base64_encode($pdf->render()), 'base64_extension' => 'pdf'));
     }
     $street = $address->getStreet();
     $region = $address->getRegion();
     $data['Shipment']['addr_line1'] = $street[0];
     $data['Shipment']['addr_line2'] = '';
     $data['Shipment']['addr_zip'] = $address->getPostcode();
     $data['Shipment']['addr_state'] = empty($region) ? '' : $region;
     $data['Shipment']['addr_city'] = $address->getCity();
     $data['Shipment']['addr_country'] = $address->getCountryId();
     $pickupObject = $order->getPickupObject();
     if ($pickupObject && $order->getShippingMethod() == 'altteam_qwintry_pickup') {
         $data['Shipment']['delivery_type'] = 'pickup';
         $data['Shipment']['delivery_pickup'] = $pickupObject->getStore();
     } else {
         $data['Shipment']['delivery_type'] = 'courier';
     }
     if ($shipping_settings['mode'] == 'test') {
         $data['Shipment']['test'] = true;
     }
     foreach ($orderedItems as $item) {
         $item_weight = $item->getWeight();
         $data['items'][] = array('descr' => $item->getName(), 'descr_ru' => $item->getName(), 'count' => floatval($item->getQtyOrdered()), 'line_value' => floatval($this->getPrice($item->getPrice(), 'USD')), 'line_weight' => floatval(empty($item_weight) ? 0.1 : $item_weight));
     }
     $result = $this->sendApiRequest('package-create', $data);
     if (!$result || empty($result->success) || !$result->success || empty($result->result->tracking)) {
         if (empty($result->errorMessage)) {
             return false;
         }
         return array('[error]' => (string) $result->errorMessage);
     }
     try {
         $shipment = new Mage_Sales_Model_Order_Shipment_Api();
         $shipmentId = $shipment->create($qwintry_data['order_id']);
         $shipment->addTrack($shipmentId, 'altteam_qwintry', 'Tracking ID', $result->result->tracking);
     } catch (Exception $e) {
     }
     if ($this->saveLabel($qwintry_data['order_id'] . '.pdf', $result->result->tracking) !== false) {
         return true;
     }
     return false;
 }