h2woo Posted May 31, 2007 Share Posted May 31, 2007 Quote Link to comment Share on other sites More sharing options...
h2woo Posted May 31, 2007 Author Share Posted May 31, 2007 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'] . '|'; Quote Link to comment Share on other sites More sharing options...
q3trinity Posted June 7, 2010 Share Posted June 7, 2010 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 . ")"); } } ?> Quote Link to comment Share on other sites More sharing options...
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.