gpt4 book ai didi

php - 如何以编程方式在 magento 中创建贷项通知单

转载 作者:搜寻专家 更新时间:2023-10-31 21:12:08 25 4
gpt4 key购买 nike

我正在尝试以编程方式创建 Magento Credit Memo,但 Magento 向我显示了一个总计为零的贷项通知单。

$incrementID = "100000016";
$orderMagento = Mage::getModel('sales/order')->loadByIncrementId($incrementID);

$convertOrder = new Mage_Sales_Model_Convert_Order ();
$creditmemo = $convertOrder->toCreditmemo ( $orderMagento );

$items = $orderMagento->getAllItems();

foreach ( $items as $item ) {
$_eachCreditMemoItem = $convertOrder->itemToCreditmemoItem ( $item );
$_eachCreditMemoItem->setQty ($item->getQtyInvoiced());
$_eachCreditMemoItem->register ();
$creditmemo->addItem ( $_eachCreditMemoItem );
$totalQty += $item->getQtyInvoiced ();
}

$creditmemo->refund();
$creditmemo->setTotalQty ( $totalQty );
$creditmemo->collectTotals();

$orderCreditMemoStatusCode = Mage_Sales_Model_Order::STATE_CLOSED;
$orderCreditMemoStatusComment = $comment;
$saveTransaction = Mage::getModel('core/resource_transaction')->addObject ($creditmemo )->addObject ( $orderMagento )->save ();
$orderMagento->addStatusToHistory ( $orderCreditMemoStatusCode, $orderCreditMemoStatusComment, false );
$orderMagento->save ();

我在 StackOverflow 中找到了这段代码,我正在尝试使用它,但效果不佳。

为什么总数没有更新?哪种创建方法正确?

Magento Credit Note Page谢谢

最佳答案

您可以轻松地从已付发票制作贷项通知单。因此,首先您需要从您的订单中获取所有已付款的发票:

$invoices = array();
foreach ($order->getInvoiceCollection() as $invoice) {
if ($invoice->canRefund()) {
$invoices[] = $invoice;
}
}

然后遍历发票并制作贷记凭证:

$service = Mage::getModel('sales/service_order', $order);
foreach ($invoices as $invoice) {
$creditmemo = $service->prepareInvoiceCreditmemo($invoice);
$creditmemo->refund();
}

希望它对你有用。

关于php - 如何以编程方式在 magento 中创建贷项通知单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com