Re: Payment type discount.
Got this answered by Langer if anyone needs it:
change the line to read.
if (ereg('^GIFT', addslashes($gv_result->fields['products_model']))) {
Thanks
Re: Payment Type Discount
Its in the archived downloads,
and no it works with a payment type not with a certain card
Re: Payment Type Discount
Thanks! I can't find the archived downloads, can you please point me in the right direction?
... So, that module won't do it but can anyone think of another approach that would allow for a discount on a specific credit card or does it sound totally impossible?
Re: Payment Type Discount
This module is using a percentage discount or fee.
Is there a way to change from a percentage to a flat (absolute) discount or fee?
Re: Payment Type Discount
does this work with 1.38a?
Mack32
Re: Payment Type Discount
Hi,
For anyone who is interested, I got the Payment Type Discount working with 1.3.8a with the following code.
Replace entire code from /includes/modules/order_total/ot_payment.php
with:
Code:
<?php
//
// +----------------------------------------------------------------------+
// |zen-cart Open Source E-commerce |
// +----------------------------------------------------------------------+
// | Hacked by [email protected] |
// | |
// | http://www.modhole.com/ |
// | |
// | Portions Copyright (c) 2003 osCommerce |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the GPL license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at the following url: |
// | http://www.zen-cart.com/license/2_0.txt. |
// | If you did not receive a copy of the zen-cart license and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | [email protected] so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// $Id: ot_payment.php 2006-02-28 langer $
//
class ot_payment {
var $title, $output;
function ot_payment() {
$this->code = 'ot_payment';
$this->title = MODULE_PAYMENT_DISC_TITLE;
$this->description = MODULE_PAYMENT_DISC_DESCRIPTION;
$this->enabled = MODULE_PAYMENT_DISC_STATUS;
$this->sort_order = MODULE_PAYMENT_DISC_SORT_ORDER;
$this->include_shipping = MODULE_PAYMENT_DISC_INC_SHIPPING;
$this->include_tax = MODULE_PAYMENT_DISC_INC_TAX;
$this->percentage = MODULE_PAYMENT_DISC_PERCENTAGE;
$this->minimum = MODULE_PAYMENT_DISC_MINIMUM;
$this->calculate_tax = MODULE_PAYMENT_DISC_CALC_TAX;
// $this->credit_class = true;
$this->output = array();
}
function process() {
global $order, $currencies;
$od_amount = $this->calculate_credit($this->get_order_total());
if ($od_amount>0) {
$this->deduction = $od_amount;
$this->output[] = array('title' => '<b>' . $this->title . ':</b>',
'text' => '-' . $currencies->format($od_amount),
'value' => $od_amount);
$order->info['total'] = $order->info['total'] - $od_amount;
}
}
function calculate_credit($amount) {
global $order, $customer_id;
$od_amount=0;
$od_pc = $this->percentage;
$do = false;
if ($amount > $this->minimum) {
$table = split("[,]" , MODULE_PAYMENT_DISC_TYPE);
for ($i = 0; $i < count($table); $i++) {
if ($_SESSION['payment'] == $table[$i]) $do = true;
}
if ($do) {
// 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, $db;
$order_total = $order->info['total'];
// Check if gift voucher is in cart and adjust total
//$products = $cart->get_products();
if (is_object($_SESSION['cart'])) {
$products = $_SESSION['cart']->get_products();
for ($i=0; $i<sizeof($products); $i++) {
$t_prid = zen_get_prid($products[$i]['id']);
$gv_result = $db->Execute("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
//$gv_result = zen_db_fetch_array($gv_query);
if (ereg('^GIFT', addslashes($gv_result->fields['products_model']))) {
$qty = $_SESSION['cart']->get_quantity($t_prid);
$products_tax = zen_get_tax_rate($gv_result->fields['products_tax_class_id']);
if ($this->include_tax =='false') {
$gv_amount = $gv_result->fields['products_price'] * $qty;
} else {
$gv_amount = ($gv_result->fields['products_price'] + zen_calculate_tax($gv_result->fields['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'];
// echo $order_total.' - order total<br />';
return $order_total;
}
function check() {
global $db;
if (!isset($this->check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_DISC_STATUS'");
$this->check = $check_query->RecordCount();
}
return $this->check;
}
function keys() {
return array('MODULE_PAYMENT_DISC_STATUS', 'MODULE_PAYMENT_DISC_SORT_ORDER','MODULE_PAYMENT_DISC_PERCENTAGE','MODULE_PAYMENT_DISC_MINIMUM', 'MODULE_PAYMENT_DISC_TYPE', 'MODULE_PAYMENT_DISC_INC_SHIPPING', 'MODULE_PAYMENT_DISC_INC_TAX', 'MODULE_PAYMENT_DISC_CALC_TAX');
}
function install() {
global $db;
$db->Execute("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_PAYMENT_DISC_STATUS', 'true', 'Do you want to enable the Order Discount?', '6', '1','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_PAYMENT_DISC_SORT_ORDER', '999', 'Sort order of display.', '6', '2', now())");
$db->Execute("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_PAYMENT_DISC_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '5', 'zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
$db->Execute("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_PAYMENT_DISC_INC_TAX', 'true', 'Include Tax in calculation.', '6', '6','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Discount Percentage', 'MODULE_PAYMENT_DISC_PERCENTAGE', '2', 'Amount of Discount(percentage).', '6', '7', now())");
$db->Execute("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_PAYMENT_DISC_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '6', '5','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Minimum Amount', 'MODULE_PAYMENT_DISC_MINIMUM', '100', 'Minimum order before discount', '6', '2', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Payment Type', 'MODULE_PAYMENT_DISC_TYPE', 'COD', 'Payment Type to get discount', '6', '2', now())");
}
function remove() {
global $db;
$keys = '';
$keys_array = $this->keys();
for ($i=0; $i<sizeof($keys_array); $i++) {
$keys .= "'" . $keys_array[$i] . "',";
}
$keys = substr($keys, 0, -1);
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")");
}
}
?>
Re: Payment Type Discount
i never got it work...
i am trying to offer 3% off for Western Union and Check payment. but no idea how to make it work.
Re: Payment Type Discount
Thanks nsanford, you give the right answer.
Re: Payment Type Discount
Installed with no problem, but does not include shipping in tax calculation. When removed, tax works OK.
Tom
Re: Payment Type Discount
Quote:
Originally Posted by
magictom
Installed with no problem, but does not include shipping in tax calculation. When removed, tax works OK.
Tom
Sorry, but everything works great. Had a test database that was to put it mildly, crap!
Thanks for the mod.
Tom
Re: Payment Type Discount
I installed the mod using the code above and it worked. BUT know the order number doesnt show in the checkout success page:
It says:
Your order number is 0
Any ideas??
Re: Payment type discount.
I am also getting an error after installing this mod. It says Your order number is 0 on the checkout success page.
Any idea?
Re: Payment type discount.
It works perfectly, but it works only when I have more than 1 product in the cart.
If the cart has got only 1 product it does not work at all.
Any Ideas as to why this happens ?