Jump to content
Sign in to follow this  
wheeloftime

Estimated Shipping Costs

Recommended Posts

Would it be possible to add the shipping cost to the total?

 

With that you mean to add the cart total to the estimated shipping costs ?

I guess that shouldn't be much of a problem.

Share this post


Link to post
Share on other sites
Yes, that's what I meant.

 

akosh,

 

I did a quick test to have the cart total with the estimated shipping costs and although by itself not a problem I am bit wondering what output you have in mind ?

Looking at my own shipping options they can be up to three or four and then the question arises for which one to add the cart total and if that might be useful. Or if you would put a grand total with every shipping option the output wouldn't be very readable anymore.

Maybe you have only one shipping option and it would make more sense ?!

Share this post


Link to post
Share on other sites
akosh,

 

I did a quick test to have the cart total with the estimated shipping costs and although by itself not a problem I am bit wondering what output you have in mind ?

Looking at my own shipping options they can be up to three or four and then the question arises for which one to add the cart total and if that might be useful. Or if you would put a grand total with every shipping option the output wouldn't be very readable anymore.

Maybe you have only one shipping option and it would make more sense ?!

 

I was thinking fo something like this:

 

http://www2.mio-tech.be/shop/product_info....products_id=150

 

(add it to the cart)

Share this post


Link to post
Share on other sites
I was thinking fo something like this:

 

http://www2.mio-tech.be/shop/product_info....products_id=150

 

(add it to the cart)

 

I see what you mean and it looks good but would mean a whole different approach. It is not something I have planned as I am happy with it as it is now but as with all contributions you can shape it to your needs.

Share this post


Link to post
Share on other sites

Do you know where I could place </form> to get the shipping estimator to work?

 

<?php
/*
 $Id: shopping_cart.php,v 1.73 2003/06/09 23:03:56 hpdl Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 require("includes/application_top.php");

 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);

 $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART));
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="0" cellpadding="5">
 <tr>
   <td class="line" width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
   </table></td>
<!-- body_text //-->
   <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
       </tr>
       <tr>
         <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
       </tr>
     </table> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<tr>
  <td><?php include(DIR_WS_MODULES . FILENAME_ESTIMATED_SHIPPING); ?></td>
</tr>
   </table></td>
         <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
     <tr>
       
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
  
<?php
 if ($cart->count_contents() > 0) {
?>
     <tr>
       <td>
<?php
   $info_box_contents = array();
   $info_box_contents[0][] = array('align' => 'center',
                                   'params' => 'class="productListing-heading"',
                                   'text' => TABLE_HEADING_REMOVE);

   $info_box_contents[0][] = array('params' => 'class="productListing-heading"',
                                   'text' => TABLE_HEADING_PRODUCTS);

   $info_box_contents[0][] = array('align' => 'center',
                                   'params' => 'class="productListing-heading"',
                                   'text' => TABLE_HEADING_QUANTITY);

   $info_box_contents[0][] = array('align' => 'right',
                                   'params' => 'class="productListing-heading"',
                                   'text' => TABLE_HEADING_TOTAL);

   $any_out_of_stock = 0;
   $products = $cart->get_products();
   for ($i=0, $n=sizeof($products); $i<$n; $i++) {
// Push all attributes information in an array
     if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
       while (list($option, $value) = each($products[$i]['attributes'])) {
         echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
         $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
                                     from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                     where pa.products_id = '" . $products[$i]['id'] . "'
                                      and pa.options_id = '" . $option . "'
                                      and pa.options_id = popt.products_options_id
                                      and pa.options_values_id = '" . $value . "'
                                      and pa.options_values_id = poval.products_options_values_id
                                      and popt.language_id = '" . $languages_id . "'
                                      and poval.language_id = '" . $languages_id . "'");
         $attributes_values = tep_db_fetch_array($attributes);

         $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
         $products[$i][$option]['options_values_id'] = $value;
         $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
         $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
         $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
       }
     }
   }

   for ($i=0, $n=sizeof($products); $i<$n; $i++) {
     if (($i/2) == floor($i/2)) {
       $info_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $info_box_contents[] = array('params' => 'class="productListing-odd"');
     }

     $cur_row = sizeof($info_box_contents) - 1;

     $info_box_contents[$cur_row][] = array('align' => 'center',
                                            'params' => 'class="productListing-data" valign="top"',
                                            'text' => tep_draw_checkbox_field('cart_delete[]', $products[$i]['id']));

     $products_name = '<table border="0" cellspacing="2" cellpadding="2">' .
                      '  <tr>' .
                      //'    <td class="productListing-data" align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td>' .
                      '    <td class="productListing-data" valign="top"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>';

     if (STOCK_CHECK == 'true') {
       $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
       if (tep_not_null($stock_check)) {
         $any_out_of_stock = 1;

         $products_name .= $stock_check;
       }
     }

     if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
       reset($products[$i]['attributes']);
       while (list($option, $value) = each($products[$i]['attributes'])) {
         $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ': ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';
       }
     }

     $products_name .= '    </td>' .
                       '  </tr>' .
                       '</table>';

     $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"',
                                            'text' => $products_name);

     $info_box_contents[$cur_row][] = array('align' => 'center',
                                            'params' => 'class="productListing-data" valign="top"',
                                            'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));

     $info_box_contents[$cur_row][] = array('align' => 'right',
                                            'params' => 'class="productListing-data" valign="top"',
                                            'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</b>');
   }

   new productListingBox($info_box_contents);
?>
       </td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td>
     </tr>
<?php
   if ($any_out_of_stock == 1) {
     if (STOCK_ALLOW_CHECKOUT == 'true') {
?>
     <tr>
       <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>
     </tr>
<?php
     } else {
?>
     <tr>
       <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>
     </tr>
<?php
     }
   }
?>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main"><?php echo tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART); ?></td>
<?php
   $back = sizeof($navigation->path)-2;
   if (isset($navigation->path[$back])) {
?>
               <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td>
<?php
   }
?>
               <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image_button('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) . '</a>'; ?></td>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
<?php
 } else {
?>
     <tr>
       <td align="center" class="main"><?php new infoBox(array(array('text' => TEXT_CART_EMPTY))); ?></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
    
           </table></td>
         </tr>
       </table></td>
 
     </tr>
<?php
 }
?>
  
</table></td>
             </tr>
           </table></td>
       </tr>
     </table>
     
   </td>




<!-- body_text_eof //-->
   </tr>

</table>
<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Share this post


Link to post
Share on other sites
Do you know where I could place </form> to get the shipping estimator to work?

 

 

akosh,

 

yes, read post #20 on page 1 of this thread where rezdwan gives a working solution for use on the shopping cart page.

Share this post


Link to post
Share on other sites
akosh,

 

yes, read post #20 on page 1 of this thread where rezdwan gives a working solution for use on the shopping cart page.

 

Yes I know, I have read that, but I'm trying to to place the shipping estimator box beside the shopping cart.

 

<td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<tr>

<td><?php include(DIR_WS_MODULES . FILENAME_ESTIMATED_SHIPPING); ?></td>

</tr>

</table></td>

<td><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

 

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

.....

Share this post


Link to post
Share on other sites
Yes I know, I have read that, but I'm trying to to place the shipping estimator box beside the shopping cart.

 

<td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?>

    <table width="100%" border="0" cellspacing="0" cellpadding="0">

      <tr>

        <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

      </tr>

      <tr>

        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

      </tr>

    </table>

    <table width="100%" border="0" cellspacing="0" cellpadding="0">

      <tr>

        <td><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<tr>

  <td><?php include(DIR_WS_MODULES . FILENAME_ESTIMATED_SHIPPING); ?></td>

</tr>

  </table></td>

        <td><table width="100%" border="0" cellspacing="0" cellpadding="0">

            <tr>

              <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

    <tr>

     

    </tr>

    <tr>

      <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

    </tr>

.....

 

I think that will be a tough place but it might work as long as you keep in mind that the estimated shipping box MUST be called upon AFTER the closing </form> tag otherwise the ES box will not work !

Share this post


Link to post
Share on other sites
I think that will be a tough place but it might work as long as you keep in mind that the estimated shipping box MUST be called upon AFTER the closing </form> tag otherwise the ES box will not work !

 

Actually, I don't think it can be done, at least I can't do it. I can put it on the right side, but not the left. The shipping estimator will always be above the shopping cart if you want it on the left side. Do you have any ideas?

Share this post


Link to post
Share on other sites
Actually, I don't think it can be done, at least I can't do it. I can put it on the right side, but not the left. The shipping estimator will always be above the shopping cart if you want it on the left side.? Do you have any ideas?

 

Well, I guess it would mean a total reconstructuring of the shopping cart page as with the columns as there are default now a shipping calculator on the left or right won't fit and/or look nice. Something like the example you gave would be a nice solution but not something quickly done. I will have a second look at it though but can't promise I will come up with something similar as I have little to no time to spend on programming right now and near future.

Edited by wheeloftime

Share this post


Link to post
Share on other sites

Is there a current contribution that displays shipping fees in the shopping cart when a person enters a postal code? If not, I may want to start building one. I have noticed this in a few shopping systems out there.


· willross

··········

Share this post


Link to post
Share on other sites
Is there a current contribution that displays shipping fees in the shopping cart when a person enters a postal code? If not, I may want to start building one. I have noticed this in a few shopping systems out there.

 

I thought there is one which is country and state based which you can show in the shopping cart but one based on postal code I don't believe there already is.

Share this post


Link to post
Share on other sites

wheeloftime

 

Well, I better start working. I will ask a couple of the admins where the estimated (or exact) shipping data is coming from and what carriers are used. If it comes directly from the carrier, the shopping cart might have to be SSL'd. If it is querying a table that was previously downloaded from the carrier, then not.


· willross

··········

Share this post


Link to post
Share on other sites
wheeloftime

 

Well, I better start working. I will ask a couple of the admins where the estimated (or exact) shipping data is coming from and what carriers are used. If it comes directly from the carrier, the shopping cart might have to be SSL'd. If it is querying a table that was previously downloaded from the carrier, then not.

 

Will,

 

Some will use a realtime system provided by their postal system, many will use zone, table or whatever more shipping modules there are available. My estimated shipping cost module mimics the first checkout page without needing any SSL as there is no checkout or any other vulnerable data involved. If you study the checkout_shipping page you will find an interaction between availabe shipping modules and the order class and from there you will have to find a way to collect the correct data based upon the information you have from your customer.

Good luck and I am curious which direction you will go !

 

grtz,

Howard

Share this post


Link to post
Share on other sites

wheeloftime

 

Thanks. I will try building based on what shipping method or module is chosen for the store or product(s) in the cart. Then provide a <input> or <select> or combination of both that corresponds with the required info (zip code, country, etc.).

 

It might not be too bad if I pull code from the checkout_shipping page. That could help with compatibility (free shipping, zone based rates, etc.).


· willross

··········

Share this post


Link to post
Share on other sites

I'd like to thank wheeloftime for the great contribution, and all the help he's been giving to everyone in this thread. I just tried installing this contribution (adding it to the index from step 6B) and I keep getting this error:

 

Fatal error: Cannot instantiate non-existent class: httpclient in /home/elaine/domains/creativeworks4u.com/public_html/shop/includes/modules/shipping/ups.php on line 247

 

Has anyone seen this problem before?

Share this post


Link to post
Share on other sites
I'd like to thank wheeloftime for the great contribution, and all the help he's been giving to everyone in this thread.  I just tried installing this contribution (adding it to the index from step 6B) and I keep getting this error:

 

Fatal error: Cannot instantiate non-existent class: httpclient in /home/elaine/domains/creativeworks4u.com/public_html/shop/includes/modules/shipping/ups.php on line 247

 

Has anyone seen this problem before?

 

Joe,

 

It's a strange error for this but as I haven't tested it with the ups module it could be some incompatability between that and est. shipping.

Remember not to install the est. shipping as an infobox plus within the index page. Both together will give problems so it's either one or the other method !

Share this post


Link to post
Share on other sites

It looks like the default country is set to be the same one that is defined in the store configuration? How do you change this?

Share this post


Link to post
Share on other sites
It looks like the default country is set to be the same one that is defined in the store configuration? How do you change this?

 

Look in (catalog)/includes/modules/estimated_shipping.php for

  if ((tep_session_is_registered('customer_id')) && (!tep_not_null($country))) {
	 $country = $customer_country_id;
 } else {
	 if (!tep_not_null($country)) {
   $country = STORE_COUNTRY;
	 }
 }

Replace STORE_COUNTRY with something else.

 

Howard

Share this post


Link to post
Share on other sites
Joe,

 

It's a strange error for this but as I haven't tested it with the ups module it could be some incompatability between that and est. shipping.

Remember not to install the est. shipping as an infobox plus within the index page. Both together will give problems so it's either one or the other method !

 

 

I am getting the exact same error. Does anyone have any fix for this? were going to be using other shippers as well, can I expect this error with them as well?

 

almost to good to be true

Share this post


Link to post
Share on other sites

The weirdest thing is happening when I use this contrib. (on top of not working with ANY UPS or USPS shipping module)

 

I am using STS and it's working quite well so far. When I installed this contrib and tested it with a flat rate shipping method (which seems to be the only way to make it work), it showed the box just fine. However, It is removing my footer text (not the included footer.php stuff from osCommerce. Since I'm using STS I have my own footer text at the bottom of the page) and placeing it within the shipping estimator window. It's kind of funny, I have no idea how this is happening.

 

I suggest in your documentation you state that this does not work with any other module except flat rate shipping, etc.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×