Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Sales with payment after delivery


Guest

Recommended Posts

I like to offer some customers the option to buy without pre-payment.

 

I added to the table_customers a field named "customers_invoice" (Char(1))

In Admin I can change the status between 0 or 1 meaning no or yes invoice on checkout.

This works more or less like the newsletter option. This is working fine now.

 

I also added a payment module "On account". This is a modified cod module. I replaced all "cod" by invoice.

This module is working fine too.

 

Coming to my question for help.

 

When a customer is checking out I like to check whether he/she is allowed to see the option "on Account". Depending on the status of customers_invoice in the table_customers. 0 = no 1 = yes

 

so far I'm directed to alter the "on account" module but it isn't working yet.

 

the module looks like:

<?php

/*

$Id: invoice.php,v 1.28 2005/11/16 16:00:00 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

*/

 

class invoice {

var $code, $title, $description, $enabled;

 

// class constructor

function invoice() {

global $order;

 

$this->code = 'invoice';

$this->title = MODULE_PAYMENT_INVOICE_TEXT_TITLE;

$this->description = MODULE_PAYMENT_INVOICE_TEXT_DESCRIPTION;

$this->sort_order = MODULE_PAYMENT_INVOICE_SORT_ORDER;

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

 

if ((int)MODULE_PAYMENT_INVOICE_ORDER_STATUS_ID > 0) {

$this->order_status = MODULE_PAYMENT_INVOICE_ORDER_STATUS_ID;

}

 

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

}

 

// class methods

function update_status() {

global $order;

 

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_INVOICE_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_INVOICE_ZONE . "' and zone_country_id = '" . $order->delivery['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->delivery['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

 

// disable the module if the order only contains virtual products

if ($this->enabled == true) {

if ($order->content_type == 'virtual') {

$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() {

return false;

}

 

function process_button() {

return false;

}

 

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_INVOICE_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 Op Rekening Module', 'MODULE_PAYMENT_INVOICE_STATUS', 'True', 'Do you want to accept Op Rekening 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, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_INVOICE_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, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_INVOICE_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, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_INVOICE_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_INVOICE_STATUS', 'MODULE_PAYMENT_INVOICE_ZONE', 'MODULE_PAYMENT_INVOICE_ORDER_STATUS_ID', 'MODULE_PAYMENT_INVOICE_SORT_ORDER');

}

}

?>

 

So far I learned it has something to do with the function selection in which all available payment module are loaded.

 

function selection() {

return array('id' => $this->code,

'module' => $this->title);

}

 

 

I know I should add a test on the value of "customers_invoice" in the table_customers but have no idea how to do it.

 

Who can help me out on this?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...