Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以编程方式在magento中创建贷项备忘_Php_Magento - Fatal编程技术网

Php 如何以编程方式在magento中创建贷项备忘

Php 如何以编程方式在magento中创建贷项备忘,php,magento,Php,Magento,我试图以编程方式创建一份Magento信用备忘录,但Magento向我显示了一份总计为零的信用备忘录 $incrementID = "100000016"; $orderMagento = Mage::getModel('sales/order')->loadByIncrementId($incrementID); $convertOrder = new Mage_Sales_Model_Convert_Order (); $creditmemo = $convertOrder->

我试图以编程方式创建一份Magento信用备忘录,但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中找到了这段代码,我正在尝试使用它,但它不起作用

为什么总数没有更新?创建它的正确方法是什么


谢谢

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

$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();
}

希望它对您有用。

最好的方法是按照信用备忘录控制器中处理此问题的步骤和代码进行操作。将日志行放入控制器中,查看数据的外观,然后尝试将输入的格式设置为与控制器所需的格式类似。实际上,当您试图在代码中复制在控制器中完成的事情时,应该这样做。