Magento 1.9 - Как обновить цену продукта в зависимости от группы клиентов - PullRequest
0 голосов
/ 10 июня 2019

Я заметил, что при перемещении товаров из корзины клиентов (слева) в заказ (в области «Админ» -> «Администратор> Продажи> Новый заказ») цена товара не переносится в цену группы клиентов. , Таким образом, если продукт находится в корзине клиентов за 10,00 фунтов стерлингов (это цена определенной группы), и администратор переносит это в заказ, эти 10 фунтов стерлингов не переносятся. Цена в корзине теперь £ 15,00 (оригинальная цена)

Я думаю, что лучший способ решить эту проблему - создать наблюдателя событий и обновлять цену при ее перемещении в ордер?

1 Ответ

0 голосов
/ 11 июня 2019

Мне удалось решить эту проблему, создав наблюдателя для события adminhtml sales_quote_add_item.Пожалуйста, смотрите ниже.Надеюсь, это поможет кому-то

<?xml version="1.0"?>
<config>
    <modules>
        <Companyname_Extensionname>
            <version>0.0.1</version>
        </Companyname_Extensionname>
    </modules>
    <global>
        <models>
            <Companyname_Extensionname>
                <class>Companyname_Extensionname_Model_Observer</class>
            </Companyname_Extensionname>
        </models>
    </global>
    <adminhtml>
        <events>
            <sales_quote_add_item>
                <observers>
                    <companyname_extensionname>
                        <class>companyname_extensionname/observer</class>
                        <method>carttoorder</method>
                    </companyname_extensionname>
                </observers>
            </sales_quote_add_item>
        </events>
    </adminhtml>
</config>

<?php 
class Companyname_Extensionname_Model_Observer {
    public function carttoorder(Varien_Event_Observer $observer) {
        $event = $observer->getEvent();
        $quote_item = $event->getQuoteItem();
        $product_sku = $quote_item->getSku();

        $sessionquoteId = Mage::getSingleton('adminhtml/session_quote')->getQuote()->getId();
        $sessionCustomerId = Mage::getModel('sales/quote')->loadByIdWithoutStore($sessionquoteId)->getCustomerId();
        $customerData = Mage::getModel('customer/customer')->load($sessionCustomerId);
        $customerId = $customerData->getGroupId();

        $_product = Mage::getModel('catalog/product');
        $_product->load($_product->getIdBySku($product_sku));

        $groupPrices = $_product->getData('group_price');

        if (!is_null($groupPrices) || is_array($groupPrices)) {
            foreach ($groupPrices as $groupPrice) {
                if($groupPrice['cust_group'] == $customerId){
                    $group_price = $groupPrice['website_price'];
                    break;
                }
            }
        }
        $quote_item->setOriginalCustomPrice($group_price);
        $quote_item->getProduct()->setIsSuperMode(true);
    } 
}
...