以编程方式创建发票时,发票日期为GMT / UTC

时间:2013-01-30 15:57:01

标签: magento invoices

我们有一个每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();

有什么建议可以采用不同的方式吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

据我所知,Magento的所有日期都存储为GMT。

检查此文件,了解在Magento app / code / core / Mage / Core / Model / Date.php中使用日期时可以帮助您的方法

答案 1 :(得分:0)

我从上面读了一篇文章,我得出结论: 当你想要显示日期和时间时,只需使用formatDate()和formatTime()方法,不要担心其他任何事情。