Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

q3trinity

Pioneers
  • Posts

    4
  • Joined

  • Last visited

Posts posted by q3trinity

  1. I installed the Price Sensitive Discount module and the InternetSecure Merchant Link module and they are both working fine - independently. OSC generates the discount properly and InternetSecure takes the payment properly. The problem is that the discount is not passed to the payment gateway. The InternetSecure module sends the product list, taxes and shipping costs instead of a total order price. I read in another thread that I need to send the discount amount along with the other amounts to the payment gateway using this format:

     

    $gift_total = number_format((($order->info['gift_cert'] * $default_rate)  * -1) ,2,'.',','); // discount amount

     

    and then put it in the process string such as:

     

    $prod_list =  $prod_list.''.$gift_total.'::1::GIFT::Gift Certificate applied for order #' .  $myorders['orders_id']  . '|';

     

    Well that does send the text to the payment gateway but not the correct discount amount. This value is wrong: $order->info['gift_cert']

     

    Can anyone look at the discount module code and tell me what the correct variable is for the discount amount? I've tried everything with no luck :( Thanks to anyone who helps!!!

     

    class ot_lev_discount {
       var $title, $output;
    
       function ot_lev_discount() {
         $this->code = 'ot_lev_discount';
         $this->title = MODULE_LEV_DISCOUNT_TITLE;
         $this->description = MODULE_LEV_DISCOUNT_DESCRIPTION;
         $this->enabled = MODULE_LEV_DISCOUNT_STATUS;
         $this->sort_order = MODULE_LEV_DISCOUNT_SORT_ORDER;
         $this->include_shipping = MODULE_LEV_DISCOUNT_INC_SHIPPING;
         $this->include_tax = MODULE_LEV_DISCOUNT_INC_TAX;
         $this->calculate_tax = MODULE_LEV_DISCOUNT_CALC_TAX;
         $this->table = MODULE_LEV_DISCOUNT_TABLE;
    //      $this->credit_class = true;
         $this->output = array();
       }
    
       function process() {
         global $order, $ot_subtotal, $currencies;
         $od_amount = $this->calculate_credit($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;
       if ($this->sort_order < $ot_subtotal->sort_order) {
         $order->info['subtotal'] = $order->info['subtotal'] - $od_amount;
       }
    }
       }
    
    
     function calculate_credit($amount) {
       global $order;
       $od_amount=0;
       $table_cost = split("[:,]" , MODULE_LEV_DISCOUNT_TABLE);
       for ($i = 0; $i < count($table_cost); $i+=2) {
             if ($amount >= $table_cost[$i]) {
               $od_pc = $table_cost[$i+1];
             }
           }
    // 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;
    // maniac101 above line was adding tax back into discount incorrectly for me
       return $od_amount;
     }
    
    
     function get_order_total() {
       global  $order, $cart;
       $order_total = $order->info['total'];
    // Check if gift voucher is in cart and adjust total
       $products = $cart->get_products();
       for ($i=0; $i<sizeof($products); $i++) {
         $t_prid = tep_get_prid($products[$i]['id']);
         $gv_query = tep_db_query("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
         $gv_result = tep_db_fetch_array($gv_query);
         if (ereg('^GIFT', addslashes($gv_result['products_model']))) { 
           $qty = $cart->get_quantity($t_prid);
           $products_tax = tep_get_tax_rate($gv_result['products_tax_class_id']);
           if ($this->include_tax =='false') {
              $gv_amount = $gv_result['products_price'] * $qty;
           } else {
             $gv_amount = ($gv_result['products_price'] + tep_calculate_tax($gv_result['products_price'],$products_tax)) * $qty;
           }
           $order_total=$order_total - $gv_amount;
         }
       }
       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_LEV_DISCOUNT_STATUS'");
           $this->check = tep_db_num_rows($check_query);
         }
    
         return $this->check;
       }
    
       function keys() {
         return array('MODULE_LEV_DISCOUNT_STATUS', 'MODULE_LEV_DISCOUNT_SORT_ORDER','MODULE_LEV_DISCOUNT_TABLE', 'MODULE_LEV_DISCOUNT_INC_SHIPPING', 'MODULE_LEV_DISCOUNT_INC_TAX','MODULE_LEV_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_LEV_DISCOUNT_STATUS', 'true', 'Do you want to enable the Order Discount?', '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_LEV_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_LEV_DISCOUNT_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '3', '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_LEV_DISCOUNT_INC_TAX', 'true', 'Include Tax in calculation.', '6', '4','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_LEV_DISCOUNT_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '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, date_added) values ('Discount Percentage', 'MODULE_LEV_DISCOUNT_TABLE', '100:7.5,250:10,500:12.5,1000:15', 'Set the price breaks and discount percentages', '6', '6', 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 . ")");
       }
     }
    ?>

  2. Has anyone found a solution to this issue? Strider's patch shown below has sort of worked for me but I cannot figure out what the discount variable is. It is definitely not $order->info['gift_cert']. I've tried all other ideas but none work - they all send a $0 value for the discount.

     

    I'm using Price Sensitive Discount v2.4 with InternetSecure. Here's the code for the Discount module. If someone can show me the variable to use for the discount I would be eternally grateful!!

     

    Thanks!

    Trinity

     

    class ot_lev_discount {
       var $title, $output;
    
       function ot_lev_discount() {
         $this->code = 'ot_lev_discount';
         $this->title = MODULE_LEV_DISCOUNT_TITLE;
         $this->description = MODULE_LEV_DISCOUNT_DESCRIPTION;
         $this->enabled = MODULE_LEV_DISCOUNT_STATUS;
         $this->sort_order = MODULE_LEV_DISCOUNT_SORT_ORDER;
         $this->include_shipping = MODULE_LEV_DISCOUNT_INC_SHIPPING;
         $this->include_tax = MODULE_LEV_DISCOUNT_INC_TAX;
         $this->calculate_tax = MODULE_LEV_DISCOUNT_CALC_TAX;
         $this->table = MODULE_LEV_DISCOUNT_TABLE;
    //      $this->credit_class = true;
         $this->output = array();
       }
    
       function process() {
         global $order, $ot_subtotal, $currencies;
         $od_amount = $this->calculate_credit($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;
       if ($this->sort_order < $ot_subtotal->sort_order) {
         $order->info['subtotal'] = $order->info['subtotal'] - $od_amount;
       }
    }
       }
    
    
     function calculate_credit($amount) {
       global $order;
       $od_amount=0;
       $table_cost = split("[:,]" , MODULE_LEV_DISCOUNT_TABLE);
       for ($i = 0; $i < count($table_cost); $i+=2) {
             if ($amount >= $table_cost[$i]) {
               $od_pc = $table_cost[$i+1];
             }
           }
    // 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;
    // maniac101 above line was adding tax back into discount incorrectly for me
       return $od_amount;
     }
    
    
     function get_order_total() {
       global  $order, $cart;
       $order_total = $order->info['total'];
    // Check if gift voucher is in cart and adjust total
       $products = $cart->get_products();
       for ($i=0; $i<sizeof($products); $i++) {
         $t_prid = tep_get_prid($products[$i]['id']);
         $gv_query = tep_db_query("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
         $gv_result = tep_db_fetch_array($gv_query);
         if (ereg('^GIFT', addslashes($gv_result['products_model']))) { 
           $qty = $cart->get_quantity($t_prid);
           $products_tax = tep_get_tax_rate($gv_result['products_tax_class_id']);
           if ($this->include_tax =='false') {
              $gv_amount = $gv_result['products_price'] * $qty;
           } else {
             $gv_amount = ($gv_result['products_price'] + tep_calculate_tax($gv_result['products_price'],$products_tax)) * $qty;
           }
           $order_total=$order_total - $gv_amount;
         }
       }
       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_LEV_DISCOUNT_STATUS'");
           $this->check = tep_db_num_rows($check_query);
         }
    
         return $this->check;
       }
    
       function keys() {
         return array('MODULE_LEV_DISCOUNT_STATUS', 'MODULE_LEV_DISCOUNT_SORT_ORDER','MODULE_LEV_DISCOUNT_TABLE', 'MODULE_LEV_DISCOUNT_INC_SHIPPING', 'MODULE_LEV_DISCOUNT_INC_TAX','MODULE_LEV_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_LEV_DISCOUNT_STATUS', 'true', 'Do you want to enable the Order Discount?', '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_LEV_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_LEV_DISCOUNT_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '3', '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_LEV_DISCOUNT_INC_TAX', 'true', 'Include Tax in calculation.', '6', '4','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_LEV_DISCOUNT_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '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, date_added) values ('Discount Percentage', 'MODULE_LEV_DISCOUNT_TABLE', '100:7.5,250:10,500:12.5,1000:15', 'Set the price breaks and discount percentages', '6', '6', 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 . ")");
       }
     }
    ?>

×
×
  • Create New...