tinyartichoke Posted September 2, 2008 Share Posted September 2, 2008 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'); ?> Quote Link to comment Share on other sites More sharing options...
p2409 Posted March 7, 2009 Share Posted March 7, 2009 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. Quote 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. Link to comment Share on other sites More sharing options...
computergeek Posted August 29, 2009 Share Posted August 29, 2009 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. Quote Link to comment Share on other sites More sharing options...
Spicoli Posted October 22, 2009 Share Posted October 22, 2009 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............ :( Quote Link to comment Share on other sites More sharing options...
DOOL Posted April 15, 2010 Share Posted April 15, 2010 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............ :( 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 Quote Link to comment Share on other sites More sharing options...
[email protected] Posted May 7, 2012 Share Posted May 7, 2012 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 Quote Link to comment Share on other sites More sharing options...
[email protected] Posted May 10, 2012 Share Posted May 10, 2012 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.