示例#1
0
 protected function _shipOrder(Mage_Sales_Model_Order $order)
 {
     $itemQty = $order->getItemsCollection()->count();
     $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty);
     $shipment = new Mage_Sales_Model_Order_Shipment_Api();
     $shipmentId = $shipment->create($order->getIncrementId());
 }
 public function CloseOrder($order_id)
 {
     $order = Mage::getModel('sales/order')->loadByIncrementID($order_id);
     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
     $order->save();
     try {
         if (!$order->canInvoice()) {
             Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));
         }
         $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
         if (!$invoice->getTotalQty()) {
             Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
         }
         $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
         $invoice->register();
         $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
         $transactionSave->save();
     } catch (Mage_Core_Exception $e) {
         Mage::register('conection_status', 'Invoice - Order ID:' . order_id . ' - ' . $e->getMessage());
     }
     try {
         if ($order->canShip()) {
             $itemQty = $order->getItemsCollection()->count();
             $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty);
             $shipment = new Mage_Sales_Model_Order_Shipment_Api();
             $shipmentId = $shipment->create($order_id);
         }
     } catch (Mage_Core_Exception $e) {
         Mage::register('conection_status', 'Shipping - Order ID:' . order_id . ' - ' . $e->getMessage());
     }
 }
示例#3
0
 public function saveDB($upsl, $upsl2 = NULL, $params, $order_id, $shipment_id, $type)
 {
     $upslabel = Mage::getModel('upslabel/upslabel');
     $colls2 = $upslabel->getCollection()->addFieldToFilter('order_id', $order_id)->addFieldToFilter('type', $type)->addFieldToFilter('status', 1);
     if (count($colls2) > 0) {
         foreach ($colls2 as $c) {
             $c->delete();
         }
     }
     if (!array_key_exists('error', $upsl) || !$upsl['error']) {
         if ($shipment_id == 0 && $type == "shipment") {
             if ($this->imOrder->canShip()) {
                 $itemQty = $this->imOrder->getItemsCollection()->count();
                 $shipment = Mage::getModel('sales/service_order', $this->imOrder)->prepareShipment($itemQty);
                 $shipment = new Mage_Sales_Model_Order_Shipment_Api();
                 $shipmentId = $shipment->create($this->imOrder->getIncrementId(), array(), '', true, false);
                 $shipment_id = Mage::getModel('sales/order_shipment')->load($shipmentId, 'increment_id')->getId();
             } else {
                 $shipment = $this->imOrder->getShipmentsCollection()->getFirstItem();
                 $shipment_id = $shipment->getId();
             }
         }
         foreach ($upsl['arrResponsXML'] as $upsl_one) {
             $upslabel = Mage::getModel('upslabel/upslabel');
             $upslabel->setTitle('Order ' . $order_id . ' TN' . $upsl_one['trackingnumber']);
             $upslabel->setOrderId($order_id);
             $upslabel->setShipmentId($shipment_id);
             $upslabel->setType($type);
             /*$upslabel->setBase64Image();*/
             $upslabel->setTrackingnumber($upsl_one['trackingnumber']);
             $upslabel->setShipmentidentificationnumber($upsl['shipidnumber']);
             $upslabel->setShipmentdigest($upsl['digest']);
             $upslabel->setLabelname('label' . $upsl_one['trackingnumber'] . '.' . strtolower($upsl_one['type_print']));
             $upslabel->setStatustext(Mage::helper('adminhtml')->__('Successfully'));
             $upslabel->setTypePrint($upsl_one['type_print']);
             $upslabel->setStatus(0);
             $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
             $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
             if ($upslabel->save() !== FALSE && Mage::getStoreConfig('upslabel/printing/automatic_printing') == 1) {
                 Mage::helper('upslabel/help')->sendPrint($upsl_one['graphicImage'], $storeId, $upsl_one['type_print']);
             }
             $upslabel = Mage::getModel('upslabel/labelprice');
             $upslabel->setOrderId($order_id);
             $upslabel->setShipmentId($shipment_id);
             $upslabel->setPrice($upsl['price']['price'] . " " . $upsl['price']['currency']);
             $upslabel->setType($type);
             $upslabel->save();
             $this->upsl = $upslabel;
         }
         if ($params['default_return'] == 1) {
             if (isset($upsl2) && !empty($upsl2) && (!array_key_exists('error', $upsl2) || !$upsl2['error'])) {
                 foreach ($upsl2['arrResponsXML'] as $upsl_one) {
                     $upslabel = Mage::getModel('upslabel/upslabel');
                     $upslabel->setTitle('Order ' . $order_id . ' TN' . $upsl_one['trackingnumber']);
                     $upslabel->setOrderId($order_id);
                     $upslabel->setShipmentId($shipment_id);
                     $upslabel->setType($type);
                     /*$upslabel->setBase64Image();*/
                     $upslabel->setTrackingnumber($upsl_one['trackingnumber']);
                     $upslabel->setShipmentidentificationnumber($upsl['shipidnumber']);
                     $upslabel->setShipmentdigest($upsl['digest']);
                     $upslabel->setLabelname('label' . $upsl_one['trackingnumber'] . '.' . strtolower($upsl_one['type_print']));
                     $upslabel->setStatustext(Mage::helper('adminhtml')->__('Successfully'));
                     $upslabel->setTypePrint($upsl_one['type_print']);
                     $upslabel->setStatus(0);
                     $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                     $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                     if ($upslabel->save() !== FALSE && Mage::getStoreConfig('upslabel/printing/automatic_printing') == 1) {
                         Mage::helper('upslabel/help')->sendPrint($upsl_one['graphicImage']);
                     }
                     $upslabel = Mage::getModel('upslabel/labelprice');
                     $upslabel->setOrderId($order_id);
                     $upslabel->setShipmentId($shipment_id);
                     $upslabel->setPrice($upsl2['price']['price'] . " " . $upsl2['price']['currency']);
                     $upslabel->setType($type);
                     $upslabel->save();
                     $this->upsl2 = $upslabel;
                 }
                 if ($params['addtrack'] == 1 && $type == 'shipment') {
                     $trTitle = 'United Parcel Service (return)';
                     $shipment = Mage::getModel('sales/order_shipment')->load($shipment_id);
                     foreach ($upsl2['arrResponsXML'] as $upsl_one1) {
                         $track = Mage::getModel('sales/order_shipment_track')->setNumber(trim($upsl_one1['trackingnumber']))->setCarrierCode('ups')->setTitle($trTitle);
                         $shipment->addTrack($track);
                     }
                     $shipment->save();
                 }
             } else {
                 $upslabel = Mage::getModel('upslabel/upslabel');
                 $upslabel->setTitle('Order ' . $order_id);
                 $upslabel->setOrderId($order_id);
                 $upslabel->setShipmentId($shipment_id);
                 $upslabel->setType($type);
                 $upslabel->setStatustext($upsl2['errordesc']);
                 $upslabel->setStatus(1);
                 $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                 $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                 $upslabel->save();
                 $this->upsl2 = $upslabel;
             }
         }
         if ($params['addtrack'] == 1 && $type == 'shipment') {
             $trTitle = 'United Parcel Service';
             $shipment = Mage::getModel('sales/order_shipment')->load($shipment_id);
             foreach ($upsl['arrResponsXML'] as $upsl_one1) {
                 $track = Mage::getModel('sales/order_shipment_track')->setNumber(trim($upsl_one1['trackingnumber']))->setCarrierCode('ups')->setTitle($trTitle);
                 $shipment->addTrack($track);
             }
             $shipment->save();
         }
     } else {
         $upslabel = Mage::getModel('upslabel/upslabel');
         $upslabel->setTitle('Order ' . $order_id);
         $upslabel->setOrderId($order_id);
         $upslabel->setShipmentId($shipment_id);
         $upslabel->setType($type);
         $upslabel->setStatustext($upsl['errordesc']);
         $upslabel->setStatus(1);
         $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
         $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
         $upslabel->save();
         $this->upsl = $upslabel;
     }
     return $upslabel;
 }
 /** 
  * Mass ship orders
  */
 public function shipAction()
 {
     $order_ids = $this->getRequest()->getParam('order_ids');
     foreach ($order_ids as $order_id) {
         $order = Mage::getModel('sales/order')->load($order_id);
         if ($order->canShip()) {
             $item_qty = $order->getItemsCollection()->getSize();
             $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($item_qty);
             $shipment = new Mage_Sales_Model_Order_Shipment_Api();
             $success = false;
             try {
                 $shipment_id = $shipment->create($order->getIncrementId());
                 $success = true;
             } catch (Exception $e) {
                 $this->_getSession()->addError($this->__("Order #" . $order->getIncrementId() . " Failed to Ship"));
                 Mage::log($e, null, 'madcapsule_ordership.log');
             }
             if ($success) {
                 $this->_getSession()->addSuccess($this->__("Order #" . $order->getIncrementId() . " Successfully Shipped"));
             }
         } else {
             $this->_getSession()->addError($this->__("Order #" . $order->getIncrementId() . " is Not Available to Ship. Have you already shipped it?"));
         }
     }
     $this->_redirect('adminhtml/sales_order/');
 }
示例#5
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;
 }
 public function createInvoice()
 {
     $this->set('success', false);
     $this->set('output', false);
     $this->set('errormessage', 'Not defined');
     $_debug = '';
     $_orderID = $this->get('orderid');
     $_trackingNumber = $this->get('trackingnumber');
     $_shippingTitle = $this->get('shippingtitle');
     $_notifyCustomer = $this->booString($this->get('notifycustomer'));
     try {
         // and invoice / ship
         $_order = \Mage::getModel('sales/order')->loadByIncrementId($_orderID);
         // not invoiced
         if ($_order->canInvoice()) {
             $_debug = $_debug . "Creating invoice... " . "\n";
             $_invoice = \Mage::getModel('sales/service_order', $_order)->prepareInvoice();
             if (!$_invoice->getTotalQty()) {
                 throw new \Exception('Cannot create an invoice without products.');
             }
             //$_invoice->setRequestedCaptureCase(\Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
             $_invoice->register();
             $_transactionSave = \Mage::getModel('core/resource_transaction')->addObject($_invoice)->addObject($_invoice->getOrder())->save();
             $_order->addStatusHistoryComment('Invoice created.')->setIsVisibleOnFront(false)->setIsCustomerNotified(false);
         }
         $_shipment = $_order->getShipmentsCollection()->getFirstItem();
         $_shipmentIncrementId = $_shipment->getIncrementId();
         if (!$_shipmentIncrementId) {
             // create new shipment with tracking
             //
             $_order = \Mage::getModel('sales/order')->loadByIncrementId($_orderID);
             if ($_order->canShip()) {
                 $_debug = $_debug . "Creating new shipment... " . "\n";
                 $_itemQty = $_order->getItemsCollection()->count();
                 $_shipment = \Mage::getModel('sales/service_order', $_order)->prepareShipment($this->_getItemQtys($_order));
                 $_shipment = new \Mage_Sales_Model_Order_Shipment_Api();
                 $_shipmentId = $_shipment->create($_orderID);
                 $_shipment = $_order->getShipmentsCollection()->getFirstItem();
                 $_track = \Mage::getModel('sales/order_shipment_track')->setNumber($_trackingNumber)->setCarrierCode('matrixrate')->setTitle($_shippingTitle);
                 $_shipment->addTrack($_track);
                 if ($_notifyCustomer) {
                     $_shipment->sendEmail();
                 }
                 $_shipment->save();
                 $_order->addStatusHistoryComment($_shippingTitle . ' - tracking number ' . $_trackingNumber)->setIsVisibleOnFront(false)->setIsCustomerNotified(false);
             }
         } else {
             // shipment exists
             // add tracking
             $_debug = $_debug . "adding tracking data to shipment... " . "\n";
             $_shipment = \Mage::getModel('sales/order_shipment')->loadByIncrementId($_shipmentIncrementId);
             /* @var $_shipment Mage_Sales_Model_Order_Shipment */
             $_track = \Mage::getModel('sales/order_shipment_track')->setNumber($_trackingNumber)->setCarrierCode('matrixrate')->setTitle($_shippingTitle);
             $_shipment->addTrack($_track);
             $_shipment->save();
             if ($_notifyCustomer) {
                 $_shipment->sendEmail();
             }
             $_order->addStatusHistoryComment($_shippingTitle . ' tracking number ' . $_trackingNumber)->setIsVisibleOnFront(false)->setIsCustomerNotified(false);
             //throw new \Exception('No shipment found.');
             //$this->set('errormessage','No shipment found');
         }
         $this->_saveOrder($_order);
     } catch (\Exception $e) {
         $this->set('errormessage', $e);
         return;
     }
     $this->set('success', true);
     $this->set('output', array('createInvoice' => array('orderid' => $_orderID, 'notifycustomer' => $_notifyCustomer, 'debug' => $_debug)));
 }
示例#7
0
<?php

include "percorsoMage.php";
require_once "../" . $MAGE;
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
if (isset($_REQUEST['order_id'])) {
    try {
        $orderId = $_REQUEST['order_id'];
        $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
        if ($order->canShip()) {
            $itemQty = $order->getItemsCollection()->count();
            $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty);
            $shipment = new Mage_Sales_Model_Order_Shipment_Api();
            $shipmentId = $shipment->create($orderId);
        }
        if ($shipmentId != null) {
            echo "<script type='text/javascript'>alert('Spedizione creata con successo!'); location.replace('../ordini.php');</script>";
        } else {
            echo "<script type='text/javascript'>alert('Errore nella creazione della spedizione!'); location.replace('../ordini.php');</script>";
        }
    } catch (Exception $e) {
        echo "<script type='text/javascript'>alert('Errore nella creazione della spedizione! Contattare l\\'assistenza clienti'); location.replace('../ordini.php');</script>";
    }
} else {
    echo "<script type='text/javascript'>alert('Errore!'); location.replace('../ordini.php');</script>";
}
 /**
  *  Cybermut response router
  *
  *  @param    none
  *  @return	  void
  */
 public function notifyAction()
 {
     $model = $this->getMethodInstance();
     if ($this->getRequest()->isPost()) {
         $postData = $this->getRequest()->getPost();
         $method = 'post';
     } else {
         if ($this->getRequest()->isGet()) {
             $postData = $this->getRequest()->getQuery();
             $method = 'get';
         } else {
             $model->generateErrorResponse();
         }
     }
     $this->setCybermutResponse($postData);
     if ($model->getDebugFlag()) {
         Mage::getModel('cybermut/api_debug')->setResponseBody(print_r($postData, 1))->save();
     }
     $returnedMAC = $postData['MAC'];
     $correctMAC = $model->getResponseMAC($postData);
     foreach ($this->getRealOrderIds() as $realOrderId) {
         $order = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
         if (!$order->getId()) {
             $model->generateErrorResponse();
         }
     }
     if ($returnedMAC == $correctMAC) {
         if ($model->isSuccessfulPayment($postData['code-retour'])) {
             foreach ($this->getRealOrderIds() as $realOrderId) {
                 $order = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
                 // Déblocage de la commande si nécessaire
                 if ($order->getState() == Mage_Sales_Model_Order::STATE_HOLDED) {
                     $order->unhold();
                 }
                 if (!($status = $model->getConfigData('order_status_payment_accepted'))) {
                     $status = $order->getStatus();
                 }
                 $message = $model->getSuccessfulPaymentMessage($postData);
                 if ($status == Mage_Sales_Model_Order::STATE_PROCESSING) {
                     if ($model->getConfigData('invoice_create')) {
                         $this->saveInvoice($order);
                     }
                     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, $status, $message);
                 } else {
                     if ($status == Mage_Sales_Model_Order::STATE_COMPLETE) {
                         $this->saveInvoice($order);
                         if ($order->canShip()) {
                             $itemQty = $order->getItemsCollection()->count();
                             $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty);
                             $shipment = new Mage_Sales_Model_Order_Shipment_Api();
                             $shipment->create($order->getIncrementId());
                         }
                     } else {
                         if ($model->getConfigData('invoice_create')) {
                             $this->saveInvoice($order);
                         }
                         $order->addStatusToHistory($status, $message, true);
                     }
                 }
                 $order->save();
                 if (!$order->getEmailSent()) {
                     $order->sendNewOrderEmail();
                 }
             }
         } else {
             foreach ($this->getRealOrderIds() as $realOrderId) {
                 $order = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
                 $messageError = $model->getRefusedPaymentMessage($postData);
                 if ($order->getState() == Mage_Sales_Model_Order::STATE_HOLDED) {
                     $order->unhold();
                 }
                 if (!($status = $model->getConfigData('order_status_payment_refused'))) {
                     $status = $order->getStatus();
                 }
                 if ($status == Mage_Sales_Model_Order::STATE_HOLDED && $order->canHold()) {
                     $order->hold();
                 } elseif ($status == Mage_Sales_Model_Order::STATE_CANCELED && $order->canCancel()) {
                     $order->cancel();
                 }
                 $order->addStatusHistoryComment($messageError);
                 $order->save();
             }
         }
         if ($method == 'post') {
             $model->generateSuccessResponse();
         } else {
             if ($method == 'get') {
                 return;
             }
         }
     } else {
         foreach ($this->getRealOrderIds() as $realOrderId) {
             $order = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
             if ($order->canCancel()) {
                 $order->cancel();
             }
             $order->addStatusHistoryComment(Mage::helper('cybermut')->__('Returned MAC is invalid. Order cancelled.'));
             $order->save();
         }
         $model->generateErrorResponse();
     }
 }
示例#9
0
 /**
  * generateTrackingNumberAndLabelForOrder
  *
  * Gutted the Infomodus_Upslabel_Adminhtml_AutocreatelabelController::indexAction
  * functionality and put it in here so it can be called from other places
  * (i.e. Xtento_GridActions module controllers for example)
  *
  * @param  integer|string   $orderId
  * @return void
  */
 public function generateTrackingNumberAndLabelForOrder($orderId, $type = 'shipment', $ptype = 'order')
 {
     try {
         Mage::log('HIT FROM ' . __CLASS__ . '::' . __FUNCTION__ . ' AT LINE: ' . __LINE__);
         $AccessLicenseNumber = Mage::getStoreConfig('upslabel/credentials/accesslicensenumber');
         $UserId = Mage::getStoreConfig('upslabel/credentials/userid');
         $Password = Mage::getStoreConfig('upslabel/credentials/password');
         $shipperNumber = Mage::getStoreConfig('upslabel/credentials/shippernumber');
         $order = Mage::getModel('sales/order')->load($orderId);
         if ($order->canShip()) {
             $itemQty = $order->getItemsCollection()->count();
             $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty);
             $shipment = new Mage_Sales_Model_Order_Shipment_Api();
             $shipmentId = $shipment->create($order->getIncrementId(), array(), '', true, true);
             $shipmentId = Mage::getModel('sales/order_shipment')->load($shipmentId, 'increment_id')->getId();
         } else {
             $shipment = $order->getShipmentsCollection()->getFirstItem();
             $shipmentId = $shipment->getId();
         }
         if ($shipmentId && $shipmentId > 0) {
             $collection = Mage::getModel('upslabel/upslabel')->getCollection()->addFieldToFilter('order_id', $orderId)->addFieldToFilter('shipment_id', $shipmentId)->addFieldToFilter('type', $type)->addFieldToFilter('status', 0);
             if ($collection->count() === 0) {
                 $controller = new Infomodus_Upslabel_Adminhtml_UpslabelController();
                 $controller->intermediatehandy($orderId, $type, $shipmentId);
                 $lbl = Mage::getModel('upslabel/ups');
                 $lbl->setCredentials($AccessLicenseNumber, $UserId, $Password, $shipperNumber);
                 $lbl = $controller->setParams($lbl, $controller->defConfRarams, array($controller->defParams));
                 $upsl = $lbl->getShip();
                 if ($controller->defConfRarams['default_return'] == 1) {
                     $lbl->serviceCode = array_key_exists('default_return_servicecode', $controller->defConfRarams) ? $controller->defConfRarams['default_return_servicecode'] : '';
                     $upsl2 = $lbl->getShipFrom();
                 }
                 $upslabel = Mage::getModel('upslabel/upslabel');
                 $colls2 = $upslabel->getCollection()->addFieldToFilter('order_id', $orderId)->addFieldToFilter('shipment_id', $shipmentId)->addFieldToFilter('type', $type)->addFieldToFilter('status', 1);
                 if ($colls2->count() > 0) {
                     foreach ($colls2 as $c) {
                         $c->delete();
                     }
                 }
                 if (!array_key_exists('error', $upsl) || !$upsl['error']) {
                     foreach ($upsl['arrResponsXML'] as $upsl_one) {
                         $upslabel = Mage::getModel('upslabel/upslabel');
                         $upslabel->setTitle('Order ' . $orderId . ' TN' . $upsl_one['trackingnumber']);
                         $upslabel->setOrderId($orderId);
                         $upslabel->setShipmentId($shipmentId);
                         $upslabel->setType($type);
                         /*$upslabel->setBase64Image();*/
                         $upslabel->setTrackingnumber($upsl_one['trackingnumber']);
                         $upslabel->setShipmentidentificationnumber($upsl['shipidnumber']);
                         $upslabel->setShipmentdigest($upsl['digest']);
                         $upslabel->setLabelname('label' . $upsl_one['trackingnumber'] . '.gif');
                         $upslabel->setStatustext(Mage::helper('adminhtml')->__('Successfully'));
                         $upslabel->setStatus(0);
                         $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                         $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                         $upslabel->save();
                         $upslabel = Mage::getModel('upslabel/labelprice');
                         $upslabel->setOrderId($orderId);
                         $upslabel->setShipmentId($shipmentId);
                         $upslabel->setPrice($upsl['price']['price'] . " " . $upsl['price']['currency']);
                         $upslabel->save();
                     }
                     if ($controller->defConfRarams['default_return'] == 1) {
                         if (!array_key_exists('error', $upsl2) || !$upsl2['error']) {
                             foreach ($upsl2['arrResponsXML'] as $upsl_one) {
                                 $upslabel = Mage::getModel('upslabel/upslabel');
                                 $upslabel->setTitle('Order ' . $orderId . ' TN' . $upsl_one['trackingnumber']);
                                 $upslabel->setOrderId($orderId);
                                 $upslabel->setShipmentId($shipmentId);
                                 $upslabel->setType($type);
                                 /*$upslabel->setBase64Image();*/
                                 $upslabel->setTrackingnumber($upsl_one['trackingnumber']);
                                 $upslabel->setShipmentidentificationnumber($upsl['shipidnumber']);
                                 $upslabel->setShipmentdigest($upsl['digest']);
                                 $upslabel->setLabelname('label' . $upsl_one['trackingnumber'] . '.gif');
                                 $upslabel->setStatustext(Mage::helper('adminhtml')->__('Successfully'));
                                 $upslabel->setStatus(0);
                                 $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                                 $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                                 $upslabel->save();
                                 $upslabel = Mage::getModel('upslabel/labelprice');
                                 $upslabel->setOrderId($orderId);
                                 $upslabel->setShipmentId($shipmentId);
                                 $upslabel->setPrice($upsl2['price']['price'] . " " . $upsl2['price']['currency']);
                                 $upslabel->save();
                             }
                         } else {
                             $upslabel = Mage::getModel('upslabel/upslabel');
                             $upslabel->setTitle('Order ' . $orderId);
                             $upslabel->setOrderId($orderId);
                             $upslabel->setShipmentId($shipmentId);
                             $upslabel->setType($type);
                             $upslabel->setStatustext($upsl2['errordesc']);
                             $upslabel->setStatus(1);
                             $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                             $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                             $upslabel->save();
                         }
                     }
                     if ($controller->defConfRarams['addtrack'] == 1 && $type == 'shipment') {
                         $trTitle = 'United Parcel Service';
                         $shipment = Mage::getModel('sales/order_shipment')->load($shipmentId);
                         foreach ($upsl['arrResponsXML'] as $upsl_one1) {
                             $track = Mage::getModel('sales/order_shipment_track')->setNumber(trim($upsl_one1['trackingnumber']))->setCarrierCode('ups')->setTitle($trTitle);
                             $shipment->addTrack($track);
                         }
                         $shipment->save();
                     }
                 } else {
                     $upslabel = Mage::getModel('upslabel/upslabel');
                     $upslabel->setTitle('Order ' . $orderId);
                     $upslabel->setOrderId($orderId);
                     $upslabel->setShipmentId($shipmentId);
                     $upslabel->setType($type);
                     $upslabel->setStatustext($upsl['errordesc']);
                     $upslabel->setStatus(1);
                     $upslabel->setCreatedTime(Date("Y-m-d H:i:s"));
                     $upslabel->setUpdateTime(Date("Y-m-d H:i:s"));
                     $upslabel->save();
                 }
             }
         }
     } catch (Exception $e) {
         Mage::log('[ EXCEPTION!!! ] FROM ' . __CLASS__ . '::' . __FUNCTION__ . ' AT LINE ' . __LINE__);
         Mage::log($e->getMessage());
     }
 }