Joahim2509 Posted December 24, 2015 Posted December 24, 2015 Hi. I am trying to configure a "Customer Discount" add-on . This add-on make take the value from database that is seated for user as % discount. After that apply this discount to "Cart" in the checkout_confirmation. The problem is that he shows the value of the % discount and not the sum that must to be payed. Ex: user discount 5% , amount is 304.50 and he shows 15.23- this is the value that must to be minus amount and after that show to client total price. You can show the image attached . What I need to change to obtain the correct result or how I can add a new line after the Discount line (Rabatt Summe) to show the amount that must to be payed. Wher I need to insert for example some thing like echo "Amount after Discount Applied:" There is the code of the add-on <?php /* $Id: ot_customer_discount.php,v 1.2.1 2003/08/15 07:36:01 celiawessen Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2002 osCommerce Released under the GNU General Public License */ class ot_customer_discount { var $title, $output; function ot_customer_discount() { $this->code = 'ot_customer_discount'; $this->title = MODULE_CUSTOMER_DISCOUNT_TITLE; $this->description = MODULE_CUSTOMER_DISCOUNT_DESCRIPTION; $this->enabled = MODULE_CUSTOMER_DISCOUNT_STATUS; $this->sort_order = MODULE_CUSTOMER_DISCOUNT_SORT_ORDER; $this->include_shipping = MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING; $this->include_tax = MODULE_CUSTOMER_DISCOUNT_INC_TAX; $this->calculate_tax = MODULE_CUSTOMER_DISCOUNT_CALC_TAX; $this->output = array(); } function process(){ global $order, $currencies; $od_amount = $this->calculate_discount($this->get_order_total()); if ($od_amount>0){ $this->deduction = $od_amount; $this->output[] = array('title' => $this->title . ':', 'text' => '<b>' . $currencies->format($od_amount) . '</b>', 'value' => $od_amount); $order->info['total'] = $order->info['total'] - $od_amount; $order->info['subtotal'] -= $od_amount; } } function calculate_discount($amount) { global $order, $customer_id; $od_amount=0; $query = tep_db_query("select customers_discount from " . TABLE_CUSTOMERS . " where customers_id = '" . $customer_id . "'"); $query_result = tep_db_fetch_array($query); $od_pc = $query_result['customers_discount']; if ($query_result['customers_discount'] > 0) { // Calculate tax reduction if necessary if ($this->calculate_tax == 'true') { // Calculate main tax reduction $tod_amount = round($order->info['tax']*10)/10*$od_pc/100; $order->info['tax'] = $order->info['tax'] - $tod_amount; // Calculate tax group deductions reset($order->info['tax_groups']); while (list($key, $value) = each($order->info['tax_groups'])) { $god_amount = round($value*10)/10*$od_pc/100; $order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount; } } $od_amount = (round($amount*10)/10)*$od_pc/100; // $od_amount = $od_amount + $tod_amount; } return $od_amount; } function get_order_total() { global $order, $cart; $order_total = $order->info['total']; if ($this->include_tax == 'false') $order_total=$order_total-$order->info['tax']; if ($this->include_shipping == 'false') $order_total=$order_total-$order->info['shipping_cost']; return $order_total; } function check() { if (!isset($this->check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_CUSTOMER_DISCOUNT_STATUS'"); $this->check = tep_db_num_rows($check_query); } return $this->check; } function keys() { return array('MODULE_CUSTOMER_DISCOUNT_STATUS', 'MODULE_CUSTOMER_DISCOUNT_SORT_ORDER', 'MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING', 'MODULE_CUSTOMER_DISCOUNT_INC_TAX', 'MODULE_CUSTOMER_DISCOUNT_CALC_TAX'); } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Total', 'MODULE_CUSTOMER_DISCOUNT_STATUS', 'true', 'Do you want to enable the Customer specific order discount module?', '6', '1','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_CUSTOMER_DISCOUNT_SORT_ORDER', '999', 'Sort order of display.', '6', '2', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Shipping', 'MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '5', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Tax', 'MODULE_CUSTOMER_DISCOUNT_INC_TAX', 'true', 'Include Tax in calculation.', '6', '6','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Calculate Tax', 'MODULE_CUSTOMER_DISCOUNT_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '6', '5','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); } function remove() { $keys = ''; $keys_array = $this->keys(); for ($i=0; $i<sizeof($keys_array); $i++) { $keys .= "'" . $keys_array[$i] . "',"; } $keys = substr($keys, 0, -1); tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")"); } } ?> Quote
allaboutwicker Posted December 27, 2015 Posted December 27, 2015 You should be able to change the sort order by going into your admin -> Modules -> Order Total Quote
Joahim2509 Posted December 28, 2015 Author Posted December 28, 2015 The problem is not in sorting but in that it dont make any exclusion from total order, it shows only the amount of % Quote
Dan Cole Posted December 28, 2015 Posted December 28, 2015 @@Joahim2509 If you change the sort order as @@allaboutwicker suggested, I think it will work. I ran into that issue a long, long time ago. Mess around with it and if it still doesn't work post back and maybe someone else can help but I think you'll get it to work Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted December 28, 2015 Author Posted December 28, 2015 Thank you @@Dan Cole and @@allaboutwicker . Was my error :) Quote
Joahim2509 Posted December 31, 2015 Author Posted December 31, 2015 but how can I exclude tax correct? because it exclude tax from the amount without the costumer discount? Quote
Dan Cole Posted December 31, 2015 Posted December 31, 2015 @@Joahim2509 If I remember correctly the discount has to be placed before the tax. Try changing the sort order accordingly. Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted December 31, 2015 Author Posted December 31, 2015 Thanks but I made this, the problem is that the total amount is now not correct, in my case is minus. cost of product is 79 euro, shipping: 7.50, costumer discount:77.85EUR, TAX 19.0%: 1.27EUR, Total: -2.69EUR. All this is by 90% discount for client Quote
Dan Cole Posted December 31, 2015 Posted December 31, 2015 @@Joahim2509 What do you have for the sort order? Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted December 31, 2015 Author Posted December 31, 2015 1.cost of product 2.shipping: 3.costumer discount 4.TAX 19.0%: 5.Total: Quote
Dan Cole Posted December 31, 2015 Posted December 31, 2015 @@Joahim2509 That makes sense....move the discount to 2 and the shipping to 3 and see if that works. Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted January 2, 2016 Author Posted January 2, 2016 I changed it but still is not correct. The Tax is deduced from the total order until it makes the minus of costumer discount Quote
Dan Cole Posted January 3, 2016 Posted January 3, 2016 @@Joahim2509 Mine is set as follows and works correctly.... Discount Coupon 1Sub-Total 2Shipping 3Tax 4Total 5 Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted January 3, 2016 Author Posted January 3, 2016 1.Zwischensumme (subtotal): 100.00EUR 2.Freier Versand(shipping): 0.00EUR Rabatt Summe ohne MwSt.(DIscount): 90.00EUR MwSt. 19.0%(VAT): 1.57EUR Gesamtsumme(Total): -4.40EUR Quote
Dan Cole Posted January 3, 2016 Posted January 3, 2016 @@Joahim2509 What happens when you set it like I suggested above? Discount Coupon 1Sub-Total 2Shipping 3Tax 4Total 5 Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted January 3, 2016 Author Posted January 3, 2016 (edited) Rabatt Summe : 90.00EUR Zwischensumme: 10.00EUR Freier Versand: 0.00EUR MwSt. 19.0%: 1.57EUR Gesamtsumme: -4.40EUR Edited January 3, 2016 by Joahim2509 Quote
Dan Cole Posted January 3, 2016 Posted January 3, 2016 @@Joahim2509 That is weird...the math doesn't make any sense....are you changing the code in the discount module you posted above? If it were me I would try to echo out the variables in the module to see where things are going a muck. Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Joahim2509 Posted January 3, 2016 Author Posted January 3, 2016 the problem is that I have not changed any thing in code. if you want and help for my roblem i can send you my discound code page sorce doc. <?php /* $Id: ot_customer_discount.php,v 1.2.1 2003/08/15 07:36:01 celiawessen Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2002 osCommerce Released under the GNU General Public License */ class ot_customer_discount { var $title, $output; function ot_customer_discount() { $this->code = 'ot_customer_discount'; $this->title = MODULE_CUSTOMER_DISCOUNT_TITLE; $this->description = MODULE_CUSTOMER_DISCOUNT_DESCRIPTION; $this->enabled = MODULE_CUSTOMER_DISCOUNT_STATUS; $this->sort_order = MODULE_CUSTOMER_DISCOUNT_SORT_ORDER; $this->include_shipping = MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING; $this->include_tax = MODULE_CUSTOMER_DISCOUNT_INC_TAX; $this->calculate_tax = MODULE_CUSTOMER_DISCOUNT_CALC_TAX; $this->output = array(); } function process(){ global $order, $currencies; $od_amount = $this->calculate_discount($this->get_order_total()); if ($od_amount>0){ $this->deduction = $od_amount; $this->output[] = array('title' => $this->title . ':', 'text' => '<b>' . $currencies->format($od_amount) . '</b>', 'value' => $od_amount); $order->info['total'] = $order->info['total'] - $od_amount; $order->info['subtotal'] -= $od_amount; } } function calculate_discount($amount) { global $order, $customer_id; $od_amount=0; $query = tep_db_query("select customers_discount from " . TABLE_CUSTOMERS . " where customers_id = '" . $customer_id . "'"); $query_result = tep_db_fetch_array($query); $od_pc = $query_result['customers_discount']; if ($query_result['customers_discount'] > 0) { // Calculate tax reduction if necessary if ($this->calculate_tax == 'true') { // Calculate main tax reduction $tod_amount = round($order->info['tax']*10)/10*$od_pc/100; $order->info['tax'] = $order->info['tax'] - $tod_amount; // Calculate tax group deductions reset($order->info['tax_groups']); while (list($key, $value) = each($order->info['tax_groups'])) { $god_amount = round($value*10)/10*$od_pc/100; $order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount; } } $od_amount = (round($amount*10)/10)*$od_pc/100; // $od_amount = $od_amount + $tod_amount; } return $od_amount; } function get_order_total() { global $order, $cart; $order_total = $order->info['total']; if ($this->include_tax == 'false') $order_total=$order_total-$order->info['tax']; if ($this->include_shipping == 'false') $order_total=$order_total-$order->info['shipping_cost']; return $order_total; } function check() { if (!isset($this->check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_CUSTOMER_DISCOUNT_STATUS'"); $this->check = tep_db_num_rows($check_query); } return $this->check; } function keys() { return array('MODULE_CUSTOMER_DISCOUNT_STATUS', 'MODULE_CUSTOMER_DISCOUNT_SORT_ORDER', 'MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING', 'MODULE_CUSTOMER_DISCOUNT_INC_TAX', 'MODULE_CUSTOMER_DISCOUNT_CALC_TAX'); } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Total', 'MODULE_CUSTOMER_DISCOUNT_STATUS', 'true', 'Do you want to enable the Customer specific order discount module?', '6', '1','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_CUSTOMER_DISCOUNT_SORT_ORDER', '999', 'Sort order of display.', '6', '2', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Shipping', 'MODULE_CUSTOMER_DISCOUNT_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '5', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Tax', 'MODULE_CUSTOMER_DISCOUNT_INC_TAX', 'true', 'Include Tax in calculation.', '6', '6','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Calculate Tax', 'MODULE_CUSTOMER_DISCOUNT_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '6', '5','tep_cfg_select_option(array(\'true\', \'false\'), ', now())"); } function remove() { $keys = ''; $keys_array = $this->keys(); for ($i=0; $i<sizeof($keys_array); $i++) { $keys .= "'" . $keys_array[$i] . "',"; } $keys = substr($keys, 0, -1); tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")"); } } ?> Quote
Dan Cole Posted January 4, 2016 Posted January 4, 2016 @@Joahim2509 I really don't want to get that involved....just trying to point you in the right direction. Did you manage to echo out the variables? Dan Quote Need help? See this thread and provide the information requested. Is your version of osC up to date? You'll find the latest osC community version (CE Phoenix) here.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.