0

我们有一个每 4 小时生成一次发货的流程。只有运送的物品才应开具发票,因此发票创建是此过程的一部分。

此过程在加载 Magento 环境的外部 PHP 脚本中运行,然后处理挂单。

创建发票时,创建时间会关闭 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();

有什么建议应该做不同的事情吗?

谢谢!

4

2 回答 2

0

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

检查此文件以获取在 Magento app/code/core/Mage/Core/Model/Date.php 中处理日期时对您有帮助的方法

于 2013-01-31T00:04:33.237 回答
0

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

于 2014-03-13T10:27:32.693 回答