Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Problems with lay-by module


maxxxie

Recommended Posts

Hi everyone,

 

I'd like to have a payment module that works along the lines of a lay-by system. The customer is presented with a total, then presented with a value of 10% which is the deposit they must pay for the order to be acted upon. It is a requirement that the customer receive a receipt stating the terms and conditions of the layby arrangement. My intention is to use email to do this.

 

To this end, I've butchered the Monthly Installments module and combined it with another payment module (Australian bank deposits) to suit my needs. At checkout, the customer is presented with the terms and conditions and the 10% deposit value they must put down. No worries. But I can't seem to get the deposit value to go into the order confirmation email. The best I can do is to derive 10% of the cart total excluding shipping. But I want to show 10% of the total, not the subtotal.

 

Here's the code I've played with so far (complete with inept failed attempts at fixing the email problem):

<?php
/*
 $Id: LAYBY.php,v 1.10 2003/01/29 19:57:14 hpdl Exp $
amended by Edwin Martinez

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/


 class layby {
var $code, $title, $description, $enabled;

// class constructor
function layby() {
  global $HTTP_POST_VARS, $order, $currencies, $cart; 

  $this->code = 'layby';
  $this->title = MODULE_PAYMENT_LAYBY_TEXT_TITLE;
  $this->description = MODULE_PAYMENT_LAYBY_TEXT_DESCRIPTION;
  $this->sort_order = MODULE_PAYMENT_LAYBY_SORT_ORDER;


   // $this->enabled = ((MODULE_PAYMENT_LAYBY_STATUS == 'True') ? true : false);

   if(MODULE_PAYMENT_LAYBY_STATUS == 'True'){
		if($_SESSION['cart']->total>=100){
			$this->enabled = true;
		} else {
			$this->enabled = false;
		}
  } else {
		$this->enabled = false;
  }

if ((int)MODULE_PAYMENT_LAYBY_ORDER_STATUS_ID > 0) {
	$this->order_status = MODULE_PAYMENT_LAYBY_ORDER_STATUS_ID;
  }

// $this->email_footer = MODULE_PAYMENT_LAYBY_TEXT_EMAIL_FOOTER;

//echo ($_SESSION['order']->total);

//$down_payment = ($_SESSION['order']->total) * 0.10;

// $orderinfototal = $order->info['total'];
// $orderinfototal = $_SESSION['order']->total;
// $orderfinalprice = $order->products['final_price'];

//$orderinfoshipping = $_SESSION['order']->info['shipping_cost'];
//$ordertotal = $orderinfototal + $orderinfoshipping;	
$down_payment = $_SESSION['cart']->total / 10;
// $down_payment2 = $currencies->price() * 0.10;

$EMAIL_LAYBY12 = "Please note: \nYour initial payment (deposit) is: " . number_format($down_payment, 2) . "\n";
$this->email_footer = MODULE_PAYMENT_LAYBY_TEXT_EMAIL_T_AND_C . $EMAIL_LAYBY12 . MODULE_PAYMENT_LAYBY_TEXT_EMAIL_FOOTER;

// $this->email_footer = "orderinfototal: " . $orderinfototal . ", orderfinalprice: " . $orderfinalprice;
//. " , orderinfoshipping" . $orderinfoshipping . ", ordertotal" . $ordertotal;


if (is_object($order)) $this->update_status();	 

 }

// class methods
function update_status() {
  global $order;

  if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_LAYBY_ZONE > 0) ) {
	$check_flag = false;
	$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_LAYBY_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
	while ($check = tep_db_fetch_array($check_query)) {
	  if ($check['zone_id'] < 1) {
		$check_flag = true;
		break;
	  } elseif ($check['zone_id'] == $order->billing['zone_id']) {
		$check_flag = true;
		break;
	  }
	}

	if ($check_flag == false) {
	  $this->enabled = false;
	}
  }
}

function javascript_validation() {
  return false;
}

function selection() {
  return array('id' => $this->code,
			   'module' => $this->title);
}

function pre_confirmation_check() {
  return false;
}

function confirmation() {
  global $HTTP_POST_VARS, $order, $currencies;

define('TOTAL_PAYMENT_INT12', microtime());	
$down_payment= $currencies->price() * 0.10;
//$monthly_payment= ($currencies->price() - $down_payment) * 0.10573;
//$salary = ($monthly_payment / 0.2); 
  // $LAYBY12= 'Please note: <br><b> Down Payment: <font color="red"> ' . number_format($down_payment, 2). '</font color><br> 12 Payments of: <font color="red">' . number_format($monthly_payment, 2). ' </b></font color>'. '<br> To apply for this credit line you must have minimum monthly earnings of: <b>' . number_format($salary, 2) . '</b> <br>';
$LAYBY12= 'Please note: <br><b>Your initial payment (deposit) is: <font color="red"> ' . number_format($down_payment, 2) . '</b></font color> <br>';

return array('title' => MODULE_PAYMENT_LAYBY_TEXT_T_AND_C . $LAYBY12 . MODULE_PAYMENT_LAYBY_TEXT_DESCRIPTION);
}

function process_button() {
global $HTTP_POST_VARS, $order, $currencies;
$process_button_string = tep_draw_hidden_field('payment', $currencies->price());
return $process_button_string;
}

function before_process() {
  return false;
}

function after_process() {
  return false;
}

function get_error() {
  return false;
}

function check() {
  if (!isset($this->_check)) {
	$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_LAYBY_STATUS'");
	$this->_check = tep_db_num_rows($check_query);
  }
  return $this->_check;
}

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 ('Enable Lay-by Module', 'MODULE_PAYMENT_LAYBY_STATUS', 'True', 'Do you want to accept Lay-by payments?', '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 ('Make Payable to:', 'MODULE_PAYMENT_LAYBY_PAYTO', '', 'Who should payments be made payable to?', '6', '1', 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 of display.', 'MODULE_PAYMENT_LAYBY_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_LAYBY_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_LAYBY_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
}

function remove() {
  tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}

function keys() {


return array('MODULE_PAYMENT_LAYBY_STATUS', 'MODULE_PAYMENT_LAYBY_ZONE', 'MODULE_PAYMENT_LAYBY_ORDER_STATUS_ID', 'MODULE_PAYMENT_LAYBY_SORT_ORDER', 'MODULE_PAYMENT_LAYBY_PAYTO');
}
 }
?>

 

I'm struggling with the code at around line 59 (trying to define $EMAIL_LAYBY12). My guess is that I'm just interrogating the wrong variable, but I've no idea which one I should touch. I'm pretty sure I'm grasping at straws with the $_SESSION variable.

 

I'd appreciate any help!

 

Cheers,

Max

Link to comment
Share on other sites

  • 6 years later...

Hi Maxxxie,

 

Did you ever resolve this issue and get what you needed?

I'm using version 2.3.3 and hoping to find the same....

 

Thanks.

 

Nathan

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