管理者注文の見積もりから項目を削除して、プログラムで新しいアイテムを追加する

magento.stackexchange https://magento.stackexchange.com//questions/70109

  •  13-12-2019
  •  | 
  •  

質問

Magentoの管理順序作成機能を調整する必要があるプロジェクトに取り組んでいます。

アイテムを削除してから、注文を作成しながらプログラムで別のアイテムを追加する必要があります。

たとえば、順番に既に追加されている項目は既に追加されています。

このアクションを呼び出してジョブを実行するには、ボタンを追加する必要があるため、my_product_idからのものではありません。

私はボタンを追加してカスタムコントローラにリンクされました。

私はリンクの負荷を浴びてきましたが、運がなかった。

提案してください。

役に立ちましたか?

解決 2

数日間掘り下げた後、結果を得ることができました。

@lloiacono に感謝します。しかし、彼/彼女の答えは十分ではありませんでした。

コントローラファイルの場合:

public function removeAndAddAction()
{
    $quote = $this->_getSession()->getQuote();
    foreach($quote->getAllItems() as $item){
        $quote->removeItem($item->getId());
        $product = Mage::getModel('catalog/product')->load($item->getProductId());
        $quote->addProduct($product, 1);
    }
    $quote->collectTotals()->save();

    $this->_redirect('*/sales_order_create');
}

//get session
protected function _getSession()
    {
        $session = Mage::getSingleton('adminhtml/session_quote');

        return $session;
    }
.

他のヒント

更新

sales_order_save_before または adminhtml_sales_order_create_process_data <adminhtml>config.xmlノードにこれを追加することを確認することができます。。

あなたのObserver.phpに一度あなたが望むアイテムを削除することができます、代わりに<adminhtml>ノードでも引用イベントをフックしてから、可能であれば引用レベルでアイテムを削除してください。

引用符に項目を追加するには:

$quote->addProduct($product, new Varien_Object($eventArgs));
$quote->save();
.

引用符から項目を削除するには:

$quote->removeItem($item->getItemId())->save();
.

Magentoを管理することができます。

$adminSalesOrderCreate = Mage::getSingleton('adminhtml/sales_order_create');
$adminSalesOrderCreate->setQuote($quote)->save();
.

ここでは非常に完全な回答があります。 https://magento.stackexchange.com/a/15050/5913a>

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top