특정 제품 유형에서 현금 배달을 비활성화하는 방법


9

기본적으로 특정 제품 유형에서 현금 배달을 비활성화해야합니다. 기본적으로 마법사 상점의 상점 크레딧을 사용하고 있습니다. 마 젠토 지갑입니다. 지불 옵션에 배달 현금 표시. 실제 또는 가상 제품이 아닙니다. 따라서이 제품 유형에서 현금 배달을 비활성화해야합니다.

답변:


11

당신은 이것을 할 수 있습니다 Magento Event/Observer

먼저 payment_method_is_activedisable on 을 사용하면 현재 견적 제품 유형에 따라 다릅니다.

이를위한 코드 :

모듈 config.xml 코드 :

<global>
    <events>
    <payment_method_is_active>
        <observers>
            <paymentfilter_payment_method_is_active>
            <type>singleton</type>
            <class>yourmodel/observer</class>
            <method>filterpaymentmethod</method>
            </paymentfilter_payment_method_is_active>
        </observers>
    </payment_method_is_active>
    </events>
</global>

관찰자 코드는 다음과 같습니다.

<?php

class YOURNANESPACE_YOURMODULE_Model_Observer {

    public function filterpaymentmethod(Varien_Event_Observer $observer) {
        /* call get payment method */
        $method = $observer->getEvent()->getMethodInstance();

        /*   get  Quote  */
        $quote = $observer->getEvent()->getQuote();

        $result = $observer->getEvent()->getResult();
        if (empty($quote) || (null === $quote)) {
            return $this;
        }

        /* Disable Your payment method for   adminStore */
        if ($method->getCode() == 'YOUR_PAYMENT_METHOD_CODE') {
            foreach ($quote->getAllItems() as $item) {
                // get Cart item product Type //
                if ($item->getProductType() == 'YourProductType'):
                    $result->isAvailable = false;
                endif;
            }
        }
    }

}

gr2 일 친구 @amit
Keyur Shah

@Amit Bera 제품 유형을 얻는 방법
Deepak Rai

@DeepakRai, 이미 코드가 입력되었습니다. 항목 제품 유형을 얻으려면 $ item-> getProductType ()을 입력하십시오.
Amit Bera

4

이를 위해 당신은 magento payment_method_is_active이벤트 를 사용해야합니다

난 당신이 다음 확인하시기 바랍니다하지 않으면 [젠토 확장을 개발하는 방법을 알고 가정하고 이 답변은 전체 모듈 얻을 당신의 쓰기이 코드 config.xml에서app>code>codepool>namespace>package>etc

<global>
    ...
    <events>
        <payment_method_is_active>
            <observers>
                <paymentfilter_payment_method_is_active>
                    <type>singleton</type>
                    <class>PaymentFilter_Model_Observer</class>
                    <method>paymentMethodIsActive</method>
                </paymentfilter_payment_method_is_active>
            </observers>
        </payment_method_is_active>
    </events>
    ...
</global>

관찰자 파일 만들기 app/code/codepool>namespace>package/Model/Observer.php

class namespace_package_Model_Observer {

        public function paymentMethodIsActive(Varien_Event_Observer $observer) {
            $event           = $observer->getEvent();
            $method          = $event->getMethodInstance();
            $result          = $event->getResult();
            $currencyCode    = Mage::app()->getStore()->getCurrentCurrencyCode();


                if($someTrueConditionGoesHere){
                    $result->isAvailable = true;
                }else{
                    $result->isAvailable = false;
                }

        }

    }

여기에서 도움을받을 수 있습니까? magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.