[Plugin] QT Pro 4.3 install ...

Messagepar enguer » Jeu 07 Juin 2007, 12:57

Hello,
I'm trying to install the last release of QT Pro on OSCSS fresh install.
I opened the new_install.sql and config.sql and added the prefix 'osc_' to all table names.
Now execute the script in phpmyadmin on the database .... OK

I plan to install catalog/admin files first, to test the compatibility.
-Catalog/admin/includes/database_tables.php
//Just add the codes at end of the files
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  define('TABLE_PRODUCTS_STOCK', DB_TABLE_PREFIX .
   'products_stock');
//++++ QT Pro: End Changed Code

-Catalog/admin/includes/filenames.php
//Just add the codes at end of the files
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  define('FILENAME_STATS_LOW_STOCK_ATTRIB', 'stats_low_stock_attrib.php');
  define('FILENAME_STOCK', 'stock.php');
//++++ QT Pro: End Changed Code

-Catalog/admin/includes/boxes/reports.php
Just past the files in the same folder
-Catalog/admin/includes/functions/general.php
replace 1 function et add one other.
Code: Tout sélectionner
 function tep_remove_order($order_id, $restock = false) {
    if ($restock == 'on') {
//++++ QT Pro: Begin Changed code
      $order_query = tep_db_query("select products_id, products_quantity, products_stock_attributes from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'");
      while ($order = tep_db_fetch_array($order_query)) {
        $product_stock_adjust = 0;
        if (tep_not_null($order['products_stock_attributes'])) {
          if ($order['products_stock_attributes'] != '$$DOWNLOAD$$') {
            $attributes_stock_query = tep_db_query("SELECT products_stock_quantity
                                                    FROM " . TABLE_PRODUCTS_STOCK . "
                                                    WHERE products_stock_attributes = '" . $order['products_stock_attributes'] . "'
                                                    AND products_id = '" . (int)$order['products_id'] . "'");
            if (tep_db_num_rows($attributes_stock_query) > 0) {
                $attributes_stock_values = tep_db_fetch_array($attributes_stock_query);
                tep_db_query("UPDATE " . TABLE_PRODUCTS_STOCK . "
                              SET products_stock_quantity = products_stock_quantity + '" . (int)$order['products_quantity'] . "'
                              WHERE products_stock_attributes = '" . $order['products_stock_attributes'] . "'
                              AND products_id = '" . (int)$order['products_id'] . "'");
                $product_stock_adjust = min($order['products_quantity'],  $order['products_quantity']+$attributes_stock_values['products_stock_quantity']);
            } else {
                tep_db_query("INSERT into " . TABLE_PRODUCTS_STOCK . "
                              (products_id, products_stock_attributes, products_stock_quantity)
                              VALUES ('" . (int)$order['products_id'] . "', '" . $order['products_stock_attributes'] . "', '" . (int)$order['products_quantity'] . "')");
                $product_stock_adjust = $order['products_quantity'];
            }
          }
        } else {
            $product_stock_adjust = $order['products_quantity'];
        }
        tep_db_query("UPDATE " . TABLE_PRODUCTS . "
                      SET products_quantity = products_quantity + " . $product_stock_adjust . ", products_ordered = products_ordered - " . (int)$order['products_quantity'] . "
                      WHERE products_id = '" . (int)$order['products_id'] . "'");
//++++ QT Pro: End Changed Code
      }
    }

    tep_db_query("delete from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
    tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'");
    tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "'");
    tep_db_query("delete from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . (int)$order_id . "'");
    tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$order_id . "'");
  }
//++++ QT Pro: Begin Changed code
////
// Function to build menu of available class files given a file prefix
// Used for configuring plug-ins for product information attributes
  function tep_cfg_pull_down_class_files($prefix, $current_file) {
    $d=DIR_FS_CATALOG . DIR_WS_CLASSES;
    $function_directory = dir ($d);

    while (false !== ($function = $function_directory->read())) {
      if (preg_match('/^'.$prefix.'(.+).php$/',$function,$function_name)) {
          $file_list[]=array('id'=>$function_name[1], 'text'=>$function_name[1]);
      }
    }
    $function_directory->close();

    return tep_draw_pull_down_menu('configuration_value', $file_list, $current_file);
  }

//++++ QT Pro: End Changed Code

-Catalog/admin/includes/languages/english.php
Code: Tout sélectionner
//QTPRO BEGIN
// reports box text in includes/boxes/reports.php

define('BOX_HEADING_REPORTS', 'Reports');

define('BOX_REPORTS_PRODUCTS_VIEWED', 'Products Viewed');

define('BOX_REPORTS_PRODUCTS_PURCHASED', 'Products Purchased');

define('BOX_REPORTS_ORDERS_TOTAL', 'Customer Orders-Total');

define('BOX_REPORTS_STATS_LOW_STOCK_ATTRIB', 'Stock Report');

//QTPRO END

-Catalog/admin/includes/languages/french.php
Code: Tout sélectionner
//QTPRO BEGIN
// reports box text in includes/boxes/reports.php
define('BOX_HEADING_REPORTS', 'Rapports');
define('BOX_REPORTS_PRODUCTS_VIEWED', 'Produits vus');
define('BOX_REPORTS_PRODUCTS_PURCHASED', 'Produits achetés');
define('BOX_REPORTS_ORDERS_TOTAL', 'Total commande client');
define('BOX_REPORTS_STATS_LOW_STOCK_ATTRIB', 'Rapport de stock');
//QTPRO END

-Copy the Images folder in catalog/admin/includes/languages/english
-Copy the Images folder in catalog/admin/includes/languages/french
-Catalog/admin/includes/languages/english/products_attributes.php
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
define('TABLE_HEADING_TRACK_STOCK', 'Track Stock?');
//++++ QT Pro: End Changed Code

-copy the files stock.php and stats_low_stock_attrib.php in catalog/admin/includes/languages/english
-Catalog/admin/includes/languages/english/products_attributes.php
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
define('TABLE_HEADING_TRACK_STOCK', 'Suivi de stock?');
//++++ QT Pro: End Changed Code

-copy the files stock.php and stats_low_stock_attrib.php in catalog/admin/includes/languages/french
-Edit the stock.php
Code: Tout sélectionner
define('PRODUCTS_STOCK',"Produits en stock");
define('TABLE_TITLE_ATTRIBUTES',"Attributs");

-Edit the stats_low_stock_attrib.php
Code: Tout sélectionner
define('HEADING_TITLE', 'Rapport de stock');
define('TABLE_HEADING_PRODUCTS', 'Produits');
define('TABLE_HEADING_MODEL', 'Modele');
define('TABLE_HEADING_QUANTITY', 'Quantité');
define('TABLE_HEADING_PRICE', 'Prix');

-Edit calatog/admin/includes/stylesheet.css and Add
Code: Tout sélectionner
/*QTpro*/

.OutofStock { background-color: #FFCACB; }

.OutofStockAttrib { font-family: Verdana, Arial, sans-serif; font-size: 10px;  background-color: #FFCACB; color: #000000; }

-Edit catalog/admin/backup.php and add at line 253 and replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
          tep_db_query("drop table if exists address_book, address_format, banners, banners_history, categories, categories_description, configuration, configuration_group, counter, counter_history, countries, currencies, customers, customers_basket, customers_basket_attributes, customers_info, languages, manufacturers, manufacturers_info, orders, orders_products, orders_status, orders_status_history, orders_products_attributes, orders_products_download, products, products_attributes, products_attributes_download, prodcts_description, products_options, products_options_values, products_options_values_to_products_options, products_stock, products_to_categories, reviews, reviews_description, sessions, specials, tax_class, tax_rates, geo_zones, whos_online, zones, zones_to_geo_zones");
//++++ QT Pro: End Changed Code

-Edit catalog/admin/categories.php and add at line 1165 and replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
            $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=new_product') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=delete_product') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=move_product') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=copy_to') . '">' . tep_image_button('button_copy_to.gif', IMAGE_COPY_TO) . '</a><a href="' . tep_href_link("stock.php", 'product_id=' . $pInfo->products_id) . '">' . tep_image_button('button_stock.gif', "Stock") . '</a>');
//++++ QT Pro: End Changed Code

-Edit catalog/admin/products_attributes.php at line 39 and replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
          $track_stock=isset($HTTP_POST_VARS['track_stock'])?1:0;
          tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS . " (products_options_id, products_options_name, language_id,products_options_track_stock) values ('" . (int)$products_options_id . "', '" . tep_db_input($option_name) . "', '" . (int)$languages[$i]['id'] . "', '" . (int)$track_stock . "')");
//++++ QT Pro: End Changed Code

At line 92 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
          $track_stock=isset($HTTP_POST_VARS['track_stock'])?1:0;
          tep_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_track_stock='" . (int)$track_stock . "',products_options_name = '" . tep_db_input($option_name) . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
//++++ QT Pro: End Changed Code

At line 275 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="3" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_OPT; ?>&nbsp;</td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 285 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="4" class="smallText">
<?php
//++++ QT Pro: End Changed Code

At line 336 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="4"><?php echo tep_black_line(); ?></td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 347 add
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_TRACK_STOCK; ?>&nbsp;</td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 357 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="4"><?php echo tep_black_line(); ?></td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 385 add
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td align="center" class="smallText"><input type=checkbox name=track_stock <? echo $options_values['products_options_track_stock']?"checked":""; ?>></td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 400 add
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td align="center" class="smallText">&nbsp;<?php echo $options_values['products_options_track_stock']?"Yes":"No"; ?></td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 419 add
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="4"><?php echo tep_black_line(); ?></td>
<?php
//++++ QT Pro: End Changed Code
?>

At line 440 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td align="center" ><input type=checkbox name=track_stock></td>
                <td align="left" class="smallText">&nbsp;<?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?>&nbsp;</td>
<?php
//++++ QT Pro: End Changed Code

At line 451 replace
Code: Tout sélectionner
<?php
//++++ QT Pro: Begin Changed code
?>
                <td colspan="4"><?php echo tep_black_line(); ?></td>
<?php
//++++ QT Pro: End Changed Code
?>

-Copy stock.php and stats_low_stock_attrib.php in catalog/admin folder
Severals modifications have been applied on stock.php.
At line 100
Code: Tout sélectionner
  $q=tep_db_query($sql="select products_name,products_options_name as _option,".DB_TABLE_PREFIX."products_attributes.options_id as _option_id,products_options_values_name as _value,".DB_TABLE_PREFIX."products_attributes.options_values_id as _value_id from ".
                  "".DB_TABLE_PREFIX."products_description, ".DB_TABLE_PREFIX."products_attributes,".DB_TABLE_PREFIX."products_options,".DB_TABLE_PREFIX."products_options_values where ".
                  "".DB_TABLE_PREFIX."products_attributes.products_id=".DB_TABLE_PREFIX."products_description.products_id and ".
                  "".DB_TABLE_PREFIX."products_attributes.products_id=" . (int)$VARS['product_id'] . " and ".
                  "".DB_TABLE_PREFIX."products_attributes.options_id=".DB_TABLE_PREFIX."products_options.products_options_id and ".
                  "".DB_TABLE_PREFIX."products_attributes.options_values_id=".DB_TABLE_PREFIX."products_options_values.products_options_values_id and ".
                  "".DB_TABLE_PREFIX."products_description.language_id=" . (int)$languages_id . " and ".
                  "".DB_TABLE_PREFIX."products_options_values.language_id=" . (int)$languages_id . " and ".DB_TABLE_PREFIX."products_options.products_options_track_stock=1 and ".
                  "".DB_TABLE_PREFIX."products_options.language_id=" . (int)$languages_id . " order by ".DB_TABLE_PREFIX."products_attributes.options_id, ".DB_TABLE_PREFIX."products_attributes.options_values_id");

At line 121
Code: Tout sélectionner
   $q=tep_db_query("select products_quantity,products_name from " . TABLE_PRODUCTS . " p,".DB_TABLE_PREFIX."products_description pd where pd.products_id=" . (int)$VARS['product_id'] . " and p.products_id=" . (int)$VARS['product_id']);

///*** ADMIN OK ***//
You can now activate plugin and test plugin.
-catalog/includes/classes/order.php
At line 236 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
            $attributes_query = tep_db_query("select popt.products_options_name, popt.products_options_track_stock, 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 = '" . (int)$products[$i]['id'] . "' and pa.options_id = '" . (int)$option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . (int)$languages_id . "' and poval.language_id = '" . (int)$languages_id . "'");
//++++ QT Pro: End Changed Code

At line 241 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
            $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'],
                                                                     'value' => $attributes['products_options_values_name'],
                                                                     'option_id' => $option,
                                                                     'value_id' => $value,
                                                                     'prefix' => $attributes['price_prefix'],
                                                                     'price' => $attributes['options_values_price'],
                                                                     'track_stock' => $attributes['products_options_track_stock']);
//++++ QT Pro: End Changed Code

-Copy pad_* files in catalog/includes/classes folder
-catalog/includes/functions/general.php
At line 110 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  function tep_get_products_stock($products_id, $attributes=array()) {
    global $languages_id;
    $products_id = tep_get_prid($products_id);
    if (sizeof($attributes)>0) {
      $all_nonstocked = true;
      $attr_list='';
      $options_list=implode(",",array_keys($attributes));
      $track_stock_query=tep_db_query("select products_options_id, products_options_track_stock from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id in ($options_list) and language_id= '" . (int)$languages_id . "order by products_options_id'");
      while($track_stock_array=tep_db_fetch_array($track_stock_query)) {
        if ($track_stock_array['products_options_track_stock']) {
          $attr_list.=$track_stock_array['products_options_id'] . '-' . $attributes[$track_stock_array['products_options_id']] . ',';
          $all_nonstocked=false;
        }
      }
      $attr_list=substr($attr_list,0,strlen($attr_list)-1);
    }
   
    if ((sizeof($attributes)==0) | ($all_nonstocked)) {
      $stock_query = tep_db_query("select products_quantity as quantity from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
    } else {
      $stock_query=tep_db_query("select products_stock_quantity as quantity from " . TABLE_PRODUCTS_STOCK . " where products_id='". (int)$products_id . "' and products_stock_attributes='$attr_list'");
    }
    if (tep_db_num_rows($stock_query)>0) {
      $stock=tep_db_fetch_array($stock_query);
      $quantity=$stock['quantity'];
    } else {
      $quantity = 0;
    }
    return $quantity;
//++++ QT Pro: End Changed Code
  }

At line 153 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  function tep_check_stock($products_id, $products_quantity, $attributes=array()) {
    $stock_left = tep_get_products_stock($products_id, $attributes) - $products_quantity;
//++++ QT Pro: End Changed Code

-catalog/includes/languages/english Add
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
define('TEXT_OUT_OF_STOCK', 'Out of stock');
define('TEXT_OUT_OF_STOCK_MESSAGE', 'The combination of options you have selected is currently out of stock.  Please select another combination.');
define('TEXT_SELECT_OPTIONS', 'You must select product options before adding this product to your cart.');
//++++ QT Pro: End Changed Code

-catalog/includes/languages/french Add
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
define('TEXT_OUT_OF_STOCK', 'Non disponible en stock');
define('TEXT_OUT_OF_STOCK_MESSAGE', 'La combinaison d'options que vous avez sélectionné n' est pas disponible en stock. Veuillez sélectionner une autre combinaison.');
define('TEXT_SELECT_OPTIONS', 'Vous devez sélectionner les options des produits avant d'ajouter le produit au panier.');
//++++ QT Pro: End Changed Code

-catalog/includes/application_top.php
At line 338
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
                                $attributes=array();
                                if (isset($HTTP_POST_VARS['attrcomb']) && (preg_match("/^d{1,10}-d{1,10}(,d{1,10}-d{1,10})*$/",$HTTP_POST_VARS['attrcomb']))) {
                                  $attrlist=explode(',',$HTTP_POST_VARS['attrcomb']);
                                  foreach ($attrlist as $attr) {
                                    list($oid, $oval)=explode('-',$attr);
                                    if (is_numeric($oid) && $oid==(int)$oid && is_numeric($oval) && $oval==(int)$oval)
                                      $attributes[$oid]=$oval;
                                  }
                                }
                                if (isset($HTTP_POST_VARS['id']) && is_array($HTTP_POST_VARS['id'])) {
                                  foreach ($HTTP_POST_VARS['id'] as $key=>$val) {
                                    if (is_numeric($key) && $key==(int)$key && is_numeric($val) && $val==(int)$val)
                                      $attributes=$attributes + $HTTP_POST_VARS['id'];
                                  }
                                }
                                $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $attributes))+1, $attributes);
//++++ QT Pro: End Changed Code

-catalog/include/database_tables.php Add
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  define('TABLE_PRODUCTS_STOCK', DB_TABLE_PREFIX .'products_stock');
//++++ QT Pro: End Changed Code

-catalog/checkout_confirmation.php
At line 79 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
    $check_stock='';
    for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
      if (isset($order->products[$i]['attributes']) && is_array($order->products[$i]['attributes'])) {
        $attributes=array();
        foreach ($order->products[$i]['attributes'] as $attribute) {
          $attributes[$attribute['option_id']]=$attribute['value_id'];
        }
        $check_stock[$i] = tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'], $attributes);
      } else {
        $check_stock[$i] = tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty']);
      }
      if ($check_stock[$i]) {
        $any_out_of_stock = true;
      }
//++++ QT Pro: End Changed Code

-catalog/checkout_payment.php
At line 45 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) {
    $products = $cart->get_products();
    $any_out_of_stock = 0;
    for ($i=0, $n=sizeof($products); $i<$n; $i++) {
     if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
       $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity'], $products[$i]['attributes']);
     }
     else{
       $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
     }
     if ($stock_check) $any_out_of_stock = 1;
   }
    if ($any_out_of_stock == 1) {
      tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
      break;
    }
   }
//++++ QT Pro: End Changed Code

-catalog/checkout_process.php
At line 129 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
    $products_stock_attributes=null;
    if (STOCK_LIMITED == 'true') {
        $products_attributes = $order->products[$i]['attributes'];
//      if (DOWNLOAD_ENABLED == 'true') {
//++++ QT Pro: End Changed Code

At line 144 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
//      $products_attributes = $order->products[$i]['attributes'];
//++++ QT Pro: End Changed Code

At line 158 replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
        $actual_stock_bought = $order->products[$i]['qty'];
        $download_selected = false;
        if ((DOWNLOAD_ENABLED == 'true') && isset($stock_values['products_attributes_filename']) && tep_not_null($stock_values['products_attributes_filename'])) {
          $download_selected = true;
          $products_stock_attributes='$$DOWNLOAD$$';
        }
//      If not downloadable and attributes present, adjust attribute stock
        if (!$download_selected && is_array($products_attributes)) {
          $all_nonstocked = true;
          $products_stock_attributes_array = array();
          foreach ($products_attributes as $attribute) {

//**si** 14-11-05 fix missing att list
//            if ($attribute['track_stock'] == 1) {
//              $products_stock_attributes_array[] = $attribute['option_id'] . "-" . $attribute['value_id'];
$products_stock_attributes_array[] = $attribute['option_id'] . "-" . $attribute['value_id'];
if ($attribute['track_stock'] == 1) {
//**si** 14-11-05 end

              $all_nonstocked = false;
            }
          }
          if ($all_nonstocked) {
            $actual_stock_bought = $order->products[$i]['qty'];

//**si** 14-11-05 fix missing att list
asort($products_stock_attributes_array, SORT_NUMERIC);
$products_stock_attributes = implode(",", $products_stock_attributes_array);
//**si** 14-11-05 end

          }  else {
            asort($products_stock_attributes_array, SORT_NUMERIC);
            $products_stock_attributes = implode(",", $products_stock_attributes_array);
            $attributes_stock_query = tep_db_query("select products_stock_quantity from " . TABLE_PRODUCTS_STOCK . " where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
            if (tep_db_num_rows($attributes_stock_query) > 0) {
              $attributes_stock_values = tep_db_fetch_array($attributes_stock_query);
              $attributes_stock_left = $attributes_stock_values['products_stock_quantity'] - $order->products[$i]['qty'];
              tep_db_query("update " . TABLE_PRODUCTS_STOCK . " set products_stock_quantity = '" . $attributes_stock_left . "' where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
              $actual_stock_bought = ($attributes_stock_left < 1) ? $attributes_stock_values['products_stock_quantity'] : $order->products[$i]['qty'];
            } else {
              $attributes_stock_left = 0 - $order->products[$i]['qty'];
              tep_db_query("insert into " . TABLE_PRODUCTS_STOCK . " (products_id, products_stock_attributes, products_stock_quantity) values ('" . tep_get_prid($order->products[$i]['id']) . "', '" . $products_stock_attributes . "', '" . $attributes_stock_left . "')");
              $actual_stock_bought = 0;
            }
          }
        }
//        $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
//      }
//      if (tep_db_num_rows($stock_query) > 0) {
//        $stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
        if (!$download_selected) {
          $stock_left = $stock_values['products_quantity'] - $actual_stock_bought;
          tep_db_query("UPDATE " . TABLE_PRODUCTS . "
                        SET products_quantity = products_quantity - '" . $actual_stock_bought . "'
                        WHERE products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
//++++ QT Pro: End Changed Code

At line 228 Add
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
    }


//**si** 14-11-05 fix missing att list
else {
 if ( is_array($order->products[$i]['attributes']) ) {
   $products_stock_attributes_array = array();
   foreach ($order->products[$i]['attributes'] as $attribute) {
        $products_stock_attributes_array[] = $attribute['option_id'] . "-" . $attribute['value_id'];
    }
   asort($products_stock_attributes_array, SORT_NUMERIC);
    $products_stock_attributes = implode(",", $products_stock_attributes_array);
  }
}
//**si** 14-11-05 end



//++++ QT Pro: End Changed Code

At line 252 Replace
Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
    if (!isset($products_stock_attributes)) $products_stock_attributes=null;
    $sql_data_array = array('orders_id' => $insert_id,
                            'products_id' => tep_get_prid($order->products[$i]['id']),
                            'products_model' => $order->products[$i]['model'],
                            'products_name' => $order->products[$i]['name'],
                            'products_price' => $order->products[$i]['price'],
                            'final_price' => $order->products[$i]['final_price'],
                            'products_tax' => $order->products[$i]['tax'],
                            'products_quantity' => $order->products[$i]['qty'],
                            'products_stock_attributes' => $products_stock_attributes);
//++++ QT Pro: End Changed Code

//*** CATALOG OK ***//

Now TEST !!
It doesnt work... i checked product_listing and i must add some code....
-catalog/includes/modules/product_listing.php
At line 74 :
Code: Tout sélectionner
  //++++ QT Pro: Begin Changed code
 //Calcul si il existe des categories
  $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . $listing['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . $languages_id . "'");
 $products_attributes = tep_db_fetch_array($products_attributes_query);
        if ($products_attributes['total'] > 0) {
    $products_id = $listing['products_id'];
   require_once(DIR_WS_CLASSES . 'pad_' . multiple_dropdowns_productlist . '.php');
    $class = 'pad_' . multiple_dropdowns_productlist;
   $pad = new $class($products_id);
    $lc_text = '<form name="cart_quantity_'.$listing['products_id'].'" id="'.$listing['products_id'].'" method="post" onSubmit="doAddProduct(this); return false;" action="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=add_product' , 'NONSSL') . '">' . '' . $pad->draw().'<input type="image" src="/templates/chrome/images/BoutonAchatRapide.jpg" style="margin-bottom:-10px;"/><input type="hidden" name="products_id" value="'.$listing['products_id'].'" /></form>';
   echo $lc_text;
  }else{
    echo '<a class="navBt Process" href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&amp;products_id=' . $listing['products_id']) . '">' . IMAGE_BUTTON_BUY_NOW . '</a>' ;
 }
 //++++ QT Pro: End Changed Code

Ok but there is no value in select beacon... there is a difference between osCommerce'tep_draw_pull_down_menu
function and oscss'tep_draw_pull_down_menu function. So i've made some change on pad_multiple_dropdowns_productlist.php file.
-catalog/includes/classes/pad_multiple_dropdowns_productlist.php
At line 88 replace
Code: Tout sélectionner
        $out.=tep_draw_pull_down_menu('id['.$attributes[$o]['oid'].']',array_merge(array(array('id'=>0, 'text'=>'Choose '.$attributes[$o]['oname'].'...')), $attributes[$o]['ovals']),$attributes[$o]['ovals'], "id="" . (int)$this->products_id . """)."n";
    }

Ok test now, OK it works...
I join the zip with all files...

Have fun
http://www.expressiv.net/oscss/OscssQTPro.zip
Dernière édition par enguer le Jeu 23 Oct 2008, 15:03, édité 1 fois.
enguer
Membre inactif
 
Messages: 1
Inscription: Mer 06 Juin 2007, 14:57
Localisation: Montpellier

Messagepar j4k » Jeu 07 Juin 2007, 13:28

nice thx :)

need to be added on [ wiki ]
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar madrilene » Lun 02 Juil 2007, 13:00

Hello
moi aussi j'aimerai bien installer QT pro sur ma version oscss.

Est ce qu'il suffit de suivre les modifs mentionnées par enguer ?
(j'ai rien vu sur le Wiki et la zone plugin,--> est ce qu'il faudra que j'efface les modifs à la main si je veux desinstaller QT ?)

Deuxieme question, est ce qu'il vaut mieux installer QT pro avant les autres contribs (par exemple celle pour utiliser excel) ? ou en fin de course ?

Merci des infos et conseils
madrilene
Membre actif
 
Messages: 19
Inscription: Ven 09 Fév 2007, 02:08

Messagepar cymbeline » Mer 29 Aoû 2007, 23:05

Bonjour,

J'ai installé cette contribution grâce au zip fournit en lien plus haut.

Petites modifications.

Dans le fichier catalog/admin/includes/data_base.php il manquait le prefix pour les requetes sur tables prefixée osc_ comme ceci :

Code: Tout sélectionner
//++++ QT Pro: Begin Changed code
  define('TABLE_PRODUCTS_STOCK', DB_TABLE_PREFIX .
   'products_stock');
//++++ QT Pro: End Changed Code

Faire attention avec le fichier catalog/includes/modules/product_listing, si vous l'utilisez, regardez dans le code, il y a :
Code: Tout sélectionner
<input type="image" src="/templates/chrome/images/BoutonAchatRapide.jpg"

Pour le bouton, attention au chemin d'accès à l'image.

3 - Pour le fichier reports.php, ne fonctionnant pas j'ai adpaté un menu, voir ici :

http://forums.oscss.org/viewtopic.php?id=835

Voilà, sinon, c'est super ! :)

Merci enguer
cymbeline
Membre très actif
 
Messages: 265
Inscription: Mer 06 Sep 2006, 20:01
Localisation: Nevers

Messagepar waloukern » Jeu 20 Sep 2007, 16:34

Pour passer en Php5 il faut modifier le form action du fichier stock.php
$_SERVER['PHP_SELF']; au lieu de $PHP_SELF;
waloukern
Membre actif
 
Messages: 31
Inscription: Mar 05 Déc 2006, 19:17

Messagepar oscim » Mer 23 Jan 2008, 21:03

cymbeline a écrit:Dans le fichier catalog/admin/includes/data_base.php

Petit rectif:

il faut lire catalog/admin/includes/database_tables.php.

PS:: attentions voir http://forums.oscss.org/viewtopic.php?id=970

Sur un boutique, je perd la class attributemanager dans categorie, lors modif produits.
Impecable sur gestion des attributs et d'autre boutique.

Avez vous déja rencontré ce pbs .
Dernière édition par oscim le Dim 27 Jan 2008, 16:26, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar oscim » Ven 21 Mar 2008, 16:20

P'tite nouvelle.

Pour la pris en compte dans le shopping cart des quantites des attributs de produits.

voir wiki.
http://wiki.oscss.org/doku.php?id=osc:plugin:qtpro
Dernière édition par oscim le Ven 21 Mar 2008, 19:32, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Dim 12 Oct 2008, 17:39

oscim a écrit:P'tite nouvelle.

Pour la pris en compte dans le shopping cart des quantites des attributs de produits.

voir wiki.
http://wiki.oscss.org/doku.php?id=osc:plugin:qtpro

Qu'elle est longue à installer cette contrib ! De plus la prise en compte dans le panier ne marche pas chez moi, ni avec cette manip ci-dessus, ni avec ces changements : http://forums.oscss.org/viewtopic.php?pid=4834#p4834

En stock, j'ai 2 fleurs bleues et 5 fleurs rouges. Mon panier m'indique un "out of stock" même si je ne prends qu'une fleur de chaque couleur :(

Je ne saisis pas tout, peut-être dois-je refaire mes quantités de fleurs à zéro avant d'appliquer les quantités par attributs ? Je vais essayer...
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Dim 12 Oct 2008, 20:54

Ca ne marche pas non plus...
Maintenant en plus, mes options ne s'affichent plus dans l'admin... ça s'affichait sous oscss 1.2 mais j'ai réinstallé QTPro sous 1.2.1 et voila :

Image
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Mar 14 Oct 2008, 18:41

Je me casse vraiment les dents là-dessus :| C'est chaud non ?
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar j4k » Mer 22 Oct 2008, 17:41

je ne comprends pas ce que tu veux dire "mes options ne s'affichent pas"

sur la copie d'écran on voit apparaître "tour de doigt"
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Gwendall » Mer 22 Oct 2008, 19:08

Cynic, j'ai également installé cette contrib (après beaucoup de mal) et à voir ta capture d'écran, tu sembles avoir réussi. Je ne vois pas trop où est ton pb. Tes options sont bien affichées : Taille (2 choix : 1 ou 14) ?
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar cynic- » Jeu 23 Oct 2008, 12:16

En fait...
Après avoir installé QT Pro la 1ère fois, j'avais une autre case de texte à droite de la case de prix "0.0000"
A ma 2ème install cette case avait disparu.
J'ai donc cru à un problème de QT Pro, mais en fait je ne sais pas à quoi sert cette case. J'ai cru que c'était là qu'on entrait les "quantités par options" mais je n'en suis plus si sûr puisque pour cela, on a la rubrique admin/stock.php

J'ai bien avancé sur QT Pro et après pas mal de galères (1 dimanche complet et 1 autre journée 1/2 !) il me reste à régler les problèmes de shopping_cart. En effet j'ai 2 soucis :
1. le panier ne m'affiche pas quelle option j'ai commandé (un pull, oui, mais en L ou XL ? )
2. j'ai le fameux bug du stock (ex : j'ai 2 fleurs rouges, 2 fleurs vertes, eh bien je peux commander 4 fleurs vertes) mais il me semble qu'un autre topic aborde ce sujet.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Ven 24 Oct 2008, 13:53

Résolu ! Le panier m'affiche l'option commandée, et le bug du stock a disparu.

Vivement la mise en ligne, maintenant :)
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar j4k » Ven 24 Oct 2008, 14:11

tu as isolé ton problème?

peux-tu le décrire?
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar cynic- » Ven 24 Oct 2008, 15:02

Pas exactement pour l'instant, cependant mes dernières ont été faites sur
catalog > includes > content > shopping_cart.php
J'ai encore un souci dans les fiches-produits : si on affiche les attributs sous forme de "single radio set" alors la mention "stock épuisé" s'affiche bien près des articles où le stock est à zéro.
Mais avec " multiple dropdowns productlist " aucun affichage pour renseigner le client, sauf une fois arrivé au panier.

Je vais déjà renseigner tous les stocks du magasin de mon client, ensuite, je vais tenter de voir d'où venait / vient le bug.

QT Pro est la contrib qui m'a donné le plus de boulot jusqu'ici !
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar cynic- » Mar 16 Juin 2009, 19:53

Une amélioration à apporter à QT Pro ?
Dans l'admin, le haut de page indique les statistiques suivantes : clients, produits, critiques...
Mais les stats "produits" prennent juste en compte les articles cochés en vert dans les catégories, pas les quantités par attributs gérés dans QT Pro... est-il possible de modifier cette fonction ?

Je vais y jeter un œil - peut-être faut-il s'inspirer de la page stats_low_stock_attrib.php - mais toute aide est la bienvenue.

Pensez-vous que cette fonction soit utile ?
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Jeu 18 Juin 2009, 13:26

Il me semble bien que lors de la modification des qt dans les attribut géré par Qtpro, le mécanisme consiste à gérer les qt dans une autre table.

Donc la qt de produits est ensuite reporté dans la table principal, uniquement avec la somme des qt des attributs.

Donc pour avoir effectivement ce report dans les stats, il faut effectivement modifié la fonction stat.

Quant à l'utilité, il me semble surtout qu'il s'agit de finaliser l'intégration du plugin, donc c'est mieux d'apres moi si tu le fait, car ca rend l'interface et les information cohérente d'une page a l'autre.

Si tu fait cette modif, ca m'interresse aussi a l'occas.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33


Retourner vers Plugin

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron