Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

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

 

post-338182-0-36877700-1450993287_thumb.jpg

Posted

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

Posted

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

Posted

@@Joahim2509  Mine is set as follows and works correctly....

 

Discount Coupon      1
Sub-Total                 2
Shipping                  3
Tax                          4
Total                        5

 

Dan

Posted

 

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

 

Posted

@@Joahim2509  What happens when you set it like I suggested above?

 

Discount Coupon      1
Sub-Total                 2
Shipping                  3
Tax                          4
Total                        5

 

Dan

Posted (edited)

Rabatt Summe : 90.00EUR

Zwischensumme: 10.00EUR

Freier Versand: 0.00EUR

MwSt. 19.0%: 1.57EUR

Gesamtsumme: -4.40EUR

Edited by Joahim2509
Posted

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

Posted

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

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.

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