วิธีการปิดการใช้งานเงินสดในการส่งมอบในประเภทผลิตภัณฑ์เฉพาะ


9

โดยทั่วไปฉันต้องปิดการใช้งานเงินสดในการส่งมอบในประเภทผลิตภัณฑ์เฉพาะ โดยทั่วไปฉันใช้เครดิตร้านค้าของร้านค้าผู้วิเศษ นี่คือกระเป๋าเงินในวีโอไอพี ในตัวเลือกการชำระเงินมันแสดงเงินสดในการจัดส่ง มันไม่ใช่ผลิตภัณฑ์จริงหรือเสมือน ดังนั้นฉันจำเป็นต้องปิดการใช้งานเงินสดในการจัดส่งสินค้าประเภทนี้

คำตอบ:


11

คุณสามารถทำได้โดย Magento Event/Observer

ขั้นแรกให้ใช้การpayment_method_is_activeปิดการใช้งานขึ้นอยู่กับประเภทของผลิตภัณฑ์ใบเสนอราคาปัจจุบัน

รหัสสำหรับสิ่งนี้:

รหัสโมดูล 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;
            }
        }
    }

}

เพียงแค่ 2 นาทีเท่านั้นที่ทำงานเพื่อน 8 คน @amit
Keyur Shah

@ ยอมรับวิธีรับประเภทผลิตภัณฑ์ที่นี่
Deepak Rai

@ DeepakRai มีการใส่รหัสแล้วใช้ $ item-> getProductType () เพื่อรับประเภทผลิตภัณฑ์ Item
Amit Bera

4

เพื่อที่คุณจะต้องใช้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 อิหร่าน
ZUS

1

คุณดูนี่ฉันคิดว่านี่จะผึ้งแก้ปัญหาของคุณคุณเพียงแค่ต้องแก้ไขไฟล์ methods.phtml และจากที่คุณสามารถได้รับข้อมูลคำพูดใด ๆ และทำการตรวจสอบหรือเงื่อนไขเช่นกันจากโมดูลโดยเหตุการณ์ - ผู้สังเกตการณ์หรือการแก้ไขใน ไฟล์ phtml?

/programming/29819037/disable-cash-on-delivery-for-specific-products

และ

/programming/14011348/disable-payment-options-only-cash-on-delivery-for-particular-product-magento

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.