Zen Cart Logo
Forums / Addon Payment Modules / Payment type discount.

Payment type discount.

Locked

Views: 7,978

Results 1 to 15 of 15
This thread is locked. New replies are disabled.
26 May 2006, 1:19 PM
#1
freerangepc avatar

freerangepc

New Zenner

Join Date:
Apr 2006
Posts:
65
Plugin Contributions:
0

Payment type discount.

I had this installed fine and it was working no problem, then today when i go to checkout at step 3

Fatal error: Cannot use object of type queryFactoryResult as array in /home/freerang/public_html/shop/includes/modules/order_total/ot_payment.php on line 97

I had installed the Mod hole version, and it worked great before I added other stuff. I have removed the gift voucher option, but this doesn't cure it.

this is the code that line

if (ereg('^GIFT', addslashes($gv_result['products_model']))) {

Thanks I really need a discount option at checkout for Zen Cart 1.2.7.

28 May 2006, 8:42 PM
#2
freerangepc avatar

freerangepc

New Zenner

Join Date:
Apr 2006
Posts:
65
Plugin Contributions:
0

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

13 Sep 2006, 4:42 PM
#3
maclean avatar

maclean

New Zenner

Join Date:
Feb 2006
Posts:
57
Plugin Contributions:
0

Re: Payment type discount.

I've seen references to the Payment Type Discount module but can't seem to find it. There was a link to it in another thread but I get a 404 error.

Can someone point me in the right direction?

Also wondering if I can apply this discount to a specific credit card? (ie. Amex users get a dicount on purchases).

Cheers!

13 Sep 2006, 5:08 PM
#4
merlinpa1969 avatar

merlinpa1969

Totally Zenned

Join Date:
Mar 2004
Posts:
13,031
Plugin Contributions:
4

Re: Payment type discount.

Its in the archived downloads,

and no it works with a payment type not with a certain card

13 Sep 2006, 5:43 PM
#5
maclean avatar

maclean

New Zenner

Join Date:
Feb 2006
Posts:
57
Plugin Contributions:
0

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?

2 Mar 2008, 6:16 PM
#6
webchills avatar

webchills

Zen Follower

Join Date:
Sep 2005
Location:
Austria
Posts:
99
Plugin Contributions:
1

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?

10 Jan 2009, 11:46 PM
#7
mack32 avatar

mack32

New Zenner

Join Date:
Nov 2007
Posts:
21
Plugin Contributions:
0

Re: Payment type discount.

does this work with 1.38a?

Mack32

18 Feb 2009, 9:21 AM
#8
nsanford avatar

nsanford

New Zenner

Join Date:
Dec 2007
Posts:
69
Plugin Contributions:
1

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:

<?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 . ")");
    }
  }
?>
20 Mar 2009, 6:37 PM
#9
weber avatar

weber

Zen Follower

Join Date:
Nov 2005
Posts:
157
Plugin Contributions:
0

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.

19 May 2009, 1:58 AM
#10
gjf2653211 avatar

gjf2653211

New Zenner

Join Date:
May 2009
Posts:
1
Plugin Contributions:
0

Re: Payment type discount.

Thanks nsanford, you give the right answer.

28 May 2009, 11:52 AM
#11
magictom avatar

magictom

New Zenner

Join Date:
Nov 2007
Location:
Pittsburgh
Posts:
8
Plugin Contributions:
0

Re: Payment type discount.

Installed with no problem, but does not include shipping in tax calculation. When removed, tax works OK.

Tom

28 May 2009, 9:01 PM
#12
magictom avatar

magictom

New Zenner

Join Date:
Nov 2007
Location:
Pittsburgh
Posts:
8
Plugin Contributions:
0

Re: Payment type discount.

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

1 Sep 2009, 12:17 AM
#13
drbyday avatar

drbyday

New Zenner

Join Date:
Mar 2008
Posts:
50
Plugin Contributions:
0

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

1 Sep 2009, 12:27 AM
#14
drbyday avatar

drbyday

New Zenner

Join Date:
Mar 2008
Posts:
50
Plugin Contributions:
0

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?

16 May 2010, 3:19 AM
#15
muuwa avatar

muuwa

New Zenner

Join Date:
Dec 2008
Posts:
7
Plugin Contributions:
0

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 ?