示例#1
0
 public function testSetGetNumber()
 {
     $this->assertNull($this->_model->getNumber());
     $this->_model->setNumber('test');
     $this->assertEquals('test', $this->_model->getNumber());
     $this->assertEquals('test', $this->_model->getTrackNumber());
 }
 /**
  * Import tracking file
  *
  */
 public function importTrackingFile($t_lines)
 {
     $importedTrackingCount = 0;
     $skippedTrackingCount = 0;
     $debug = '';
     for ($i = 0; $i < count($t_lines); $i++) {
         //skip first line (if required)
         $line = $t_lines[$i];
         if ($i == 0 && $this->getct_import_skip_first_record()) {
             continue;
         }
         $tracking = null;
         $shipmentReference = null;
         //parse fixed format line
         if ($this->getct_import_format() == 'fixed') {
             $currentPosition = 0;
             foreach ($this->getFields('import') as $field) {
                 $size = $field->getctf_size();
                 $fieldValue = substr($line, $currentPosition, $size);
                 switch ($field->getctf_content()) {
                     case 'tracking':
                         $tracking = trim($fieldValue);
                         break;
                     case 'shipment':
                         $shipmentReference = trim($fieldValue);
                         break;
                 }
                 $currentPosition += $size;
             }
         }
         //parse delimiter format line
         if ($this->getct_import_format() == 'delimiter') {
             //split fields
             $t_columns = explode($this->getFieldSeparator('import'), $line);
             foreach ($this->getFields('import') as $field) {
                 if (isset($t_columns[$field->getctf_position()])) {
                     $fieldValue = $t_columns[$field->getctf_position()];
                     if ($this->getFieldDelimiter('import') != '') {
                         $fieldValue = str_replace($this->getFieldDelimiter('import'), '', $fieldValue);
                     }
                     switch ($field->getctf_content()) {
                         case 'tracking':
                             $tracking = $fieldValue;
                             break;
                         case 'shipment':
                             $shipmentReference = $fieldValue;
                             break;
                     }
                 }
             }
         }
         //add tracking
         if ($tracking != null && $shipmentReference != null) {
             $debug .= 'process tracking ' . $tracking . ' for shipment #' . $shipmentReference . "\n";
             $shipment = mage::getModel('sales/order_shipment')->loadByIncrementId($shipmentReference);
             if ($shipment->getId()) {
                 if (!$this->shipmentContainsTracking($shipment, $tracking)) {
                     try {
                         $debug .= 'import tracking=' . $tracking . ' for shipment=' . $shipment->getincrement_id() . "\n";
                         $track = new Mage_Sales_Model_Order_Shipment_Track();
                         $track->setNumber($tracking)->setCarrierCode($this->getct_shipping_method())->setTitle('Tracking');
                         $shipment->addTrack($track)->save();
                         $importedTrackingCount++;
                     } catch (Exception $ex) {
                         $debug .= 'Error for line #' . $i . ' : ' . $ex->getMessage() . "\n";
                         $skippedTrackingCount++;
                     }
                 } else {
                     $skippedTrackingCount++;
                     $debug .= 'Tracking already exist for line #' . $i . "\n";
                 }
             } else {
                 $skippedTrackingCount++;
                 $debug .= 'Unable to retrieve shipment for line #' . $i . "\n";
             }
         } else {
             $debug .= 'Unable to retrieve shipment or/and tracking for line #' . $i . "\n";
         }
     }
     mage::log($debug);
     $msg = mage::helper('Orderpreparation')->__('Tracking import complete : %s tracking imported, %s tracking skipped', $importedTrackingCount, $skippedTrackingCount);
     return $msg;
 }
 /**
  * Enregistre les modifs pour une commande 
  * (c'est a dire commentaire & qté reservée par ligne commande)
  *
  */
 public function SaveOrderAction()
 {
     try {
         //parcourt les data
         $order_id = $this->getRequest()->getParam('order_id');
         $order = mage::getModel('sales/order')->load($order_id);
         $data = $this->getRequest()->getParams();
         //shipment & invoice
         $shipment_id = $this->getRequest()->getParam('shipment_id');
         $invoice_id = $this->getRequest()->getParam('invoice_id');
         $tracking_num = $this->getRequest()->getParam('tracking_num');
         if ($shipment_id || $invoice_id) {
             mage::getModel('Orderpreparation/ordertoprepare')->load($order_id, 'order_id')->setshipment_id($shipment_id)->setinvoice_id($invoice_id)->save();
         }
         //Si un numéro de tracking a été saisi, on l'ajoute
         if ($tracking_num) {
             //met a jour les shipment
             $shipment = Mage::getModel('sales/order_shipment')->loadByIncrementId($shipment_id);
             if ($shipment->getOrder()) {
                 //$order = mage::getmodel('sales/order')->load($order_id);
                 $Carrier = str_replace('_', '', $order->getshipping_method());
                 $track = new Mage_Sales_Model_Order_Shipment_Track();
                 $track->setNumber($tracking_num)->setCarrierCode($Carrier)->setTitle('Shipment');
                 $shipment->addTrack($track)->save();
             }
         }
         //parcourt les champs
         foreach ($data as $cle => $value) {
             $t = explode('_', $cle);
             if (strpos($cle, 'omments') >= 1) {
                 //recupere les infos
                 $OrderItemId = $t[1];
                 $OrderItem = mage::getModel('sales/order_item')->load($OrderItemId);
                 $Comments = $value;
                 //met a jour
                 $OrderItem->setcomments($Comments)->save();
             }
         }
         //confirme
         Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Changes successfully saved'));
     } catch (Exception $ex) {
         Mage::getSingleton('adminhtml/session')->addError($this->__('An error occured while saving changes: ') . $ex->getMessage() . ' ' . $ex->getTraceAsString());
     }
     //redirige
     $this->_redirect('adminhtml/sales_order/view', array('order_id' => $order_id));
 }