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

I finally managed to get Option Type Feature working with just one problem - no text options showing in email. A search of the forums but didn't turn up any posts discussing only email.

 

The admin panel is fine, text attributes show on all pages through checkout and on the admin copy of the invoice... just nothing on the client copy. It looks as though the correct number of lines have been added for the attribute text but they are blank.

 

I installed this contribution along with attributes copier v51b - not sure if this is part of the problem or not. I've checked the modded pages a couple of times with compare and merge and I'm not seeing anything that stands out as wrong. I have no idea where to start looking for a fix on this one - any help will be greatly appreciated.

 

Thanks,

Paul

Link to comment
Share on other sites

  • Replies 799
  • Created
  • Last Reply

Top Posters In This Topic

Link to comment
Share on other sites

Hi All, I have been working to get this contrib to work, YES IT WORKS NOW :thumbsup:

Only one snag-  If the customer is not logged in or signed up yet, they complete the order form and then prompted to log in or sign up, ok, when they are returned and complete the order process the text values have disappeared from order confirmation and email notifications, however if they are signed up or logged in before they start the order process everything works just dandy,

I think I have seen a fix for something similar with the refreshing of forms and dropdown data in country / state / zones or something like that where the session was being dropped between refresh, Does anyone know what the fix was I cannot find it now, and or does anyone have a little hack I could use, the site is ms2 and does have sts installed.

does anyone else have this problem? I am nearly there but not quite.

I appreciate your help.

Regards

Ian

 

*Loaded versions are not support in the forums

 

I've seen this problem posted a number of times but never a fix... has anyone found a way to stop the text attribute sort order from being 'scrambled' during login?

 

Thanks,

Paul

Link to comment
Share on other sites

Jason,

 

You should be able to do multiple text fields. As for the problem, I would say go slowly through the instructions. It sounds like you missed something.

 

ed

Link to comment
Share on other sites

Ok so I went through all the code again and finally got it to work. I don't know what code I had missed, because i had already double checked it, but I guess I missed something.

 

 

Correct ! Firefox does not manage it very well, even if it works on the dynamicdrive page with Firefox. But in OSC it expands the table.

 

It's ok for IE4+, NS6+, and Opera 7+.

 

Here is the link on dynamicdrive for more info on this "Form Field Progress bar"

 

http://www.dynamicdrive.com/dynamicindex16/limitinput2.htm

 

@all : you can of course drop this javascript or use another one that checks if the user has not reached the textarea maxlength.

 

So has anyone figured out a fix for this one?

 

I'd also like a little help with chopping the length down on the shopping_cart.php and such pages like it talks about in the readme. Im not to quick when it comes to php and so im not quite sure where to change the code. But what I really want to do is instead of chopping the code down, I'd like to put it in a table cell so that it just wraps and always stays the same width. Can anyone give me some help with that?

 

Thanks a ton!

Link to comment
Share on other sites

apparently i can't edit my posts so i'll have to say:

 

one more thing. It also currently cuts off the comments on the textbox after 30 chars and i would like to do the same thing with that (put it in a cell and make it wrap)

 

It also puts it in the parenthasis next to the price change, but if there is no price change or comment it just has empty () which kinda looks weird.

Link to comment
Share on other sites

  • 2 weeks later...
Anna, if it make s you feel any better my text area did the same thing (have not checked for big text yet)...Tjhat is what I got with check box when I wrote the code in to check it... let me know if you get it....

 

As far as changing to TEXT or 255 2 taables hould do it (Basket and Orders)

 

Did you guys figure this out? My options are resetting back to the default values for text and select-box options when going from an item in the shopping cart to the product info page. I rechecked my code and everything matches up with the 1.6 release of Option Type. The only way to edit an order now is to delete it and re-added it from the product info page - there's got to be a way for this to function so they can review an order from the cart, edit it, and update the order prior to checkout...

Brian Neuman

Link to comment
Share on other sites

Did you guys figure this out?  My options are resetting back to the default values for text and select-box options when going from an item in the shopping cart to the product info page.  I rechecked my code and everything matches up with the 1.6 release of Option Type.  The only way to edit an order now is to delete it and re-added it from the product info page - there's got to be a way for this to function so they can review an order from the cart, edit it, and update the order prior to checkout...

 

Okay, I just answered my own question - it's Chemo's Ultimate SEO URL's. When I disable it, the option values are carried back to the product info from the cart accurately. I'll post this issue over on the support thread for Ultimate SEO's.

 

Still - is it correct that the only way to edit an order is to add it back to the cart and delete the previous item? This doesn't seem very customer friendly...

Brian Neuman

Link to comment
Share on other sites

  • 3 weeks later...

Hey, still no help with the wrapping of the info I mentioned above, but I guess that's ok, just let me know if anyone figures something out.

 

My new problem is the following:

 

I have a select menu with options 0 - 36

 

if they choose 15 i need 15 text boxes to show up to enter the info. ie 15 is how many name plates are to be engrave and then i need the 15 text boxes for the names.

 

Now if I just had all 36 text boxes it would look very good. I know how to do this on a siple page using dhtml, but i really don't know where to start putting it into the code here.

 

Can someone please help me with this? I really need a solutino here.

Link to comment
Share on other sites

Hey, still no help with the wrapping of the info I mentioned above, but I guess that's ok, just let me know if anyone figures something out.

 

My new problem is the following:

 

I have a select menu with options 0 - 36

 

if they choose 15 i need 15 text boxes to show up to enter the info.  ie 15 is how many name plates are to be engrave and then i need the 15 text boxes for the names.

 

Now if I just had all 36 text boxes it would look very good.  I know how to do this on a siple page using dhtml, but i really don't know where to start putting it into the code here.

 

Can someone please help me with this? I really need a solutino here.

 

Well, still nothing on the 36 text box issue, but a few minutes ago i decided to check out the thing about the text not wrapping on the checkout_confirmation.php page. Checked it out and found a real simple solution.

 

Around line 193 it says:

        echo '<br><nobr><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'] . '</i></small></nobr>';

 

Just remove the <nobr> and </nobr> and it becomes:

        echo '<br><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'] . '</i></small>';

 

Simple enough.

Link to comment
Share on other sites

With respect to the required option:

 

 

You'll have to add an extra field in product_options to indicate if the option is required or not. In product_info.php you can then add a javascript to test if the required field is filled in or not. It's quite some work. Or you can hardcode in your shop the test using the option_id in your database (no need to add an extra database column).

 

Didier.

 

 

There we go. This is what we need. Now I am understanding the general concept here, but seeing as how i'm not that well versed in php I need some help with the code.

 

Anybody else willing to help us with this?

Link to comment
Share on other sites

  • 2 weeks later...

Hi all,

 

I see Chandra has tested this with the "Edit Orders" contribution, however my stupidity prevails. I just cannot see where I need to add the code to make these two contribs work. Does anyone know/already done this?

 

Thanks!

 

Chris B.

Link to comment
Share on other sites

Hi all,

 

I see Chandra has tested this with the "Edit Orders" contribution, however my stupidity prevails. I just cannot see where I need to add the code to make these two contribs work. Does anyone know/already done this?

 

Thanks!

 

Chris B.

 

I have it going fine with mine. here is a copy of my file. Use a file comparing program like WinMerge to compare mine with youres as I have other MODs to mine that may not work on your store.

 

<?php

/*

 $Id: edit_orders.php,v 1.59 2004/09/18 15:46:00 jrb Exp $

 

 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com

 

 Copyright (c) 2003 osCommerce

 

 Released under the GNU General Public License

*/

 

 require('includes/application_top.php');

 

 require(DIR_WS_CLASSES . 'currencies.php');

 $currencies = new currencies();

 

 include(DIR_WS_CLASSES . 'order.php');

 

 // New "Status History" table has different format.

 $OldNewStatusValues = (tep_field_exists(TABLE_ORDERS_STATUS_HISTORY, "old_value") && tep_field_exists(TABLE_ORDERS_STATUS_HISTORY, "new_value"));

 $CommentsWithStatus = tep_field_exists(TABLE_ORDERS_STATUS_HISTORY, "comments");

 $SeparateBillingFields = tep_field_exists(TABLE_ORDERS, "billing_name");

 

 // Optional Tax Rate/Percent

 $AddShippingTax = "0.0"; // e.g. shipping tax of 17.5% is "17.5"

 

 $orders_statuses = array();

 $orders_status_array = array();

 $orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "'");

 while ($orders_status = tep_db_fetch_array($orders_status_query)) {

   $orders_statuses[] = array('id' => $orders_status['orders_status_id'],

                              'text' => $orders_status['orders_status_name']);

   $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name'];

 }

 

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

//UPDATE_INVENTORY_QUANTITY_START#################################################

##############################################################

 $order_query = tep_db_query("select products_id, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$oID . "'");

//UPDATE_INVENTORY_QUANTITY_START#################################################

##############################################################

 

 if (tep_not_null($action)) {

   switch ($action) {

 

// Update Order

case 'update_order':

 $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

 $order = new order($oID);

 $status = tep_db_prepare_input($HTTP_POST_VARS['status']);

 $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);

 

 // Update Order Info

 $UpdateOrders = "update " . TABLE_ORDERS . " set

  customers_name = '" . tep_db_input(stripslashes($update_customer_name)) . "',

  customers_company = '" . tep_db_input(stripslashes($update_customer_company)) . "',

  customers_street_address = '" . tep_db_input(stripslashes($update_customer_street_address)) . "',

  customers_street_address2 = '" . tep_db_input(stripslashes($update_customer_street_address2)) . "',

  customers_suburb = '" . tep_db_input(stripslashes($update_customer_suburb)) . "',

  customers_city = '" . tep_db_input(stripslashes($update_customer_city)) . "',

  customers_state = '" . tep_db_input(stripslashes($update_customer_state)) . "',

  customers_postcode = '" . tep_db_input($update_customer_postcode) . "',

  customers_country = '" . tep_db_input(stripslashes($update_customer_country)) . "',

  customers_telephone = '" . tep_db_input($update_customer_telephone) . "',

  customers_email_address = '" . tep_db_input($update_customer_email_address) . "',";

 

 if($SeparateBillingFields) {

 $UpdateOrders .= "billing_name = '" . tep_db_input(stripslashes($update_billing_name)) . "',

  billing_company = '" . tep_db_input(stripslashes($update_billing_company)) . "',

  billing_street_address = '" . tep_db_input(stripslashes($update_billing_street_address)) . "',

  billing_street_address2 = '" . tep_db_input(stripslashes($update_billing_street_address2)) . "',

  billing_suburb = '" . tep_db_input(stripslashes($update_billing_suburb)) . "',

  billing_city = '" . tep_db_input(stripslashes($update_billing_city)) . "',

  billing_state = '" . tep_db_input(stripslashes($update_billing_state)) . "',

  billing_postcode = '" . tep_db_input($update_billing_postcode) . "',

  billing_country = '" . tep_db_input(stripslashes($update_billing_country)) . "',";

 }

 

 $UpdateOrders .= "delivery_name = '" . tep_db_input(stripslashes($update_delivery_name)) . "',

  delivery_company = '" . tep_db_input(stripslashes($update_delivery_company)) . "',

  delivery_street_address = '" . tep_db_input(stripslashes($update_delivery_street_address)) . "',

  delivery_street_address2 = '" . tep_db_input(stripslashes($update_delivery_street_address2)) . "',

  delivery_suburb = '" . tep_db_input(stripslashes($update_delivery_suburb)) . "',

  delivery_city = '" . tep_db_input(stripslashes($update_delivery_city)) . "',

  delivery_state = '" . tep_db_input(stripslashes($update_delivery_state)) . "',

  delivery_postcode = '" . tep_db_input($update_delivery_postcode) . "',

  delivery_country = '" . tep_db_input(stripslashes($update_delivery_country)) . "',

  payment_method = '" . tep_db_input($update_info_payment_method) . "',

  cc_type = '" . tep_db_input($update_info_cc_type) . "',

  cc_owner = '" . tep_db_input($update_info_cc_owner) . "',";

 

 if(substr($update_info_cc_number,0,8) != "(Last 4)")

 $UpdateOrders .= "cc_number = '$update_info_cc_number',";

 

 $UpdateOrders .= "cc_expires = '$update_info_cc_expires',

  cvvnumber = '$update_info_cvvnumber',

  accountholder = '" . tep_db_input($update_info_accountholder) . "',

  address = '" . tep_db_input($update_info_address) . "',

  address2 = '" . tep_db_input($update_info_address2) . "',

  phone = '" . tep_db_input($update_info_phone) . "',

  bank = '" . tep_db_input($update_info_bank) . "',

  bankcity = '" . tep_db_input($update_info_bankcity) . "',

  bankphone = '" . tep_db_input($update_info_bankphone) . "',

  checknumber = '" . tep_db_input($update_info_checknumber) . "',

  accountnumber = '" . tep_db_input($update_info_accountnumber) . "',

  routingnumber = '" . tep_db_input($update_info_routingnumber) . "',

  orders_status = '" . tep_db_input($status) . "'";

 

 if(!$CommentsWithStatus) {

  $UpdateOrders .= ", comments = '" . tep_db_input($comments) . "'";

 }

 

 $UpdateOrders .= " where orders_id = '" . tep_db_input($oID) . "';";

 

 tep_db_query($UpdateOrders);

 $order_updated = true;

 

 

        $check_status_query = tep_db_query("select customers_name, customers_email_address, orders_status, date_purchased from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");

        $check_status = tep_db_fetch_array($check_status_query);

 

 // Update Status History & Email Customer if Necessary

//  if ($order->info['orders_status'] != $status)

 if (($order->info['orders_status'] != $status) || $comments != '') {

  // Notify Customer

      $customer_notified = '0';

  if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) {

    $notify_comments = '';

    if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) {

      $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";

    }

    $email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n" . EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n" . $notify_comments . sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);

    tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER_EMAILS_FROM_NAME, STORE_OWNER_EMAIL_ADDRESS);

    $customer_notified = '1';

  }

 

  // "Status History" table has gone through a few

  // different changes, so here are different versions of

  // the status update.

 

  // NOTE: Theoretically, there shouldn't be a

  //       orders_status field in the ORDERS table. It

  //       should really just use the latest value from

  //       this status history table.

 

  if ($CommentsWithStatus) {

  tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . "

   (orders_id, orders_status_id, date_added, customer_notified, comments)

   values ('" . tep_db_input($oID) . "', '" . tep_db_input($status) . "', now(), " . tep_db_input($customer_notified) . ", '" . tep_db_input($comments)  . "')");

  } else {

   if($OldNewStatusValues) {

   tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . "

    (orders_id, new_value, old_value, date_added, customer_notified)

    values ('" . tep_db_input($oID) . "', '" . tep_db_input($status) . "', '" . $order->info['orders_status'] . "', now(), " . tep_db_input($customer_notified) . ")");

   } else {

   tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . "

    (orders_id, orders_status_id, date_added, customer_notified)

    values ('" . tep_db_input($oID) . "', '" . tep_db_input($status) . "', now(), " . tep_db_input($customer_notified) . ")");

   }

  }

 }

 

 // Update Products

 $RunningSubTotal = 0;

 $RunningTax = 0;

 

     // CWS EDIT (start) -- Check for existence of subtotals...

     // Do pre-check for subtotal field existence

 $ot_subtotal_found = false;

    foreach($update_totals as $total_details) {

     extract($total_details,EXTR_PREFIX_ALL,"ot");

   if ($ot_class == "ot_subtotal") {

     $ot_subtotal_found = true;

      break;

    }

 }

 // CWS EDIT (end) -- Check for existence of subtotals...  

 

 foreach($update_products as $orders_products_id => $products_details) {

  // Update orders_products Table

  //UPDATE_INVENTORY_QUANTITY_START#################################################

#############################################################

  $order = tep_db_fetch_array($order_query);

  if ($products_details["qty"] != $order['products_quantity']){

   $differenza_quantita = ($products_details["qty"] - $order['products_quantity']);

    tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity - " . $differenza_quantita . ", products_ordered = products_ordered + " . $differenza_quantita . " where products_id = '" . (int)$order['products_id'] . "'");

  }

  //UPDATE_INVENTORY_QUANTITY_END###################################################

###########################################################

  if($products_details["qty"] > 0) {

   $Query = "update " . TABLE_ORDERS_PRODUCTS . " set

    products_model = '" . $products_details["model"] . "',

    products_name = '" . str_replace("'", "'", $products_details["name"]) . "',

    final_price = '" . $products_details["final_price"] . "',

    products_tax = '" . $products_details["tax"] . "',

    products_quantity = '" . $products_details["qty"] . "'

    where orders_products_id = '$orders_products_id';";

   tep_db_query($Query);

                       

   // Update Tax and Subtotals

   $RunningSubTotal += $products_details["qty"] * $products_details["final_price"];

   $RunningTax += (($products_details["tax"]/100) * ($products_details["qty"] * $products_details["final_price"]));

                       

   // Update Any Attributes

   if(IsSet($products_details[attributes])) {

    foreach($products_details["attributes"] as $orders_products_attributes_id => $attributes_details) {

     $Query = "update " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " set

      products_options = '" . $attributes_details["option"] . "',

      products_options_values = '" . $attributes_details["value"] . "'

      where orders_products_attributes_id = '$orders_products_attributes_id';";

     tep_db_query($Query);

    }

   }

  } else {

   // 0 Quantity = Delete

   $Query = "delete from " . TABLE_ORDERS_PRODUCTS . " where orders_products_id = '$orders_products_id';";

   tep_db_query($Query);

    //UPDATE_INVENTORY_QUANTITY_START#################################################

#############################################################

   $order = tep_db_fetch_array($order_query);

    if ($products_details["qty"] != $order['products_quantity']){

     $differenza_quantita = ($products_details["qty"] - $order['products_quantity']);

     tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity - " . $differenza_quantita . ", products_ordered = products_ordered + " . $differenza_quantita . " where products_id = '" . (int)$order['products_id'] . "'");

    }

    //UPDATE_INVENTORY_QUANTITY_END###################################################

###########################################################

   $Query = "delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_products_id = '$orders_products_id';";

   tep_db_query($Query);

  }

 }

 

 // Shipping Tax

  foreach($update_totals as $total_index => $total_details) {

   extract($total_details,EXTR_PREFIX_ALL,"ot");

   if($ot_class == "ot_shipping") {

    $RunningTax += (($AddShippingTax / 100) * $ot_value);

   }

  }

 

 // Update Totals

 

  $RunningTotal = 0;

  $sort_order = 0;

 

  // Do pre-check for Tax field existence

   $ot_tax_found = 0;

   foreach($update_totals as $total_details)

   {

    extract($total_details,EXTR_PREFIX_ALL,"ot");

    if($ot_class == "ot_tax")

    {

     $ot_tax_found = 1;

     break;

    }

   }

   

  foreach($update_totals as $total_index => $total_details)

  {

   extract($total_details,EXTR_PREFIX_ALL,"ot");

   

   if( trim(strtolower($ot_title)) == "tax" || trim(strtolower($ot_title)) == "tax:" )

   {

    if($ot_class != "ot_tax" && $ot_tax_found == 0)

    {

     // Inserting Tax

     $ot_class = "ot_tax";

     $ot_value = "x"; // This gets updated in the next step

     $ot_tax_found = 1;

    }

   }

   

   if( trim($ot_title) && trim($ot_value) )

   {

    $sort_order++;

   

    // Update ot_subtotal, ot_tax, and ot_total classes

     if($ot_class == "ot_subtotal")

     $ot_value = $RunningSubTotal;

     

     if($ot_class == "ot_tax")

     {

     $ot_value = $RunningTax;

     // print "ot_value = $ot_value<br>\n";

     }

 

    // CWS EDIT (start) -- Check for existence of subtotals...                        

     if($ot_class == "ot_total")

                       {

                           

         $ot_value = $RunningTotal;

                           if ( !$ot_subtotal_found )

                           {

                               // There was no subtotal on this order, lets add the running subtotal in.

                               $ot_value = $ot_value + $RunningSubTotal;

                           }

                       }

    // CWS EDIT (end) -- Check for existence of subtotals...    

 

    // Set $ot_text (display-formatted value)

     // $ot_text = "\$" . number_format($ot_value, 2, '.', ',');

     

     $order = new order($oID);

     $ot_text = $currencies->format($ot_value, true, $order->info['currency'], $order->info['currency_value']);

     

     if($ot_class == "ot_total")

     $ot_text = "<b>" . $ot_text . "</b>";

   

    if($ot_total_id > 0)

    {

     // In Database Already - Update

     $Query = "update " . TABLE_ORDERS_TOTAL . " set

      title = '$ot_title',

      text = '$ot_text',

      value = '$ot_value',

      sort_order = '$sort_order'

      where orders_total_id = '$ot_total_id'";

     tep_db_query($Query);

    }

    else

    {

     

     // New Insert

     $Query = "insert into " . TABLE_ORDERS_TOTAL . " set

      orders_id = '$oID',

      title = '$ot_title',

      text = '$ot_text',

      value = '$ot_value',

      class = '$ot_class',

      sort_order = '$sort_order'";

     tep_db_query($Query);

    }

 

    $RunningTotal += $ot_value;

   }

   elseif($ot_total_id > 0)

   {

    // Delete Total Piece

    $Query = "delete from " . TABLE_ORDERS_TOTAL . " where orders_total_id = '$ot_total_id'";

    tep_db_query($Query);

   }

 

  }

 

 if ($order_updated)

 {

  $messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');

 }

 

 tep_redirect(tep_href_link("edit_orders.php", tep_get_all_get_params(array('action')) . 'action=edit'));

 

break;

 

// Add a Product

case 'add_product':

 if($step == 5)

 {

  // Get Order Info

  $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

  $order = new order($oID);

 

  $AddedOptionsPrice = 0;

 

  // Get Product Attribute Info

  if(IsSet($add_product_options))

  {

   foreach($add_product_options as $option_id => $option_value_id)

   {

    $result = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa LEFT JOIN " . TABLE_PRODUCTS_OPTIONS . " po ON po.products_options_id=pa.options_id LEFT JOIN " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov ON pov.products_options_values_id=pa.options_values_id WHERE products_id='$add_product_products_id' and options_id=$option_id and options_values_id=$option_value_id and po.language_id = '" . (int)$languages_id . "' and pov.language_id = '" . (int)$languages_id . "'");

    $row = tep_db_fetch_array($result);

    extract($row, EXTR_PREFIX_ALL, "opt");

    $AddedOptionsPrice += $opt_options_values_price;

    $option_value_details[$option_id][$option_value_id] = array ("options_values_price" => $opt_options_values_price);

    $option_names[$option_id] = $opt_products_options_name;

    $option_values_names[$option_value_id] = $opt_products_options_values_name;

   }

  }

 

  // Get Product Info

  $InfoQuery = "select p.products_model,p.products_price,pd.products_name,p.products_tax_class_id from " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pd.products_id=p.products_id where p.products_id='$add_product_products_id' and pd.language_id = '" . (int)$languages_id . "'";

  $result = tep_db_query($InfoQuery);

  $row = tep_db_fetch_array($result);

  extract($row, EXTR_PREFIX_ALL, "p");

 

  // Following functions are defined at the bottom of this file

  $CountryID = tep_get_country_id($order->delivery["country"]);

  $ZoneID = tep_get_zone_id($CountryID, $order->delivery["state"]);

 

  $ProductsTax = tep_get_tax_rate($p_products_tax_class_id, $CountryID, $ZoneID);

 

  $Query = "insert into " . TABLE_ORDERS_PRODUCTS . " set

   orders_id = $oID,

   products_id = $add_product_products_id,

   products_model = '$p_products_model',

   products_name = '" . str_replace("'", "'", $p_products_name) . "',

   products_price = '$p_products_price',

   final_price = '" . ($p_products_price + $AddedOptionsPrice) . "',

   products_tax = '$ProductsTax',

   products_quantity = $add_product_quantity;";

  tep_db_query($Query);

  $new_product_id = tep_db_insert_id();

  //UPDATE_INVENTORY_QUANTITY_START#################################################

#############################################################

  tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity - " . $add_product_quantity . ", products_ordered = products_ordered + " . $add_product_quantity . " where products_id = '" . $add_product_products_id . "'");

  //UPDATE_INVENTORY_QUANTITY_END###################################################

###########################################################

  if(IsSet($add_product_options))

  {

   foreach($add_product_options as $option_id => $option_value_id)

   {

    $Query = "insert into " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " set

     orders_id = $oID,

     orders_products_id = $new_product_id,

     products_options = '" . $option_names[$option_id] . "',

     products_options_values = '" . $option_values_names[$option_value_id] . "',

     options_values_price = '" . $option_value_details[$option_id][$option_value_id]["options_values_price"] . "',

     price_prefix = '+';";

    tep_db_query($Query);

   }

  }

 

  // Calculate Tax and Sub-Totals

  $order = new order($oID);

  $RunningSubTotal = 0;

  $RunningTax = 0;

 

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

  {

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

  $RunningTax += (($order->products[$i]['tax'] / 100) * ($order->products[$i]['qty'] * $order->products[$i]['final_price']));  

  }

 

 

  // Tax

  $Query = "update " . TABLE_ORDERS_TOTAL . " set

   text = '\$" . number_format($RunningTax, 2, '.', ',') . $order->info['currency'] . "',

   value = '" . $RunningTax . "'

   where class='ot_tax' and orders_id=$oID";

  tep_db_query($Query);

 

  // Sub-Total

  $Query = "update " . TABLE_ORDERS_TOTAL . " set

   text = '" . number_format($RunningSubTotal + $RunningTax, 2, '.', ',') . $order->info['currency'] . "',

   value = '" . $RunningSubTotal . "'

   where class='ot_subtotal' and orders_id=$oID";

  tep_db_query($Query);

 

  // Total

  $Query = "select sum(value) as total_value from " . TABLE_ORDERS_TOTAL . " where class != 'ot_total' and orders_id=$oID";

  $result = tep_db_query($Query);

  $row = tep_db_fetch_array($result);

  $Total = $row["total_value"];

 

  $Query = "update " . TABLE_ORDERS_TOTAL . " set

   text = '<b>" . number_format($Total, 2, '.', ',') . $order->info['currency'] . "</b>',

   value = '" . $Total . "'

   where class='ot_total' and orders_id=$oID";

  tep_db_query($Query);

 

  tep_redirect(tep_href_link("edit_orders.php", tep_get_all_get_params(array('action')) . 'action=edit'));

 

 }

break;

   }

 }

 

 if (($action == 'edit') && isset($HTTP_GET_VARS['oID'])) {

   $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

 

   $orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");

   $order_exists = true;

   if (!tep_db_num_rows($orders_query)) {

     $order_exists = false;

     $messageStack->add(sprintf(ERROR_ORDER_DOES_NOT_EXIST, $oID), 'error');

   }

 }

?>

<!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">

<script language="javascript" src="includes/menu.js"></script>

 

<script language="javascript" src="includes/general.js"></script>

</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>

<?php

 if ($menu_dhtml == false ) {     // add for dhtml_menu

  echo '<td width="' . BOX_WIDTH . '" valign="top">';

  echo '<table border="0" width="' . BOX_WIDTH . '" cellspacing="1" cellpadding="1" class="columnLeft">';

  echo '<!-- left_navigation //-->';

  require(DIR_WS_INCLUDES . 'column_left.php');

  echo '<!-- left_navigation_eof //-->';

  echo '</table>';

  echo '</td>';

 } else {

 

 }

?>

<!-- body_text //-->

   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php

 if (($action == 'edit') && ($order_exists == true)) {

   $order = new order($oID);

?>

     

     

     <tr>

       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td class="pageHeading"><?php echo HEADING_TITLE; ?> #<?php echo $oID; ?></td>

           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>

           <td class="pageHeading" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

         </tr>

       </table></td>

     </tr>

     

   

<!-- Begin Addresses Block -->

     <tr><?php echo tep_draw_form('edit_order', "edit_orders.php", tep_get_all_get_params(array('action','paycc')) . 'action=update_order'); ?>

     <td>

     <table width="100%" border="0"><tr> <td><div align="center">

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

 <!--DWLayoutTable-->

 <tr>

   <td valign="top"><!--DWLayoutEmptyCell--> </td>

   <td valign="top"><b> <?php echo ENTRY_CUSTOMER; ?> </b></td>

   <td width="6" rowspan="9" valign="top"><!--DWLayoutEmptyCell--> </td>

   <TD WIDTH="150" VALIGN="top"><b> <?php echo ENTRY_BILLING_ADDRESS; ?></b></TD>

   <td width="6" rowspan="9" valign="top"><!--DWLayoutEmptyCell--> </td>

   <td width="150" valign="top"><b><?php echo ENTRY_SHIPPING_ADDRESS; ?></b></td>

   <td width="1"> </td>

 </tr>

 <tr>

   <td width="60" valign="top"> <?php echo ENTRY_CUSTOMER_NAME; ?>:</td>

   <td width="150" valign="top"><span class="main">

     <input name="update_customer_name" size="25" value="<?php echo tep_html_quotes($order->customer['name']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_name" size="25" value="<?php echo tep_html_quotes($order->billing['name']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_name" size="25" value="<?php echo tep_html_quotes($order->delivery['name']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"> <?php echo ENTRY_CUSTOMER_COMPANY; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_company" size="25" value="<?php echo tep_html_quotes($order->customer['company']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_company" size="25" value="<?php echo tep_html_quotes($order->billing['company']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_company" size="25" value="<?php echo tep_html_quotes($order->delivery['company']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"><?php echo ENTRY_CUSTOMER_ADDRESS; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_street_address" size="25" value="<?php echo tep_html_quotes($order->customer['street_address']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_street_address" size="25" value="<?php echo tep_html_quotes($order->billing['street_address']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_street_address" size="25" value="<?php echo tep_html_quotes($order->delivery['street_address']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"><?php echo ENTRY_CUSTOMER_ADDRESS2; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_street_address2" size="25" value="<?php echo tep_html_quotes($order->customer['street_address2']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_street_address2" size="25" value="<?php echo tep_html_quotes($order->billing['street_address2']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_street_address2" size="25" value="<?php echo tep_html_quotes($order->delivery['street_address2']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"><?php echo ENTRY_CUSTOMER_CITY; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_city" size="25" value="<?php echo tep_html_quotes($order->customer['city']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_city" size="25" value="<?php echo tep_html_quotes($order->billing['city']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_city" size="25" value="<?php echo tep_html_quotes($order->delivery['city']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"><?php echo ENTRY_CUSTOMER_STATE; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_state" size="25" value="<?php echo tep_html_quotes($order->customer['state']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_state" size="25" value="<?php echo tep_html_quotes($order->billing['state']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_state" size="25" value="<?php echo tep_html_quotes($order->delivery['state']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"> <?php echo ENTRY_CUSTOMER_POSTCODE; ?>:</td>

   <td valign="top"><span class="main">

     <input name="update_customer_postcode" size="25" value="<?php echo $order->customer['postcode']; ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_postcode" size="25" value="<?php echo $order->billing['postcode']; ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_postcode" size="25" value="<?php echo $order->delivery['postcode']; ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td valign="top"> <?php echo ENTRY_CUSTOMER_COUNTRY; ?></td>

   <td valign="top"><span class="main">

     <input name="update_customer_country" size="25" value="<?php echo tep_html_quotes($order->customer['country']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_billing_country" size="25" value="<?php echo tep_html_quotes($order->billing['country']); ?>">

   </span></td>

   <td valign="top"><span class="main">

     <input name="update_delivery_country" size="25" value="<?php echo tep_html_quotes($order->delivery['country']); ?>">

   </span></td>

   <td> </td>

 </tr>

 <tr>

   <td></td>

   <td></td>

   <td></td>

   <td></td>

   <td></td>

   <td></td>

   <td></td>

 </tr>

</table>

</div></td></tr></table>

<!-- End Addresses Block -->

 

     <tr>

  <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

     </tr>

 

<!-- Begin Phone/Email Block -->

     <tr>

       <td><table border="0" cellspacing="0" cellpadding="2">

       <tr>

         <td class="main"><small><b><?php echo ENTRY_TELEPHONE_NUMBER; ?></b></small></td>

         <td class="main"><input name='update_customer_telephone' size='35' value='<?php echo $order->customer['telephone']; ?>'></td>

       </tr>

       <tr>

         <td class="main"><small><b><?php echo ENTRY_EMAIL_ADDRESS; ?></b></small></td>

         <td class="main"><input name='update_customer_email_address' size='35' value='<?php echo $order->customer['email_address']; ?>'></td>

       </tr>

 

<!-- End Phone/Email Block -->

 

     <tr>

  <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

     </tr>

 

<!-- Begin Payment Block -->

  <tr>

    <td class="main"><small><b><?php echo ENTRY_PAYMENT_METHOD; ?></b></small></td>

    <td class="main">

<?php

  if ($order->info['payment_method'] != "Credit Card") {

      echo ENTRY_UPDATE_TO_CC;

  }

?>

  <input name='update_info_payment_method' size='35' value='<?php echo $order->info['payment_method']; ?>'></td>

  </tr>

 

<?php if ($order->info['cc_type'] || $order->info['cc_owner'] || $order->info['payment_method'] == "Credit Card" || $order->info['cc_number'] || $order->info['cvvnumber']) { ?>

  <!-- Begin Credit Card Info Block -->

  <tr>

    <td class="main"><strong><?php echo ENTRY_CREDIT_CARD_TYPE; ?></strong></td>

    <td class="main"><input name='update_info_cc_type' size='35' value='<?php echo $order->info['cc_type']; ?>'></td>

  </tr>

  <tr>

    <td class="main"><strong><?php echo ENTRY_CREDIT_CARD_OWNER; ?></strong></td>

    <td class="main"><input name='update_info_cc_owner' size='35' value='<?php echo $order->info['cc_owner']; ?>'></td>

  </tr>

  <tr>

    <td class="main"><strong><?php echo ENTRY_CREDIT_CARD_NUMBER; ?></strong></td>

    <td class="main"><input name='update_info_cc_number' size='35' value='<?php echo $order->info['cc_number']; ?>'></td>

  </tr>

  <tr>

    <td class="main"><strong><?php echo ENTRY_CREDIT_CARD_EXPIRES; ?></strong></td>

    <td class="main"><input name='update_info_cc_expires' size='35' value='<?php echo $order->info['cc_expires']; ?>'></td>

  </tr>

  <tr>

    <td class="main"><small><strong>CVV Security Code:</strong></small></td>

    <td class="main"><input name='update_info_cvvnumber' size='35' value='<?php echo $order->info['cvvnumber']; ?>'></td>

  </tr>

  <!-- End Credit Card Info Block -->

<?php } ?>

 

<?php

// START - Added for eCheck Payment into database

if ($order->info['checknumber'] || $order->info['accountnumber'] || $order->info['payment_method'] == "Online eCheck - Payable to PopTheTop" || $order->info['routingnumber']) {

?>

  <tr>

      <td class="main">Account Name:</td>

    <td class="main"><input name='update_info_accountholder' size='35' value='<?php echo $order->info['accountholder']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Account Address:</td>

    <td class="main"><input name='update_info_address' size='35' value='<?php echo $order->info['address']; ?>'></td>

  </tr>

  <tr>

    <td class="main"> </td>

    <td class="main"><input name='update_info_address2' size='35' value='<?php echo $order->info['address2']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Account Phone:</td>

    <td class="main"><input name='update_info_phone' size='35' value='<?php echo $order->info['phone']; ?>'></td>

  </tr>

    <tr>

      <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '2'); ?></td>

    </tr>

  <tr>

    <td class="main">Bank Name:</td>

    <td class="main"><input name='update_info_bank' size='35' value='<?php echo $order->info['bank']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Bank Location:</td>

    <td class="main"><input name='update_info_bankcity' size='35' value='<?php echo $order->info['bankcity']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Bank Phone:</td>

    <td class="main"><input name='update_info_bankphone' size='35' value='<?php echo $order->info['bankphone']; ?>'></td>

  </tr>

    <tr>

      <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '2'); ?></td>

    </tr>

  <tr>

    <td class="main">Check Number:</td>

    <td class="main"><input name='update_info_checknumber' size='35' value='<?php echo $order->info['checknumber']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Account Number:</td>

    <td class="main"><input name='update_info_accountnumber' size='35' value='<?php echo $order->info['accountnumber']; ?>'></td>

  </tr>

  <tr>

    <td class="main">Routing Number:</td>

    <td class="main"><input name='update_info_routingnumber' size='35' value='<?php echo $order->info['routingnumber']; ?>'></td>

  </tr>

<?php

}

// END - Added for eCheck Payment into database

?>

      </table></td>

     </tr>

     <tr>

  <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

     </tr>

 

<!-- Begin Products Listing Block -->

     <tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

  <tr class="dataTableHeadingRow">

    <td class="dataTableHeadingContent" colspan="2"><?php echo TABLE_HEADING_PRODUCTS; ?></td>

    <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS_MODEL; ?></td>

    <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_TAX; ?></td>

    <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_UNIT_PRICE; ?></td>

    <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_PRICE; ?></td>

  </tr>

 

<!-- Begin Products Listings Block -->

<?

      // Override order.php Class's Field Limitations

  $index = 0;

  $order->products = array();

  $orders_products_query = tep_db_query("select * from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$oID . "'");

  while ($orders_products = tep_db_fetch_array($orders_products_query)) {

  $order->products[$index] = array('qty' => $orders_products['products_quantity'],

                                       'name' => str_replace("'", "'", $orders_products['products_name']),

 

L8r,

PopTheTop

 

Published osC Contributions:

- eCheck Payment Module v3.1

- Reviews in Product Display v2.0

- Fancier Invoice & Packingslip v6.1

- Admin Notes / Customer Notes v2.2

- Customer Zip & State Validation v2.2

- Search Box with Dropdown Category Menu v1.0

 

Pop your camper's top today!

It's a popup thing...

You wouldn't understand

Link to comment
Share on other sites

The rest of the file...

 

	<!-- Begin Products Listings Block -->
<?
    	 // Override order.php Class's Field Limitations
  $index = 0;
  $order->products = array();
  $orders_products_query = tep_db_query("select * from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$oID . "'");
  while ($orders_products = tep_db_fetch_array($orders_products_query)) {
  $order->products[$index] = array('qty' => $orders_products['products_quantity'],
                                       'name' => str_replace("'", "'", $orders_products['products_name']),
                                       'model' => $orders_products['products_model'],
                                       'tax' => $orders_products['products_tax'],
                                       'price' => $orders_products['products_price'],
                                       'final_price' => $orders_products['final_price'],
                                       'orders_products_id' => $orders_products['orders_products_id']);

  $subindex = 0;
  $attributes_query_string = "select * from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$oID . "' and orders_products_id = '" . (int)$orders_products['orders_products_id'] . "'";
  $attributes_query = tep_db_query($attributes_query_string);

  if (tep_db_num_rows($attributes_query)) {
  while ($attributes = tep_db_fetch_array($attributes_query)) {
    $order->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],
                                                              'value' => $attributes['products_options_values'],
                                                              'prefix' => $attributes['price_prefix'],
                                                              'price' => $attributes['options_values_price'],
                                                              'orders_products_attributes_id' => $attributes['orders_products_attributes_id']);
	 $subindex++;
  }
  }
  $index++;
}
 
for ($i=0; $i<sizeof($order->products); $i++) {
 $orders_products_id = $order->products[$i]['orders_products_id'];
 
 $RowStyle = "dataTableContent";
 
 echo '   <tr class="dataTableRow">' . "\n" .
    '     <td class="' . $RowStyle . '" valign="top" align="right">' . "<input name='update_products[$orders_products_id][qty]' size='2' value='" . $order->products[$i]['qty'] . "'> x</td>\n" . 
    '     <td class="' . $RowStyle . '" valign="top">' . "<input name='update_products[$orders_products_id][name]' size='64' value='" . $order->products[$i]['name'] . "'>";
 
 // Has Attributes?
 if (sizeof($order->products[$i]['attributes']) > 0) {
	 for ($j=0; $j<sizeof($order->products[$i]['attributes']); $j++) {
   $orders_products_attributes_id = $order->products[$i]['attributes'][$j]['orders_products_attributes_id'];
   echo '<br><nobr><small> - ' . 
     "<input name='update_products[$orders_products_id][attributes][$orders_products_attributes_id][option]' size='32' value='" . $order->products[$i]['attributes'][$j]['option'] . "'>" . 
     ' : ' . 
     "<input name='update_products[$orders_products_id][attributes][$orders_products_attributes_id][value]' size='25' value='" . $order->products[$i]['attributes'][$j]['value'];
   if ($order->products[$i]['attributes'][$j]['price'] != '0') echo ' (' . $order->products[$i]['attributes'][$j]['prefix'] . $currencies->format($order->products[$i]['attributes'][$j]['price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . ')';
   echo "'>";
   echo ' <br>   Delete <strong>(+$XX.xx)</strong> if any, before submitting changes</small></nobr>';
	 }
 }
 
 echo '     </td>' . "\n" .
      '     <td class="' . $RowStyle . '" valign="top">' . "<input name='update_products[$orders_products_id][model]' size='12' value='" . $order->products[$i]['model'] . "'>" . '</td>' . "\n" .
      '     <td class="' . $RowStyle . '" align="center" valign="top">' . "<input name='update_products[$orders_products_id][tax]' size='3' value='" . tep_display_tax_value($order->products[$i]['tax']) . "'>" . '%</td>' . "\n" .
      '     <td class="' . $RowStyle . '" align="right" valign="top">' . "<input name='update_products[$orders_products_id][final_price]' size='5' value='" . number_format($order->products[$i]['final_price'], 2, '.', '') . "'>" . '</td>' . "\n" . 
      '     <td class="' . $RowStyle . '" align="right" valign="top">' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</td>' . "\n" . 
      '   </tr>' . "\n";
}
?>
<!-- End Products Listings Block -->

<!-- Begin Order Total Block -->
  <tr>
    <td align="right" colspan="6">
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
     <tr>
     <td align='center' valign='top'><br><a href="<?php print $PHP_SELF . "?oID=$oID&action=add_product&step=1"; ?>"><u><b><?php echo TEXT_DATE_ORDER_ADDNEW; ?></b></u></a></td>
     <td align='right'>
     <table border="0" cellspacing="0" cellpadding="2">
<?php

    	 // Override order.php Class's Field Limitations
 $totals_query = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$oID . "' order by sort_order");
 $order->totals = array();
 while ($totals = tep_db_fetch_array($totals_query)) { $order->totals[] = array('title' => $totals['title'], 'text' => $totals['text'], 'class' => $totals['class'], 'value' => $totals['value'], 'orders_total_id' => $totals['orders_total_id']); }
     
$TotalsArray = array();
for ($i=0; $i<sizeof($order->totals); $i++) {
 $TotalsArray[] = array("Name" => $order->totals[$i]['title'], "Price" => number_format($order->totals[$i]['value'], 2, '.', ''), "Class" => $order->totals[$i]['class'], "TotalID" => $order->totals[$i]['orders_total_id']);
 $TotalsArray[] = array("Name" => "          ", "Price" => "", "Class" => "ot_custom", "TotalID" => "0");
}

array_pop($TotalsArray);
foreach($TotalsArray as $TotalIndex => $TotalDetails)
{
 $TotalStyle = "smallText";
 if(($TotalDetails["Class"] == "ot_subtotal") || ($TotalDetails["Class"] == "ot_total"))
 {
	 echo	'       <tr>' . "\n" .
   '  <td class="main" align="right"><small><b>' . $TotalDetails["Name"] . '</b></small></td>' .
   '  <td class="main"><small><b>' . $TotalDetails["Price"] .
     "<input name='update_totals[$TotalIndex][title]' type='hidden' value='" . trim($TotalDetails["Name"]) . "' size='" . strlen($TotalDetails["Name"]) . "' >" . 
     "<input name='update_totals[$TotalIndex][value]' type='hidden' value='" . $TotalDetails["Price"] . "' size='6'>" . 
     "<input name='update_totals[$TotalIndex][class]' type='hidden' value='" . $TotalDetails["Class"] . "'>\n" . 
     "<input type='hidden' name='update_totals[$TotalIndex][total_id]' value='" . $TotalDetails["TotalID"] . "'>" . '</b></small></td>' . 
   '       </tr>' . "\n";
 }
 elseif($TotalDetails["Class"] == "ot_tax")
 {
	 echo	'       <tr>' . "\n" .
   '  <td align="right" class="' . $TotalStyle . '">' . "<input name='update_totals[$TotalIndex][title]' size='" . strlen(trim($TotalDetails["Name"])) . "' value='" . trim($TotalDetails["Name"]) . "'>" . '</td>' . "\n" .
   '  <td class="main"><small><b>' . $TotalDetails["Price"] .
     "<input name='update_totals[$TotalIndex][value]' type='hidden' value='" . $TotalDetails["Price"] . "' size='6' >" . 
     "<input name='update_totals[$TotalIndex][class]' type='hidden' value='" . $TotalDetails["Class"] . "'>\n" . 
     "<input type='hidden' name='update_totals[$TotalIndex][total_id]' value='" . $TotalDetails["TotalID"] . "'>" . '</b></small></td>' . 
   '       </tr>' . "\n";
 }
 else
 {
	 echo	'       <tr>' . "\n" .
   '  <td align="right" class="' . $TotalStyle . '">' . "<input name='update_totals[$TotalIndex][title]' size='" . strlen(trim($TotalDetails["Name"])) . "' value='" . trim($TotalDetails["Name"]) . "'>" . '</td>' . "\n" .
   '  <td align="right" class="' . $TotalStyle . '">' . "<input name='update_totals[$TotalIndex][value]' size='6' value='" . $TotalDetails["Price"] . "'>" . 
     "<input type='hidden' name='update_totals[$TotalIndex][class]' value='" . $TotalDetails["Class"] . "'>" . 
     "<input type='hidden' name='update_totals[$TotalIndex][total_id]' value='" . $TotalDetails["TotalID"] . "'>" . 
     '</td>' . "\n" .
   '       </tr>' . "\n";
 }
}
?>
     </table>
     </td>
     </tr>
     </table>
    </td>
  </tr>
<!-- End Order Total Block -->

</table></td>
     </tr>
    	 
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>

     <tr>
       <td class="main"><table border="1" cellspacing="0" cellpadding="5">
         <tr>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_DATE_ADDED; ?></b></td>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_CUSTOMER_NOTIFIED; ?></b></td>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_STATUS; ?></b></td>
           <?php if ($CommentsWithStatus) { ?>
           <td class="smallText" align="center"><b>Comments</b></td>
           <?php } ?>
         </tr>
<?php
   $orders_history_query = tep_db_query("select * from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . tep_db_input($oID) . "' order by date_added");
   if (tep_db_num_rows($orders_history_query)) {
     while ($orders_history = tep_db_fetch_array($orders_history_query)) {
       echo '          <tr>' . "\n" .
            '            <td class="smallText" align="center">' . tep_datetime_short($orders_history['date_added']) . '</td>' . "\n" .
            '            <td class="smallText" align="center">';
       if ($orders_history['customer_notified'] == '1') {
         echo tep_image(DIR_WS_ICONS . 'tick.gif', ICON_TICK) . "</td>\n";
       } else {
         echo tep_image(DIR_WS_ICONS . 'cross.gif', ICON_CROSS) . "</td>\n";
       }
       echo '            <td class="smallText">' . $orders_status_array[$orders_history['orders_status_id']] . '</td>' . "\n";
       
       if ($CommentsWithStatus) {
       echo '            <td class="smallText">' . nl2br(tep_db_output($orders_history['comments'])) . ' </td>' . "\n";
       }
       
       echo '          </tr>' . "\n";
     }
   } else {
       echo '          <tr>' . "\n" .
            '            <td class="smallText" colspan="5">' . TEXT_NO_ORDER_HISTORY . '</td>' . "\n" .
            '          </tr>' . "\n";
   }
?>
       </table></td>
     </tr>

     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '20'); ?></td>
     </tr>
     <tr>
       <td><br><FONT FACE="Arial"><small><?php echo TABLE_HEADING_COMMENTS; ?></small></FONT></td>
     </tr>
     <tr>
       <td class="main">
<?
       if ($CommentsWithStatus) {
// Comments Margin BEGIN
// Keep this on 2 lines with the 2nd line at the left margin!
   echo tep_draw_textarea_field('comments', 'soft', '60', '5');
// Comments Margin END
   } else {
   echo tep_draw_textarea_field('comments', 'soft', '60', '5', $order->info['comments']);
   }
?>
       </td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>

     <tr>
       <td><table border="0" cellspacing="0" cellpadding="2">
         <tr>
           <td><FONT FACE="Arial"><small><b><?php echo ENTRY_STATUS; ?></b></small></FONT>  <?php echo tep_draw_pull_down_menu('status', $orders_statuses, $order->info['orders_status']); ?></td>
         </tr>
         <tr>
           <td><FONT FACE="Arial"><small><b><?php echo ENTRY_NOTIFY_CUSTOMER; ?></b></small></FONT> <?php echo tep_draw_checkbox_field('notify', '', false); ?></td>
         </tr>
         <?php if($CommentsWithStatus) { ?>
         <tr>
           <td><FONT FACE="Arial"><small><b><?php echo ENTRY_NOTIFY_COMMENTS; ?></b></small></FONT> <?php echo tep_draw_checkbox_field('notify_comments', '', true); ?></td>
         </tr>
         <?php } ?>
       </table></td>
     </tr>

     <tr>
   <td align='center' valign="top"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?></td>
     </tr>
     </form>
<?php
 }
 
if($action == "add_product") {
?>
     <tr>
       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo ADDING_TITLE; ?> #<?php echo $oID; ?></td>
           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
           <td class="pageHeading" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>
         </tr>
       </table></td>
     </tr>

<?
// ############################################################################
//   Get List of All Products
// ############################################################################

 //$result = tep_db_query("SELECT products_name, p.products_id, x.categories_name, ptc.categories_id FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON pd.products_id=p.products_id LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON ptc.products_id=p.products_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON cd.categories_id=ptc.categories_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " x ON x.categories_id=ptc.categories_id ORDER BY categories_id");
 $result = tep_db_query("SELECT products_name, p.products_id, categories_name, ptc.categories_id FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON pd.products_id=p.products_id LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON ptc.products_id=p.products_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON cd.categories_id=ptc.categories_id where pd.language_id = '" . (int)$languages_id . "' ORDER BY categories_name");
 while($row = tep_db_fetch_array($result))
 {
	 extract($row,EXTR_PREFIX_ALL,"db");
	 $ProductList[$db_categories_id][$db_products_id] = $db_products_name;
	 $CategoryList[$db_categories_id] = $db_categories_name;
	 $LastCategory = $db_categories_name;
 }
 
 // ksort($ProductList);
 
 $LastOptionTag = "";
 $ProductSelectOptions = "<option value='0'>Don't Add New Product" . $LastOptionTag . "\n";
 $ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
 foreach($ProductList as $Category => $Products)
 {
	 $ProductSelectOptions .= "<option value='0'>$Category" . $LastOptionTag . "\n";
	 $ProductSelectOptions .= "<option value='0'>---------------------------" . $LastOptionTag . "\n";
	 asort($Products);
	 foreach($Products as $Product_ID => $Product_Name)
	 {
   $ProductSelectOptions .= "<option value='$Product_ID'>   $Product_Name" . $LastOptionTag . "\n";
	 }
	 
	 if($Category != $LastCategory)
	 {
   $ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
   $ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
	 }
 }


// ############################################################################
//   Add Products Steps
// ############################################################################

 print "<tr><td><table border='0'>\n";
 
 // Set Defaults
	 if(!IsSet($add_product_categories_id))
	 $add_product_categories_id = 0;

	 if(!IsSet($add_product_products_id))
	 $add_product_products_id = 0;
 
 // Step 1: Choose Category
	 print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
	 print "<td class='dataTableContent' align='right'><b>STEP 1:</b></td><td class='dataTableContent' valign='top'>";
	 echo ' ' . tep_draw_pull_down_menu('add_product_categories_id', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
	 print "<input type='hidden' name='step' value='2'>";
	 print "</td>\n";
	 print "</form></tr>\n";
	 print "<tr><td colspan='3'> </td></tr>\n";

 // Step 2: Choose Product
 if(($step > 1) && ($add_product_categories_id > 0))
 {
	 print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
	 print "<td class='dataTableContent' align='right'><b>STEP 2:</b></td><td class='dataTableContent' valign='top'><select name=\"add_product_products_id\" onChange=\"this.form.submit();\">";
	 $ProductOptions = "<option value='0'>" .  ADDPRODUCT_TEXT_SELECT_PRODUCT . "\n";
	 asort($ProductList[$add_product_categories_id]);
	 foreach($ProductList[$add_product_categories_id] as $ProductID => $ProductName)
	 {
	 $ProductOptions .= "<option value='$ProductID'> $ProductName\n";
	 }
	 $ProductOptions = str_replace("value='$add_product_products_id'","value='$add_product_products_id' selected", $ProductOptions);
	 print $ProductOptions;
	 print "</select></td>\n";
	 print "<input type='hidden' name='add_product_categories_id' value='$add_product_categories_id'>";
	 print "<input type='hidden' name='step' value='3'>";
	 print "</form></tr>\n";
	 print "<tr><td colspan='3'> </td></tr>\n";
 }

 // Step 3: Choose Options
 if(($step > 2) && ($add_product_products_id > 0))
 {
	 // Get Options for Products
	 $result = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa LEFT JOIN " . TABLE_PRODUCTS_OPTIONS . " po ON po.products_options_id=pa.options_id LEFT JOIN " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov ON pov.products_options_values_id=pa.options_values_id WHERE products_id='$add_product_products_id' and po.language_id = '" . (int)$languages_id . "'");
	 
	 // Skip to Step 4 if no Options
	 if(tep_db_num_rows($result) == 0)
	 {
   print "<tr class=\"dataTableRow\">\n";
   print "<td class='dataTableContent' align='right'><b>STEP 3:</b></td><td class='dataTableContent' valign='top' colspan='2'><i>No Options - Skipped...</i></td>";
   print "</tr>\n";
   $step = 4;
	 }
	 else
	 {
   while($row = tep_db_fetch_array($result))
   {
  	 extract($row,EXTR_PREFIX_ALL,"db");
  	 $Options[$db_products_options_id] = $db_products_options_name;
  	 $ProductOptionValues[$db_products_options_id][$db_products_options_values_id] = $db_products_options_values_name;
   }
	 
   print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
   print "<td class='dataTableContent' align='right'><b>STEP 3:</b></td><td class='dataTableContent' valign='top'>";
   foreach($ProductOptionValues as $OptionID => $OptionValues)
   {
  	 $OptionOption = "<b>" . $Options[$OptionID] . "</b> - <select name='add_product_options[$OptionID]'>";
  	 foreach($OptionValues as $OptionValueID => $OptionValueName)
  	 {
  	 $OptionOption .= "<option value='$OptionValueID'> $OptionValueName\n";
  	 }
  	 $OptionOption .= "</select><br>\n";
  	 
  	 if(IsSet($add_product_options))
  	 $OptionOption = str_replace("value='" . $add_product_options[$OptionID] . "'","value='" . $add_product_options[$OptionID] . "' selected",$OptionOption);
  	 
  	 print $OptionOption;
   }  
   print "</td>";
   print "<td class='dataTableContent' align='center'><input type='submit' value='" . ADDPRODUCT_TEXT_OPTIONS_CONFIRM . "'>";
   print "<input type='hidden' name='add_product_categories_id' value='$add_product_categories_id'>";
   print "<input type='hidden' name='add_product_products_id' value='$add_product_products_id'>";
   print "<input type='hidden' name='step' value='4'>";
   print "</td>\n";
   print "</form></tr>\n";
	 }

	 print "<tr><td colspan='3'> </td></tr>\n";
 }

 // Step 4: Confirm
 if($step > 3)
 {
	 print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
	 print "<td class='dataTableContent' align='right'><b>STEP 4:</b></td>";
	 print "<td class='dataTableContent' valign='top'><input name='add_product_quantity' size='2' value='1'>" . ADDPRODUCT_TEXT_CONFIRM_QUANTITY . "</td>";
	 print "<td class='dataTableContent' align='center'><input type='submit' value='" . ADDPRODUCT_TEXT_CONFIRM_ADDNOW . "'>";

	 if(IsSet($add_product_options))
	 {
   foreach($add_product_options as $option_id => $option_value_id)
   {
  	 print "<input type='hidden' name='add_product_options[$option_id]' value='$option_value_id'>";
   }
	 }
	 print "<input type='hidden' name='add_product_categories_id' value='$add_product_categories_id'>";
	 print "<input type='hidden' name='add_product_products_id' value='$add_product_products_id'>";
	 print "<input type='hidden' name='step' value='5'>";
	 print "</td>\n";
	 print "</form></tr>\n";
 }
 
 print "</table></td></tr>\n";
}  
?>
   </table></td>
<!-- body_text_eof //-->
 </tr>
</table>
<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?
 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_get_country_id
 //
 // Arguments   : country_name  country name string
 //
 // Return      : country_id
 //
 // Description : Function to retrieve the country_id based on the country's name
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_get_country_id($country_name) {

   $country_id_query = tep_db_query("select * from " . TABLE_COUNTRIES . " where countries_name = '" . $country_name . "'");

   if (!tep_db_num_rows($country_id_query)) {
     return 0;
   }
   else {
     $country_id_row = tep_db_fetch_array($country_id_query);
     return $country_id_row['countries_id'];
   }
 }

 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_get_country_iso_code_2
 //
 // Arguments   : country_id  country id number
 //
 // Return      : country_iso_code_2
 //
 // Description : Function to retrieve the country_iso_code_2 based on the country's id
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_get_country_iso_code_2($country_id) {

   $country_iso_query = tep_db_query("select * from " . TABLE_COUNTRIES . " where countries_id = '" . $country_id . "'");

   if (!tep_db_num_rows($country_iso_query)) {
     return 0;
   }
   else {
     $country_iso_row = tep_db_fetch_array($country_iso_query);
     return $country_iso_row['countries_iso_code_2'];
   }
 }

 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_get_zone_id
 //
 // Arguments   : country_id  country id string
 //               zone_name  state/province name
 //
 // Return      : zone_id
 //
 // Description : Function to retrieve the zone_id based on the zone's name
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_get_zone_id($country_id, $zone_name) {

   $zone_id_query = tep_db_query("select * from " . TABLE_ZONES . " where zone_country_id = '" . $country_id . "' and zone_name = '" . $zone_name . "'");

   if (!tep_db_num_rows($zone_id_query)) {
     return 0;
   }
   else {
     $zone_id_row = tep_db_fetch_array($zone_id_query);
     return $zone_id_row['zone_id'];
   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_field_exists
 //
 // Arguments   : table	table name
 //               field	field name
 //
 // Return      : true/false
 //
 // Description : Function to check the existence of a database field
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_field_exists($table,$field) {

   $describe_query = tep_db_query("describe $table");
   while($d_row = tep_db_fetch_array($describe_query))
   {
     if ($d_row["Field"] == "$field")
     return true;
   }

   return false;
 }

 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_html_quotes
 //
 // Arguments   : string	any string
 //
 // Return      : string with single quotes converted to html equivalent
 //
 // Description : Function to change quotes to HTML equivalents for form inputs.
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_html_quotes($string) {
   return str_replace("'", "'", $string);
 }

 ////////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Function    : tep_html_unquote
 //
 // Arguments   : string	any string
 //
 // Return      : string with html equivalent converted back to single quotes
 //
 // Description : Function to change HTML equivalents back to quotes
 //
 ////////////////////////////////////////////////////////////////////////////////////////////////
 function tep_html_unquote($string) {
   return str_replace("'", "'", $string);
 }

require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

L8r,

PopTheTop

 

Published osC Contributions:

- eCheck Payment Module v3.1

- Reviews in Product Display v2.0

- Fancier Invoice & Packingslip v6.1

- Admin Notes / Customer Notes v2.2

- Customer Zip & State Validation v2.2

- Search Box with Dropdown Category Menu v1.0

 

Pop your camper's top today!

It's a popup thing...

You wouldn't understand

Link to comment
Share on other sites

I'm looking for someone to help me get the product options contribution working. I have a few other contributions installed, and it may be interfering. I'm looking to pay a coder with experience with this contribution to fix my problem.

 

I have all option types (text, textbox, radio buttons, etc) showing up on the products_info.php page as drop-down boxes. For instance, if i want to add a text attribute, it shows up as a dropdown box with the word "TEXT", not a text input box.

 

Can someone help me out here? I am willing to pay hourly to fix this problem and I need it done ASAP. Thanks. Please call me at 201-963-4305.

 

George Burke

Link to comment
Share on other sites

  • 2 weeks later...

I have installed the 1.71 version on a heavily modified store but am having the problem where the options are not following through to the cart, etc. I've gone over the forum several times, gone over my installation several times but still no luck. According to the Readme file, things are dependent on the data input for the TEXT value to have an ID of 0. I've have checked this numerous times, and all is correct.

 

Can some one please point me in the right direction to troubleshoot this futher. I'm pulling my hair out!!!

 

Thanks,

Dorothy

Link to comment
Share on other sites

Okay, I stepped back my installation and turns out one of my other mods caused the problem. Now I am getting all the options to come across to the shopping cart, except for the text box. I will check the archives, as I think a fix was posted for that already.

---

Thanks,

Dorothy

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...