2015-09-23 3 views
0

Мне нужно ввести ограничение доставки на основе выбранной валюты.ограничение на доставку на основе выбранной валюты

Например:

Если люди выбирают/использовать доллары США, чтобы проверить их адрес доставки может быть только в США, и если люди выбирают GBP в валюте упасть вниз, их адрес доставки может быть только в Великобритании.

Кто-нибудь знает, как я могу это достичь? Я младший разработчик, и это мой первый проект Maganto.

Вот мой available.phtml файл:

<?php $_shippingRateGroups = $this->getShippingRates(); ?> 
      <?php if (!$_shippingRateGroups): ?> 
       <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></p> 
      <?php else: ?> 
       <dl class="sp-methods"> 
       <?php $shippingCodePrice = array(); ?> 
       <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?> 
        <dt><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></dt> 
        <dd> 
         <ul> 
         <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?> 
          <?php $shippingCodePrice[] = "'".$_rate->getCode()."':".(float)$_rate->getPrice(); ?> 
          <li> 
           <?php if ($_rate->getErrorMessage()): ?> 
           <ul class="messages"><li class="error-msg"><ul><li><?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></li></ul></li></ul> 
           <?php else: ?> 
            <?php if ($_sole) : ?> 
            <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span> 
            <?php else: ?> 
            <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio"/> 

            <?php if ($_rate->getCode() === $this->getAddressShippingMethod()): ?> 
            <script type="text/javascript"> 
             //<![CDATA[ 
              lastPrice = <?php echo (float)$_rate->getPrice(); ?>; 
             //]]> 
            </script> 
            <?php endif; ?> 

            <?php endif; ?> 
            <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $this->escapeHtml($_rate->getMethodTitle()) ?> 
            <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?> 
            <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?> 
            <?php echo $_excl; ?> 
            <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?> 
             (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>) 
            <?php endif; ?> 
            </label> 
           <?php endif ?> 
          </li> 
         <?php endforeach; ?> 
         </ul> 
        </dd> 
       <?php endforeach; ?> 
       </dl> 
      <script type="text/javascript"> 
      //<![CDATA[ 
       <?php if (!empty($shippingCodePrice)): ?> 
        var shippingCodePrice = {<?php echo implode(',',$shippingCodePrice); ?>}; 
       <?php endif; ?> 

       $$('input[type="radio"][name="shipping_method"]').each(function(el){ 
        Event.observe(el, 'click', function(){ 
         if (el.checked == true) { 
          var getShippingCode = el.getValue(); 
          <?php if (!empty($shippingCodePrice)): ?> 
           var newPrice = shippingCodePrice[getShippingCode]; 
           if (!lastPrice) { 
            lastPrice = newPrice; 
            quoteBaseGrandTotal += newPrice; 
           } 
           if (newPrice != lastPrice) { 
            quoteBaseGrandTotal += (newPrice-lastPrice); 
            lastPrice = newPrice; 
           } 
          <?php endif; ?> 
          checkQuoteBaseGrandTotal = quoteBaseGrandTotal; 
          return false; 
         } 
        }); 
       }); 
      //]]> 
      </script> 
      <?php endif; ?> 

ответ

0

Вы можете ограничить методы доставки в зависимости от типа валюты. просто зайдите на app\design\frontend\base\default\template\checkout\onepage\shipping_method\available.phtml и получите валюту, забрав здесь корзину. И теперь, используя простые условия If/Else в соответствии с валютой, вы можете ограничить методы доставки.

+0

вы можете сделать то же самое, проверив почтовый индекс в соответствии с оплатой. написать ajax-код для проверки zip – urfusion

+0

Спасибо за помощь, вы уже многое объяснили мне. Но у меня все еще есть проблема с тем, как это реализовать. Как я понимаю, это: getStore() -> getCurrentCurrencyCode(); if ($ currency_code == "USD") { $ uk_shipping = false; } elseif ($ currency_code == "GBP") { $ uk_shipping = true; } ?> – web4me

+0

Как я могу реализовать его в процессе фактического оформления заказа? – web4me

Смежные вопросы