Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Help Me Please


h2woo

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

Link to comment
Share on other sites

  • 3 years later...

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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