2015-07-19 147 views

回答

0

是有一种方法来实现这个使用下面的代码,并从乌尔时间基础上的cron调用,代码将1小时订货后,挂起到处理改变的状态。

<?php 
require_once('app/Mage.php'); 
Mage::app('admin'); 
$orders = Mage::getModel('sales/order')->getCollection() 
    ->addFieldToFilter('status','pending') 
    ->addFieldToFilter('created_at', array('lt' => new Zend_Db_Expr("DATE_ADD('".now()."', INTERVAL -'60:00' HOUR_MINUTE)"))) 
    ->addAttributeToSelect('customer_email') 
    ->addAttributeToSelect('increment_id'); 
Mage::log("cod diret run from script cron start"); 
foreach ($orders as $order) { 
    $incrementId = $order->getIncrementId();   
    $individualOrder = Mage::getModel("sales/order")->loadByIncrementId($incrementId); 
    try { 
if(!$individualOrder->canInvoice()) 
{ 
Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.')); 
} 
$invoice = Mage::getModel('sales/service_order', $individualOrder)->prepareInvoice(); 
Mage::log("next"); 
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) { 
} 
$OrderStatus = Mage::getModel("sales/order")->loadByIncrementId($incrementId); 
$OrderStatus->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save(); 
    $orderid= $individualOrder->getEntityId(); 
    $email = $order->getCustomerEmail();  
}