Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Help! prices are coming out in negative values


catalepticstate

Recommended Posts

Posted

If I add the product with the quantity it will show price in minus in the shopping cart.

Here is the Shopping_cart.php

<?php
/*
 $Id: shopping_cart.php 1739 2007-12-20 00:52:16Z hpdl $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 class shoppingCart {
   var $contents, $total, $weight, $cartID, $content_type;

   function shoppingCart() {
     $this->reset();
   }

   function restore_contents() {
     global $customer_id;

     if (!tep_session_is_registered('customer_id')) return false;

// insert current cart contents in database
     if (is_array($this->contents)) {
       reset($this->contents);
       while (list($products_id, ) = each($this->contents)) {
         $qty = $this->contents[$products_id]['qty'];
         $product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
         if (!tep_db_num_rows($product_query)) {
           tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . $qty . "', '" . date('Ymd') . "')");

           if (isset($this->contents[$products_id]['attributes'])) {
             reset($this->contents[$products_id]['attributes']);
             while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {
               tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");
             }
           }
         } else {
           tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . $qty . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
         }
       }
     }

// reset per-session cart contents, but not the database contents
     $this->reset(false);

     $products_query = tep_db_query("select products_id, customers_basket_quantity from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");
     while ($products = tep_db_fetch_array($products_query)) {
       $this->contents[$products['products_id']] = array('qty' => $products['customers_basket_quantity']);
// attributes
       $attributes_query = tep_db_query("select products_options_id, products_options_value_id from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products['products_id']) . "'");
       while ($attributes = tep_db_fetch_array($attributes_query)) {
         $this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id'];
       }
     }

     $this->cleanup();
   }

   function reset($reset_database = false) {
     global $customer_id;

     $this->contents = array();
     $this->total = 0;
     $this->weight = 0;
     $this->content_type = false;

     if (tep_session_is_registered('customer_id') && ($reset_database == true)) {
       tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");
       tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "'");
     }

     unset($this->cartID);
     if (tep_session_is_registered('cartID')) tep_session_unregister('cartID');
   }

   function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {
     global $new_products_id_in_cart, $customer_id;

     $products_id_string = tep_get_uprid($products_id, $attributes);
     $products_id = tep_get_prid($products_id_string);

     if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) {
       $qty = MAX_QTY_IN_CART;
     }

     $attributes_pass_check = true;

     if (is_array($attributes)) {
       reset($attributes);
       while (list($option, $value) = each($attributes)) {
         if (!is_numeric($option) || !is_numeric($value)) {
           $attributes_pass_check = false;
           break;
         }
       }
     }

     if (is_numeric($products_id) && is_numeric($qty) && ($attributes_pass_check == true)) {
       $check_product_query = tep_db_query("select products_status from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
       $check_product = tep_db_fetch_array($check_product_query);

       if (($check_product !== false) && ($check_product['products_status'] == '1')) {
         if ($notify == true) {
           $new_products_id_in_cart = $products_id;
           tep_session_register('new_products_id_in_cart');
         }

         if ($this->in_cart($products_id_string)) {
           $this->update_quantity($products_id_string, $qty, $attributes);
         } else {
           $this->contents[$products_id_string] = array('qty' => (int)$qty);
// insert into database
           if (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . $qty . "', '" . date('Ymd') . "')");

           if (is_array($attributes)) {
             reset($attributes);
             while (list($option, $value) = each($attributes)) {
               $this->contents[$products_id_string]['attributes'][$option] = $value;
// insert into database
               if (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");
             }
           }
         }

         $this->cleanup();

// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure
         $this->cartID = $this->generate_cart_id();
       }
     }
   }

   function update_quantity($products_id, $quantity = '', $attributes = '') {
     global $customer_id;

     if (empty($quantity)) return true; // nothing needs to be updated if theres no quantity, so we return true..

     $products_id_string = tep_get_uprid($products_id, $attributes);
     $products_id = tep_get_prid($products_id_string);

     if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) {
       $quantity = MAX_QTY_IN_CART;
     }

     $attributes_pass_check = true;

     if (is_array($attributes)) {
       reset($attributes);
       while (list($option, $value) = each($attributes)) {
         if (!is_numeric($option) || !is_numeric($value)) {
           $attributes_pass_check = false;
           break;
         }
       }
     }

     if (is_numeric($products_id) && isset($this->contents[$products_id_string]) && is_numeric($quantity) && ($attributes_pass_check == true)) {
       $this->contents[$products_id_string] = array('qty' => (int)$quantity);
// update database
       if (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . $quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");

       if (is_array($attributes)) {
         reset($attributes);
         while (list($option, $value) = each($attributes)) {
           $this->contents[$products_id_string]['attributes'][$option] = $value;
// update database
           if (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " set products_options_value_id = '" . (int)$value . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "' and products_options_id = '" . (int)$option . "'");
         }
       }
     }
   }

   function cleanup() {
     global $customer_id;

     reset($this->contents);
     while (list($key,) = each($this->contents)) {
       if ($this->contents[$key]['qty'] < 1) {
         unset($this->contents[$key]);
// remove from database
         if (tep_session_is_registered('customer_id')) {
           tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");
           tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");
         }
       }
     }
   }

   function count_contents() {  // get total number of items in cart
     $total_items = 0;
     if (is_array($this->contents)) {
       reset($this->contents);
       while (list($products_id, ) = each($this->contents)) {
         $total_items += $this->get_quantity($products_id);
       }
     }

     return $total_items;
   }

   function get_quantity($products_id) {
     if (isset($this->contents[$products_id])) {
       return $this->contents[$products_id]['qty'];
     } else {
       return 0;
     }
   }

   function in_cart($products_id) {
     if (isset($this->contents[$products_id])) {
       return true;
     } else {
       return false;
     }
   }

   function remove($products_id) {
     global $customer_id;

     unset($this->contents[$products_id]);
// remove from database
     if (tep_session_is_registered('customer_id')) {
       tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
       tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");
     }

// assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure
     $this->cartID = $this->generate_cart_id();
   }

   function remove_all() {
     $this->reset();
   }

   function get_product_id_list() {
     $product_id_list = '';
     if (is_array($this->contents)) {
       reset($this->contents);
       while (list($products_id, ) = each($this->contents)) {
         $product_id_list .= ', ' . $products_id;
       }
     }

     return substr($product_id_list, 2);
   }

   function calculate() {
     global $currencies;

     $this->total = 0;
     $this->weight = 0;
     if (!is_array($this->contents)) return 0;

     reset($this->contents);
     while (list($products_id, ) = each($this->contents)) {
       $qty = $this->contents[$products_id]['qty'];

// products price
       $product_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_weight from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
       if ($product = tep_db_fetch_array($product_query)) {
         $prid = $product['products_id'];
         $products_tax = tep_get_tax_rate($product['products_tax_class_id']);
         $products_price = $product['products_price'];
         $products_weight = $product['products_weight'];

         $specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");
         if (tep_db_num_rows ($specials_query)) {
           $specials = tep_db_fetch_array($specials_query);
           $products_price = $specials['specials_new_products_price'];
         }

         $this->total += $currencies->calculate_price($products_price, $products_tax, $qty);
         $this->weight += ($qty * $products_weight);
       }

// attributes price
// [email protected]
// add-weight-to-product-attributes mod:
// added weight to db query

       if (isset($this->contents[$products_id]['attributes'])) {
         reset($this->contents[$products_id]['attributes']);
         while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {
           $attribute_price_query = tep_db_query("select options_values_price, price_prefix, options_values_weight from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");
           $attribute_price = tep_db_fetch_array($attribute_price_query);
           if ($attribute_price['price_prefix'] == '+') {
             $this->total += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
           } else {
             $this->total -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
           }
           if(!empty($attribute_price['options_values_weight'])) {
               // [email protected]
               // add-weight-to-product-attributes mod:
               $this->weight += ($qty * $attribute_price['options_values_weight']);
           } // END if(!empty($attribute_price['options_values_weight'])) {
         }
       }
     }
   }

   function attributes_price($products_id) {
     $attributes_price = 0;


     if (isset($this->contents[$products_id]['attributes'])) {
       reset($this->contents[$products_id]['attributes']);
       while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {
         $attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");
         $attribute_price = tep_db_fetch_array($attribute_price_query);
// Actual Attribute Price
         $price_prefix = $attribute_price['price_prefix'];
         $option_price = $attribute_price['options_values_price'];
         $products_query = tep_db_query("select products_price from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
         $products_stuff = tep_db_fetch_array($products_query);
         $products_price = $products_stuff['products_price'];

         if ($price_prefix == '+') {
           $attributes_price += $option_price;
         } elseif ($price_prefix == '-') {
           $attributes_price -= $option_price;
         } else {
           $attributes_price += tep_adjust_price($option_price, $products_price);
         }
// Actual Attribute Price
       }
     }

     return $attributes_price;
   }

   function get_products() {
     global $languages_id;

     if (!is_array($this->contents)) return false;

     $products_array = array();
     reset($this->contents);
     while (list($products_id, ) = each($this->contents)) {
       $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'];

         $specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");
         if (tep_db_num_rows($specials_query)) {
           $specials = tep_db_fetch_array($specials_query);
           $products_price = $specials['specials_new_products_price'];

         }

         $products_array[] = array('id' => $products_id,
                                   'name' => $products['products_name'],
                                   'model' => $products['products_model'],
                                   'image' => $products['products_image'],
                                   'price' => $products_price,
                                   'quantity' => $this->contents[$products_id]['qty'],

                                   'weight' => $products['products_weight'] + $attributes_total_weight,
                                   'final_price' => ($products_price + $this->attributes_price($products_id)),
                                   'tax_class_id' => $products['products_tax_class_id'],
                                   'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));

                                   // determine total weight of attributes to add to weight of product                  
      $attributes_total_weight = 0;

         if (isset($this->contents[$products_id]['attributes'])) {

             reset($this->contents[$products_id]['attributes']);

             $where = ' AND ((';

             while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {

             $where .= 'options_id=' . $option . ' AND options_values_id=' . $value . ') OR (';

            }

             $where=substr($where, 0, -5) . ')';


             $attribute_weight_query = tep_db_query('SELECT options_values_weight FROM ' . TABLE_PRODUCTS_ATTRIBUTES . ' WHERE products_id=' . (int)$prid . $where);


                 if (tep_db_num_rows($attribute_weight_query)) {

                      while ($attributes_weight_array = tep_db_fetch_array($attribute_weight_query)) {
                                         $attributes_total_weight +=  $attributes_weight_array['options_values_weight'];

                            }

                    } // end if (tep_db_num_rows($attribute_weight_query))

             } // end if (isset($this->contents[$products_id]['attributes']))

       }
     }

     return $products_array;
   }

   function show_total() {
     $this->calculate();

     return $this->total;
   }

   function show_weight() {
     $this->calculate();

     return $this->weight;
   }

   function generate_cart_id($length = 5) {
     return tep_create_random_value($length, 'digits');
   }

   function get_content_type() {
     $this->content_type = false;

     if ( (DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0) ) {
       reset($this->contents);
       while (list($products_id, ) = each($this->contents)) {

         if (isset($this->contents[$products_id]['attributes'])) {
           reset($this->contents[$products_id]['attributes']);
           while (list(, $value) = each($this->contents[$products_id]['attributes'])) {
             $virtual_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad where pa.products_id = '" . (int)$products_id . "' and pa.options_values_id = '" . (int)$value . "' and pa.products_attributes_id = pad.products_attributes_id");
             $virtual_check = tep_db_fetch_array($virtual_check_query);

             if ($virtual_check['total'] > 0) {
               switch ($this->content_type) {
                 case 'physical':
                   $this->content_type = 'mixed';

                   return $this->content_type;
                   break;
                 default:
                   $this->content_type = 'virtual';
                   break;
               }
             } else {
               switch ($this->content_type) {
                 case 'virtual':
                   $this->content_type = 'mixed';

                   return $this->content_type;
                   break;
                 default:
                   $this->content_type = 'physical';
                   break;
               }
             }
           }
         } else {
           switch ($this->content_type) {
             case 'virtual':
               $this->content_type = 'mixed';

               return $this->content_type;
               break;
             default:
               $this->content_type = 'physical';
               break;
           }
         }
       }
     } else {
       $this->content_type = 'physical';
     }

     return $this->content_type;
   }

   function unserialize($broken) {
     for(reset($broken);$kv=each($broken);) {
       $key=$kv['key'];
       if (gettype($this->$key)!="user function")
       $this->$key=$kv['value'];
     }
   }

 }
?>

Posted

This is the products addtributes page:

<?php
/*
 $Id: products_attributes.php 1776 2008-01-09 20:41:00Z hpdl $

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

 Copyright (c) 2008 osCommerce

 Released under the GNU General Public License
*/

 require('includes/application_top.php');
 $languages = tep_get_languages();


 $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

 $option_page = (isset($HTTP_GET_VARS['option_page']) && is_numeric($HTTP_GET_VARS['option_page'])) ? $HTTP_GET_VARS['option_page'] : 1;
 $value_page = (isset($HTTP_GET_VARS['value_page']) && is_numeric($HTTP_GET_VARS['value_page'])) ? $HTTP_GET_VARS['value_page'] : 1;
 $attribute_page = (isset($HTTP_GET_VARS['attribute_page']) && is_numeric($HTTP_GET_VARS['attribute_page'])) ? $HTTP_GET_VARS['attribute_page'] : 1;

 $page_info = 'option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page;

   function update_stock($product_id) {
   $get_quantity_query = tep_db_query("select sum(options_quantity) as total_quantity from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$product_id . "'");
       $get_quantity = tep_db_fetch_array($get_quantity_query);
   $total_quantity = $get_quantity['total_quantity'];
   tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $total_quantity . "' where products_id = '" . (int)$product_id . "'");
 }

 if (tep_not_null($action)) {
   switch ($action) {
     case 'add_product_options':
       $products_options_id = tep_db_prepare_input($HTTP_POST_VARS['products_options_id']);
       $option_name_array = $HTTP_POST_VARS['option_name'];

       for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
         $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]);

         tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS . " (products_options_id, products_options_name, language_id) values ('" . (int)$products_options_id . "', '" . tep_db_input($option_name) . "', '" . (int)$languages[$i]['id'] . "')");
       }
       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'add_product_option_values':
       $value_name_array = $HTTP_POST_VARS['value_name'];
       $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']);
       $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);

       for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
         $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]);

         tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name) values ('" . (int)$value_id . "', '" . (int)$languages[$i]['id'] . "', '" . tep_db_input($value_name) . "')");
       }

       tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_id, products_options_values_id) values ('" . (int)$option_id . "', '" . (int)$value_id . "')");

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'add_product_attributes':
       $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
       $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']);
       $values_id = tep_db_prepare_input($HTTP_POST_VARS['values_id']);
       $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']);
// QuantityMod - BEGIN editing
       $value_quantity = tep_db_prepare_input($HTTP_POST_VARS['value_quantity']);
// QuantityMod - FINISH editing    
       $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']);
    $value_weight = tep_db_prepare_input($HTTP_POST_VARS['value_weight']);

// QuantityMod - BEGIN editing
       tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " values ('', '" . (int)$products_id . "', '" . (int)$options_id . "', '" . (int)$values_id . "', '" . tep_db_input($value_price) . "', '" . tep_db_input($price_prefix) . "', '" . (int)$value_quantity . "', '" . tep_db_input($value_weight) . "')");
       update_stock($products_id);
// QuantityMod - FINISH editing

       if (DOWNLOAD_ENABLED == 'true') {
         $products_attributes_id = tep_db_insert_id();

         $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']);
         $products_attributes_maxdays = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxdays']);
         $products_attributes_maxcount = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxcount']);

         if (tep_not_null($products_attributes_filename)) {
           tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " values (" . (int)$products_attributes_id . ", '" . tep_db_input($products_attributes_filename) . "', '" . tep_db_input($products_attributes_maxdays) . "', '" . tep_db_input($products_attributes_maxcount) . "')");
         }
       }

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'update_option_name':
       $option_name_array = $HTTP_POST_VARS['option_name'];
       $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);

       for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
         $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]);

         tep_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_name = '" . tep_db_input($option_name) . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
       }

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'update_value':
       $value_name_array = $HTTP_POST_VARS['value_name'];
       $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']);
       $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);

       for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
         $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]);

         tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES . " set products_options_values_name = '" . tep_db_input($value_name) . "' where products_options_values_id = '" . tep_db_input($value_id) . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
       }

       tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " set products_options_id = '" . (int)$option_id . "'  where products_options_values_id = '" . (int)$value_id . "'");

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'update_product_attribute':
       $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
       $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']);
       $values_id = tep_db_prepare_input($HTTP_POST_VARS['values_id']);
       $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']);
// QuantityMod - BEGIN editing
       $value_quantity = tep_db_prepare_input($HTTP_POST_VARS['value_quantity']);
// QuantityMod - FINISH editing    
       $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']);
       $value_weight = tep_db_prepare_input($HTTP_POST_VARS['value_weight']);
       $attribute_id = tep_db_prepare_input($HTTP_POST_VARS['attribute_id']);

// QuantityMod - BEGIN editing
       tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set products_id = '" . (int)$products_id . "', options_id = '" . (int)$options_id . "', options_values_id = '" . (int)$values_id . "', options_values_price = '" . tep_db_input($value_price) . "', price_prefix = '" . tep_db_input($price_prefix) . "', options_quantity = '" . (int)$value_quantity . "', options_values_weight = '" . tep_db_input($value_weight) . "' where products_attributes_id = '" . (int)$attribute_id . "'");
       update_stock($products_id);
// QuantityMod - FINISH editing

       if (DOWNLOAD_ENABLED == 'true') {
         $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']);
         $products_attributes_maxdays = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxdays']);
         $products_attributes_maxcount = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxcount']);

         if (tep_not_null($products_attributes_filename)) {
           tep_db_query("replace into " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " set products_attributes_id = '" . (int)$attribute_id . "', products_attributes_filename = '" . tep_db_input($products_attributes_filename) . "', products_attributes_maxdays = '" . tep_db_input($products_attributes_maxdays) . "', products_attributes_maxcount = '" . tep_db_input($products_attributes_maxcount) . "'");
         }
       }

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'delete_option':
       $option_id = tep_db_prepare_input($HTTP_GET_VARS['option_id']);

       tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$option_id . "'");

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'delete_value':
       $value_id = tep_db_prepare_input($HTTP_GET_VARS['value_id']);

       tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$value_id . "'");
       tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$value_id . "'");
       tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_values_id = '" . (int)$value_id . "'");

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
     case 'delete_attribute':
       $attribute_id = tep_db_prepare_input($HTTP_GET_VARS['attribute_id']);
// QuantityMod - BEGIN editing        
       $get_products_id_query = tep_db_query("select products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_attributes_id='" . (int)$attribute_id . "'");
       $get_products_id = tep_db_fetch_array($get_products_id_query);
// QuantityMod - FINISH editing

       tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_attributes_id = '" . (int)$attribute_id . "'");

// QuantityMod - BEGIN editing
       update_stock($get_products_id['products_id']);
// QuantityMod - FINISH editing

// added for DOWNLOAD_ENABLED. Always try to remove attributes, even if downloads are no longer enabled
       tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " where products_attributes_id = '" . (int)$attribute_id . "'");

       tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
       break;
   }
 }
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="2" cellpadding="2">
 <tr>
   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
   </table></td>
<!-- body_text //-->
   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
<!-- options and values//-->
     <tr>
       <td width="100%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
         <tr>
           <td valign="top" width="50%"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<!-- options //-->
<?php
 if ($action == 'delete_product_option') { // delete product option
   $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$HTTP_GET_VARS['option_id'] . "' and language_id = '" . (int)$languages_id . "'");
   $options_values = tep_db_fetch_array($options);
?>
             <tr>
               <td class="pageHeading"> <?php echo $options_values['products_options_name']; ?> </td>
             </tr>
             <tr>
               <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
<?php
   $products = tep_db_query("select p.products_id, pd.products_name, pov.products_options_values_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov, " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pov.language_id = '" . (int)$languages_id . "' and pd.language_id = '" . (int)$languages_id . "' and pa.products_id = p.products_id and pa.options_id='" . (int)$HTTP_GET_VARS['option_id'] . "' and pov.products_options_values_id = pa.options_values_id order by pd.products_name");
   if (tep_db_num_rows($products)) {
?>
                 <tr class="dataTableHeadingRow">
                   <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ID; ?> </td>
                   <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_PRODUCT; ?> </td>
                   <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_VALUE; ?> </td>
                 </tr>
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
<?php
     $rows = 0;
     while ($products_values = tep_db_fetch_array($products)) {
       $rows++;
?>
                 <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
                   <td align="center" class="smallText"> <?php echo $products_values['products_id']; ?> </td>
                   <td class="smallText"> <?php echo $products_values['products_name']; ?> </td>
                   <td class="smallText"> <?php echo $products_values['products_options_values_name']; ?> </td>
                 </tr>
<?php
     }
?>
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
                 <tr>
                   <td colspan="3" class="main"><br><?php echo TEXT_WARNING_OF_DELETE; ?></td>
                 </tr>
                 <tr>
                   <td align="right" colspan="3" class="main"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td>
                 </tr>
<?php
   } else {
?>
                 <tr>
                   <td class="main" colspan="3"><br><?php echo TEXT_OK_TO_DELETE; ?></td>
                 </tr>
                 <tr>
                   <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option&option_id=' . $HTTP_GET_VARS['option_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>   <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td>
                 </tr>
<?php
   }
?>
               </table></td>
             </tr>
<?php
 } else {
?>
             <tr>
               <td colspan="3" class="pageHeading"> <?php echo HEADING_TITLE_OPT; ?> </td>
               <? // QuantityMod - BEGIN editing ?>
               <td align="right"><br><form name="option_order_by" action="<?php echo FILENAME_PRODUCTS_ATTRIBUTES; ?>"><select name="selected" onChange="go_option()"><option value="products_options_id"<?php if ($option_order_by == 'products_options_id') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_ID; ?></option><option value="products_options_name" selected<?php if ($option_order_by == 'products_options_name') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_NAME; ?></option>
               </select></form></td>
<? // QuantityMod - FINISH editing ?>
             </tr>
             <tr>
               <td colspan="3" class="smallText" align="right">
<?php
   $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by products_options_id";
   $options_split = new splitPageResults($option_page, MAX_ROW_LISTS_OPTIONS, $options, $options_query_numrows);

   echo $options_split->display_links($options_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $option_page, 'value_page=' . $value_page . '&attribute_page=' . $attribute_page, 'option_page');
?>
               </td>
             </tr>
             <tr>
               <td colspan="3"><?php echo tep_black_line(); ?></td>
             </tr>
             <tr class="dataTableHeadingRow">
               <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_ID; ?> </td>
               <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_NAME; ?> </td>
               <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ACTION; ?> </td>
             </tr>
             <tr>
               <td colspan="3"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   $next_id = 1;
   $rows = 0;
   $options = tep_db_query($options);
   while ($options_values = tep_db_fetch_array($options)) {
     $rows++;
?>
             <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
<?php
     if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
       echo '<form name="option" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_name&' . $page_info, 'NONSSL') . '" method="post">';
       $inputs = '';
       for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
         $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . $options_values['products_options_id'] . "' and language_id = '" . $languages[$i]['id'] . "'");
         $option_name = tep_db_fetch_array($option_name);
         $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"> <br>';
       }
?>
               <td align="center" class="smallText"> <?php echo $options_values['products_options_id']; ?><input type="hidden" name="option_id" value="<?php echo $options_values['products_options_id']; ?>"> </td>
               <td class="smallText"><?php echo $inputs; ?></td>
               <td align="center" class="smallText"> <?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a> </td>
<?php
       echo '</form>' . "\n";
     } else {
?>
               <td align="center" class="smallText"> <?php echo $options_values["products_options_id"]; ?> </td>
               <td class="smallText"> <?php echo $options_values["products_options_name"]; ?> </td>
               <td align="center" class="smallText"> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>  <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a> </td>
<?php
     }
?>
             </tr>
<?php
     $max_options_id_query = tep_db_query("select max(products_options_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS);
     $max_options_id_values = tep_db_fetch_array($max_options_id_query);
     $next_id = $max_options_id_values['next_id'];
   }
?>
             <tr>
               <td colspan="3"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   if ($action != 'update_option') {
?>
             <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
<?php
     echo '<form name="options" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_options&' . $page_info, 'NONSSL') . '" method="post"><input type="hidden" name="products_options_id" value="' . $next_id . '">';
     $inputs = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
       $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20"> <br>';
     }
?>
               <td align="center" class="smallText"> <?php echo $next_id; ?> </td>
               <td class="smallText"><?php echo $inputs; ?></td>
               <td align="center" class="smallText"> <?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?> </td>
<?php
     echo '</form>';
?>
             </tr>
             <tr>
               <td colspan="3"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   }
 }
?>
           </table></td>
<!-- options eof //-->
           <td valign="top" width="50%"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<!-- value //-->
<?php
 if ($action == 'delete_option_value') { // delete product option value
   $values = tep_db_query("select products_options_values_id, products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$HTTP_GET_VARS['value_id'] . "' and language_id = '" . (int)$languages_id . "'");
   $values_values = tep_db_fetch_array($values);
?>
             <tr>
               <td colspan="3" class="pageHeading"> <?php echo $values_values['products_options_values_name']; ?> </td>
             </tr>
             <tr>
               <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
<?php
   $products = tep_db_query("select p.products_id, pd.products_name, po.products_options_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS . " po, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and po.language_id = '" . (int)$languages_id . "' and pa.products_id = p.products_id and pa.options_values_id='" . (int)$HTTP_GET_VARS['value_id'] . "' and po.products_options_id = pa.options_id order by pd.products_name");
   if (tep_db_num_rows($products)) {
?>
                 <tr class="dataTableHeadingRow">
                   <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ID; ?> </td>
                   <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_PRODUCT; ?> </td>
                   <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_NAME; ?> </td>
                 </tr>
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
<?php
     while ($products_values = tep_db_fetch_array($products)) {
       $rows++;
?>
                 <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
                   <td align="center" class="smallText"> <?php echo $products_values['products_id']; ?> </td>
                   <td class="smallText"> <?php echo $products_values['products_name']; ?> </td>
                   <td class="smallText"> <?php echo $products_values['products_options_name']; ?> </td>
                 </tr>
<?php
     }
?>
                 <tr>
                   <td colspan="3"><?php echo tep_black_line(); ?></td>
                 </tr>
                 <tr>
                   <td class="main" colspan="3"><br><?php echo TEXT_WARNING_OF_DELETE; ?></td>
                 </tr>
                 <tr>
                   <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td>
                 </tr>
<?php
   } else {
?>
                 <tr>
                   <td class="main" colspan="3"><br><?php echo TEXT_OK_TO_DELETE; ?></td>
                 </tr>
                 <tr>
                   <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_value&value_id=' . $HTTP_GET_VARS['value_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a>   <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td>
                 </tr>
<?php
   }
?>
                 </table></td>
             </tr>
<?php
 } else {
?>
             <tr>
               <td colspan="4" class="pageHeading"> <?php echo HEADING_TITLE_VAL; ?> </td>
             </tr>
             <tr>
               <td colspan="4" class="smallText" align="right">
<?php
   $values = "select pov.products_options_values_id, pov.products_options_values_name, pov2po.products_options_id from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " pov2po on pov.products_options_values_id = pov2po.products_options_values_id where pov.language_id = '" . (int)$languages_id . "' order by pov.products_options_values_id";
   $values_split = new splitPageResults($value_page, MAX_ROW_LISTS_OPTIONS, $values, $values_query_numrows);

   echo $values_split->display_links($values_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $value_page, 'option_page=' . $option_page . '&attribute_page=' . $attribute_page, 'value_page');
?>
               </td>
             </tr>
             <tr>
               <td colspan="4"><?php echo tep_black_line(); ?></td>
             </tr>
             <tr class="dataTableHeadingRow">
               <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_ID; ?> </td>
               <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_NAME; ?> </td>
               <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_VALUE; ?> </td>
               <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ACTION; ?> </td>
             </tr>
             <tr>
               <td colspan="4"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   $next_id = 1;
   $rows = 0;
   $values = tep_db_query($values);
   while ($values_values = tep_db_fetch_array($values)) {
     $options_name = tep_options_name($values_values['products_options_id']);
     $values_name = $values_values['products_options_values_name'];
     $rows++;
?>
             <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
<?php
     if (($action == 'update_option_value') && ($HTTP_GET_VARS['value_id'] == $values_values['products_options_values_id'])) {
       echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_value&' . $page_info, 'NONSSL') . '" method="post">';
       $inputs = '';
       for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
         $value_name = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$values_values['products_options_values_id'] . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
         $value_name = tep_db_fetch_array($value_name);
         $inputs .= $languages[$i]['code'] . ': <input type="text" name="value_name[' . $languages[$i]['id'] . ']" size="15" value="' . $value_name['products_options_values_name'] . '"> <br>';
       }
?>
               <td align="center" class="smallText"> <?php echo $values_values['products_options_values_id']; ?><input type="hidden" name="value_id" value="<?php echo $values_values['products_options_values_id']; ?>"> </td>
               <td align="center" class="smallText"> <?php echo "\n"; ?><select name="option_id">
<?php
       $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by products_options_name");
       while ($options_values = tep_db_fetch_array($options)) {
         echo "\n" . '<option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '"';
         if ($values_values['products_options_id'] == $options_values['products_options_id']) {
           echo ' selected';
         }
         echo '>' . $options_values['products_options_name'] . '</option>';
       }
?>
               </select> </td>
               <td class="smallText"><?php echo $inputs; ?></td>
               <td align="center" class="smallText"> <?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a> </td>
<?php
       echo '</form>';
     } else {
?>
               <td align="center" class="smallText"> <?php echo $values_values["products_options_values_id"]; ?> </td>
               <td align="center" class="smallText"> <?php echo $options_name; ?> </td>
               <td class="smallText"> <?php echo $values_name; ?> </td>
               <td align="center" class="smallText"> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_value&value_id=' . $values_values['products_options_values_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>  <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option_value&value_id=' . $values_values['products_options_values_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a> </td>
<?php
     }
     $max_values_id_query = tep_db_query("select max(products_options_values_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS_VALUES);
     $max_values_id_values = tep_db_fetch_array($max_values_id_query);
     $next_id = $max_values_id_values['next_id'];
   }
?>
             </tr>
             <tr>
               <td colspan="4"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   if ($action != 'update_option_value') {
?>
             <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
<?php
     echo '<form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_option_values&' . $page_info, 'NONSSL') . '" method="post">';
?>
               <td align="center" class="smallText"> <?php echo $next_id; ?> </td>
               <td align="center" class="smallText"> <select name="option_id">
<?php
     $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $languages_id . "' order by products_options_name");
     while ($options_values = tep_db_fetch_array($options)) {
       echo '<option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '">' . $options_values['products_options_name'] . '</option>';
     }

     $inputs = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
       $inputs .= $languages[$i]['code'] . ': <input type="text" name="value_name[' . $languages[$i]['id'] . ']" size="15"> <br>';
     }
?>
               </select> </td>
               <td class="smallText"><input type="hidden" name="value_id" value="<?php echo $next_id; ?>"><?php echo $inputs; ?></td>
               <td align="center" class="smallText"> <?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?> </td>
<?php
     echo '</form>';
?>
             </tr>
             <tr>
               <td colspan="4"><?php echo tep_black_line(); ?></td>
             </tr>
<?php
   }
 }
?>
           </table></td>
         </tr>
       </table></td>
<!-- option value eof //-->
     </tr>
<!-- products_attributes //--> 
     <tr>
       <td class="smallText"> </td>
     </tr>
     <tr>
       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"> <?php echo HEADING_TITLE_ATRIB; ?> </td>
         </tr>
       </table></td>
     </tr>
     <tr>
<?php
 if ($action == 'update_attribute') {
   $form_action = 'update_product_attribute';
 } else {
   $form_action = 'add_product_attributes';
 }
?>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>

           <td class="smallText" align="right">
<?php
 $attributes = "select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pa.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name";
 $attributes_split = new splitPageResults($attribute_page, MAX_ROW_LISTS_OPTIONS, $attributes, $attributes_query_numrows);

 echo $attributes_split->display_links($attributes_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $attribute_page, 'option_page=' . $option_page . '&value_page=' . $value_page, 'attribute_page');
?>
           </td>
         </tr>
       </table>
       <form name="attributes" action="<?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=' . $form_action . '&' . $page_info); ?>" method="post"><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td colspan="8" class="smallText"><?php echo tep_black_line(); ?></td>
         </tr>
         <tr class="dataTableHeadingRow">
           <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_ID; ?> </td>
           <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_PRODUCT; ?> </td>
           <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_NAME; ?> </td>
           <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_VALUE; ?> </td>
           <td class="dataTableHeadingContent" align="right"> <?php echo TABLE_HEADING_OPT_PRICE; ?> </td>
           <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_OPT_PRICE_PREFIX; ?> </td>
           <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ACTION; ?> </td>
         </tr>
         <tr>
           <td colspan="8"><?php echo tep_black_line(); ?></td>
         </tr>
<?php
 $next_id = 1;
 $attributes = tep_db_query($attributes);
 while ($attributes_values = tep_db_fetch_array($attributes)) {
   $products_name_only = tep_get_products_name($attributes_values['products_id']);
   $options_name = tep_options_name($attributes_values['options_id']);
   $values_name = tep_values_name($attributes_values['options_values_id']);
   $rows++;
?>
         <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
<?php
   if (($action == 'update_attribute') && ($HTTP_GET_VARS['attribute_id'] == $attributes_values['products_attributes_id'])) {
?>
           <td class="smallText"> <?php echo $attributes_values['products_attributes_id']; ?><input type="hidden" name="attribute_id" value="<?php echo $attributes_values['products_attributes_id']; ?>"> </td>
           <td class="smallText"> <select name="products_id">
<?php
     $products = tep_db_query("select p.products_id, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pd.language_id = '" . $languages_id . "' order by pd.products_name");
     while($products_values = tep_db_fetch_array($products)) {
       if ($attributes_values['products_id'] == $products_values['products_id']) {
         echo "\n" . '<option name="' . $products_values['products_name'] . '" value="' . $products_values['products_id'] . '" SELECTED>' . $products_values['products_name'] . '</option>';
       } else {
         echo "\n" . '<option name="' . $products_values['products_name'] . '" value="' . $products_values['products_id'] . '">' . $products_values['products_name'] . '</option>';
       }
     }
?>
           </select> </td>
           <td class="smallText"> <select name="options_id">
<?php
     $options = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $languages_id . "' order by products_options_name");
     while($options_values = tep_db_fetch_array($options)) {
       if ($attributes_values['options_id'] == $options_values['products_options_id']) {
         echo "\n" . '<option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '" SELECTED>' . $options_values['products_options_name'] . '</option>';
       } else {
         echo "\n" . '<option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '">' . $options_values['products_options_name'] . '</option>';
       }
     }
?>
           </select> </td>
           <td class="smallText"> <select name="values_id">
<?php
     $values = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where language_id ='" . $languages_id . "' order by products_options_values_name");
     while($values_values = tep_db_fetch_array($values)) {
       if ($attributes_values['options_values_id'] == $values_values['products_options_values_id']) {
         echo "\n" . '<option name="' . $values_values['products_options_values_name'] . '" value="' . $values_values['products_options_values_id'] . '" SELECTED>' . $values_values['products_options_values_name'] . '</option>';
       } else {
         echo "\n" . '<option name="' . $values_values['products_options_values_name'] . '" value="' . $values_values['products_options_values_id'] . '">' . $values_values['products_options_values_name'] . '</option>';
       }
     }
?>       
           </select> </td>
           <td align="right" class="smallText"> <input type="text" name="value_price" value="<?php echo $attributes_values['options_values_price']; ?>" size="6"> </td>
           <td align="center" class="smallText"> <input type="text" name="price_prefix" value="<?php echo $attributes_values['price_prefix']; ?>" size="2"> </td>
           <td align="center" class="smallText"> <?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a> </td>
<?php
     if (DOWNLOAD_ENABLED == 'true') {
       $download_query_raw ="select products_attributes_filename, products_attributes_maxdays, products_attributes_maxcount
                             from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . "
                             where products_attributes_id='" . $attributes_values['products_attributes_id'] . "'";
       $download_query = tep_db_query($download_query_raw);
       if (tep_db_num_rows($download_query) > 0) {
         $download = tep_db_fetch_array($download_query);
         $products_attributes_filename = $download['products_attributes_filename'];
         $products_attributes_maxdays  = $download['products_attributes_maxdays'];
         $products_attributes_maxcount = $download['products_attributes_maxcount'];
       }
?>
         <tr class="<?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?>">
           <td> </td>
           <td colspan="5">
             <table>
               <tr class="<?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?>">
                 <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_DOWNLOAD; ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_FILENAME; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_filename', $products_attributes_filename, 'size="15"'); ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_MAX_DAYS; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_maxdays', $products_attributes_maxdays, 'size="5"'); ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_MAX_COUNT; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_maxcount', $products_attributes_maxcount, 'size="5"'); ?> </td>
               </tr>
             </table>
           </td>
           <td> </td>
         </tr>
<?php
     }
?>
<?php
   } elseif (($action == 'delete_product_attribute') && ($HTTP_GET_VARS['attribute_id'] == $attributes_values['products_attributes_id'])) {
?>
<? // QuantityMod - BEGIN editing ?>
           <tr><td class="smallText"> <b><?php echo $attributes_values["products_attributes_id"]; ?></b> </td>
<? // QuantityMod - FINISH editing ?>
           <td class="smallText"> <b><?php echo $products_name_only; ?></b> </td>
           <td class="smallText"> <b><?php echo $options_name; ?></b> </td>
           <td class="smallText"> <b><?php echo $values_name; ?></b> </td>
           <td align="right" class="smallText"> <b><?php echo $attributes_values["options_values_price"]; ?></b> </td>
<? // QuantityMod - BEGIN editing ?>
           <td align="right" class="smallText"><div align="center"><b><?php echo $attributes_values["options_quantity"]; ?></b></div></td>
<? // QuantityMod - FINISH editing ?>
           <td align="center" class="smallText"> <b><?php echo $attributes_values["price_prefix"]; ?></b> </td>
           <td align="right" class="smallText"> <b><?php echo $attributes_values["options_values_weight"]; ?></b> </td>
           <td align="center" class="smallText"> <b><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_attribute&attribute_id=' . $HTTP_GET_VARS['attribute_id'] . '&' . $page_info) . '">'; ?><?php echo tep_image_button('button_confirm.gif', IMAGE_CONFIRM); ?></a>  <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a> </b></td>
<?php
   } else {
?>
           <td class="smallText"> <?php echo $attributes_values["products_attributes_id"]; ?> </td>
           <td class="smallText"> <?php echo $products_name_only; ?> </td>
           <td class="smallText"> <?php echo $options_name; ?> </td>
           <td class="smallText"> <?php echo $values_name; ?> </td>
           <td align="right" class="smallText"> <?php echo $attributes_values["options_values_price"]; ?> </td>
<? // QuantityMod - BEGIN editing ?>
           <td align="center" class="smallText"> <?php echo $attributes_values["options_quantity"]; ?> </td>
<? // QuantityMod - FINISH editing ?>
           <td align="center" class="smallText"> <?php echo $attributes_values["price_prefix"]; ?> </td>
           <td align="right" class="smallText"> <?php echo $attributes_values["options_values_weight"]; ?> </td>
           <td align="center" class="smallText"> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>  <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_attribute&attribute_id=' . $attributes_values['products_attributes_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a> </td>
<?php
   }
   $max_attributes_id_query = tep_db_query("select max(products_attributes_id) + 1 as next_id from " . TABLE_PRODUCTS_ATTRIBUTES);
   $max_attributes_id_values = tep_db_fetch_array($max_attributes_id_query);
   $next_id = $max_attributes_id_values['next_id'];
?>
         </tr>
<?php
 }
 if ($action != 'update_attribute') {
?>
         <tr>
           <td colspan="8"><?php echo tep_black_line(); ?></td>
         </tr>
         <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
           <td class="smallText"> <?php echo $next_id; ?> </td>
             <td class="smallText"> <select name="products_id">
<?php
   $products = tep_db_query("select p.products_id, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pd.language_id = '" . $languages_id . "' order by pd.products_name");
   while ($products_values = tep_db_fetch_array($products)) {
     echo '<option name="' . $products_values['products_name'] . '" value="' . $products_values['products_id'] . '">' . $products_values['products_name'] . '</option>';
   }
?>
           </select> </td>
           <td class="smallText"> <select name="options_id">
<?php
   $options = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $languages_id . "' order by products_options_name");
   while ($options_values = tep_db_fetch_array($options)) {
     echo '<option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '">' . $options_values['products_options_name'] . '</option>';
   }
?>
           </select> </td>
           <td class="smallText"> <select name="values_id">
<?php
   $values = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where language_id = '" . $languages_id . "' order by products_options_values_name");
   while ($values_values = tep_db_fetch_array($values)) {
     echo '<option name="' . $values_values['products_options_values_name'] . '" value="' . $values_values['products_options_values_id'] . '">' . $values_values['products_options_values_name'] . '</option>';
   }
?>
           </select> </td>
           <td align="right" class="smallText"> <input type="text" name="value_price" size="6"> </td>
<? // QuantityMod - BEGIN editing ?>
           <td align="right" class="smallText"><input name="value_quantity" type="text" id="value_quantity" value="<?php echo $attributes_values['options_quantity']; ?>" size="6"></td>
           <td align="center" class="smallText"> <input type="text" name="price_prefix" value="<?php echo $attributes_values['price_prefix']; ?>" size="2">
            </td>
<? // QuantityMod - FINISH editing ?>
           <td align="center" class="smallText"> <?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?> </td>
         </tr>
<?php
     if (DOWNLOAD_ENABLED == 'true') {
       $products_attributes_maxdays  = DOWNLOAD_MAX_DAYS;
       $products_attributes_maxcount = DOWNLOAD_MAX_COUNT;
?>
         <tr class="<?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?>">
           <td> </td>
           <td colspan="6">
             <table>
               <tr class="<?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?>">
                 <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_DOWNLOAD; ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_FILENAME; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_filename', $products_attributes_filename, 'size="15"'); ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_MAX_DAYS; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_maxdays', $products_attributes_maxdays, 'size="5"'); ?> </td>
                 <td class="smallText"><?php echo TABLE_TEXT_MAX_COUNT; ?></td>
                 <td class="smallText"><?php echo tep_draw_input_field('products_attributes_maxcount', $products_attributes_maxcount, 'size="5"'); ?> </td>
               </tr>
             </table>
           </td>
           <td> </td>
         </tr>
<?php
     } // end of DOWNLOAD_ENABLED section
?>
<?php
 }
?>
         <tr>
           <td colspan="8"><?php echo tep_black_line(); ?></td>
         </tr>
       </table></form></td>
     </tr>
   </table></td>
<!-- products_attributes_eof //-->
 </tr>
</table>
<!-- body_text_eof //-->
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

 

Can you please help me?

  • 2 weeks later...
  • 4 weeks later...
Posted

what would be the best solution for this? I still have not solved this problem and I am stuck. Please help.

Well, instead of posting complete files and bumping I think it would help if you started explaining what you mean with If I add the product with the quantity it will show price in minus in the shopping cart.

 

I'm not a native English speaker so it might be my problem but I don't understand what you say here. The forum rules also tell you that if noone answers your post you should try to explain yourselve better.

 

Some examples of what exactly happens would explain it better if you don't want to post a url.

  • 3 months later...
Posted

what he means is that when he doesnt use either the + or - prefix in the attributes, then although the drop down menu will show the correct price, the value of the item chosen from the drop down menu is taken from the value of the product price at the cart stage instead of replacing said value.

I am having the same problem. :thumbsup:

Posted

the value of the item chosen from the drop down menu is taken from the value of the product price at the cart stage instead of replacing said value.

I am having the same problem. :thumbsup:

It is never supposed to REPLACE the price of the product. Attribute values add or subtract from the base price of a product WITHOUT attributes applied.

 

You MUST use either a + or a - in that box. Not sure why they didn't use a drop down for that instead of a text box.

 

 

It's not a problem. You found a bug and are using it wrong. Unless I read the documentation wrong...

Community Bootstrap Edition, Edge

 

Avoid the most asked question. See How to Secure My Site and How do I...?

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...