Jump to content
Sign in to follow this  
h2woo

Help Me Please

Recommended Posts

strider provided with me the patch below but he was unsure of the some of the wording. The process string seems to work but it is always showing a zero discount amount.

I would be willing to pay if someone could get this working for me. thank you.

 

In your code where

$shipping_cost = number_format($order->info['shipping_cost']* $default_rate,2,'.',',');

$tax_total		= number_format($order->info['tax'] * $default_rate,2,'.',',');

is

you need to also add the other information such as discount coupons, gift certs etc from order info something like

$gift_total		= number_format((($order->info['gift_cert'] * $default_rate)  * -1) ,2,'.',','); // I don't remember if gift_cert is what is placed there

 

whether your payment processor allows negative numbers is something you will have to find out.

then in your process string it you will need to add it where you have this code

$prod_list		 =  $prod_list.''.$shipping_cost.'::1::S&H::Shipping & Handling'.$trx_currency.''.$test_status.'|';

$prod_list		 =  $prod_list.''.$tax_total.'::1::Tax::Taxes for order #' .   $myorders['orders_id']  . '|';

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

Share this post


Link to post
Share on other sites

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

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
Sign in to follow this  

×