Отключить наложенный платеж для определенных продуктов

Я использую Magento v1.9.0.1. Я хочу отключить наложенный платеж для определенных продуктов. Я установил расширение COD из magento commerce.

Я новичок в структуре Magento, и ничего особенного в этом нет. Пытался отладить его, но он поднимается выше моей головы.

Кроме того, у меня везде есть поиск в Интернете, но никто никогда не предоставлял код для Magento v1.9.0.1.


person Goldy    schedule 23.04.2015    source источник
comment
не могли бы вы поделиться ссылкой на расширение, которое вы установили?? Нужна ли вам какая-либо опция для этого на стороне администратора, чтобы отключить наложенный платеж для определенного продукта??   -  person Pavan Kumar    schedule 23.04.2015
comment
Я установил расширение COD от Mage Specialist. Вот ссылка на расширение. И да, мне нужна опция со стороны администратора   -  person Goldy    schedule 23.04.2015


Ответы (2)


Создайте настраиваемый атрибут с кодом атрибута cod и назначьте его General наборам атрибутов.

Теперь, согласно вашему требованию, измените свой method.phtml (если в него не включен пользовательский код) следующим образом.

<?php
    $methods = $this->getMethods();
    $oneMethod = count($methods) <= 1;
?>
<?php if (empty($methods)): ?>
    <dt>
        <?php echo $this->__('No Payment Methods') ?>
    </dt>
<?php else:
    foreach ($methods as $_method):
        $_code = $_method->getCode();
?>
    <dt>
    <?php 
    //cod verification starts
    $attr_cod = array();
    $cartItems = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
    foreach ($cartItems as $item) {
        $attr_cod[] = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getCod();

    }
    if(in_array('1', $attr_cod) && $_code == 'cashondelivery') {continue; }
    //cod verification ends
?>
    <?php if(!$oneMethod): ?>

        <input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" title="<?php echo $this->escapeHtml($_method->getTitle()) ?>" onclick="payment.switchMethod('<?php echo $_code ?>')"<?php if($this->getSelectedMethodCode()==$_code): ?> checked="checked"<?php endif; ?> class="radio" />
    <?php else: ?>
        <span class="no-display"><input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" checked="checked" class="radio" /></span>
        <?php $oneMethod = $_code; ?>
    <?php endif; ?>
        <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($this->getMethodTitle($_method)) ?> <?php echo $this->getMethodLabelAfterHtml($_method) ?></label>
    </dt>
    <?php if ($html = $this->getPaymentMethodFormHtml($_method)): ?>
    <dd>
        <?php echo $html; ?>
    </dd>
    <?php endif; ?>
<?php endforeach;
    endif;
?>
<?php echo $this->getChildChildHtml('additional'); ?>
<script type="text/javascript">
    //<![CDATA[
    <?php echo $this->getChildChildHtml('scripts'); ?>
    payment.init();
    <?php if (is_string($oneMethod)): ?>
    payment.switchMethod('<?php echo $oneMethod ?>');
        <?php endif; ?>
    //]]>
</script>

Я проверил это и отлично работает.

person Pavan Kumar    schedule 24.04.2015
comment
Спасибо чувак. Меня устраивает. Не могли бы вы сказать мне, как я могу добавить дополнительные сборы за наложенный платеж в общую сумму заказа? - person Goldy; 24.04.2015
comment
для добавления дополнительной платы за опцию COD вам необходимо разработать расширение. Короче говоря, вам нужно установить GrandTotal, если способ оплаты COD - person Pavan Kumar; 24.04.2015

COD уже в Magento, вам не нужно его устанавливать.

Есть два способа

  1. создайте новый параметр конфигурации, в котором вы можете ввести идентификаторы продуктов, для которых вы не хотите использовать опцию COD.
  2. Вы также можете создать атрибут продукта для проверки опции COD.

и проверьте эти идентификаторы (если вы создаете параметры конфигурации) с идентификатором продукта или проверьте атрибут продукта на app\design\frontend\base\default\template\checkout\onepage\payment\methods.phtml. И с помощью простых условий if else вы можете избежать наложенного платежа для этих продуктов.

person urfusion    schedule 23.04.2015
comment
Спасибо за ответ. Не могли бы вы помочь мне с кодом. Я создал атрибут для COD, но не знаю, как реализовать это в коде. - person Goldy; 23.04.2015
comment
Я не могу писать код прямо сейчас. я предоставлю вам поздно ночью. попробуйте получить сеанс корзины на этой странице. из сеанса корзины вы получите идентификатор продукта, затем загрузите этот продукт в method.phtml и проверьте атрибут. согласно вашему веб-сайту код способа оплаты p_method_phoenix_cashondelivery. поэтому поместите условие if, в котором проверяется атрибут, если атрибут есть, поставьте еще одну проверку на отсутствие отображения COD. - person urfusion; 23.04.2015