관리 주문 견적에서 항목을 제거하고 프로그래밍 방식으로 새 항목을 추가합니다.

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

  •  13-12-2019
  •  | 
  •  

문제

조정이 필요한 프로젝트를 진행 중입니다. 관리자 주문 생성 마젠토의 기능

항목을 제거한 다음 주문을 생성하는 동안 프로그래밍 방식으로 다른 항목을 추가해야 합니다.

예를 들어 주문에 이미 추가된 항목이 거의 없는 경우 제품 ID가 다음과 일치하는 경우 my_product_id, 해당 제품을 다음에서 제거하세요. quote 새 제품을 추가하고(my_new_product) 주문합니다.

부터가 아닐 것이다 observer, 을 추가해야 하므로 단추 이 작업을 호출하고 작업을 수행합니다.

버튼을 성공적으로 추가하고 사용자 정의 컨트롤러에 연결했습니다.

나는 많은 링크를 겪었지만 운이 없었습니다.

제안해주세요.

도움이 되었습니까?

해결책 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 또는 관리자html_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/5913

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top