Jump to content
jhilgeman

NEW! Complete Order Editing Tool!

Recommended Posts

Well, I finally did something about the rounding errors that always appear after you add a product.  The rounding occurs because the unit price on the edit_orders.php page is trunciated to 2 decimals when it really should be 4 (because it is stored as 4 in the database as Product Price (Net)).  If anyone else suffers from rounding errors after adding a product you can fix it by modifying the following line in edit_orders.php (around line 733):

 

From:

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

 

To:

'    <td class="' . $RowStyle . '" align="right" valign="top">' . "<input name='update_products[$orders_products_id][final_price]' size='7' value='" . number_format($order->products[$i]['final_price'], 4, '.', '') . "'>" . '</td>' . "\n" .

 

This only displays the Unit Price as 4 decimals on the edit orders page.  The other pages (Invoice, Packing Slip and Orders page still display 2 decimals as it should).

 

Thought I read everything in this topic but I must have been really tired and missed this. This will solve my problem.

Great Contribution :thumbsup:

Share this post


Link to post
Share on other sites
Thought I read everything in this topic but I must have been really tired and missed this. This will solve my problem.

Great Contribution :thumbsup:

 

I'm guessing Mick K's rounding fix was for 1.59. Because I'm using 1.6a and his suggestion didn't work. So I guess I will delete 1.6a and use 1.59 and try Mick K's suggestion.

 

I'm wondering why this rounding things wasn't fixed in 1.6a. Mick posted the problem Dec. 24th :huh:

Share this post


Link to post
Share on other sites
I'm guessing Mick K's rounding fix was for 1.59. Because I'm using 1.6a and his suggestion didn't work. So I guess I will delete 1.6a and use 1.59 and try Mick K's suggestion.

 

I'm wondering why this rounding things wasn't fixed in 1.6a. Mick posted the problem Dec. 24th :huh:

 

Well 1.59 works great with the fix Mick posted for the rounding. So I guess I'll stick with that. Other than 1.6a being really pretty it didn't work for me.

I don't really know php that well...but I couldn't understand why there was a portion of the script that was not fuctioning.

Actually 1.6a edit_order.php file had 2 different section one that started:

#1

<?php // Version with editable names & price?>

- This was the part that was blocked out until it got to this point:

#2

<?php // Version without editable names & prices ?>

 

I had blocked out #2 and unblocked #1. That part of the script included the code that Mick described where you change the decimals numbers but when I changed it - it still rounded up the numbers.

 

Now that it's working the way I want it to I'm really loving this contribution.

So I think I'm happy with 1.59. I don't need a pretty admin panel...Noone sees it anyhow.

:rolleyes:

Share this post


Link to post
Share on other sites

This is a great contribution! Thank you for publishing this.

 

I am using the CCV contributuion. Anyone can help incorporate the two? Has nayone done this already?

 

Thank you.

Share this post


Link to post
Share on other sites

Wonderful contribution! Thank you to everyone involved.

 

Everything works great, I'm just wondering if anyone has any ideas on how to add one more piece of functionality. I am using the PayPal IPN contribution as well, and the Order Editor shows the transaction just great. I can add shipping charges to the order and notify the customer and that works good too.

 

What I would like to see now is a money request automatically sent to the customer for the remaining balance (the added shipping). Is this possible? If so, any ideas how?

 

-- OR --

 

How about a feature where the PayPal payment is not processed until the admin adds the shipping amount to the order?

 

Thank you in advance for any help anyone can provide. :)

Share this post


Link to post
Share on other sites

On the contrib page the last update says this:

 

29 Jan 2005 - updated swedish editorder.php Author: Stensson 

 

 

I?ve updated ONLY the langue file for sweden

 

Found a tax fault when you add a product.

 

It calculates the tax included as a product post.

 

Wich give a wrong total sum.

OBS!!! Dont install until this fix is done..

 

Should we not be using this contrib or just this part of the update. Can anyone tell me which version is the working version?

 

Thanks for the help :)

Share this post


Link to post
Share on other sites

I have this installed, although I'm unsure which version (i lose track of al these contribs real easy) although it was installed in the last 2 weeks. I have a problem that when I add a product, it is not taking the specials prices into account. Should this be the case? If not, how do I fix it?


:wq!

Share this post


Link to post
Share on other sites

Hello I have the same problem that a person in this forum :

QUOTE

Has anyone solved the problem with the tax yet?

 

Otherwise seems a great contrib, but now it's completely useless for me...

 

It seems that if there is taxed products all the taxes will appear on every tax subtotal.

So for example:

Product 1, tax (22%) price 1.00 --> tax=0.22

Product 2, tax (8%) price 1.00 --> tax=0.08

Total tax 0.3

In sub totals:

tax 8% = 0.3

tax 22% = 0.3

= 0.6

 

 

 

 

Is there a solution, because if it can't calculate the good taxe rate it can't be used in France where we have 2 taxe rate different ?

 

Thank you

Share this post


Link to post
Share on other sites

For Those of You Having SubTotal Issues

 

I installed this contrib, filename order_editor_16a_1.zip, the other day and noticed that the SubTotal is off by a couple of pennies (USD). I found that, near line 236, the field for RunningSubTotals is being rounded and multiplied by 20 then divided by 20. I am not clear as to the reason for this; however, when I simplified that line to reflect what occurs when an order is placed through the normal order class, everything calculated perfectly.

 

WARNING!!! - Please understand that this is a hack to the current code. I haven't spent much time understanding the entire code so please BACKUP before doing anything.

 

The existing line of code on line 236

$RunningSubTotal += round(tep_add_tax(($products_details["qty"] * $products_details["final_price"]), $products_details["tax"])*20, 0)/20; // version WITH tax

 

Replace with the following:

 

// $RunningSubTotal += round(tep_add_tax(($products_details["qty"] * $products_details["final_price"]), $products_details["tax"])*20, 0)/20; // version WITH tax

$RunningSubTotal += ($products_details["qty"] * $products_details["final_price"]); // version WITH tax

 

I hope this helps a few and doesn't step on anyone's toes.

 

PS - For those who have created/contrib to this code..... Well Done. :thumbsup:

Share this post


Link to post
Share on other sites

Hello,

 

How have we to do , whenwe have 2 taxes rate, it seems that this program has diffuclty to work with ?

Is there any changes to do, for making this program works with more taxe rate ?

 

Thank you

Share this post


Link to post
Share on other sites

I don't know if anyone else is having this problem but I was using 1.59 or 1.59a and I could edit the price of the product. Now with 1.61 (the latest one uploaded), I cannot now change or update the price of the product. I double checked the code and they all match.

 

Am I missing something?

Share this post


Link to post
Share on other sites

Hi...

I wanted to use this Contribution to and downloaded Version 1.61. I?ve done everything according to the Steps described. (I didn?t have the Filenames.php. under admin/includes so I copied it from the newest oscommerce Version.

 

But my Problem stys the same: I?ve got that Button to edit the order, the Hyperlink beneath it says:

 

http://www.tbs-mob.de/troja-tapez/catalog/...RS_EDIT?oID=874

 

But when I press it, I?ve got Error 404 Site not found.

Please Reply, because this is a great benefit to my store and I need to use it urgently.

Share this post


Link to post
Share on other sites

the filenames.php file describes file names linked to an identifying text used in the scripts throughout oscommerce. the link you have supplied includes "FILENAME_ORDERS_EDIT". This is what it would show if the text was unlinked to a filename. If the version of OSCommerce you have installed did not already have a filenames.php, then it is safe to assume that putting it there will achieve nothing.

 

It may also be the case that the order editor will not work with your version of oscommerce because of it's age. Which verison are you using?


:wq!

Share this post


Link to post
Share on other sites
I have this installed, although I'm unsure which version (i lose track of al these contribs real easy) although it was installed in the last 2 weeks. I have a problem that when I add a product, it is not taking the specials prices into account. Should this be the case? If not, how do I fix it?

 

I still have this problem, anybody have an answer?


:wq!

Share this post


Link to post
Share on other sites

I?ve tested something: I?ve copied the Link with FILENAME_ORDERS_EDIT into the Browser and just replaced it with edit_orders.php And then it works. So the only Problem is that the Link beneath the Edit Button is not complete. How and WHERE do I fix that?

Share this post


Link to post
Share on other sites
I don't know if anyone else is having this problem but I was using 1.59 or 1.59a and I could edit the price of the product.  Now with 1.61 (the latest one uploaded), I cannot now change or update the price of the product.  I double checked the code and they all match.

 

Am I missing something?

 

Anyone?

Share this post


Link to post
Share on other sites

Don't know John, I did the very same thing and I did not have that problem. I went from 1.59a to 1.61 with no problems. may be you need to remove it totally and reinstall this contribution.


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

Share this post


Link to post
Share on other sites
Don't know John, I did the very same thing and I did not have that problem. I went from 1.59a to 1.61 with no problems. may be you need to remove it totally and reinstall this contribution.

 

I just want to confirm that the updates between 1.59 and 1.61 were for a forked project? So that is why I initally installed 1.59 and then upgraded with 1.61.

Edited by 241

Share this post


Link to post
Share on other sites

How to get order editor work with Qtpro? Is that posible? Update my stock too.. not just show products in order.

<?php

/*

 $Id: edit_orders.php,v 1.21 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

 

 Written by Jonathan Hilgeman of SiteCreative.com (osc@sitecreative.com)

- Updated By Jesse Ryan Barrick & Christian Binkert

 

 Version History

 ---------------------------------------------------------------

 04/01/05

 1.60 - Huge list of changes;-)

 

 18/09/04

 1.58 - Changed Order Edit page to show full Credit Card Number

 

 16/07/04

 1.56 - Added a check for missing ot_subtotal on update

 

 08/08/03

 1.2a - Fixed a query problem on osC 2.1 stores.

 

 08/08/03

 1.2 - Added more recommendations to the instructions.

       Added "Customer" fields for editing on osC 2.2.

       Corrected "Billing" fields so they update correctly.

       Added Company and Suburb Fields.

       Added optional shipping tax variable.

       First (and hopefully last) fix for currency formatting.

 

 08/08/03

 1.1 - Added status editing (fixed order status bug from 1.0).

       Added comments editing. (with compatibility for osC 2.1)

       Added customer notifications.

       Added some additional information to the instructions file.

       Fixed bug with product names containing single quotes.

 

 08/07/03      

 1.0 - Original Release.

 

 To Do in Version 1.3

 ---------------------------------------------------------------

 

 Note from the author

 ---------------------------------------------------------------

 This tool was designed and tested on osC 2.2 Milestone 2.2,

 but may work for other versions, as well. Most database changes

 were minor, so getting it to work on other versions may just

 need some tweaking. Hope this helps make your life easier!

 

 - Jonathan Hilgeman, August 7th, 2003  

*/

 

 require('includes/application_top.php');

 

 require(DIR_WS_CLASSES . 'currencies.php');

 $currencies = new currencies();

 

 include(DIR_WS_CLASSES . 'order.php');

 

// START CONFIGURATION ################################

 

 // Optional Tax Rates, e.g. shipping tax of 17.5% is "17.5"

 $AddCustomTax = "22.0"; // class "ot_custom", used for all unknown total modules

 $AddShippingTax = "20.0"; // class "ot_shippping"

 $AddLevelDiscountTax = "7.6"; // class "ot_lev_discount"

 $AddCustomerDiscountTax = "7.6"; // class "ot_customer_discount"

 

// END OF CONFIGURATION ################################

 

 

 // 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");

 

 $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

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

 

 if (tep_not_null($action)) {

   switch ($action) {

   

// 1. 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']);

 

 // 1.1 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_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) {

 // Original: all database fields point to $update_billing_xxx, now they are updated with the same values as the customer fields

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

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

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

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

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

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

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

  billing_country = '" . tep_db_input(stripslashes($update_customer_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_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',

  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);

 

 // 1.2 UPDATE STATUS HISTORY & SEND EMAIL TO CUSTOMER IF NECESSARY #####

 

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

 

  // 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, 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) . ")");

   }

  }

 }

 

 // 1.3 UPDATE PRODUCTS #####

 

 $RunningSubTotal = 0;

 $RunningTax = 0;

 

   // Do pre-check for subtotal field existence (CWS)

 $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;

  }

 }

       

 // 1.3.1 Update orders_products Table

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

 

  // 1.3.1.1 Update Inventory Quantity

  $order = tep_db_fetch_array($order_query);

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

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

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

  }

 

  if($products_details["qty"] > 0) { // a.) quantity found --> add to list & sum

 

   $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: please choose sum WITH or WITHOUT tax, but activate only ONE version;-)

   $RunningSubTotal += (tep_add_tax(($products_details["qty"] * $products_details["final_price"]), $products_details["tax"])*20)/20; // version WITH tax

     // $RunningSubTotal += $products_details["qty"] * $products_details["final_price"]; // version WITHOUT tax

   $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 { // b.) null quantity found --> delete

 

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

   tep_db_query($Query);

   $order = tep_db_fetch_array($order_query);

   

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

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

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

   }

   

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

   tep_db_query($Query);

  }

 }

 

 // 1.4. UPDATE SHIPPING, DISCOUNT & CUSTOM TAXES #####

 //print $RunningTax."prima <br>";

 //print "<pre>";

 //print_r($update_totals);

 //print "</pre>";

 

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

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

 

  //print_r($total_details)."<br>";

     

  if ($ot_class == "ot_shipping") {

   $RunningTax += ($ot_value - ($ot_value / (1 + ($AddShippingTax / 100)))); // corrected tax by cb

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

  }

  elseif ($ot_class == "ot_lev_discount") {

   $RunningTax += ($ot_value - ($ot_value / (1 + ($AddLevelDiscountTax / 100)))); // corrected tax by cb

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

  }

  elseif ($ot_class == "ot_customer_discount") {

   $RunningTax += ($ot_value - ($ot_value / (1 + ($AddCustomerDiscountTax / 100)))); // corrected tax by cb

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

  }

  elseif ($ot_class == "ot_custom") {

   $RunningTax += ($ot_value - ($ot_value / (1 + ($AddCustomTax / 100)))); // corrected tax by cb

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

  }

  elseif ($ot_class == "ot_cod_fee") {

   $RunningTax += ($ot_value - ($ot_value / (1 + ($AddCustomTax / 100)))); // corrected tax by cb

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

  }

 

 

  //print $RunningTax."<br>";

 }

 

 // exit;

 // 1.5 UPDATE TOTALS #####

 

 $RunningTotal = 0;

 $sort_order = 0;

 

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

   }

  }

 

  // 1.5.2. Summing up total

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

 

  {

 

    // 1.5.2.1 Prepare Tax Insertion  

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

 

  // inserisce la tassa se non la trova oppure ??

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

   {

    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;

    }

   }

   

    // 1.5.2.2 Update ot_subtotal, ot_tax, and ot_total classes

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

   

   {

   

    $sort_order++;

    if ($ot_class == "ot_subtotal") {

     $ot_value = $RunningSubTotal;

    }      

    if ($ot_class == "ot_tax") {

     $ot_value = $RunningTax;

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

    }

 

       // Check for existence of subtotals (CWS)                      

    if ($ot_class == "ot_total")

     {

             $ot_value = $RunningTotal-$RunningTax;

                       

             if ( !$ot_subtotal_found )

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

               //   $ot_value +=  $RunningSubTotal;

             }

          //   print $ot_value;

          //   exit;

            }

       

    // 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) { // Already in database --> 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;

     // print $ot_value."<br>";

   }

   

  elseif (($ot_total_id > 0) && ($ot_class != "ot_shipping")) { // Delete Total Piece

   

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

    tep_db_query($Query);

   }

 

  }

//   print "Totale ".$RunningTotal;

//   exit;  

 // 1.6 SUCCESS MESSAGE #####

 

 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;

 

// 2. ADD A PRODUCT ################################################################################

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

case 'add_product':

 

 if($step == 5)

 {

  // 2.1 GET ORDER INFO #####

 

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

  $order = new order($oID);

 

  $AddedOptionsPrice = 0;

 

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

   }

  }

 

  // 2.1.2 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");

 

  // risolviamo il bug delle offerte

  $rs_offerte = tep_db_query("select * from specials where products_id ='". $add_product_products_id."'");

  $offerte = tep_db_fetch_array($rs_offerte);

 

 

  if ($offerte)

  {

  $p_products_price = $offerte['specials_new_products_price'];

  }

 

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

 

  // 2.2 UPDATE ORDER #####

 

  $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();

 

  // 2.2.1 Update inventory Quantity

  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 . "'");

 

  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);

   }

  }

 

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

  }

 

  // 2.2.2.1 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);

 

  // 2.2.2.2 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);

 

  // 2.2.2.3 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);

 

  // 2.3 REDIRECTION #####

 

  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/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');

?>

<style type="text/css">

.Subtitle {

 font-family: Verdana, Arial, Helvetica, sans-serif;

 font-size: 11px;

 font-weight: bold;

 color: #FF6600;

}

</style>

<!-- header_eof //-->

 

<!-- body //-->

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

 <tr>

   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

   </table></td>

<!-- body_text //-->

   <td width="100%" valign="top"><table border="0" width="96%" 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; ?> (Nr. <?php echo $oID; ?> del <?php echo tep_datetime_short($order->info['date_purchased']); ?>)</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>

         <tr>

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

         </tr>

         <tr>

           <td class="main" colspan="3"><?php echo HEADING_SUBTITLE; ?></td>

         </tr>

         <tr>

          <td class="main" colspan="3"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></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 class="SubTitle"><?php echo MENUE_TITLE_CUSTOMER; ?></td>

  </tr>

     <tr>

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

     </tr>  

  <tr>

    <td>

     

<table border="0" class="dataTableRow" cellpadding="2" cellspacing="0">

 <tr class="dataTableHeadingRow">

   <td class="dataTableHeadingContent" width="80"></td>

   <td class="dataTableHeadingContent" width="150"><?php echo ENTRY_BILLING_ADDRESS; ?></td>

   <td class="dataTableHeadingContent" width="6"> </td>

   <td class="dataTableHeadingContent" width="150"><?php echo ENTRY_SHIPPING_ADDRESS; ?></td>

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_COMPANY; ?>: </b></td>

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

 <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_NAME; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_ADDRESS; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_SUBURB; ?>: </b></td>

   <td><span class="main"><input name="update_customer_suburb" size="25" value="<?php echo tep_html_quotes($order->customer['suburb']); ?>"></span></td>

   <td> </td>

   <td><span class="main"><input name="update_delivery_suburb" size="25" value="<?php echo tep_html_quotes($order->delivery['suburb']); ?>"></span></td>

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_CITY; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_STATE; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_POSTCODE; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_COUNTRY; ?>: </b></td>

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

   <td> </td>

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

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_PHONE; ?>: </b></td>

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

   <td> </td>

   <td> </td>

 </tr>

 <tr>

   <td class="main"><b><?php echo ENTRY_CUSTOMER_EMAIL; ?>: </b></td>

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

 </tr>

</table>

 

   </td>

  </tr>

<!-- End Addresses Block -->

 

     <tr>

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

     </tr>      

 

<!-- Begin Payment Block -->

     <tr>

      <td class="SubTitle"><?php echo MENUE_TITLE_PAYMENT; ?></td>

  </tr>

     <tr>

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

     </tr>  

     <tr>

      <td>

   

<table border="0" cellspacing="0" cellpadding="2" class="dataTableRow">

 <tr class="dataTableHeadingRow">

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

</tr>

 <tr>

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

</tr>

 

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

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

  <tr>

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

  </tr>

  <tr>

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

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

  </tr>

  <tr>

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

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

  </tr>

  <tr>

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

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

  </tr>

  <tr>

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

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

  </tr>

<?php } ?>

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

 

</table>

 

       </td>

     </tr>

    <?php if ($order->info['payment_method'] != "Credit Card" || $order->info['payment_method'] != "Kreditkarte") { ?>

      <tr>

        <td class="smalltext"></td>

      </tr>

    <?php } ?>

<!-- End Payment Block -->

 

     <tr>

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

     </tr>

 

<!-- Begin Products Listing Block -->

     <tr>

      <td class="SubTitle"><?php echo MENUE_TITLE_ORDER; ?></td>

  </tr>

     <tr>

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

     </tr>  

     <tr>

      <td>

     

<?php

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

}

 

?>

 

<?php // Version with editable names & prices ?>

<?php /*

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

<tr class="dataTableHeadingRow">

  <td class="dataTableHeadingContent" width="20"><?php echo TABLE_HEADING_QUANTITY; ?></td>

  <td class="dataTableHeadingContent" width="5"> </td>

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

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

  <td class="dataTableHeadingContent"><?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_UNIT_PRICE_TAXED; ?></td>

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

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

</tr>

 

<?php

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 . '" align="right">' . "<input name='update_products[$orders_products_id][qty]' size='2' value='" . $order->products[$i]['qty&

Share this post


Link to post
Share on other sites

Hi

 

Great contribution and it's well presented and finished.

 

I have updated the latest version of this tool and there is one serious bug I found in it and it causes an embarrising side effect.

 

when you change the customer comments and tick to have them notified it notifies all your customers.

 

Any ideas on a fix for this?

 

Cheers

Sean


free is often better than cheap

Share this post


Link to post
Share on other sites

I'm still having an issue with this. With 1.59 I was able to update the Total (exlu), say for instance if I had given a partial refund for an item purcahsed for $500, the refund was $20. I could change that price to $480.

 

Now that I have updated to 1.61, I can now only update the Qty, Tax, but not the price.

 

I checked the code for 1.59 and 1.61 to edit orders.php and they are the same, so it must be in the new hack files, edit_orders.php that is screwy.

Share this post


Link to post
Share on other sites
I have updated the latest version of this tool and there is one serious bug I found in it and it causes an embarrising side effect.

 

when you change the customer comments and tick to have them notified it notifies all your customers.

 

Any ideas on a fix for this?

 

Cheers

Sean

 

 

Hmmm, this does not happen to me. It only e-mails the customer being edited and no one else.


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

Share this post


Link to post
Share on other sites
Hi

 

Great contribution and it's well presented and finished.

 

I have updated the latest version of this tool and there is one serious bug I found in it and it causes an embarrising side effect.

 

when you change the customer comments and tick to have them notified it notifies all your customers.

 

Any ideas on a fix for this?

 

Cheers

Sean

 

What version? 1.6 or 1.59? 1.6 is for a forked project I thought and 1.59 was the last version update for regular osC....

 

Maybe I'm wrong but that's what I thought. I think someone needs to upload the latest version for plain osC and the latest for a forked project and label them correctly, might help with a few problems people on this board are having. Most of the problems seem to stem from using the forked project version on normal osC.

Edited by 241

Share this post


Link to post
Share on other sites

Why don't those fools upload forked project hacks to their website and keep their junk out of here. I've already seen some other contributions flooded with their updates with no warning that it is for a forked project.

 

The forked project is awful anyways. I would rather have full control over the hacks that I add as I need them.

 

So here's a warning to all you users of forked projects. GO TO THE FORKED PROJECT WEBSITE AND POST YOUR UPDATES OVER THERE. THEY HAVE THEIR OWN FORUM AND SPACE FOR HACKS. THIS FORUM IS FOR THE VIRGIN OSCOMMERCE ... I meant osCommerce. :D

 

There should be a vault keeper that watches the contribution section to keep trash out. There are posts and replies to contributions there also instead of actual uploads. The entire contribution section is turning into one big mess and doesn't seem like it's being maintained. There are even a couple flame wars there from people. Ridiculous! :D

Edited by 241

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×