I get this when I try to check out with the new code...
PHP Parse error: parse error in C:\Program Files\Ensim\Sitedata\onlineshop\Inetpub\wwwroot\includes\modules\payment\cod.php on line 150
Printable View
I get this when I try to check out with the new code...
PHP Parse error: parse error in C:\Program Files\Ensim\Sitedata\onlineshop\Inetpub\wwwroot\includes\modules\payment\cod.php on line 150
I did on a clean file and it worked on the basic >50 condition.
But can I also incorporate the other 2 conditions? vandelivery and storepickup?
Hi Linda, your code has problem as well, with a clean cod.php file and your additional codes, its ok on the customer side checkout. It is also ok in admin when I click modules-payment. But when I open the admin-customers-orders, and click to open each order, orders with COD as payment will not open, and there is a line:
PHP Fatal error: Call to a member function on a non-object in C:\Program Files\Ensim\Sitedata\onlineshop\Inetpub\wwwroot\includes\modules\payment\cod.php on line 74
line 74 refers to this line:
if ($_SESSION['cart']->show_total() < 50) {
I have taken out all other codes regarding the other conditions. so its down to the baisc total>50 codes only.
Any idea?
Where exactly are you when you see this error?
I am trying to reproduce it ... :unsure:
hi,
ok, clean unmodified file, then put in your code in cod.php, no other conditions yet. So orders above 50, COD will show, below, COD will not show. I log in as a regular registered customer and tried all the combination of shipping and payment. Works fine.
Now I log into admin.
Modules -> Payment. No error. Your code solved the problem over econcepts original code. Great.
Now the error:
Do a check out transaction with a dummy customer. You can try 2 transaction to compare. One use COD, another use say bank transfer. Both have to be above $50 so that COD is shown?
Log back into admin.
Customers -> Orders
So your new 2 transaction is listed. say 1001 and 1002.
We usually click on the transaction to open it up to see the details, and also to update status etc.
But if the transaction is a COD transaction, it wont show the details, it will show:
PHP Fatal error: Call to a member function on a non-object in C:\Program Files\Ensim\Sitedata\onlineshop\Inetpub\wwwroot\in cludes\modules\payment\cod.php on line 74
and nothing else. I dont believe I did any other customization of any sort.
Odd ... mine is working fine ...
What version Zen Cart are you running?
Make sure that you added that global $cart; at the start of the function as indicated in my changes ... or you will get errors ...
But I just tried this on another installation and still no errors ...
I am on 1.36...
that is very strange.....
I dont think posting the whole cod.php file here will help. Looking at the situation, ie the error on that line occurs when I open a COD transaction in customers-> orders, would it be easier if I troubleshoot what is called when I open an order?
When I mean open an order, I mean click on the particular transaction, it will then be highlighted, the arrow on it, then click again to open the details... all the COD transaction does not work...
Do you have any kind of add-ons or something in the Admin?
I am at wits end. I post my cod file, maybe I am really missing a bracket here or a word there. Red ones are the one I added according to your post. Blue ones are what I will want to add when the red works....
PHP Code:
<?php
//
// +----------------------------------------------------------------------+
// |zen-cart Open Source E-commerce |
// +----------------------------------------------------------------------+
// | Copyright (c) 2003 The zen-cart developers |
// | |
// | http://www.zen-cart.com/index.php |
// | |
// | 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: cod.php 1105 2005-04-04 22:05:35Z birdbrain $
//
class cod {
var $code, $title, $description, $enabled;
// class constructor
function cod() {
global $order;
$this->code = 'cod';
$this->title = MODULE_PAYMENT_COD_TEXT_TITLE;
$this->description = MODULE_PAYMENT_COD_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_COD_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_COD_STATUS == 'True') ? true : false);
if ((int)MODULE_PAYMENT_COD_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_COD_ORDER_STATUS_ID;
}
if (is_object($order)) $this->update_status();
}
// class methods
function update_status() {
global $order, $db;
global $cart;
if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_COD_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_COD_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}
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 != 'physical') {
$this->enabled = false;
}
}
// disable if total is < 50
if ($_SESSION['cart']->show_total() < 50) {
$this->enabled = false;
}
// turn off COD for post
//if (substr_count($_SESSION['shipping']['id'], 'table') == true) {
//$this->enabled = false;
//}
// turn on COD for storepickup
//if (substr_count($_SESSION['shipping']['id'], 'storepickup') == true) {
//$this->enabled = true;
//}
// turn on COD for delivery
//if (substr_count($_SESSION['shipping']['id'], 'flat') == true) {
//$this->enabled = true;
//}
}
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() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_COD_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
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 ('Enable Cash On Delivery Module', 'MODULE_PAYMENT_COD_STATUS', 'True', 'Do you want to accept Cash On Delivery payments?', '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, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_COD_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', 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 of display.', 'MODULE_PAYMENT_COD_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
$db->Execute("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_COD_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
}
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_PAYMENT_COD_STATUS', 'MODULE_PAYMENT_COD_ZONE', 'MODULE_PAYMENT_COD_ORDER_STATUS_ID', 'MODULE_PAYMENT_COD_SORT_ORDER');
}
}
?>