jpweber

Quantity Price Breaks

899 posts in this topic

The only thing that I can figure is that the SQL script has gone wrong somehow.

That is what it looks like yes. Try to find out which parts of the sql script did run and then run the remainder of the sql lines.

Share this post


Link to post
Share on other sites

Hello,

Thanks for the great mod, its working great but i have some problems with formatting it on product info page maybe could someone help me with that issue. Everything seems working nice on Firefox but on IE not. I will add some screenshot to show what i mean.

 

price_break.jpg

Live example: www.bodybuilding4you.co.uk

 

As you see table going under right column of my shop.

 

That's happening because product has special price and the price break table seems be to long.

Code from product_info.php page:

        <td width="100%" class="main">
<?php
   if (tep_not_null($product_info['products_image'])) {
?>
         <table border="0" cellspacing="0" cellpadding="0">
           <tr>
             <td id="gallery" align="center" class="smallText">
						<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" title="'.$product_info['products_name'].'">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], 2*SMALL_IMAGE_WIDTH, 2*SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>
             </td>
             <td align="right" valign="top"><?php echo $products_price; ?><br><br><br><br><br><?php
   $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'");
   $products_attributes = tep_db_fetch_array($products_attributes_query);
   if ($products_attributes['total'] > 0) {
?>
         <table border="0" cellspacing="0" cellpadding="0" align="left">
           <tr>
             <td class="main" colspan="2"><?php echo TEXT_PRODUCT_OPTIONS; ?></td>
           </tr>
<?php
     $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
     while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
       $products_options_array = array();
       $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
       while ($products_options = tep_db_fetch_array($products_options_query)) {
         $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
         if ($products_options['options_values_price'] != '0') {
           $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
         }
       }

       if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) {
         $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']];
       } else {
         $selected_attribute = false;
       }
?>
           <tr>
             <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
             <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td>
           </tr>
<?php
     }
?>
         </table>
<?php
   }
?><br><br><?php // BOF qpbpp
?>
                 <table cellpadding="0" cellspacing="0" border="0" align="left">
                   <tr><td align="left" class="main" colspan="2"><?php echo TEXT_ENTER_QUANTITY . ":" . tep_draw_input_field('cart_quantity', $pf->adjustQty(1), 'size="3"'); ?>
                   </td>
				</tr>
                   <tr><td align="left" colspan="2"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?>
                   </td></tr>
          </table>
<?php // EOF qpbpp ?>
</td>
           </tr>
         </table>
<?php
   }
?>

 

If someone can fix the code for me it will be great. I'm not a php expert so that's why im asking for help.

 

And second thing is can some1 tell me how the discount category work (where i can add discount for that category made in admin)???

 

Best regards

Share this post


Link to post
Share on other sites

Hello everyone,

I have a problem to forcing the blocks granularity.

If I set the qty block (e.g. 50) and then I change the quantity value in the product_info page (e.g. 1), when I add che article to the shopping cart the quantity is not forced to 50 but remains equal to 1, then if update the cart (by update cart button) the article quantity is update to 50. This only happens the first time that I add the article to the shopping cart, if I repeat the same operation a second time for the same article (e.g. I change the quantity value in the product_info page from 50 to 2) the quantity is forced to the minimum quantity of 50. Someone can Help me?

In shopping_cart.php and PriceFormatter.php all seems ok.

Thank you

 

FMAX

Edited by FMAX

Share this post


Link to post
Share on other sites

I have installed the QPBPP before, successfully, but am running into an error with adding to another site running OSC 2.2 MS2. The version I am trying to install is 1.3.6.

 

Everything in the admin seems to be fine.

 

I installed all of the SQL, and all of the code as per instructions (well, I think I did, right?), went back over things, but could not find a solution to this PHP error popping up:

 

Parse error: syntax error, unexpected ';', expecting T_FUNCTION in includes/classes/shopping_cart.php (line 501)

 

Now, of course, the error is taking place much earlier, as line 501 is the end of the file for me.

 

Any suggestions or help would be greatly appreciated. ;)

Share this post


Link to post
Share on other sites

Help!

 

I just installed the package in v2.3.1 and when I try to access admin/login.php all I get is a blank screen. The store works fine however.

Share this post


Link to post
Share on other sites

Hi,

I installed QPBPP and everything went to plan.

I changed this code in catalog/includes/classes/shopping_cart.php:-

 

$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

if ($products = tep_db_fetch_array($products_query)) {

$prid = $products['products_id'];

$products_price = $products['products_price'];

I changed it to (as per the instructions):-

 

// BOF qpbpp

$pf->loadProduct($products_id, $languages_id); // does query if necessary and adds to

// PriceFormatterStore or gets info from it next

if ($products = $pfs->getPriceFormatterData($products_id)) {

if (tep_not_null($this->contents[$products_id]['discount_categories_id'])) {

$nof_items_in_cart_same_cat = $discount_category_quantity[$this->contents[$products_id]['discount_categories_id']];

$nof_other_items_in_cart_same_cat = $nof_items_in_cart_same_cat - $this->contents[$products_id]['qty'];

} else {

$nof_other_items_in_cart_same_cat = 0;

}

$products_price = $pf->computePrice($this->contents[$products_id]['qty'], $nof_other_items_in_cart_same_cat);

// EOF qpbpp

The problem I have though, is I am installing Online Gift Card 1.5 contribution but it is asking me to edit the original code as in the first block of text. I need to change it from p.products_tax_class_id from to p.products_tax_class_id, p.products_gift_card from

 

Does anyone know how I can incorporate the p.products_gift_card bit into the altered QPBPP? Everything else on the install went fine apart from this one little thing.

 

Thanks in advance for your help

 

Carl

Share this post


Link to post
Share on other sites

Hi,

 

I am in the middle of installing the Add-On "Quantity Price Breaks Per Product". Now I got to a point in the install.html that tells me to add some lines after a specific code snippet but that code snippet is not in there (anymore). :-/ I am using OSC 2.3.1, so the latest available version and the latest version of QPPPP, 1.36.

 

Here is the problematic section I am talking about. The install.html says:

 

catalog/admin/categories.php

After (around line 384):

 

    } elseif (tep_not_null($HTTP_POST_VARS)) {
     $pInfo->objectInfo($HTTP_POST_VARS);

 

Add

// BOF qpbpp
     $price_breaks_array = array();
     for ($count = 0; $count <= (PRICE_BREAK_NOF_LEVELS - 1); $count++) {
       if(isset($HTTP_POST_VARS['products_price' . $count]) && tep_not_null($HTTP_POST_VARS['products_price' . $count]) &&
          isset($HTTP_POST_VARS['products_qty' . $count]) && tep_not_null($HTTP_POST_VARS['products_qty' . $count])) {
         $price_breaks_array[] = array(
           'products_price' => $HTTP_POST_VARS['products_price' . $count],
           'products_qty' => $HTTP_POST_VARS['products_qty' . $count],
           'products_delete' => (isset($HTTP_POST_VARS['products_delete' . $count]) && tep_not_null($HTTP_POST_VARS['products_delete' . $count])));
       }
     }
// EOF qpbpp

 

But there is no such line anywhere in the categories.php file. So I am a bit clueless where to put the additional code as it is code that should be in the else condition brackets. :(

Anybody a solution or an idea? I wonder how everybody else has done this (I couldn´t find anybody with the same question in this thread).

 

Thanks in advance for ANY help

Sam

Edited by Katachi

Share this post


Link to post
Share on other sites

Has anyone managed to get Quantity Price Breaks Per Product to work with STS Simple Template System?

I've tried to create the $x$ tags but have run into errors.

Does anyone have a solution to this?

 

Thanks in advance

Share this post


Link to post
Share on other sites

Hi everyone, i am trying to istall this addon on osc 2.3.1 too, and i found the same problems.

 

Well is there anyone that completed this task with success ??

 

thanks in advance

SkyHook

 

Hi,

 

I am in the middle of installing the Add-On "Quantity Price Breaks Per Product". Now I got to a point in the install.html that tells me to add some lines after a specific code snippet but that code snippet is not in there (anymore). :-/ I am using OSC 2.3.1, so the latest available version and the latest version of QPPPP, 1.36.

 

Here is the problematic section I am talking about. The install.html says:

 

catalog/admin/categories.php

After (around line 384):

 

    } elseif (tep_not_null($HTTP_POST_VARS)) {
     $pInfo->objectInfo($HTTP_POST_VARS);

 

Add

// BOF qpbpp
     $price_breaks_array = array();
     for ($count = 0; $count <= (PRICE_BREAK_NOF_LEVELS - 1); $count++) {
       if(isset($HTTP_POST_VARS['products_price' . $count]) && tep_not_null($HTTP_POST_VARS['products_price' . $count]) &&
          isset($HTTP_POST_VARS['products_qty' . $count]) && tep_not_null($HTTP_POST_VARS['products_qty' . $count])) {
         $price_breaks_array[] = array(
           'products_price' => $HTTP_POST_VARS['products_price' . $count],
           'products_qty' => $HTTP_POST_VARS['products_qty' . $count],
           'products_delete' => (isset($HTTP_POST_VARS['products_delete' . $count]) && tep_not_null($HTTP_POST_VARS['products_delete' . $count])));
       }
     }
// EOF qpbpp

 

But there is no such line anywhere in the categories.php file. So I am a bit clueless where to put the additional code as it is code that should be in the else condition brackets. :(

Anybody a solution or an idea? I wonder how everybody else has done this (I couldn´t find anybody with the same question in this thread).

 

Thanks in advance for ANY help

Sam

Share this post


Link to post
Share on other sites

Hi everyone, i am trying to istall this addon on osc 2.3.1 too, and i found the same problems.

 

Well is there anyone that completed this task with success ??

 

thanks in advance

SkyHook

 

@skyhook:

I simply added them in a logical way. For example the one I posted looks like this now:

 

$languages = tep_get_languages();
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
     $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
     $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
     $pInfo->products_url = tep_get_products_url($pInfo->products_id, $languages[$i]['id']);

  //MANUALLY MODIFIED LINES DID NOT EXIST BEFORE IN THIS PLACE ALTHOUGH THEY SHOULD BELONG BEFORE THE ABOVE qpbpp MODIFS
  // BOF qpbpp
     $price_breaks_array = array();
     for ($count = 0; $count <= (PRICE_BREAK_NOF_LEVELS - 1); $count++) {
       if(isset($HTTP_POST_VARS['products_price' . $count]) && tep_not_null($HTTP_POST_VARS['products_price' . $count]) &&
          isset($HTTP_POST_VARS['products_qty' . $count]) && tep_not_null($HTTP_POST_VARS['products_qty' . $count])) {
         $price_breaks_array[] = array(
           'products_price' => $HTTP_POST_VARS['products_price' . $count],
           'products_qty' => $HTTP_POST_VARS['products_qty' . $count]);
       }
     }
  // EOF qpbpp

 

It's working fine in my shop now. Let me know any other ones you find and I'll post my solutions here. Maybe someone can take the time to add these as installation notes to the contribution for future users with the same problems.

Share this post


Link to post
Share on other sites

I am also running 2.3.1, i totally understand that it will take time for addons to come out for it. I really would like to use this contribution as well but i seem to be running into the same issues as skyhook and katachi.

 

How did everyone get around this code change:

 

In product_info.php

 

Change this:

<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>

 

 

to this:

<?php // BOF qpbpp

//<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);

?>

<td class="main" align="right">

<table border="0" align="right">

<tr><td align="center">

<?php echo TEXT_ENTER_QUANTITY . ":" . tep_draw_input_field('cart_quantity', $pf->adjustQty(1), 'size="6"'); ?>

</td></tr>

<tr><td align="center">

<?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?>

</td></tr>

</table>

</td>

<?php // EOF qpbpp ?>

 

 

product_info.php does not have that line, i guess 2.3.1 does it a little different; here is the code from my file.

 

<div class="buttonSet">

<span class="buttonAction"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_draw_button(IMAGE_BUTTON_IN_CART, 'cart', null, 'primary'); ?></span>

 

i assume i just replace everthing between the <span></span>

Share this post


Link to post
Share on other sites

Duplicate post - sorry.

Edited by scastro

Share this post


Link to post
Share on other sites

I am also running 2.3.1, i totally understand that it will take time for addons to come out for it. I really would like to use this contribution as well but i seem to be running into the same issues as skyhook and katachi.

 

How did everyone get around this code change:

 

In product_info.php

 

Change this:

<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>

 

 

to this:

<?php // BOF qpbpp

//<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);

?>

<td class="main" align="right">

<table border="0" align="right">

<tr><td align="center">

<?php echo TEXT_ENTER_QUANTITY . ":" . tep_draw_input_field('cart_quantity', $pf->adjustQty(1), 'size="6"'); ?>

</td></tr>

<tr><td align="center">

<?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?>

</td></tr>

</table>

</td>

<?php // EOF qpbpp ?>

 

 

product_info.php does not have that line, i guess 2.3.1 does it a little different; here is the code from my file.

 

<div class="buttonSet">

<span class="buttonAction"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_draw_button(IMAGE_BUTTON_IN_CART, 'cart', null, 'primary'); ?></span>

 

i assume i just replace everthing between the <span></span>

 

Use a file compare program and see which lines of code changed. The problem is that it's using the same template structure as the older version. It takes a bit of hack and slashing but it works for 2.3.1.

Share this post


Link to post
Share on other sites

Hello,

 

I have v1.3.6 installed, and it's working just as it should.

 

However, I have a question. Is there a way to disable the minimum order quantity selected function? I noticed in the FAQ section of the install documentation, it walks through how to remove the Quantity Block feature but keep minimum order quantity feature in tact. I need the opposite.

 

I understand that the last response was from a year ago but I was hoping someone that has this installed could help me out, this extension works perfectly for me except that one small issue.

Share this post


Link to post
Share on other sites

PLEASE help....

 

I am very new to osCommerce. I recently installed the QPBPP contribution. I had a few hiccups but I finally got it "mostly" working. The only problem I seemingly have now is (I beleive) on the product_listing.php file.

 

If you visit my store: www.graphiccentre.com and click on a category and then click on "details" button you get a "product not found" message. This does not happen from the index.php page or for sub-levels on categories where I have not yet applied any price breaks(not sure why). Once I add a price break, all items below that items have the same issue.

 

I thought this may have something to do with the product_listing.php file somehow. Can anyone help me? I know this thread is old but I am reaching for any help I can get...Jan, you seem to be the savior in this thread (many of your other comments have helped me fix other issues)....any help here?

 

VERY THANKFUL,

Benji

Share this post


Link to post
Share on other sites

If you visit my store: www.graphiccentre.com and click on a category and then click on "details" button you get a "product not found" message. This does not happen from the index.php page or for sub-levels on categories where I have not yet applied any price breaks(not sure why). Once I add a price break, all items below that items have the same issue.

There is a problem with the PHP code (you use a template and they sometimes have let's say peculiar code) where the products_id is missing in the links buy_now&products_id=">

 

<a href="http://www.yoursite.com/index.php?cPath=69&sort=2a&action=buy_now&products_id="><img src="includes/languages/english/images/buttons/button_in_cart.gif" border="0" alt="Buy Now" title=" Buy Now " width="79" height="14"></a>

 

Hard to say what the problem is without seeing the code but since the image and product description is OK it is probably a minor issue.

Share this post


Link to post
Share on other sites

There is a problem with the PHP code (you use a template and they sometimes have let's say peculiar code) where the products_id is missing in the links buy_now&products_id=">

 

<a href="http://www.yoursite.com/index.php?cPath=69&sort=2a&action=buy_now&products_id="><img src="includes/languages/english/images/buttons/button_in_cart.gif" border="0" alt="Buy Now" title=" Buy Now " width="79" height="14"></a>

 

Hard to say what the problem is without seeing the code but since the image and product description is OK it is probably a minor issue.

 

Jan,

 

Thanks for the hint. Yes. This was an old template that I have been using as a backbone for my site. I would like to know which PHP source code you think this may be coming from? I was thinking that the root of the problem was caused somewhere in my "catalog/includes/modules/product_listing.php" code. I will include that page's code below for any clues that you may find. After I made this post I realized that the "add to cart" button was causing the same error so I am sure there is a similar problem with it as well. I came to the conclusion that the index.php (homepage) of the site is working properly because the code does not call to the product_listing.php code (adding to the theory that it is my root problem). I just can not figure out where the issue is. I know that you are very busy but I really appreciate any advice you could give a newby like myself. :blush:

 

Also, there is the separate matter of the price breaks not showing on the product detail pages. In other words, it has a small table with two rows and columns (equal to the number of price breaks). There seems to be a top row missing - where it should show the quantities 1+, 25 , 50 , etc. Can you give me some direction on where to look to correct this? I thought that it may have something to do with table spacing or alignment but when i checked the table definitions they all seemed in order.

 

Code below for product_listing.php

<?php
/*
 $Id: product_listing.php,v 1.44 2003/06/09 22:49:59 hpdl Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/
 // BOF qpbpp

 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_LISTING);
// EOF qpbpp
 $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

 if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>
<?php
 }

 $list_box_contents = array();

 for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
   switch ($column_list[$col]) {
     case 'PRODUCT_LIST_MODEL':
       $lc_text = TABLE_HEADING_MODEL;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_NAME':
       $lc_text = TABLE_HEADING_PRODUCTS;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_MANUFACTURER':
       $lc_text = TABLE_HEADING_MANUFACTURER;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_PRICE':
       $lc_text = TABLE_HEADING_PRICE;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_QUANTITY':
       $lc_text = TABLE_HEADING_QUANTITY;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_WEIGHT':
       $lc_text = TABLE_HEADING_WEIGHT;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_IMAGE':
       $lc_text = TABLE_HEADING_IMAGE;
       $lc_align = 'center';
       break;
     case 'PRODUCT_LIST_BUY_NOW':
       $lc_text = TABLE_HEADING_BUY_NOW;
       $lc_align = 'center';
       break;
   }

   if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
     $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
   }

   $list_box_contents[0][] = array('align' => $lc_align,
                                   'params' => 'class="productListing-heading"',
                                   'text' => ' ' . $lc_text . ' ');
 }

 if ($listing_split->number_of_rows > 0) {
   $rows = 0;
   $column = 0;
   echo '


            <table cellspacing=0 cellpadding=0>
              <tr><td width=452 valign=top class=br>
             <table cellspacing=0 cellpadding=0>
              <tr><td>
                   <table cellspacing=0 cellpadding=0>                     
                    <tr><td height=1 width=452 bgcolor=#FFFFFF colspan=3></td></tr>
                    <tr><td width=1 bgcolor=#FFFFFF></td><td class=ch1 width=432 bgcolor=#5482ad height=35>'.$breadcrumb->trail(' » ').'</td><td width=1 bgcolor=#FFFFFF></td></tr>                     
                   </table>
              </td></tr>
              <tr><td>
                   <table cellspacing=1 cellpadding=0>
                    <tr> 



        ';

   $listing_query = tep_db_query($listing_split->sql_query);
   // BOF qpbpp
   $no_of_listings = tep_db_num_rows($listing_query);
   while ($_listing = tep_db_fetch_array($listing_query)) {
    $_listing['discount_categories_id'] = NULL;
   $listing[] = $_listing;
   $list_of_prdct_ids[] = $_listing['products_id'];
  }
  $list_of_prdct_ids = array_unique($list_of_prdct_ids);

   $price_breaks_query = tep_db_query("select products_id, products_price, products_qty from  " . TABLE_PRODUCTS_PRICE_BREAK . " where products_id in (" . implode(',', $list_of_prdct_ids) . ") order by products_id, products_qty");
   while ($price_break = tep_db_fetch_array($price_breaks_query)) {
         $price_breaks_array[$price_break['products_id']][] = array('products_price' => $price_break['products_price'], 'products_qty' => $price_break['products_qty']);
   }
   $discount_category_query = tep_db_query("select p.products_id, p.products_quantity, p.products_weight, discount_categories_id from " . TABLE_PRODUCTS ." p left join " . TABLE_PRODUCTS_TO_DISCOUNT_CATEGORIES . " using(products_id) where p.products_id in (" . implode(',', $list_of_prdct_ids) . ")");
  while ($dc_array = tep_db_fetch_array($discount_category_query)) {
    $discount_categories[] = array ('products_id' => $dc_array['products_id'], 'products_quantity' => $dc_array['products_quantity'], 'products_weight' => $dc_array['products_weight'], 'discount_categories_id' => $dc_array['discount_categories_id']);
  }
   for ($x = 0; $x < $no_of_listings; $x++) {
// add discount categories to the listing array
     if(!empty($discount_categories)) {
       for ($i = 0; $i < count($discount_categories); $i++) {
        if ($listing[$x]['products_id'] == $discount_categories[$i]['products_id'] ) {
	        $listing[$x]['discount_categories_id'] = $discount_categories[$i]['discount_categories_id'];
	        $listing[$x]['products_quantity'] = $discount_categories[$i]['products_quantity'];
	        $listing[$x]['products_weight'] = $discount_categories[$i]['products_weight'];
	      }
      }
    } // end if(!empty($discount_categories)
  }

//    while ($listing = tep_db_fetch_array($listing_query)) { (was original code)
for ($x = 0; $x < $no_of_listings; $x++) {
     $product_contents = array();
     $rows++;
     if (($rows/2) == floor($rows/2)) {
       $list_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $list_box_contents[] = array('params' => 'class="productListing-odd"');
     }

     $cur_row = sizeof($list_box_contents) - 1;

     for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
       $lc_align = '';

               switch ($column_list[$col]) {
         case 'PRODUCT_LIST_MODEL':
           $lc_align = '';
           $lc_text = ' ' . $listing[$x]['products_model'] . ' ';
           break;
         case 'PRODUCT_LIST_NAME':
           $lc_align = '';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a> ';
           }
           break;
         case 'PRODUCT_LIST_MANUFACTURER':
           $lc_align = '';
           $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing[$x]['manufacturers_id']) . '">' . $listing[$x]['manufacturers_name'] . '</a> ';
           break;
         case 'PRODUCT_LIST_PRICE':
           $lc_align = 'right';
           $price_breaks_from_listing = array();
           if (isset($price_breaks_array[$listing[$x]['products_id']])) {
             $price_breaks_from_listing = $price_breaks_array[$listing[$x]['products_id']];
           }
           $pf->loadProduct($listing[$x]['products_id'], $languages_id, $listing[$x], $price_breaks_from_listing);
           $lc_text = $pf->getPriceStringShort();
           break;
         case 'PRODUCT_LIST_QUANTITY':
           $lc_align = 'right';
           $lc_text = ' ' . $listing[$x]['products_quantity'] . ' ';
           break;
         case 'PRODUCT_LIST_WEIGHT':
           $lc_align = 'right';
           $lc_text = ' ' . $listing[$x]['products_weight'] . ' ';
           break;
         case 'PRODUCT_LIST_IMAGE':
           $lc_align = 'center';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';
           }
           break;
         case 'PRODUCT_LIST_BUY_NOW':
           $lc_align = 'center';
           $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing[$x]['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a> ';
           break;
       }
// EOF qpbpp

       $list_box_contents[$cur_row][] = array('align' => $lc_align,
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text);
       $product_contents[] = $lc_text;       
     }


     $product_query = tep_db_query("select products_description  from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$listing['products_id'] . "' and language_id = '" . (int)1 . "'");
     $product = tep_db_fetch_array($product_query);
     $new_products['products_description'] = $product['products_description'];

     echo '
                     <td width=225 class=br bgcolor=#FFF8F7>
                         <table cellspacing=0 cellpadding=0 width=213>
                          <tr><td colspan=2 height=15></td></tr>
                          <tr><td valign=top>'.$product_contents[0].'</td>
                              <td width=103 valign=top>
                               <table cellspacing=0 border=0  cellpadding=0>
                                <tr><td align=right height=35 valign=top>'.$product_contents[1].'</td></tr>
                                <tr><td height=4></td></tr>
                                <tr><td align=right><img src=images/m17.gif width=97 height=1></td></tr>
                                <tr><td height=15></td></tr>
                                <tr><td class=ch align=right>Price Now:</td></tr>
                                <tr><td height=1></td></tr>
                                <tr><td class=ch2 align=right height=35 valign=bottom>'.$product_contents[2].'</td></tr>
                                <tr><td height=15></td></tr>
                                <tr><td align=right><a href="'.tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . tep_image_button('small_view.gif', IMAGE_BUTTON_BUY_NOW) . '</a></td></tr>
                                <tr><td height=3></td></tr>
                                <tr><td align=right><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_BUY_NOW) . '</a></td></tr>                                
                                <tr><td height=15></td></tr>
                               </table>
                          </td></tr>
                         </table>
                        </td>

     ';
     $column ++;
     if ($column >= 2) {
       $rows ++;
       $column = 0;
       echo '

                    </tr>
                    <tr>
           ';
     } else echo '<td></td>';



   }

   echo '

                   </tr>                     
                   </table>
              </td></tr>
             </table>
             </td></tr>
             </table>              
       ';

   //new productListingBox($list_box_contents);
 } else {
   $list_box_contents = array();

   $list_box_contents[0] = array('params' => 'class="productListing-odd"');
   $list_box_contents[0][] = array('params' => 'class="productListing-data"',
                                  'text' => TEXT_NO_PRODUCTS);

   echo '<div class=PageHeading>Categories</div>';
   new productListingBox($list_box_contents);
 }

 if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>

<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr><td height=20></td></tr>
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>

<?php
 }
?>

 

Thank you again for your help and a wonderful contribution!

Share this post


Link to post
Share on other sites

 

Also, there is the separate matter of the price breaks not showing on the product detail pages. In other words, it has a small table with two rows and columns (equal to the number of price breaks). There seems to be a top row missing - where it should show the quantities 1+, 25 , 50 , etc. Can you give me some direction on where to look to correct this? I thought that it may have something to do with table spacing or alignment but when i checked the table definitions they all seemed in order.

 

 

Okay. I decided to take another crack at fixing these issues today. I think this contribution is too useful to abandon.

 

I still have NOT solved my issues with my "details" and "add to cart" buttons not working. However, I did discover that the above issue with the quantity header not displaying on the product detail pages was due to a style definition for the table. I discovered this by using Firebug in Firefox. I simply right-clicked the table and reviewed the table row definitions. In true style of tables, I noticed that the header was defined by class="infoBoxHeading" and the other rows were defined with class="infoBoxContents". I changed the infoBoxHeading to infoBoxContents - voila! Like magic it appeared! Now I went back to my source coding and did a site-wide search for infoBoxHeading and replaced it on the PriceFormatter.php coding. This could have also been accomplished by changing the stylesheet reference code...I may go back and add a more appealing style later. For now, it is a small victory! :D

 

I know Jan will probably be able to get me a solution for the details and cart buttons...I wish I could find the source of that pain.

Share this post


Link to post
Share on other sites

I am currently installing this in v2.3.1, and in the product_info.php file.

 

The instructions say to replace the following section, with the new code, but the following section is not in 2.3.1.

 

<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>

 

This is what you are supposed to replace it with:

<?php // BOF qpbpp
               //<td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);
?>
               <td class="main" align="right">
                 <table border="0" align="right">
                   <tr><td align="center">
                     <?php echo TEXT_ENTER_QUANTITY . ":" . tep_draw_input_field('cart_quantity', $pf->adjustQty(1), 'size="6"'); ?>
                   </td></tr>
                   <tr><td align="center">
                     <?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?>
                   </td></tr>
          </table>
               </td>
<?php // EOF qpbpp ?>

 

Any thoughts on what I should do?

Share this post


Link to post
Share on other sites

Next one:

 

File catalog/includes/application_top.php

 

This code does not exist:

 

                                $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']);

 

So therefore where am I supposed to put this:

 

//BOF qpbpp
                               //$cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']);
                               $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id'])) + $HTTP_POST_VARS['cart_quantity'], $HTTP_POST_VARS['id']);
//EOF qpbpp

 

Of course all help is greatly appreciated!

Share this post


Link to post
Share on other sites

Please ignore my posts, somehow everything seems to work fine once I replaced the includes/modules/product_listing.php file with the original unmodified one!

Share this post


Link to post
Share on other sites

Hello, Hope someone can give me some input

 

First, I'm a complete newbie, and as you can see My First Post. If I've made a mistake in posting, I apologize, I've never posted to a forum before. I find reading is the best way to learn but I am now stuck. I have NO knowledge of PHP. I can handle html but I am not a programer by any sense of the word. I've completed 25 contributions to my site and they all are doing well. My store is still in the works.

 

Problem: I sell repair parts and give a discount for quantity. I use the "special" in OSC to give the first discount off of retail price of 15% to all customers for purchasing 1 item. I then have QPBPP set for the next discount of 25% for purchasing 2 to 9 items and last a 40% discount for purchasing 10 items or more. I like the fact that the strike-out and the "Red" On-Sale appears on the Product List. The cart calculates the sub-total correctly if only 1 item is purchased but, the sub-total adds together the "On Sale" special price if any choice is made above 1. The added total at the top of the cart is correct but at the bottom sub total it's wrong. If I travel clear through the shopping cart to Purchase the items then the Shopping cart uses the correct amount. The wrong added amount only shows at the bottom of the first add-to-shopping-cart page. If I remove the "special" then everything works fine but the Product List page states a price of "From $xxxx" which is the 40% discounted price. Can anyone help with making the "special" and the "shopping cart" do the right math on the shopping cart page.

 

have gone over all the QPBPP install 3 to 4 times and used Araxis and WinMerge to verify the install. The SQL seems to be working as designed.

 

Thanks in advance.

Share this post


Link to post
Share on other sites

Hello, Hope someone can give me some input

 

First, I'm a complete newbie, and as you can see My First Post. If I've made a mistake in posting, I apologize, I've never posted to a forum before. I find reading is the best way to learn but I am now stuck. I have NO knowledge of PHP. I can handle html but I am not a programer by any sense of the word. I've completed 25 contributions to my site and they all are doing well. My store is still in the works.

 

Problem: I sell repair parts and give a discount for quantity. I use the "special" in OSC to give the first discount off of retail price of 15% to all customers for purchasing 1 item. I then have QPBPP set for the next discount of 25% for purchasing 2 to 9 items and last a 40% discount for purchasing 10 items or more. I like the fact that the strike-out and the "Red" On-Sale appears on the Product List. The cart calculates the sub-total correctly if only 1 item is purchased but, the sub-total adds together the "On Sale" special price if any choice is made above 1. The added total at the top of the cart is correct but at the bottom sub total it's wrong. If I travel clear through the shopping cart to Purchase the items then the Shopping cart uses the correct amount. The wrong added amount only shows at the bottom of the first add-to-shopping-cart page. If I remove the "special" then everything works fine but the Product List page states a price of "From $xxxx" which is the 40% discounted price. Can anyone help with making the "special" and the "shopping cart" do the right math on the shopping cart page.

 

have gone over all the QPBPP install 3 to 4 times and used Araxis and WinMerge to verify the install. The SQL seems to be working as designed.

 

Thanks in advance.

 

PLEASE DISREGARD THIS POST:

 

Found the problem. Had a conflict in classes/shopping_cart

Share this post


Link to post
Share on other sites

Is there a kind soul here in the forum to help a poor fellow Dane :-)

 

I want like this

 

1-9 pc. $10 | 10+pc. $8

 

where I show my clients in the product listing that there are several price categories. So that my clients do not have to visit the product info page.

 

I've been through all pages of Quantity Price Break without success. Give me a tips :-)

 

Thanks in advance

 

Havkrog / Denmark

 

my product_listing.php

<?php
/*
 $Id: product_listing.php 1739 2007-12-20 00:52:16Z hpdl $
 adapted for Separate Pricing Per Customer v4.2 2007/08/23, adapted for QPBPP for SPPC v2.0 2008/11/11

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

// BOF QPBPP for SPPC
 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_LISTING);
// EOF QPBPP for SPPC
?>
<form name="cart_multi" method="post" action="<?php echo tep_href_link(FILENAME_SHOPPING_CART, tep_get_all_get_params(array('action')) . 'action=add_multi', 'NONSSL'); ?>">
<?php

?>
<br>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
 <tr>
   <td align="right" class="main"><?php echo tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>
 </tr>
</table>

<?php
 $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
 //echo $listing_sql;

 if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>
<?php
 }
 $data_ok = ($listing_split->number_of_rows > 0);
if ((PRODUCT_LIST_DESCRIPTION ) && $data_ok) {
	$listing_query = tep_db_query($listing_split->sql_query);
	while ($products = tep_db_fetch_array($listing_query)) $id_array[] = $products['products_id'];  
	$pid_string = implode(',', array_unique($id_array));
   $product_query = tep_db_query("select products_id, products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id in (" . $pid_string . ") and language_id = '" . (int)$languages_id . "'");
	while ($products = tep_db_fetch_array($product_query)) {    
			$t_desc[$products['products_id']] = substr(strip_tags($products['products_description']), 0, PRODUCT_LIST_DESCRIPTION_MAX_LENGTH);  
  }
}
function product_description($product_id,$link,$thumb=false) {
   global $t_desc;
	if (PRODUCT_LIST_DESCRIPTION) {
   	return '<br /><span class="productDesc">' . $t_desc[$product_id] . $link . '<font color="#800000"><b> ...' . MORE . '</b></a></span>';
	} else {
	return false; 
	}
 }
 $list_box_contents = array();

 for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
   switch ($column_list[$col]) {
     case 'PRODUCT_LIST_MODEL':
       $lc_text = TABLE_HEADING_MODEL;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_NAME':
       $lc_text = TABLE_HEADING_PRODUCTS;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_MANUFACTURER':
       $lc_text = TABLE_HEADING_MANUFACTURER;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_PRICE':
       $lc_text = TABLE_HEADING_PRICE;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_QUANTITY':
       $lc_text = TABLE_HEADING_QUANTITY;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_WEIGHT':
       $lc_text = TABLE_HEADING_WEIGHT;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_IMAGE':
       $lc_text = TABLE_HEADING_IMAGE;
       $lc_align = 'center';
       break;
     case 'PRODUCT_LIST_BUY_NOW':
       $lc_text = TABLE_HEADING_BUY_NOW;
       $lc_align = 'center';
       break;
   }

  //sort order & quantity change
   if ($column_list[$col] == 'PRODUCT_LIST_SORT_ORDER'){break;}
   if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') && ($column_list[$col] != 'PRODUCT_LIST_MULTIPLE')) {
  // if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
//end sort order & quantity change
     $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
   }

   $list_box_contents[0][] = array('align' => $lc_align,
                                   'params' => 'class="productListing-heading"',
                                   'text' => ' ' . $lc_text . ' ');
 }

 if ($listing_split->number_of_rows > 0) {

   $rows = 0;
   $listing_query = tep_db_query($listing_split->sql_query);
// BOF Separate Pricing per Customer
   $no_of_listings = tep_db_num_rows($listing_query);
// global variable (session) $sppc_customer_group_id -> local variable customer_group_id

 if (isset($_SESSION['sppc_customer_group_id']) && $_SESSION['sppc_customer_group_id'] != '0') {
 $customer_group_id = $_SESSION['sppc_customer_group_id'];
 } else {
  $customer_group_id = '0';
 }

   while ($_listing = tep_db_fetch_array($listing_query)) {
// BOF QPBPP for SPPC
    $_listing['discount_categories_id'] = NULL;
    $listing[] = $_listing;
    $list_of_prdct_ids[] = $_listing['products_id'];
   }
   $list_of_prdct_ids = array_unique($list_of_prdct_ids);
// EOF QPBPP for SPPC
// next part is a debug feature, when uncommented it will print the info that this module receives
/*
  echo '<pre>';
  print_r($listing);
  echo '</pre>';
*/

// get all product prices for products with the particular customer_group_id
// however not necessary for customer_group_id = 0
if ($customer_group_id != '0') {
// BOF QPBPP for SPPC
 $pg_query = tep_db_query("select pg.products_id, customers_group_price as price from " . TABLE_PRODUCTS_GROUPS . " pg where products_id in (" . implode(',', $list_of_prdct_ids) . ") and pg.customers_group_id = '" . $customer_group_id . "' and customers_group_price != null");
// EOF QPBPP for SPPC

while ($pg_array = tep_db_fetch_array($pg_query)) {
$new_prices[] = array ('products_id' => $pg_array['products_id'], 'products_price' => $pg_array['price'], 'specials_new_products_price' => '', 'final_price' => $pg_array['price']);
}
   for ($x = 0; $x < $no_of_listings; $x++) {
// replace products prices with those from customers_group table
     if(!empty($new_prices)) {
       for ($i = 0; $i < count($new_prices); $i++) {
        if( $listing[$x]['products_id'] == $new_prices[$i]['products_id'] ) {
	        $listing[$x]['products_price'] = $new_prices[$i]['products_price'];
	        $listing[$x]['final_price'] = $new_prices[$i]['final_price'];
	      }
      }
    } // end if(!empty($new_prices)
$listing[$x]['specials_new_products_price'] = ''; // makes sure that a retail specials price doesn't carry over to another customer group
$listing[$x]['final_price'] = $listing[$x]['products_price']; // final price should not be the retail special price
  } // end for ($x = 0; $x < $no_of_listings; $x++)
} // end if ($customer_group_id != '0')

// an extra query is needed for all the specials

$specials_query = tep_db_query("select products_id, specials_new_products_price from " . TABLE_SPECIALS . " where products_id in (" . implode(',', $list_of_prdct_ids) . ") and status = '1' and customers_group_id = '" . $customer_group_id . "'");
while ($specials_array = tep_db_fetch_array($specials_query)) {
$new_s_prices[] = array ('products_id' => $specials_array['products_id'], 'products_price' => '', 'specials_new_products_price' => $specials_array['specials_new_products_price'] , 'final_price' => $specials_array['specials_new_products_price']);
}

// add the correct specials_new_products_price and replace final_price
for ($x = 0; $x < $no_of_listings; $x++) {
   if(!empty($new_s_prices)) {
    for ($i = 0; $i < count($new_s_prices); $i++) {
	    if( $listing[$x]['products_id'] == $new_s_prices[$i]['products_id'] ) {
	    $listing[$x]['specials_new_products_price'] = $new_s_prices[$i]['specials_new_products_price'];
	    $listing[$x]['final_price'] = $new_s_prices[$i]['final_price'];
	    }
    }
  } // end if(!empty($new_s_prices)
} // end for ($x = 0; $x < $no_of_listings; $x++)

// BOF QPBPP for SPPC
   $price_breaks_query = tep_db_query("select products_id, products_price, products_qty from  " . TABLE_PRODUCTS_PRICE_BREAK . " where products_id in (" . implode(',', $list_of_prdct_ids) . ") and customers_group_id = '" . $customer_group_id . "' order by products_id, products_qty");
   while ($price_break = tep_db_fetch_array($price_breaks_query)) {
//          $price_breaks_array[$price_break['products_id']][] = array('products_price' => $price_break['products_price'], 'products_qty' => $price_break['products_qty']);
   }
// get discount category plus quantity blocks and minimum order quantity for retail
   $discount_category_query = tep_db_query("select p.products_id, p.products_qty_blocks as qtyBlocks, p.products_min_order_qty, p.products_quantity, p.manufacturers_id, p.products_weight, discount_categories_id from " . TABLE_PRODUCTS ." p left join (select products_id, discount_categories_id from " . TABLE_PRODUCTS_TO_DISCOUNT_CATEGORIES . " where products_id in (" . implode(',', $list_of_prdct_ids) . ") and customers_group_id = '" . $customer_group_id . "') as ptdc on p.products_id = ptdc.products_id where p.products_id in (" . implode(',', $list_of_prdct_ids) . ")");
  while ($dc_array = tep_db_fetch_array($discount_category_query)) {
    $discount_categories[] = array ('products_id' => $dc_array['products_id'], 'qtyBlocks' => ($customer_group_id == '0' ? $dc_array['qtyBlocks']: '1'), 'products_min_order_qty' => ($customer_group_id == '0' ? $dc_array['products_min_order_qty']: '1'), 'products_quantity' => $dc_array['products_quantity'], 'products_weight' => $dc_array['products_weight'], 'discount_categories_id' => $dc_array['discount_categories_id']);
  }
  if(!empty($discount_categories)) {
    $no_of_discount_cats = count($discount_categories);
     for ($x = 0; $x < $no_of_listings; $x++) {
// add discount categories to the listing array 
       for ($i = 0; $i < $no_of_discount_cats; $i++) {
        if ($listing[$x]['products_id'] == $discount_categories[$i]['products_id'] ) {
	        $listing[$x]['discount_categories_id'] = $discount_categories[$i]['discount_categories_id'];
	        $listing[$x]['qtyBlocks'] = $discount_categories[$i]['qtyBlocks'];
	        $listing[$x]['products_min_order_qty'] = $discount_categories[$i]['products_min_order_qty'];
	        $listing[$x]['products_quantity'] = $discount_categories[$i]['products_quantity'];
	        $listing[$x]['products_weight'] = $discount_categories[$i]['products_weight'];
	      }
      } // end for ($i = 0; $i < $no_of_discount_cats; $i++) {
    }
   } // end if(!empty($discount_categories)

// if customer group id is not retail we will have to do another query to get the 
// quantity blocks and minimum order quantity
 if ($customer_group_id != '0') {
   $pg_qb_moq_query = tep_db_query("select pg.products_id, pg.products_qty_blocks as qtyBlocks, pg.products_min_order_qty from " . TABLE_PRODUCTS_GROUPS . " pg where products_id in (" . implode(',', $list_of_prdct_ids) . ") and pg.customers_group_id = '" . $customer_group_id . "'");

  while ($pg_qb_moq_array = tep_db_fetch_array($pg_qb_moq_query)) {
   $new_qb_moq[] = array ('products_id' => $pg_qb_moq_array['products_id'], 'qtyBlocks' => $pg_qb_moq_array['qtyBlocks'], 'products_min_order_qty' => $pg_qb_moq_array['products_min_order_qty']);
  }
  if (!empty($new_qb_moq)) {
    $no_of_pg_qb_moq = count($new_qb_moq);
     for ($x = 0; $x < $no_of_listings; $x++) {
       for  ($i = 0; $i < $no_of_pg_qb_moq; $i++) {
         if ($listing[$x]['products_id'] == $new_qb_moq[$i]['products_id'] ) {
	        $listing[$x]['qtyBlocks'] = $new_qb_moq[$i]['qtyBlocks'];
	        $listing[$x]['products_min_order_qty'] = $new_qb_moq[$i]['products_min_order_qty'];
         }
       }
     }
   } // end if (!empty($new_qb_moq))
 } // end if ($customer_group_id != '0') 
// EOF QPBPP for SPPC

//    while ($listing = tep_db_fetch_array($listing_query)) { (was original code)
for ($x = 0; $x < $no_of_listings; $x++) {
     $rows++;

     if (($rows/2) == floor($rows/2)) {
       $list_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $list_box_contents[] = array('params' => 'class="productListing-odd"');
     }

     $cur_row = sizeof($list_box_contents) - 1;

     for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
       $lc_align = '';
//sort order & quantity change
       if ($column_list[$col] == 'PRODUCT_LIST_SORT_ORDER'){break;}
//end sort order & quantity change
       switch ($column_list[$col]) {
         case 'PRODUCT_LIST_MODEL':
           $lc_align = '';
           $lc_text = ' ' . $listing[$x]['products_model'] . ' ';
           break;
         case 'PRODUCT_LIST_NAME':
           $lc_align = '';
        /*denne erstattes af Product Description 1.3 
	    if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a> ';
           }
		*/
// BOF Product Description 1.3
            	$man_id = (tep_not_null($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : '');
	$link = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing[$x]['products_id'] . ($man_id ? '&manufacturers_id='.$man_id : ($cPath && $cat_path ? '&cPath=' . $cPath : '')) ) . '"' . ($man_id || ($cat_path && $cat_path) ? ' rel="nofollow"' : '') . '>';
	$lc_text = ' ' . $link . '<span class="productListing-name">' . $listing[$x]['products_name'] . '</span></a>' . product_description($listing[$x]['products_id'],$link);
// EOF Product Description 1.3

           break;
         case 'PRODUCT_LIST_MANUFACTURER':
           $lc_align = '';
           $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing[$x]['manufacturers_id']) . '">' . $listing[$x]['manufacturers_name'] . '</a> ';
           break;
         case 'PRODUCT_LIST_PRICE':
           $lc_align = 'right';
// BOF QPBPP for SPPC
           $price_breaks_from_listing = array();
           if (isset($price_breaks_array[$listing[$x]['products_id']])) {
             $price_breaks_from_listing = $price_breaks_array[$listing[$x]['products_id']];
           }
           $pf->loadProduct($listing[$x]['products_id'], $languages_id, $listing[$x], $price_breaks_from_listing);
           $lc_text = $pf->getPriceString();
// EOF QPBPP for SPPC
           break;

         case 'PRODUCT_LIST_QUANTITY':
           $lc_align = 'right';
           $lc_text = ' ' . $listing[$x]['products_quantity'] . ' ';
           break;
         case 'PRODUCT_LIST_WEIGHT':
           $lc_align = 'right';
           $lc_text = ' ' . $listing[$x]['products_weight'] . ' ';
           break;
         case 'PRODUCT_LIST_IMAGE':
           $lc_align = 'center';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';
           }
           break;
         case 'PRODUCT_LIST_BUY_NOW':
           $lc_align = 'center';
           $lc_text  = '<input type="text" name="add_id['.$number_of_products.']" value="" size="4">';
           $lc_text .= '<input type="hidden" name="products_id['.$number_of_products.']" value="'.$listing[$x]['products_id'].'">';

 if ($listing[$x]['products_quantity'] > 0) {
           $lc_text .= ' ' . tep_image(DIR_WS_IMAGES . 'stock_on.gif','' . IMAGE_TEXT_STOCK_ON);
           } elseif ($listing[$x]['products_on_order'] != 0) {
           $lc_text .= ' ' . tep_image(DIR_WS_IMAGES . 'stock_on_order.gif','' . IMAGE_TEXT_STOCK_ON_ORDER .  $listing[$x]['products_on_order']);
           } else {
           $lc_text .= ' ' . tep_image(DIR_WS_IMAGES . 'stock_out.gif','' . IMAGE_TEXT_STOCK_OUT);// . ' ' . TEXT_INFO_STOCK_OUT;
           }
           break;
       }
// EOF Separate Pricing per Customer
       $list_box_contents[$cur_row][] = array('align' => $lc_align,
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text);
     }
   }

   new productListingBox($list_box_contents);
 } else {
   $list_box_contents = array();

   $list_box_contents[0] = array('params' => 'class="productListing-odd"');
   $list_box_contents[0][] = array('params' => 'class="productListing-data"',
                                  'text' => TEXT_NO_PRODUCTS);

   new productListingBox($list_box_contents);
 }

 if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>
<?php
 }
?>
<br>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
 <tr>
   <td align="right" class="main"><?php echo tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>
 </tr>
</table>
</form>

Share this post


Link to post
Share on other sites

I am having an issue with this update:

Find around 1011:
$product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id  from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = pd.products_id and p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "'");

 

and

 

Find around 1014:
} else {

`

The only option that it looks like I have is this:

if (isset($HTTP_GET_VARS['search'])) {
     $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . tep_db_input($search) . "%' order by pd.products_name");
   } else {
     $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by pd.products_name");
   }

 

The two replacement queries don't seem to fit the search function. This is a themed version that I downloaded from template monster. Can I please get some direction?

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