[Contribution] QTpro - Quantity Tracking Professional
#2081
Posted 01 January 2013 - 12:22 AM
#2082
Posted 07 January 2013 - 04:58 PM
I didn't find any solutions for my issue which is connected to this contribution. I have two attributes: color and size in diferent quantities. Let say article in red (L) 1 pcs, yellow (XL) 1 pcs and blue (M) 2 pcs. How can I set in admin (if this is passible at all) to display on page (frontend) when I choose red articles to see only L size and not also other sizes (XL, M) and colors (yellow, blue). Now I have on page displayed all sizes and all colors, which is a bit confusing for customers. Later on, when articles are in cart, everything is OK. Those articles which are not on stock are noted ''not available''. Does this contribution (QTPro) allow customization form this point of view.
#2083
Posted 07 January 2013 - 07:10 PM
If after trying that you don't have what you want, another option is to edit the products attributes and delete the attribute combination that has zero quantity
I remember what it was like when I first started with osC. It can be overwhelming.
However, I strongly recommend considering hiring a professional for extensive site modifications, site cleaning, etc.
There are several good pros here on osCommerce. Look around, you'll figure out who they are.
#2084
Posted 08 January 2013 - 09:58 AM
Thanks.
Matjaz
#2085
Posted 09 January 2013 - 01:07 PM
An examination of the code would tell sure.
Gornik, on 08 January 2013 - 09:58 AM, said:
Thanks.
Matjaz
I remember what it was like when I first started with osC. It can be overwhelming.
However, I strongly recommend considering hiring a professional for extensive site modifications, site cleaning, etc.
There are several good pros here on osCommerce. Look around, you'll figure out who they are.
#2086
Posted 26 January 2013 - 08:47 PM
Thanks.
#2087
Posted 26 January 2013 - 11:52 PM
diver000, on 26 January 2013 - 08:47 PM, said:
Thanks.
i am using version 4.6.1 for the 2.3 version of osC. However I had to do so after fix ups to make things work with Attribute Manager. I see there are subsequent fixes to the version i use, but since alls working well in my shops i haven't gotten around to looking into those yet.
I remember what it was like when I first started with osC. It can be overwhelming.
However, I strongly recommend considering hiring a professional for extensive site modifications, site cleaning, etc.
There are several good pros here on osCommerce. Look around, you'll figure out who they are.
#2088
Posted 15 February 2013 - 01:20 PM
When I add the stock quantity I click the "add" button and I'm kicked out the admin area logged out instantly
If I login again the qty is saved, but doing this every single time is soooooo boring!!!!
Does someone know how to fix this problem?
Thanks,
Max
#2089
Posted 05 March 2013 - 08:19 PM
Warning: require(includes/functions/qtpro_functions.php) [function.require]: failed to open stream: No such file or directory in W:\www\mystore\admin\includes\functions\general.php on line 1534
Fatal error: require() [function.require]: Failed opening required 'includes/functions/qtpro_functions.php' (include_path='.;/usr/local/PHP/includes;/usr/local/PHP/pear;/home/admin/www/plugins/pear/PEAR') in W:\www\mystore\admin\includes\functions\general.php on line 1534
There is no line 1534 in general.php nor do I have includes/functions/qtpro_functions.php
Any help would be greatly appreciated!!!!
#2090
Posted 12 March 2013 - 06:12 PM
I looked on various php files, but I ain't that good at coding. I think the problem is in includes/modules/payment/icepay/custom/class_update_stock.php.
Someone who can help me with this problem?
#2091
Posted 11 April 2013 - 09:06 AM
I've got QTPro 4.6.1 installed, but am having a problem with it. I have added two options for a product. The product displays as normal on my website with the choice of the two options appearing in the drop-down box. So far, everything looks good. However, when the product (regardless of the option) is added to the cart, the product will add, but not the option. You can see the problem in action here. So, when I go to check on the orders behind the scene, I can only see that the customer has bought the product, but I don't know what option they have actually chosen.
Can anyone help? I'm sure it's probably an easy fix; I'm not expert on this stuff though.
Thanks everyone!
#2092
Posted 30 April 2013 - 11:14 AM
flip_jam, on 11 April 2013 - 09:06 AM, said:
I've got QTPro 4.6.1 installed, but am having a problem with it. I have added two options for a product. The product displays as normal on my website with the choice of the two options appearing in the drop-down box. So far, everything looks good. However, when the product (regardless of the option) is added to the cart, the product will add, but not the option. You can see the problem in action here. So, when I go to check on the orders behind the scene, I can only see that the customer has bought the product, but I don't know what option they have actually chosen.
Can anyone help? I'm sure it's probably an easy fix; I'm not expert on this stuff though.
Thanks everyone!
Can anyone help me on this? I would be forever grateful! Still can't get it worked out
#2093
Posted 02 May 2013 - 06:21 PM
Fatal error: Call to undefined function qtpro_sick_product_count() in admin/includes/header.php on line 19
#2094
Posted 15 May 2013 - 07:15 PM
Getting Parse error: syntax error, unexpected '}' in /home/attitude/public_html/shop/product_info.php on line 238
Here is my code:
<?php
/*
$Id$
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2010 osCommerce
Released under the GNU General Public License
*/
require('includes/application_top.php');
if (!isset($HTTP_GET_VARS['products_id'])) {
tep_redirect(tep_href_link(FILENAME_DEFAULT));
}
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO);
$current_page = FILENAME_PRODUCT_INFO;
$product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_check = tep_db_fetch_array($product_check_query);
require(DIR_WS_INCLUDES . 'template_top.php');
?>
<?php echo tep_draw_content_top();?>
<?php
if ($product_check['total'] < 1) {
?>
<?php echo tep_draw_title_top();?>
<h1><?php echo TEXT_PRODUCT_NOT_FOUND; ?></h1>
<?php echo tep_draw_title_bottom();?>
<div class="contentContainer">
<div class="contentPadd">
<div class="buttonSet">
<span class="fl_right"><?php echo tep_draw_button_top();?><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', tep_href_link(FILENAME_DEFAULT)); ?><?php echo tep_draw_button_bottom();?></span>
</div>
</div>
</div>
<?php
} else {
$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1'
and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'
and pd.products_id = p.products_id
and pd.language_id = '" . (int)$languages_id . "'");
$product_info = tep_db_fetch_array($product_info_query);
$tags_query_raw = tep_db_query("select pt.tag_id, t.tag_text from " . TABLE_TAGS . " t, " . TABLE_PRODUCTS_TAGS . " pt where pt.products_id = '" . (int)$product_info['products_id'] . "' and t.tag_id = pt.tag_id");
$tags = '';
$caount = 0;
while ($tag = tep_db_fetch_array($tags_query_raw)) {
if ($caount != 0) $tags .= ', ';
$tags .= '<a href="' . tep_href_link(FILENAME_TAG_PRODUCTS) .'?id_tag='.$tag['tag_id'].'">'.$tag['tag_text'].'</a>';
$caount++;
}
tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
if ($new_price = tep_get_products_special_price($product_info['products_id'])) {
$products_price = ' <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span> <del>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</del>';
$sale = '<div class="sale"></div>';
} else {
$products_price = '<span class="productSpecialPrice">' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';
$sale = '';
}
if (tep_not_null($product_info['products_model'])) {
$products_name = $product_info['products_name'] . '<br /><span class="smallText">[' . $product_info['products_model'] . ']</span>';
} else {
$products_name = $product_info['products_name'];
}
?>
<?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?>
<?php
// add by Seaman
switch (tep_not_null($product_info['products_image'])) {
case 0:
if (($oscTemplate->hasBlocks('box_info_page'))) {
$port_side = 'left_side_pic-1';
$starboard_side = 'right_side_pic-1';
}else{
$port_side = 'left_side_pic-0';
$starboard_side = 'right_side_pic-0';
}
break;
case 1:
$port_side = 'left_side_pic-1';
$starboard_side = 'right_side_pic-1';
break;
}
?>
<div class="contentContainer">
<div class="contentPadd prods_info_page">
<div class="prods_info decks big">
<div class="forecastle">
<ol class="masthead">
<li class="port_side <?php echo $port_side;?>">
<?php
if (tep_not_null($product_info['products_image'])) {
$pi_query = tep_db_query("select image, htmlcontent from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . (int)$product_info['products_id'] . "' order by sort_order");
?>
<?php
if (tep_db_num_rows($pi_query) > 0) {
?>
<div id="piGal" class="hover">
<ul class="relative">
<?php
$pi_counter = 0;
while ($pi = tep_db_fetch_array($pi_query)) {
$pi_counter++;
$pi_entry = ' <li class="wrapper_pic_div"><a href="';
$pi_entry .= tep_href_link(DIR_WS_IMAGES . $pi['image'], '', 'NONSSL', false);
$pi_entry .= '" target="_blank" rel="fancybox" title="' . $pi['htmlcontent'] . '" class="prods_pic_bg" style="width:'.(PROD_INFO_IMAGE_WIDTH + PIC_MARG_W).'px;height:'.(PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H).'px;">' . tep_image(DIR_WS_IMAGES . $pi['image'], $pi['htmlcontent'], (PROD_INFO_IMAGE_WIDTH), (PROD_INFO_IMAGE_HEIGHT), ' style="width:'.(PROD_INFO_IMAGE_WIDTH + PIC_MARG_W2).'px;height:'.(PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H2).'px;margin:'.PIC_MARG_T.'px '.PIC_MARG_R.'px '.PIC_MARG_B.'px '.PIC_MARG_L.'px;"') . ''.tep_draw_prod_pic_info_top().''.tep_draw_prod_pic_info_bottom().'</a>'.$sale;
$pi_entry .= '</li>';
echo $pi_entry;
}
?>
</ul>
</div>
<?php
// add by Seaman
if (PROD_INFO_IMAGE_WIDTH + PIC_MARG_W2 != PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H2){
$coeff = ((PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H2)/(PROD_INFO_IMAGE_WIDTH + PIC_MARG_W2));
}else{
$coeff = 1;
}
// add by Seaman
?>
<script type="text/javascript">
$(function(){
var myWidth = <?php echo (($pi_counter > 1) ? '65' : '0'); ?>;
var myHeight = myWidth * <?php echo $coeff;?>;
$('#piGal ul').bxGallery({
maxwidth: '<?php echo (PROD_INFO_IMAGE_WIDTH + PIC_MARG_W); ?>',
maxheight: '<?php echo (PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H); ?>',
thumbwidth: myWidth,
thumbheight: myHeight,
thumbcontainer: <?php echo (PROD_INFO_IMAGE_WIDTH + PIC_MARG_W + 7); ?>,
load_image: 'ext/jquery/bxGallery/spinner.gif'
})
});
</script>
<?php
} else {
if (tep_not_null($product_info['products_image'])) {
?>
<div style="width:<?php echo (PROD_INFO_IMAGE_WIDTH + 10); ?>px;" class="hover">
<?php echo '<div id="piGal" class="wrapper_pic_div fl_left" style="width:'.(PROD_INFO_IMAGE_WIDTH + PIC_MARG_W).'px;height:'.(PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H).'px;"><a class="prods_pic_bg" href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image'], '', 'NONSSL', false) . '" target="_blank" rel="fancybox">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), (PROD_INFO_IMAGE_WIDTH), (PROD_INFO_IMAGE_HEIGHT), ' style="width:'.(PROD_INFO_IMAGE_WIDTH + PIC_MARG_W2).'px;height:'.(PROD_INFO_IMAGE_HEIGHT + PIC_MARG_H2).'px;margin:'.PIC_MARG_T.'px '.PIC_MARG_R.'px '.PIC_MARG_B.'px '.PIC_MARG_L.'px;"', '', '') . ''.tep_draw_prod_pic_info_top().''.tep_draw_prod_pic_info_bottom().'</a>'.$sale.'</div>'; ?>
</div>
<?php
// add by Seaman
}
}
echo '<script type="text/javascript">
$("#piGal a[rel^=\'fancybox\']").fancybox({
cyclic: true
});
</script>';
?>
<?php
}
?>
<?php
if (($oscTemplate->hasBlocks('box_info_page'))) {
$width_ext = PROD_INFO_IMAGE_WIDTH + PIC_MARG_W;
?>
<div class="bookmarks">
<?php echo $oscTemplate->getBlocks('box_info_page');?>
</div>
<?php
// add by Seaman
}
?>
</li>
<li class="starboard_side <?php echo $starboard_side;?>">
<?php
// add by Seaman
if ($product_check['total'] >= 1) {
include (DIR_WS_INCLUDES . 'products_next_previous.php');
}
// add by Seaman
?>
<div class="info">
<?php
if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {
?>
<div class="data data_padd small_title"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></div>
<?php
}else{
?>
<div class="data data_padd small_title"><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></div>
<?php
}
?>
<br /><h2><?php echo $products_name; ?></h2>
<h2 class="price"><?php echo '<b>'.PRICE. '</b>'.$products_price; ?></h2>
<?php
//++++ QT Pro: End Changed Code
$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) {
//++++ QT Pro: Begin Changed code
$products_id=(preg_match("/^\d{1,10}(\{\d{1,10}\}\d{1,10})*$/",$HTTP_GET_VARS['products_id']) ? $HTTP_GET_VARS['products_id'] : (int)$HTTP_GET_VARS['products_id']);
require(DIR_WS_CLASSES . 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN . '.php');
$class = 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN;
$pad = new $class($products_id);
echo $pad->draw();
}
//Display a table with which attributecombinations is on stock to the customer?
if(PRODINFO_ATTRIBUTE_DISPLAY_STOCK_LIST == 'True'): require(DIR_WS_MODULES . "qtpro_stock_table.php"); endif;
//++++ QT Pro: End Changed Code
?>
<li class="fl_left"><label><?php echo $products_options_name['products_options_name'] . ':'; ?></label><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></li>
<?php
}
?>
</ul>
</div>
<?php
}
?>
<div class="desc desc_padd"><?php echo stripslashes($product_info['products_description']); ?></div>
<?php
$reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd where r.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$languages_id . "' and reviews_status = 1");
$reviews = tep_db_fetch_array($reviews_query);
?>
<div class="buttonSet">
<span class="buttonAction"><?php echo tep_draw_button2_top();?><?php echo tep_draw_button(IMAGE_BUTTON_REVIEWS . (($reviews['count'] > 0) ? ' (' . $reviews['count'] . ')' : ''), 'comment', tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params())); ?><?php echo tep_draw_button2_bottom();?></span>
<div class="fl_right" align="right"><?php echo tep_draw_button_top();?><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_draw_button(IMAGE_BUTTON_IN_CART, 'cart', null, 'primary'); ?><?php echo tep_draw_button_bottom();?></div>
</div>
</div>
</li>
</ol>
</div>
<?php
if ($tags != '') {
?>
<div class="infoBoxWrapper">
<div class="box_wrapper">
<div class="infoBoxHeading prod_page"><div class="title-icon"></div><?php echo tep_draw_box_title_top();?>Tags of product<?php echo tep_draw_box_title_bottom();?></div>
<div class="infoBoxContents">
<?php
echo $tags;
?>
</div>
</div>
</div>
<?php
}
?>
</div>
</div>
</div>
<?php echo tep_draw_content_bottom();?>
<?php
//Optional Related Products (ORP)
include(DIR_WS_MODULES . FILENAME_RELATED_PRODUCTS);
//ORP: end
// add by Seaman
if ((USE_CACHE == 'true') && empty($SID)) {
echo tep_cache_also_purchased(3600);
} else {
include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
}
?>
</form>
<?php
}
?>
<?php
require(DIR_WS_INCLUDES . 'template_bottom.php');
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>
Edited by apie, 15 May 2013 - 07:15 PM.
#2095
Posted 15 May 2013 - 11:10 PM
There were two brackets that needed to be removed.
One on line 238 and one on 290.
I've got one more problem though. Now the product info pages load but there is the following error message.
Warning: require(includes/modules/qtpro_stock_table.php) [function.require]: failed to open stream: No such file or directory in /home/attitude/public_html/shop/product_info.php on line 226
Warning: require(includes/modules/qtpro_stock_table.php) [function.require]: failed to open stream: No such file or directory in /home/attitude/public_html/shop/product_info.php on line 226
Fatal error: require() [function.require]: Failed opening required 'includes/modules/qtpro_stock_table.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/attitude/public_html/shop/product_info.php on line 226
Please let me know what needs to be fixed.
#2096
Posted 16 May 2013 - 06:07 PM
#2097
Posted Today, 05:50 PM
I have been looking in the class (pasted below) that I think needs changing to sort the attributes before they are displayed, but cant get anything to work. If anyone has got any ideas, that would be great. Thanks
function _draw_stocked_attributes() {
global $languages_id;
$out='';
$attributes = $this->_build_attributes_array(true, false);
if (sizeof($attributes)>0) {
$combinations = array();
$selected_combination = 0;
$this->_build_attributes_combinations($attributes, $this->show_out_of_stock == 'True', $this->mark_out_of_stock, $combinations, $selected_combination);
$combname='';
foreach ($attributes as $attrib) {
$combname.=', '.$attrib['oname'];
}
$combname=substr($combname,2).':';
foreach ($combinations as $combindex => $comb) {
$out.="<tr>\n";
$out.=' <td align="right" class=main><strong>'.$combname."</strong></td>\n <td class=main>";
$out.=tep_draw_radio_field('attrcomb', $combinations[$combindex]['id'], ($combindex==$selected_combination)) . $comb['text'];
$out.="</td>\n";
$out.="</tr>\n";
$combname='';
}
}
$out.=$this->_draw_out_of_stock_message_js($attributes);
return $out;
}
}









