我们有一个每4小时生成一次货件的流程。只应为发货的商品开具发票,因此发票创建是此过程的一部分。
此过程在外部PHP脚本中运行,该脚本加载Magento环境,然后处理挂起的订单。
创建发票时,创建时间为4小时,因此看起来没有使用商店时间。我已经查看了Magento代码并搜索了网页,但是,我没有看到任何迹象表明您应该在创建发票时设置正确的存储时间。
在脚本的顶部是商店时区的时区 -
date_default_timezone_set('America/Boston');
基于订单商店ID的magento环境 -
//Start environment emulation of the specified store
$storeId = $order->getStoreId();
$initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
稍后,对于订单发货,会创建发票 -
// create an invoice for the invoiceable items
$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice($toInvoice);
if (!$invoice->getTotalQty()) {
Mage::throwException(Mage::helper('core')->__('Invoice generation failed - no items to invoice.'));
}
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
$invoice->register();
$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder());
$transactionSave->save();
$invoiceID = $invoice->getIncrementId();
有什么建议可以采用不同的方式吗?
谢谢!
答案 0 :(得分:0)
据我所知,Magento的所有日期都存储为GMT。
检查此文件,了解在Magento app / code / core / Mage / Core / Model / Date.php中使用日期时可以帮助您的方法
答案 1 :(得分:0)
我从上面读了一篇文章,我得出结论: 当你想要显示日期和时间时,只需使用formatDate()和formatTime()方法,不要担心其他任何事情。