Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Option Type Feature v1.6 (for osc 2.2 MS2)


Guest

Recommended Posts

  • Replies 799
  • Created
  • Last Reply

Top Posters In This Topic

A couple questions.

 

I've uploaded my store to my webserver. On my local machine the text boxes showed up fine. Now they just show up in a dropdown with TEXT in them.

 

I have another problem that is related to the version of PHP that I'm running. Could this be contributing to this problem also? What version of PHP is recommended? My webserver has 4.2.2

 

Also, is there a way to have two attributes show up next to each other? I'd like to have one (called Materials) with a drop down, then have another one next to it with a radio button called 'Other' with a text box next to that.

 

Any ideas on how this could be done?

Link to comment
Share on other sites

I've uploaded my store to my webserver.  On my local machine the text boxes showed up fine.  Now they just show up in a dropdown with TEXT in them.

When this happened to me, I went into my database with phpmyadmin and edited the product_options_type_select. Some of those values were incorrectly "0" (dropdown), when they should be "1" (text field).

Link to comment
Share on other sites

Hey everyone, I'm having a similar problem where the word "TEXT" appears in the shopping cart and order confirmation instead of the text that is input by the user when "add to cart" is clicked.

 

The suggestion for this problem is to make sure "checkout_process.php" and "includes/classes/order.php" are both correct and to the best of my knowledge, they are.

 

I don't get any php error messages, it's just that the user-inputted text won't appear in the shopping cart... the 'option name' appears instead.

 

Could someone please check this out at http://kristenzeman.server292.com/catalog/index.php.

 

THANKS FOR YOUR HELP.

email me at [email protected]

Link to comment
Share on other sites

Strange.... about the options, it looks like they are set up to be in alphabetical order, but they are coming up using the ID I think.

 

I use numbers (1-, 2-, etc) to order the options in the pulldown, but they aren't lining up correct.

 

 

Can anyone see where I am making a mistake in the code:

 

from product_listing.php

//clr 030714 update query to pull option_type
     $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name, popt.products_options_type, popt.products_options_length, popt.products_options_comment from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
     while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
   //clr 030714 add case statement to check option type
       switch ($products_options_name['products_options_type']) {
         case PRODUCTS_OPTIONS_TYPE_TEXT:
           //CLR 030714 Add logic for text option
           $products_attribs_query = tep_db_query("select distinct patrib.options_values_price, patrib.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = '" . $products_options_name['products_options_id'] . "'");
           $products_attribs_array = tep_db_fetch_array($products_attribs_query);
           $tmp_html = '<input type="text" name ="id[' . TEXT_PREFIX . $products_options_name['products_options_id'] . ']" size="' . $products_options_name['products_options_length'] .'" maxlength="' . $products_options_name['products_options_length'] . '" value="' . $cart->contents[$HTTP_GET_VARS['products_id']]['attributes_values'][$products_options_name['products_options_id']] .'">  ' . $products_options_name['products_options_comment'];
           if ($products_attribs_array['options_values_price'] != '0') {
             $tmp_html .= '(' . $products_attribs_array['price_prefix'] . $currencies->display_price($products_attribs_array['options_values_price'], $product_info_values['products_tax_class_id']) .')';
           }
?>
           <tr>
             <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
             <td class="main"><?php echo $tmp_html;  ?></td>
           </tr>
<?php
           break;
         case PRODUCTS_OPTIONS_TYPE_RADIO:
           //CLR 030714 Add logic for radio buttons
           $tmp_html = '<table>';
           $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . $products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . $languages_id . "'");
           $checked = true;
           while ($products_options_array = tep_db_fetch_array($products_options_query)) {
             $tmp_html .= '<tr><td class="main">';
             $tmp_html .= tep_draw_radio_field('id[' . $products_options_name['products_options_id'] . ']', $products_options_array['products_options_values_id'], $checked);
             $checked = false;
             $tmp_html .= $products_options_array['products_options_values_name'];
             $tmp_html .=$products_options_name['products_options_comment'];
             if ($products_options_array['options_values_price'] != '0') {
               $tmp_html .= '(' . $products_options_array['price_prefix'] . $currencies->display_price($products_options_array['options_values_price'], $product_info_values['products_tax_class_id']) .') ';
             }
             $tmp_html .= '</tr></td>';
           }
           $tmp_html .= '</table>';
?>
           <tr>
             <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
             <td class="main"><?php echo $tmp_html;  ?></td>
           </tr>
<?php
           break;
         case PRODUCTS_OPTIONS_TYPE_CHECKBOX:
           //CLR 030714 Add logic for checkboxes
           $products_attribs_query = tep_db_query("select distinct patrib.options_values_id, patrib.options_values_price, patrib.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = '" . $products_options_name['products_options_id'] . "'");
           $products_attribs_array = tep_db_fetch_array($products_attribs_query);
           echo '<tr><td class="main">' . $products_options_name['products_options_name'] . ': </td><td class="main">';
           echo tep_draw_checkbox_field('id[' . $products_options_name['products_options_id'] . ']', $products_attribs_array['options_values_id']);
           echo $products_options_name['products_options_comment'];
           if ($products_attribs_array['options_values_price'] != '0') {
             echo '(' . $products_attribs_array['price_prefix'] . $currencies->display_price($products_attribs_array['options_values_price'], $product_info_values['products_tax_class_id']) .') ';
           }
           echo '</td></tr>';
           break;
// iii 030813 added: support for file fields
         case PRODUCTS_OPTIONS_TYPE_FILE:
           $number_of_uploads++;
           $products_attribs_query = tep_db_query("select distinct patrib.options_values_price, patrib.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)tep_db_input($HTTP_GET_VARS['products_id']) . "' and patrib.options_id = '" . $products_options_name['products_options_id'] . "'");
           $products_attribs_array = tep_db_fetch_array($products_attribs_query);
?>
     <tr>
       <td class="main"><?php echo $products_options_name['products_options_name'] . ' (' . $products_attribs_array['price_prefix'] . $currencies->display_price($products_attribs_array['options_values_price'], $product_info_values['products_tax_class_id']) . ') '; ?></td>
       <td class="main"><input type="file" name="id[<?php echo TEXT_PREFIX . $products_options_name['products_options_id']; ?>]"><br><?php echo $cart->contents[$HTTP_GET_VARS['products_id']]['attributes_values'][$products_options_name['products_options_id']] . tep_draw_hidden_field(UPLOAD_PREFIX . $number_of_uploads, $products_options_name['products_options_id']) . tep_draw_hidden_field(TEXT_PREFIX . UPLOAD_PREFIX . $number_of_uploads, $cart->contents[$HTTP_GET_VARS['products_id']]['attributes_values'][$products_options_name['products_options_id']]); ?></td>
     </tr>
<?php
           break;
         default:
           //clr 030714 default is select list
           //clr 030714 reset selected_attribute variable
           $selected_attribute = false;
         $products_options_array = array();
         $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
         while ($products_options = tep_db_fetch_array($products_options_query)) {
           $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
           if ($products_options['options_values_price'] != '0') {
             $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
           }
         }

         if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) {
           $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']];
         } else {
           $selected_attribute = false;
         }
?>
           <tr>
             <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
             <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute) . $products_options_name['products_options_comment'];  ?></td>
           </tr>
<?php
       }  //clr 030714 end switch
     } //clr 030714 end while
?>

Edited by Rusyn
Link to comment
Share on other sites

Hi all,

 

I've managed to get this contrib working on a CRE Loaded osCommerce. There are still some things that don't work properly, the confirmation e-mail shows only TEXT.

The readme says to check either catalog/checkout_process.php or catalog/includes/classes/order.php ... I checked the files a couple of times now but I really don't understand what I'm doing wrong ... So maybe one of you guys could take a look for me....

 

checkout_process.php

<?php
/*
 $Id: checkout_process.php,v 1.2 2003/09/24 15:34:25 wilt Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 include('includes/application_top.php');

// if the customer is not logged on, redirect them to the login page
 if (!tep_session_is_registered('customer_id')) {
   $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
   tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
 }

 if (!tep_session_is_registered('sendto')) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 }

 if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
 if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
   if ($cart->cartID != $cartID) {
     tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
   }
 }

 include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
 require(DIR_WS_CLASSES . 'payment.php');
 if ($credit_covers) $payment=''; //ICW added for CREDIT CLASS
 $payment_modules = new payment($payment);

// load the selected shipping module
 require(DIR_WS_CLASSES . 'shipping.php');
 $shipping_modules = new shipping($shipping);

 require(DIR_WS_CLASSES . 'order.php');
 $order = new order;

// load the before_process function from the payment modules
 $payment_modules->before_process();

 require(DIR_WS_CLASSES . 'order_total.php');
 $order_total_modules = new order_total;

 $order_totals = $order_total_modules->process();

 //************************************************************
 // Authorizenet ADC Direct Connection
 // Make sure the /catalog/includes/class/order.php is included
 // and $order object is created before this!!!
 if(MODULE_PAYMENT_AUTHORIZENET_STATUS) {
  include(DIR_WS_MODULES . 'authorizenet_direct.php');
 }
 //************************************************************

// BOF: WebMakers.com Added: Downloads Controller
 $sql_data_array = array('customers_id' => $customer_id,
                         'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                         'customers_company' => $order->customer['company'],
                         'customers_street_address' => $order->customer['street_address'],
                         'customers_suburb' => $order->customer['suburb'],
                         'customers_city' => $order->customer['city'],
                         'customers_postcode' => $order->customer['postcode'],
                         'customers_state' => $order->customer['state'],
                         'customers_country' => $order->customer['country']['title'],
                         'customers_telephone' => $order->customer['telephone'],
                         'customers_email_address' => $order->customer['email_address'],
                         'customers_address_format_id' => $order->customer['format_id'],
                         'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
                         'delivery_company' => $order->delivery['company'],
                         'delivery_street_address' => $order->delivery['street_address'],
                         'delivery_suburb' => $order->delivery['suburb'],
                         'delivery_city' => $order->delivery['city'],
                         'delivery_postcode' => $order->delivery['postcode'],
                         'delivery_state' => $order->delivery['state'],
                         'delivery_country' => $order->delivery['country']['title'],
                         'delivery_address_format_id' => $order->delivery['format_id'],
                         'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
                         'billing_company' => $order->billing['company'],
                         'billing_street_address' => $order->billing['street_address'],
                         'billing_suburb' => $order->billing['suburb'],
                         'billing_city' => $order->billing['city'],
                         'billing_postcode' => $order->billing['postcode'],
                         'billing_state' => $order->billing['state'],
                         'billing_country' => $order->billing['country']['title'],
                         'billing_address_format_id' => $order->billing['format_id'],
                         'payment_method' => $order->info['payment_method'],
// BOF: Lango Added for print order mod
                         'payment_info' => $GLOBALS['payment_info'],
// EOF: Lango Added for print order mod
                         'cc_type' => $order->info['cc_type'],
                         'cc_owner' => $order->info['cc_owner'],
                         'cc_number' => $order->info['cc_number'],
                         'cc_expires' => $order->info['cc_expires'],
                         'date_purchased' => 'now()',
                         'last_modified' => 'now()',
                         'orders_status' => $order->info['order_status'],
                         'currency' => $order->info['currency'],
                         'currency_value' => $order->info['currency_value']);
// EOF: WebMakers.com Added: Downloads Controller
 tep_db_perform(TABLE_ORDERS, $sql_data_array);
 $insert_id = tep_db_insert_id();
 for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
   $sql_data_array = array('orders_id' => $insert_id,
                           'title' => $order_totals[$i]['title'],
                           'text' => $order_totals[$i]['text'],
                           'value' => $order_totals[$i]['value'],
                           'class' => $order_totals[$i]['code'],
                           'sort_order' => $order_totals[$i]['sort_order']);
   tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
 }

 $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
 $sql_data_array = array('orders_id' => $insert_id,
                         'orders_status_id' => $order->info['order_status'],
                         'date_added' => 'now()',
                         'customer_notified' => $customer_notification,
                         'comments' => $order->info['comments']);
 tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

// initialized for the email confirmation
 $products_ordered = '';
 $subtotal = 0;
 $total_tax = 0;

 for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
   if (STOCK_LIMITED == 'true') {
     if (DOWNLOAD_ENABLED == 'true') {
       $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
                           FROM " . TABLE_PRODUCTS . " p
                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                            ON p.products_id=pa.products_id
                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                            ON pa.products_attributes_id=pad.products_attributes_id
                           WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
       $products_attributes = $order->products[$i]['attributes'];
       if (is_array($products_attributes)) {
         $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
       }
       $stock_query = tep_db_query($stock_query_raw);
     } else {
       $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_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
         $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
       } else {
         $stock_left = $stock_values['products_quantity'];
       }
       tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
       if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
         tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
       }
     }
   }

// Update products_ordered (for bestsellers list)
   tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

   $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']);
   tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
   $order_products_id = tep_db_insert_id();
   $order_total_modules->update_credit_account($i);//ICW ADDED FOR CREDIT CLASS SYSTEM
//------insert customer choosen option to order--------
   $attributes_exist = '0';
   $products_ordered_attributes = '';
   if (isset($order->products[$i]['attributes'])) {
     $attributes_exist = '1';
     for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
       if (DOWNLOAD_ENABLED == 'true') {
         $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
                              from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                              left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                               on pa.products_attributes_id=pad.products_attributes_id
                              where pa.products_id = '" . $order->products[$i]['id'] . "'
                               and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
                               and pa.options_id = popt.products_options_id
                               and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
                               and pa.options_values_id = poval.products_options_values_id
                               and popt.language_id = '" . $languages_id . "'
                               and poval.language_id = '" . $languages_id . "'";
         $attributes = tep_db_query($attributes_query);
       } else {
         $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
       }
       $attributes_values = tep_db_fetch_array($attributes);

       $sql_data_array = array('orders_id' => $insert_id,
                               'orders_products_id' => $order_products_id,
                               'products_options' => $attributes_values['products_options_name'],
         // original                      'products_options_values' => $attributes_values['products_options_values_name'],
                               'products_options_values' => $order->products[$i]['attributes'][$j]['value'],
                               'options_values_price' => $attributes_values['options_values_price'],
                               'price_prefix' => $attributes_values['price_prefix']);
       tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

       if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
         $sql_data_array = array('orders_id' => $insert_id,
                                 'orders_products_id' => $order_products_id,
                                 'orders_products_filename' => $attributes_values['products_attributes_filename'],
                                 'download_maxdays' => $attributes_values['products_attributes_maxdays'],
                                 'download_count' => $attributes_values['products_attributes_maxcount']);
         tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
       }

//        $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . tep_decode_specialchars($order->products[$i]['attributes'][$j]['value']);
       $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
     }
   }
//------insert customer choosen option eof ----
   $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
   $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
   $total_cost += $total_products_price;

   $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
 }
$order_total_modules->apply_credit();//ICW ADDED FOR CREDIT CLASS SYSTEM
// lets start with the email confirmation
 $email_order = STORE_NAME . "\n" .
                EMAIL_SEPARATOR . "\n" .
                EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
                EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
                EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
 if ($order->info['comments']) {
   $email_order .= tep_db_output($order->info['comments']) . "\n\n";
 }
 $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
                 EMAIL_SEPARATOR . "\n" .
                 $products_ordered .
                 EMAIL_SEPARATOR . "\n";

 for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
   $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
 }

 if ($order->content_type != 'virtual') {
   $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
                   EMAIL_SEPARATOR . "\n" .
                   tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
 }

 $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
                 EMAIL_SEPARATOR . "\n" .
                 tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
 if (is_object($$payment)) {
   $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
                   EMAIL_SEPARATOR . "\n";
   $payment_class = $$payment;
   $email_order .= $payment_class->title . "\n\n";
   if ($payment_class->email_footer) {
     $email_order .= $payment_class->email_footer . "\n\n";
   }
 }
 tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
 if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
   tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
 }

 // Include OSC-AFFILIATE
 require(DIR_WS_INCLUDES . 'affiliate_checkout_process.php');

// load the after_process function from the payment modules
 $payment_modules->after_process();

 $cart->reset(true);

// unregister session variables used during checkout
 tep_session_unregister('sendto');
 tep_session_unregister('billto');
 tep_session_unregister('shipping');
 tep_session_unregister('payment');
 tep_session_unregister('comments');
if(tep_session_is_registered('credit_covers')) tep_session_unregister('credit_covers');
 $order_total_modules->clear_posts();//ICW ADDED FOR CREDIT CLASS SYSTEM
// BOF: Lango added for print order mod
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, 'order_id='. $insert_id, 'SSL'));
// EOF: Lango added for print order mod
 require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

order.php

<?php

/*

 $Id: checkout_process.php,v 1.2 2003/09/24 15:34:25 wilt Exp $

 

 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com

 

 Copyright (c) 2003 osCommerce

 

 Released under the GNU General Public License

*/

 

 include('includes/application_top.php');

 

// if the customer is not logged on, redirect them to the login page

 if (!tep_session_is_registered('customer_id')) {

   $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));

   tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

 }

 

 if (!tep_session_is_registered('sendto')) {

   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

 }

 

 if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {

   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

}

 

// avoid hack attempts during the checkout procedure by checking the internal cartID

 if (isset($cart->cartID) && tep_session_is_registered('cartID')) {

   if ($cart->cartID != $cartID) {

     tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

   }

 }

 

 include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

 

// load selected payment module

 require(DIR_WS_CLASSES . 'payment.php');

 if ($credit_covers) $payment=''; //ICW added for CREDIT CLASS

 $payment_modules = new payment($payment);

 

// load the selected shipping module

 require(DIR_WS_CLASSES . 'shipping.php');

 $shipping_modules = new shipping($shipping);

 

 require(DIR_WS_CLASSES . 'order.php');

 $order = new order;

 

// load the before_process function from the payment modules

 $payment_modules->before_process();

 

 require(DIR_WS_CLASSES . 'order_total.php');

 $order_total_modules = new order_total;

 

 $order_totals = $order_total_modules->process();

 

 //************************************************************

 // Authorizenet ADC Direct Connection

 // Make sure the /catalog/includes/class/order.php is included

 // and $order object is created before this!!!

 if(MODULE_PAYMENT_AUTHORIZENET_STATUS) {

  include(DIR_WS_MODULES . 'authorizenet_direct.php');

 }

 //************************************************************

 

// BOF: WebMakers.com Added: Downloads Controller

 $sql_data_array = array('customers_id' => $customer_id,

                         'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],

                         'customers_company' => $order->customer['company'],

                         'customers_street_address' => $order->customer['street_address'],

                         'customers_suburb' => $order->customer['suburb'],

                         'customers_city' => $order->customer['city'],

                         'customers_postcode' => $order->customer['postcode'],

                         'customers_state' => $order->customer['state'],

                         'customers_country' => $order->customer['country']['title'],

                         'customers_telephone' => $order->customer['telephone'],

                         'customers_email_address' => $order->customer['email_address'],

                         'customers_address_format_id' => $order->customer['format_id'],

                         'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],

                         'delivery_company' => $order->delivery['company'],

                         'delivery_street_address' => $order->delivery['street_address'],

                         'delivery_suburb' => $order->delivery['suburb'],

                         'delivery_city' => $order->delivery['city'],

                         'delivery_postcode' => $order->delivery['postcode'],

                         'delivery_state' => $order->delivery['state'],

                         'delivery_country' => $order->delivery['country']['title'],

                         'delivery_address_format_id' => $order->delivery['format_id'],

                         'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],

                         'billing_company' => $order->billing['company'],

                         'billing_street_address' => $order->billing['street_address'],

                         'billing_suburb' => $order->billing['suburb'],

                         'billing_city' => $order->billing['city'],

                         'billing_postcode' => $order->billing['postcode'],

                         'billing_state' => $order->billing['state'],

                         'billing_country' => $order->billing['country']['title'],

                         'billing_address_format_id' => $order->billing['format_id'],

                         'payment_method' => $order->info['payment_method'],

// BOF: Lango Added for print order mod

                         'payment_info' => $GLOBALS['payment_info'],

// EOF: Lango Added for print order mod

                         'cc_type' => $order->info['cc_type'],

                         'cc_owner' => $order->info['cc_owner'],

                         'cc_number' => $order->info['cc_number'],

                         'cc_expires' => $order->info['cc_expires'],

                         'date_purchased' => 'now()',

                         'last_modified' => 'now()',

                         'orders_status' => $order->info['order_status'],

                         'currency' => $order->info['currency'],

                         'currency_value' => $order->info['currency_value']);

// EOF: WebMakers.com Added: Downloads Controller

 tep_db_perform(TABLE_ORDERS, $sql_data_array);

 $insert_id = tep_db_insert_id();

 for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {

   $sql_data_array = array('orders_id' => $insert_id,

                           'title' => $order_totals[$i]['title'],

                           'text' => $order_totals[$i]['text'],

                           'value' => $order_totals[$i]['value'],

                           'class' => $order_totals[$i]['code'],

                           'sort_order' => $order_totals[$i]['sort_order']);

   tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);

 }

 

 $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';

 $sql_data_array = array('orders_id' => $insert_id,

                         'orders_status_id' => $order->info['order_status'],

                         'date_added' => 'now()',

                         'customer_notified' => $customer_notification,

                         'comments' => $order->info['comments']);

 tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

 

// initialized for the email confirmation

 $products_ordered = '';

 $subtotal = 0;

 $total_tax = 0;

 

 for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {

// Stock Update - Joao Correia

   if (STOCK_LIMITED == 'true') {

     if (DOWNLOAD_ENABLED == 'true') {

       $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename

                           FROM " . TABLE_PRODUCTS . " p

                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa

                            ON p.products_id=pa.products_id

                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad

                            ON pa.products_attributes_id=pad.products_attributes_id

                           WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";

// Will work with only one option for downloadable products

// otherwise, we have to build the query dynamically with a loop

       $products_attributes = $order->products[$i]['attributes'];

       if (is_array($products_attributes)) {

         $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";

       }

       $stock_query = tep_db_query($stock_query_raw);

     } else {

       $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_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {

         $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];

       } else {

         $stock_left = $stock_values['products_quantity'];

       }

       tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

       if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {

         tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

       }

     }

   }

 

// Update products_ordered (for bestsellers list)

   tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

 

   $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']);

   tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);

   $order_products_id = tep_db_insert_id();

   $order_total_modules->update_credit_account($i);//ICW ADDED FOR CREDIT CLASS SYSTEM

//------insert customer choosen option to order--------

   $attributes_exist = '0';

   $products_ordered_attributes = '';

   if (isset($order->products[$i]['attributes'])) {

     $attributes_exist = '1';

     for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {

       if (DOWNLOAD_ENABLED == 'true') {

         $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename

                              from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa

                              left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad

                               on pa.products_attributes_id=pad.products_attributes_id

                              where pa.products_id = '" . $order->products[$i]['id'] . "'

                               and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'

                               and pa.options_id = popt.products_options_id

                               and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'

                               and pa.options_values_id = poval.products_options_values_id

                               and popt.language_id = '" . $languages_id . "'

                               and poval.language_id = '" . $languages_id . "'";

         $attributes = tep_db_query($attributes_query);

       } else {

         $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");

       }

       $attributes_values = tep_db_fetch_array($attributes);

 

       $sql_data_array = array('orders_id' => $insert_id,

                               'orders_products_id' => $order_products_id,

                               'products_options' => $attributes_values['products_options_name'],

         // original                      'products_options_values' => $attributes_values['products_options_values_name'],

                               'products_options_values' => $order->products[$i]['attributes'][$j]['value'],

                               'options_values_price' => $attributes_values['options_values_price'],

                               'price_prefix' => $attributes_values['price_prefix']);

       tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

 

       if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {

         $sql_data_array = array('orders_id' => $insert_id,

                                 'orders_products_id' => $order_products_id,

                                 'orders_products_filename' => $attributes_values['products_attributes_filename'],

                                 'download_maxdays' => $attributes_values['products_attributes_maxdays'],

                                 'download_count' => $attributes_values['products_attributes_maxcount']);

         tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);

       }

 

//        $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . tep_decode_specialchars($order->products[$i]['attributes'][$j]['value']);

       $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];

     }

   }

//------insert customer choosen option eof ----

   $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);

   $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];

   $total_cost += $total_products_price;

 

   $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";

 }

$order_total_modules->apply_credit();//ICW ADDED FOR CREDIT CLASS SYSTEM

// lets start with the email confirmation

 $email_order = STORE_NAME . "\n" .

                EMAIL_SEPARATOR . "\n" .

                EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .

                EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .

                EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";

 if ($order->info['comments']) {

   $email_order .= tep_db_output($order->info['comments']) . "\n\n";

 }

 $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .

                 EMAIL_SEPARATOR . "\n" .

                 $products_ordered .

                 EMAIL_SEPARATOR . "\n";

 

 for ($i=0,

"Resistence is Futile"

Link to comment
Share on other sites

Hmmmm.... Some of the pulldowns for some attributes seem to be ordered alphabetically (as per my post above), others by ID in descending order (ie the first one I enter ends up as the first option) and others in ascending order (the first one I enter ends up as the last option).

 

How do I know when an attribute sorts by name, id asc or desc? I thought they would all be the same? Are there other places in the code that determine this and I have a conflict?

Link to comment
Share on other sites

Hello,

Is it possible in any way to pass a value from a popup window to a textbox generated with this contribution?

thanks

far

Same question... I saw some sites where in a popup you can choose the value for your option instead of using a dropdown or radio box ?

 

Is there a contribution or javascript for this ? I have Option Type feature 1.6 installed but I need to find that javascript.

 

Didier.

Link to comment
Share on other sites

Hello,

 

anyone an idea to add an additional Product_Attribute,

thereby the customer an article (e.g. a metal plate) in the desired size order can?

 

In the Product_info should 4 fields be.

2 input fields for length and width and

2 output fields for square meters and "calculated price".

Square meters must then by the Productprice (Price for 1 square meter) be multiplied to get the "calculated price".

 

Sorry for my not so good English

 

Patrick

Captain: I thought you were going to upgrade this.

Trip: That is the upgrade.

Well, if you want, I can change the color.

Link to comment
Share on other sites

  • 2 weeks later...

I've just installed Option Type Feature on a new OSC site.

 

I seem to be having a problem scrolling through the Product Attributes. It shows I have two pages, and when I click on the "2" it doesn't advance the page, although the URL in the address bar shows "products_attributes.php?attribute_page=2"

 

Anyone run into this?

 

Thanks in advance!

Link to comment
Share on other sites

I've just installed Option Type Feature on a new OSC site.

 

I seem to be having a problem scrolling through the Product Attributes.  It shows I have two pages, and when I click on the "2" it doesn't advance the page, although the URL in the address bar shows "products_attributes.php?attribute_page=2"

 

Anyone run into this?

 

Thanks in advance!

Cancel this request...

 

I was missing some modified code wth the Register Glogals contribution...

 

sorry

Link to comment
Share on other sites

Wow, this Contribution is seriously lacking support...

 

Ok, here is a mini-hack to get some type of sorting with drop-down menus.

 

On product_info.php, it shows up on line 213 on my page but I have a couple other contributions so I doubt it's the same for you. Look for this:

 

$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");

 

Change it to:

 

$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "' order by pa.options_values_id");

 

You'll notice the only difference is the added "order by pa.options_values_id" text at the end. This sorts the drop-down options by the Option Values ID number. So whatever order you enter the values is the order they show up.

 

I also wanted to sort the order of all the fields, including the text, radio, etc. So around line 153 is this line:

 

$products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name, popt.products_options_type, popt.products_options_length, popt.products_options_comment from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");

 

I swapped it to:

 

$products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name, popt.products_options_type, popt.products_options_length, popt.products_options_comment from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_id");

 

So now it orders the added attributes by the Product Options ID.

 

Hope this helps someone!

Edited by bamaster
Link to comment
Share on other sites

  • 2 weeks later...
Wow, this Contribution is seriously lacking support...

 

Ok, here is a mini-hack to get some type of sorting with drop-down menus.

 

On product_info.php, it shows up on line 213 on my page but I have a couple other contributions so I doubt it's the same for you.  Look for this:

 

 ... removed to save space ...

 

So now it orders the added attributes by the Product Options ID.

 

Hope this helps someone!

Thanks for the help.

 

I've added a post in another topic and ask here as well. Has anyone added a text area field to this contribution ? I have a client that had a need for up to three of them per product. This has me stumped.

 

Thanks for any help you can provide. I can post a copy of what I have on request ....

Link to comment
Share on other sites

Is there a way to get the radio button choices to list horizontally instead of vertically?

marksmanaz

 

try this for your radio buttons.

 

In the file pr

oduct_info.php

Find:

$tmp_html .= '</tr></td>';

}

$tmp_html .= '</table>';

 

Change to:

$tmp_html .= '</td>';

}

$tmp_html .= '</tr></table>';

 

*NOTE: I haven't actually tested this, just looked at it and made a reasonable observation of the HTML and offered this as a suggestion. Please backup your site before testing.

Link to comment
Share on other sites

Does anyone know of another contribution that does something similar? I have installed literally dozens of contributions recently and I haven't even got a clue how people are even getting passed hacking tthe code and uploading their files for this one. My products_info.php is nothing like the one supplied, guess It's been hacked up to0 much.

 

Anyone know of another similar contrib for text feild attributes which actually has a readme with the code changes in it? I desperately need the text input because the current way the attributes are setup in oscommerce fill up the dbase way to easily. I've added only 150 products and there were already 500+ pages of attributes and over 7500+ entries in the dbase lol Makes easypopulate stop working :(

 

Any ideas would be very helpful.

Link to comment
Share on other sites

Farnastic:

 

Yes, I am looking for a text box just like this!! Can you tell me if this is a contribution ? I would appreciate any help. I have the attribute type contribution installed and can't get a textarea to work.

 

Thanks!

I just found this http://www.thewebmakerscorner.com/freecall...products_id=130 I think that's what they are using there, although I don't really want to start from scratch just for one mod.

Link to comment
Share on other sites

  • 2 weeks later...

I am using this contribution and need a little help. I have some text boxes with value prices added. Does anyone know how to get the Value Price added to the product in the shopping cart if the text box is filled out?

Link to comment
Share on other sites

I am using this contribution and need a little help. I have some text boxes with value prices added. Does anyone know how to get the Value Price added to the product in the shopping cart if the text box is filled out?

No, but if you hear back, please let me know as I am having the same problem.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...