Jump to content



Photo
- - - - -

Gift Certificate Version 0.9 Checkout_Process Error


  • Please log in to reply
6 replies to this topic

#1   tinyartichoke

tinyartichoke
  • Members
  • 1 posts
  • Real Name:Christie Pearson

Posted 02 September 2008 - 03:45

I've loaded Gift Certificate Module v0.9 on a fresh install, mainly b/c the other CCGV and CCGV trad modules seemed to cause too many errors I could not resolve. This one seems to work until I click Confirm Order, at which point I get a screen with:

DIR_WS_GCIMAGES=gc/ custno=2 directory should be gc/2

and nothing more.

I know this is part of the gc_output.php code, but I cannot figure out what exactly is wrong with it. The orders are going through, I see them in my admin panel, but as far as I can tell, the gift certificate image and code are not being created.

Please help. I've listed my full checkout_process.php code below. I'm running the latest osCommerce 2.2rc2, with php5.2, MySQL5.0 on Apache 2.2 server. Thank you in advance.

<?php
/*
$Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $

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

Copyright © 2007 osCommerce

Released under the GNU General Public License
*/

include('includes/application_top.php');

// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

if (!tep_session_is_registered('sendto')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
}

include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($payment);

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($shipping);

require(DIR_WS_CLASSES . 'order.php');
$order = new order;

require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;

$order_totals = $order_total_modules->process();

// load the before_process function from the payment modules
$payment_modules->before_process();

$sql_data_array = array('customers_id' => $customer_id,
'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
'customers_company' => $order->customer['company'],
'customers_street_address' => $order->customer['street_address'],
'customers_suburb' => $order->customer['suburb'],
'customers_city' => $order->customer['city'],
'customers_postcode' => $order->customer['postcode'],
'customers_state' => $order->customer['state'],
'customers_country' => $order->customer['country']['title'],
'customers_telephone' => $order->customer['telephone'],
'customers_email_address' => $order->customer['email_address'],
'customers_address_format_id' => $order->customer['format_id'],
'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
'delivery_company' => $order->delivery['company'],
'delivery_street_address' => $order->delivery['street_address'],
'delivery_suburb' => $order->delivery['suburb'],
'delivery_city' => $order->delivery['city'],
'delivery_postcode' => $order->delivery['postcode'],
'delivery_state' => $order->delivery['state'],
'delivery_country' => $order->delivery['country']['title'],
'delivery_address_format_id' => $order->delivery['format_id'],
'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
'billing_company' => $order->billing['company'],
'billing_street_address' => $order->billing['street_address'],
'billing_suburb' => $order->billing['suburb'],
'billing_city' => $order->billing['city'],
'billing_postcode' => $order->billing['postcode'],
'billing_state' => $order->billing['state'],
'billing_country' => $order->billing['country']['title'],
'billing_address_format_id' => $order->billing['format_id'],
'payment_method' => $order->info['payment_method'],
'cc_type' => $order->info['cc_type'],
'cc_owner' => $order->info['cc_owner'],
'cc_number' => $order->info['cc_number'],
'cc_expires' => $order->info['cc_expires'],
'date_purchased' => 'now()',
'orders_status' => $order->info['order_status'],
'currency' => $order->info['currency'],
'gc' => $gc,
'gc_code' => $gc_code,
'currency_value' => $order->info['currency_value']);
tep_db_perform(TABLE_ORDERS, $sql_data_array);
$insert_id = tep_db_insert_id();
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $order_totals[$i]['title'],
'text' => $order_totals[$i]['text'],
'value' => $order_totals[$i]['value'],
'class' => $order_totals[$i]['code'],
'sort_order' => $order_totals[$i]['sort_order']);
tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
}

$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
$sql_data_array = array('orders_id' => $insert_id,
'orders_status_id' => $order->info['order_status'],
'date_added' => 'now()',
'customer_notified' => $customer_notification,
'comments' => $order->info['comments']);
tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

//include the function to create the gift certificate image
require(DIR_WS_FUNCTIONS . 'gc_output.php');

//update gift certificates
if($order->info['gc_code']){
$sql_data_array = array('gc_code' => $order->info['gc_code'],
'amount_redeemed' => $order->info['gc_redeemed'] + $order->info['gc'],
'redeemed_by' => $customer_id,
'last_redeemed' => 'now()');
tep_db_perform(TABLE_GIFT_CERTIFICATES, $sql_data_array, 'update', "gc_code='" . $order->info['gc_code'] . "'");
//insert gift certificate redemptions
$sql_data_array = array('gc_code' => $order->info['gc_code'],
'redeemed_by' => $customer_id,
'amount_redeemed' => $order->info['gc'],
'date_redeemed' => 'now()');

tep_db_perform(TABLE_GIFT_CERTIFICATE_REDEMPTIONS, $sql_data_array);
}
if(strlen($gc_prod)>0){
//create a new gc_code
$order->info['gc_code']=kco_make_gc_code();
//create gift certificate image
$gc_to=$order->delivery['firstname'] . ' ' . $order->delivery['lastname'];
$gc_from=$order->billing['firstname'] . ' ' . $order->billing['lastname'];
$gc_image=gc_image($gc_to, $gc_from, $gc_price, $order->info['comments'],
$order->info['gc_code'], $customer_id);
//insert a new row in gift certificates
$sql_data_array = array('gc_code' => $order->info['gc_code'],
'amount_purchased' => $gc_price,
'amount_redeemed' => 0,
'purchased_by' => $customer_id,
'purchase_date' => 'now()');
tep_db_perform(TABLE_GIFT_CERTIFICATES, $sql_data_array);
}else{
error_log("strlen(gc_code) = 0");
}

// initialized for the email confirmation
$products_ordered = '';
$subtotal = 0;
$total_tax = 0;

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
if (STOCK_LIMITED == 'true') {
if (DOWNLOAD_ENABLED == 'true') {
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
FROM " . TABLE_PRODUCTS . " p
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
ON p.products_id=pa.products_id
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
ON pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
$products_attributes = $order->products[$i]['attributes'];
if (is_array($products_attributes)) {
$stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
}
$stock_query = tep_db_query($stock_query_raw);
} else {
$stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
if (tep_db_num_rows($stock_query) > 0) {
$stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
$stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
} else {
$stock_left = $stock_values['products_quantity'];
}
tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
}
}

// Update products_ordered (for bestsellers list)
tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

$sql_data_array = array('orders_id' => $insert_id,
'products_id' => tep_get_prid($order->products[$i]['id']),
'products_model' => $order->products[$i]['model'],
'products_name' => $order->products[$i]['name'],
'products_price' => $order->products[$i]['price'],
'final_price' => $order->products[$i]['final_price'],
'products_tax' => $order->products[$i]['tax'],
'products_quantity' => $order->products[$i]['qty']);
tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
$order_products_id = tep_db_insert_id();

//------insert customer choosen option to order--------
$attributes_exist = '0';
$products_ordered_attributes = '';
$sendgcemail='no';
if (isset($order->products[$i]['attributes'])) {
$attributes_exist = '1';
for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
if (DOWNLOAD_ENABLED == 'true') {
$attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
on pa.products_attributes_id=pad.products_attributes_id
where pa.products_id = '" . $order->products[$i]['id'] . "'
and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . $languages_id . "'
and poval.language_id = '" . $languages_id . "'";
$attributes = tep_db_query($attributes_query);
} else {
$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
}
$attributes_values = tep_db_fetch_array($attributes);

$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'products_options' => $attributes_values['products_options_name'],
'products_options_values' => $attributes_values['products_options_values_name'],
'options_values_price' => $attributes_values['options_values_price'],
'price_prefix' => $attributes_values['price_prefix']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'orders_products_filename' => $attributes_values['products_attributes_filename'],
'download_maxdays' => $attributes_values['products_attributes_maxdays'],
'download_count' => $attributes_values['products_attributes_maxcount']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
}
$products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
if($attributes_values['products_options_values_name']=="Send Email"){
$sendgcemail='yes';
}
}
}
//------insert customer choosen option eof ----
$total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
$total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
$total_cost += $total_products_price;

$products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
}

// lets start with the email confirmation
$email_order = STORE_NAME . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
if ($order->info['comments']) {
$email_order .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
EMAIL_SEPARATOR . "\n" .
$products_ordered .
EMAIL_SEPARATOR . "\n";

for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
}

if ($order->content_type != 'virtual') {
$email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
}

$email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
if (is_object($$payment)) {
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n";
$payment_class = $$payment;
$email_order .= $order->info['payment_method'] . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}

if(strlen($gc_prod)==0){
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

error_log("checkout_process - sending email: gc_prod=" . $gc_prod . " gc_image=" . $gc_image . " products_options_name=" . $attributes_values['products_options_name']=="Gift Certificate Email" . " products_options_values_name=" . $attributes_values['products_options_values_name'] . "sendgcemail=" . $sendgcemail);
// send emails to other people
if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

if(strlen($gc_prod)>0){
$email_order .= "\n" . EMAIL_GC_DOWNLOAD_INSTRUCTIONS ;
$email_order .= HTTPS_SERVER . DIR_WS_HTTPS_CATALOG . "gc_downloads.php?gift_certificate=" . $gc_image;
//recipient email for gift certificate
if($sendgcemail=='yes'){
//if the purchasor wants an email notification to the recipient
$email_order1 = STORE_NAME . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n";
if ($order->info['comments']) {
$email_order1 .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order1 .= "A gift from " . $order->customer['firstname'] . ' ' . $order->customer['lastname'] . "!";
$email_order1 .= "\n\n" . EMAIL_GIFT_CERTIFICATE . $gc_prod . "\n\nCertificate Code: " . $order->info['gc_code'] . "\n\nGood for $" . tep_round($gc_price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) . " on any product we have!" . "\n\nJust go to " . HTTP_SERVER . ", \nuse the Certificate Code above when checking out!";
tep_mail($order->delivery['firstname'] . ' ' . $order->delivery['lastname'], $order->delivery['email_address'], EMAIL_GIFT_CERTIFICATE_SUBJECT, $email_order1, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}
}

tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
tep_mail('', STORE_OWNER_EMAIL_ADDRESS, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// load the after_process function from the payment modules
$payment_modules->after_process();

$cart->reset(true);

// unregister session variables used during checkout
tep_session_unregister('sendto');
tep_session_unregister('billto');
tep_session_unregister('shipping');
tep_session_unregister('payment');
tep_session_unregister('comments');
tep_session_unregister('gc');
tep_session_unregister('gc_code');
tep_session_unregister('gc_redeemed');
tep_session_unregister('gc_prod');
tep_session_unregister('gc_price');

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

#2   p2409

p2409
  • Members
  • 53 posts
  • Real Name:Pete

Posted 07 March 2009 - 11:25

I've loaded Gift Certificate Module v0.9 on a fresh install, mainly b/c the other CCGV and CCGV trad modules seemed to cause too many errors I could not resolve. This one seems to work until I click Confirm Order, at which point I get a screen with:

DIR_WS_GCIMAGES=gc/ custno=2 directory should be gc/2

and nothing more.

I know this is part of the gc_output.php code, but I cannot figure out what exactly is wrong with it. The orders are going through, I see them in my admin panel, but as far as I can tell, the gift certificate image and code are not being created.

Please help.

Firstly, noone is going to read that much code, so don't bother posting it. That's what you pay people for.

A suggestion: does your server include ImageMagick or whatever other image rendering requirements are required for this module? If not, you're out of luck, it won't print.
I can't use quite a few contributions because my server's PHP doesn't have the modules or software loaded. So..check the requirements first and see if your server has them.
OSC User Definitions
"I can add modules to OSC" = I can search, cut and paste. But not well, or I wouldn't be here.
"I start my posting with 'works like a charm' = I'm letting you down gently, nothing works and I have no idea why
"I finish postings with "plzzzz....hlp" = My installation is buggered and I know I'm going to have to pay someone, but I really, really don't want to.

#3   computergeek

computergeek
  • Members
  • 46 posts
  • Real Name:Fred

Posted 29 August 2009 - 14:18

Did you find a solution to this?
As Im having same issue..
Any info greatly appreciated.
Thanks


I've loaded Gift Certificate Module v0.9 on a fresh install, mainly b/c the other CCGV and CCGV trad modules seemed to cause too many errors I could not resolve. This one seems to work until I click Confirm Order, at which point I get a screen with:

DIR_WS_GCIMAGES=gc/ custno=2 directory should be gc/2

and nothing more.



#4   Spicoli

Spicoli
  • Members
  • 4 posts
  • Real Name:spicoli

Posted 22 October 2009 - 18:36

Did you find a solution to this?
As Im having same issue..
Any info greatly appreciated.
Thanks



i'm currently installing on mod'd script and fighting with all of it.........
for this i just commented out a line and it now creates the gift certs....
includes\functions\gc_output.php

line 129 changed to ........

/* echo "DIR_WS_GCIMAGES=" . DIR_WS_GCIMAGES . " custno=" . $custno . " directory should be " . DIR_WS_GCIMAGES . $custno . "<br>"; */

now....when i apply the gift cert, it doesn't apply the amount in checkout............ /sad.gif' class='bbc_emoticon' alt=':(' />

#5   DOOL

DOOL
  • Members
  • 24 posts
  • Real Name:Jim Longden

Posted 15 April 2010 - 06:46

i'm currently installing on mod'd script and fighting with all of it.........
for this i just commented out a line and it now creates the gift certs....
includes\functions\gc_output.php

line 129 changed to ........

/* echo "DIR_WS_GCIMAGES=" . DIR_WS_GCIMAGES . " custno=" . $custno . " directory should be " . DIR_WS_GCIMAGES . $custno . "<br>"; */

now....when i apply the gift cert, it doesn't apply the amount in checkout............ /sad.gif' class='bbc_emoticon' alt=':(' />


I am having the same problem with the checkout. I have double and triple checked everything.
During the checkout process I am showing a "Gift Certificate $0.00" but it never actualy applies the credit.
Any assistance would be greatley apreciated becuase i am a total newb at this oscommerce thing.
Thank You

#6   wiseword@alice.it

wiseword@alice.it
  • Members
  • 19 posts
  • Real Name:kathi
  • Gender:Male

Posted 07 May 2012 - 14:10

I have the same problem also (although I would love to know how to configure image magick as well since I can't get the image to generate) and my certificte returns a 0 value although in my sql table it is as determined when ordered. 15.00

We would love someone to pass by here and give a hand. PLEASE

#7   wiseword@alice.it

wiseword@alice.it
  • Members
  • 19 posts
  • Real Name:kathi
  • Gender:Male

Posted 10 May 2012 - 16:22

i am having the same problem. Emails work great, certificates are in my sql db but return a 0 value when used at check out. PLEASE......SOMEBODY give us some help here. I really need this module.