The Following file will downlode the all csv from ftp server to local server process the file add tracking number to shipment if shipment is not created it will create first after add the tracking number and delete the csv files from server and local server
<?php define('MAGENTO', realpath(dirname(__FILE__))); require_once MAGENTO . '/app/Mage.php'; Mage::setIsDeveloperMode(true); ini_set('display_errors', 1); umask(0); Mage::app('admin'); Mage::register('isSecureArea', 1); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); set_time_limit(0); ini_set('memory_limit','10024M'); $pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection(); foreach ($pCollection as $process) { $process->setMode(Mage_Index_Model_Process::MODE_MANUAL)->save(); } // ftp ser details $ftp_server = "your_server"; $ftp_username = "username"; $ftp_userpass = "password"; $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); $contents = ftp_nlist($ftp_conn, "/ECOM_MV/MBTUK/WH/FRONTEND/TEST/TRK/"); foreach ($contents as &$value) : // download server file ftp_get($ftp_conn, MAGENTO . '/var/import/Shipment/shipment_update.csv', $value, FTP_BINARY); //ftp_delete($ftp_conn, $value); // if you want to remove file from server if(FALSE === @fopen(MAGENTO . '/var/import/Shipment/shipment_update.csv', 'r')): echo "No File Found"; else: $file = fopen(MAGENTO . '/var/import/Shipment/shipment_update.csv', 'r'); while (($data = fgetcsv($file)) !== FALSE) { Mage::init(); $comment = null; $email = false; $includeComment = false; $orderId = $data[0]; //get ordernumber from csv $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); if($order->getShipmentsCollection()->getData()){ foreach($order->getShipmentsCollection() as $shipment): $shipmentid = $shipment->getId(); $shipment = Mage::getModel('sales/order_shipment')->load($shipmentid); $trackdata = array(); $trackdata['carrier_code'] = "custom"; //get carrier_code from csv $trackdata['title'] = "Tracking No"; //get title from csv $trackdata['number'] = $data[1]; //get track number from csv $track = Mage::getModel('sales/order_shipment_track')->addData($trackdata); $shipment->addTrack($track); $transactionSave = Mage::getModel('core/resource_transaction') ->addObject($shipment) ->addObject($shipment->getOrder()) ->save(); $shipment->sendEmail($email, ($includeComment ? $comment : '')); endforeach; } else{ $convertor = Mage::getModel('sales/convert_order'); $shipment = $convertor->toShipment($order); foreach ($order->getAllItems() as $orderItem) { if (!$orderItem->getQtyToShip()) { continue; } if ($orderItem->getIsVirtual()) { continue; } $item = $convertor->itemToShipmentItem($orderItem); $qty = $orderItem->getQtyToShip(); $item->setQty($qty); $shipment->addItem($item); } $trackdata = array(); $trackdata['carrier_code'] = "custom"; //get carrier_code from csv $trackdata['title'] = "Tracking No"; //get title from csv $trackdata['number'] = $data[1]; //get track number from csv $track = Mage::getModel('sales/order_shipment_track')->addData($trackdata); $shipment->addTrack($track); $shipment->register(); $shipment->addComment($comment, $email && $includeComment); $shipment->setEmailSent(true); $shipment->getOrder()->setIsInProcess(true); $transactionSave = Mage::getModel('core/resource_transaction') ->addObject($shipment) ->addObject($shipment->getOrder()) ->save(); $shipment->sendEmail($email, ($includeComment ? $comment : '')); } echo "<br />Order = ".$orderId; } echo "<br /><br />Shipment Tracking Number Updated For the Above Order Id Successfully"; fclose($file); unlink(MAGENTO . '/var/import/Shipment/shipment_update.csv'); endif; endforeach; ftp_close($ftp_conn); $pCollection = Mage::getSingleton('index/indexer')->getProcessesCollection(); foreach ($pCollection as $process) { $process->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->save(); $process->reindexEverything(); }
0 Comments