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.