0

We are using custom shipping method & we entered list of zip codes that are deliverable in textarea in Backend. also list of zip codes that is available for COD in backend in another text area.

In Products view page , we provide an option to find Shipping & COD is available or not by entering zip code using this module - magento shipping estimation block

Now we are displaying 2 kinds of message : a) Shipping is available b) Shipping not available.

but we want following 3 types of messages :

for some zip codes, i want to display message as

1) Shipping is available, COD is available [ If zip code is present in both text area]

for some other zip codes, i want to display message as

2) Shipping is available, COD is not available

[If zip code is present in textarea related to delivery ]

Also for some,

3) Shipping is not available. [ If zip code not present in both text area].

enter image description here

form.phtml :

<?php if ($this->isEnabled()): ?> 

<div class="block block-shipping-estimate" id="unique_id"> 
<img src ="/media/font-100.png" height="35" width="70" class ="ikon"> 
<div class="block-title"> 
<strong><span><?php echo Mage::helper('webdevlopers_productpageshipping')->getTitle(); ?></span></strong> 
</div> 

<div class="block-content"> 
<p class="block-subtitle"> 

<?php echo Mage::helper('webdevlopers_productpageshipping')->getDes(); ?> 
</p> 
<ul class="shipping-estimation-form" id="shipping-estimation-form"> 
<?php if ($this->isFieldVisible('country')): ?> 
<li class="item"> 
<label for="estimate_country" class="required"><em>*</em><?php echo Mage::helper('webdevlopers_productpageshipping')->__('Country') ?></label> 
<div class="input-box"> 
<?php echo Mage::getBlockSingleton('directory/data')->getCountryHtmlSelect( 
($this->getFieldValue('country') ? $this->getFieldValue('country') : $this->getConfig()->getDefaultCountry()), 
'estimate[country_id]', 
'estimate_country' 
); 
?> 
</div> 
</li> 
<?php else: ?> 
<input type="hidden" id="estimate_country" name="estimate[country_id]" value="<?php echo $this->htmlEscape($this->getConfig()->getDefaultCountry())?>" /> 
<?php endif; ?> 
<?php if ($this->isFieldVisible('region')): ?> 
<li class="item"> 
<label for="estimate_region_id"<?php if ($this->isFieldRequired('region')):?> class="required" <?php endif;?>><?php if ($this->isFieldRequired('region')):?><em>*</em><?php endif;?><?php echo $this->__('State/Province') ?></label> 
<div class="input-box"> 
<select id="estimate_region_id" name="estimate[region_id]" title="<?php echo Mage::helper('webdevlopers_productpageshipping')->__('State/Province') ?>" style="display:none;"<?php echo ($this->isFieldRequired('region') ? ' class="validate-select"' : '') ?>> 
<option value=""><?php echo Mage::helper('webdevlopers_productpageshipping')->__('Please select an option') ?></option> 
</select> 
<script type="text/javascript"> 
//<![CDATA[ 
$('estimate_region_id').setAttribute('defaultValue', '<?php echo $this->jsQuoteEscape($this->getFieldValue('region_id')); ?>'); 
//]]> 
</script> 
<input type="text" id="estimate_region" name="estimate[region]" value="<?php echo $this->htmlEscape($this->getFieldValue('region')) ?>" title="<?php echo Mage::helper('webdevlopers_productpageshipping')->__('State/Province') ?>" class="input-text" style="display:none;" /> 
</div> 
</li> 
<script type="text/javascript"> 
//<![CDATA[ 
new RegionUpdater('estimate_country', 'estimate_region', 'estimate_region_id', <?php echo $this->helper('directory')->getRegionJson() ?>); 
//]]> 
</script> 
<?php endif; ?> 
<?php if($this->isFieldVisible('city')): ?> 
<li class="item"> 
<label for="city"<?php if ($this->isFieldRequired('city')):?> class="required" <?php endif;?>><?php if ($this->isFieldRequired('city')):?><em>*</em><?php endif;?><?php echo Mage::helper('webdevlopers_productpageshipping')->__('City') ?></label> 
<div class="input-box"> 
<input class="input-text<?php if ($this->isFieldRequired('city')):?> required-entry<?php endif;?>" id="estimate_city" type="text" name="estimate[city]" value="<?php echo $this->htmlEscape($this->getFieldValue('city')) ?>" /> 
</div> 
</li> 
<?php endif; ?> 

<?php if ($this->isFieldVisible('postcode')): ?> 
<li class="item"> 

<label for="search"<?php if ($this->isFieldRequired('postcode')):?> class="required" <?php endif;?>><?php if ($this->isFieldRequired('postcode')):?><em>*</em><?php endif;?><?php echo Mage::helper('webdevlopers_productpageshipping')->__('') ?></label> 
<div class="search"> 


<input placeholder="Enter your PIN Code" class="input-text <?php if ($this->isFieldRequired('postcode')):?>
required-entry<?php endif;?> validate-pincode maximum-length-6 minimum-length-6 validate-digits"
type="text" id="estimate_postcode" name="estimate[postcode]" 
value="<?php echo $this->htmlEscape($this->getFieldValue('postcode')) ?>" 
onkeydown="if (event.keyCode == 13) { return false;}" />

</div> 
</li> 
<?php endif; ?> 


<?php if ($this->isFieldVisible('coupon_code')): ?> 
<li class="item"> 
<label for="estimate_coupon_code"<?php if ($this->isFieldRequired('coupon_code')):?> class="required" <?php endif;?>><?php if ($this->isFieldRequired('coupon_code')):?><em>*</em><?php endif;?><?php echo Mage::helper('webdevlopers_productpageshipping')->__('Coupon Code') ?></label> 
<div class="input-box"> 
<input class="input-text <?php if ($this->isFieldRequired('coupon_code')):?> required-entry<?php endif;?>" type="text" id="estimate_coupon_code" name="estimate[coupon_code]" value="<?php echo $this->htmlEscape($this->getFieldValue('coupon_code')) ?>" /> 
</div> 
</li> 
<?php endif; ?> 
<?php if ($this->isFieldVisible('cart')): ?> 
<li class="item radio"> 
<label for="estimate_cart_yes"><?php echo Mage::helper('webdevlopers_productpageshipping')->__('Include Cart Items') ?></label> 
<div class="input-box"> 
<input type="radio" id="estimate_cart_yes" name="estimate[cart]" value="1" <?php if ($this->useShoppingCart()): ?> checked="checked"<?php endif;?> /><?php echo Mage::helper('webdevlopers_productpageshipping')->__('Yes') ?> 
<input type="radio" id="estimate_cart_no" name="estimate[cart]" value="0" <?php if (!$this->useShoppingCart()): ?> checked="checked"<?php endif;?> /> <?php echo Mage::helper('webdevlopers_productpageshipping')->__('No') ?> 
</div> 
</li> 
<?php elseif ($this->useShoppingCart()):?> 
<input id="estimate_cart_yes" type="hidden" name="estimate[cart]" value="1" /> 
<?php endif; ?> 
</ul> 
<script type="text/javascript">decorateList('shipping-estimation-form');</script> 
<div class="actions"> 
<span class="please-wait f-left" id="shipping-estimate-loading-message" style="display:none;"> 
<?php echo Mage::helper('webdevlopers_productpageshipping')->__('') ?> 
</span> 
<div class="f-right"> 
<button type="button" id ="check1234" title="<?php echo Mage::helper('webdevlopers_productpageshipping')->getButton(); ?>" 
onclick="estimateProductShipping()" class="button"> 

<span><span style ="font-size:11px; padding:5px;"> 
<?php echo Mage::helper('webdevlopers_productpageshipping')->__('CHECK') ?></span></span> 
</button> 
</div> 
</div> 
</div> 
</div> 

<!-- chnage 
<a id="delivery-pincode-change" href="javascript:void(0)">change</a>
change  end-->

<div id="shipping-estimate-results" style="display:none"> 
</div> 




<script type="text/javascript"> 

( function($) { 
$(document).ready(function(){ 
$('#estimate_postcode').keydown(function(e){ 

var items = $$(['.shipping-estimation-form input', 
'.shipping-estimation-form select', 
'#product_addtocart_form input', 
'#product_addtocart_form select']); 
var estimationUrl = '<?php echo $this->jsQuoteEscape($this->getEstimateUrl());?>'; 
var parameters = Form.serializeElements(items, true); 
console.log("zipcode onkeypress worked"); 
if (!e) e = window.event; 
var keyCode = e.keyCode || e.which; 
if (keyCode == '13'){ 
//disable default enter action 
e.preventDefault(); 
console.log("Enter button was pressed"); 
$('#shipping-estimate-loading-message').show(); 
$('#shipping-estimate-results').hide(); 

new Ajax.Updater('shipping-estimate-results', estimationUrl, { 
parameters: parameters, 
onComplete: function() { 
console.log("ajax updater worked"); 
$('#shipping-estimate-loading-message').hide(); 
$('#shipping-estimate-results').show(); 
$('#unique_id').hide(); 
//$('unique_id').hide(); 
$('estimate_postcode').val()
} 
}); 
}; 
}); 
}); 
} ) ( jQuery ); 

function estimateProductShipping() 
{ 

var estimationUrl = '<?php echo $this->jsQuoteEscape($this->getEstimateUrl());?>'; 
var items = $$(['.shipping-estimation-form input', 
'.shipping-estimation-form select', 
'#product_addtocart_form input', 
'#product_addtocart_form select']); 

var validationResult = true; 

// Check the valid input 
if (!items.map(Validation.validate).all()) { 
return; 
} 

var parameters = Form.serializeElements(items, true); 

$('shipping-estimate-loading-message').show(); 
$('shipping-estimate-results').hide(); 


new Ajax.Updater('shipping-estimate-results', estimationUrl, { 
parameters: parameters, 
onComplete: function() { 
console.log("ajax updater worked"); 
$('shipping-estimate-loading-message').hide(); 
$('shipping-estimate-results').show(); 
// $('#unique_id').hide(); 
$('unique_id').hide(); 
$('estimate_postcode').val()
} 
}); 
}

function changeEstimate(){
    $('unique_id').show();
    $('shipping-estimate-results').hide();
}

/* 

Event.observe('delivery-pincode-change', 'click', function(event){
$('unique_id').show();
$('shipping-estimate-results').hide();               
$('delivery-html').hide();
});

*/


/* 

$(document).ready(function(){ 
$('check1234').on('click', function(){ 
$('#unique_id').hide(); 
$('#shipping-estimate-results').show(); 
}); 
}); 

*/ 
//]]> 
</script> 



<!-- Raph --> 

<?php if ($this->htmlEscape($this->getFieldValue('postcode'))): ?> 
<script type="text/javascript"> 
Event.observe(window, 'load', function() { 
estimateProductShipping(); 
}); 
</script> 
<?php endif; ?> 

<!-- Raph end--> 

<?php endif;?> 

Results.phtml :

<div class="block block-shipping-estimate block-shipping-results" id ="shipping-estimate-results" >
    <div class="block-title">
        <strong><span>
        <?php 
    echo Mage::helper('webdevlopers_productpageshipping')->getShiptitle(); 
        ?>
        </span></strong>
    </div>
    <div class="block-content">
<?php if ($this->getResult()):?>
        <dl>
            <?php foreach ($this->getResult() as $code => $_rates): ?>
                <dt><?php echo $this->getCarrierName($code) ?></dt>
                <dd>
                    <ul>
                    <?php foreach ($_rates as $_rate): ?>
                        <li<?php if ($_rate->getErrorMessage()) echo ' class="error-msg"';?>>
                           <?php if ($_rate->getErrorMessage()): ?>
                                <?php echo $_rate->getErrorMessage() ?>
                           <?php else: ?>
                                <?php 
                            //  echo $_rate->getMethodTitle() 
                                ?>
                                <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
                                <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?>


                                <!-- sat -->

                                <p style="font-size:20px;"><?php echo "Available with 14 sellers at";?>
                                <?php  $addressInfo = $this->getRequest()->getPost('estimate',array()); ?>
                                <?php if(isset($addressInfo['postcode']) && $addressInfo['postcode']):?>
                                    <?php echo ' '.$this->htmlEscape($addressInfo['postcode']); ?>
                                <?php endif;?>
                                    <a style="text-decoration: underline" href="javascript:void(0)" onclick="changeEstimate();"><?php echo $this->__('change')?></a>
                                </p>



                                <p class="vship1">
                                  <?php echo "Selling Price + " . str_replace('.00','',$_excl) . " Delivery ";?>
                                </p>


                                <!-- sat -->



                                <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
                                    (<?php echo Mage::helper('webdevlopers_productpageshipping')->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
                                <?php endif; ?>
                           <?php endif ?>
                        </li>
                    <?php endforeach; ?>
                    </ul>
                </dd>
            <?php endforeach; ?>
        </dl>
        <?php else: ?>
        <?php //echo $this->getMessagesBlock()->toHtml(); ?>
        <?php echo Mage::helper('webdevlopers_productpageshipping')->getResult(); ?>
        <span><a style="text-decoration: underline" href="javascript:void(0)" onclick="changeEstimate();"><?php echo $this->__('change')?></a></span>
<?php endif;?>
    </div>
</div>

ex : link ,zip code : 110001

12
  • 1
    what you want please elaborate more and add code of productpageshipping/estimate/estimate estimateAction of estimateController in your question. Commented Mar 30, 2016 at 17:31
  • i updated the code with estimateconroller.php Commented Mar 30, 2016 at 17:37
  • for ex, if there 3 zip codes : "1,2,3" 1 -> Delivery available ,cod available. 2-> Delivery available , Cod not avaialable , 3 - > delivery not available. Commented Mar 30, 2016 at 17:38
  • i want to display these messages and need an option to enter some zip codes in code , to display message number 2). please let me know if you need more clarifications. Commented Mar 30, 2016 at 17:39
  • 1
    can you share restricted zip codes or how to identified this zip codes?
    – Abdul
    Commented Mar 31, 2016 at 5:01

2 Answers 2

1
+50

you can get zip code and add condition like not make it at on your requirement

$currcode=Mage::app()->getRequest()->getPost('estimate');



$zipcodeshop=Mage::getStoreConfig('checkdelivery/general/pincode');
  $zipcodecod=Mage::getStoreConfig('cod/cod/zipcode');
  $zipcodeshoparrray=explode(',',$zipcodeshop);
  $zipcodecodarrray=explode(',',$zipcodecod);
  if (in_array($currcode['zipcode'], $zipcodeshoparrray, true) && in_array($currcode['zipcode'], $zipcodecodarrray, true)) {

   echo "shipping is available cod is available";

     } else if (in_array($currcode['zipcode'], $zipcodeshoparrray, false) && in_array($currcode['zipcode'], $zipcodecodarrray, true)) {

   echo "shipping is not available cod is available";

     }
else if (in_array($currcode['zipcode'], $zipcodeshoparrray, true) && in_array($currcode['zipcode'], $zipcodecodarrray, false)) {

   echo "shipping is  available cod is not available";

     }else {
    echo "shipping is not available";
   }
24
  • here you mentioned $zipcodeshop='11011,11002,11012'; but we saved zip codes in backend , can you please update code for backend Commented Apr 7, 2016 at 7:16
  • this is set in system configuration? can you give me field html? Commented Apr 7, 2016 at 7:23
  • for shipping : prntscr.com/ap5xhj <textarea id ="checkdelivery_general_pincode" name ="groups[general][fields][pincode][value]" class =" textarea" rows ="2" cols="15">110001</textarea> Commented Apr 7, 2016 at 7:31
  • added the code .. also do for other too Commented Apr 7, 2016 at 7:34
  • for COD = > prntscr.com/ap5ymi <textarea id ="cod_cod_zipcode" name ="groups[cod][fields][zipcode][value]" class =" textarea" rows ="2" cols="15">110001,110002,1234</textarea> Commented Apr 7, 2016 at 7:34
1

I have create a module for such functionality. But I have add this availability check in cart page. but this is not an issue. You can add this where you want to add. in admin section create a section with some text area you can enter all your pin-codes, messages.

Now create an Ajax in view page, what will take the pincode from user side and send it to controller. In controller fetch data from admin section and check it for different text area. Based on different text-box you can show different messages.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.