I'm stuck on an OSCommerce coding problem.
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
Prior I posted a request for help on an install problem and everything is working, and rather nicely I might add. I like this script so far. But, I'm stuck on something at the moment. The client, does not want to (at this point) use a payment gateway, but instead wants the credit card and billing information emailed to them so they can process it manually.
Well the order info is emailed just fine, and includes everything necessary except the credit card type, credit card owner, credit card number, and expiration. I can't seem to write the code correctly to get that information added to the script. The script is in the checkout_process.php file.
The info is stored in the orders table in columns
cc_type
cc_owner
cc_number
cc_expires
orders_id is the primary key and auto increments.
The array appears to already be set up to include these fields and as best as I can tell, all tables involved have already been queried:
Here is where the code needs to be added:
I'd like to add this info after the payment method variable $$payment
Truthfully, I haven't actually tried anything, because I'm at a knowledge level on this that I understand pretty much what code does what, but don't understand the syntax and query methods and what not to get it right. And this code is a bit different than the phpBB code which I'm more familiar with and can manipulate and modify easier.
If need be, I can include the entire code for the page since it's only a couple hundred lines.
Thanks if you can help.
Well the order info is emailed just fine, and includes everything necessary except the credit card type, credit card owner, credit card number, and expiration. I can't seem to write the code correctly to get that information added to the script. The script is in the checkout_process.php file.
The info is stored in the orders table in columns
cc_type
cc_owner
cc_number
cc_expires
orders_id is the primary key and auto increments.
The array appears to already be set up to include these fields and as best as I can tell, all tables involved have already been queried:
Code: [ Select ]
$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'],
'currency_value' => $order->info['currency_value']);
'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'],
'currency_value' => $order->info['currency_value']);
- $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'],
- 'currency_value' => $order->info['currency_value']);
Here is where the code needs to be added:
Code: [ Select ]
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 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}
$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 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\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 .= $payment_class->title . "\n\n";
- if ($payment_class->email_footer) {
- $email_order .= $payment_class->email_footer . "\n\n";
- }
- }
I'd like to add this info after the payment method variable $$payment
Truthfully, I haven't actually tried anything, because I'm at a knowledge level on this that I understand pretty much what code does what, but don't understand the syntax and query methods and what not to get it right. And this code is a bit different than the phpBB code which I'm more familiar with and can manipulate and modify easier.
If need be, I can include the entire code for the page since it's only a couple hundred lines.
Thanks if you can help.
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- Anonymous
- Bot


- Joined: 25 Feb 2008
- Posts: ?
- Loc: Ozzuland
- Status: Online
December 4th, 2003, 4:55 pm
- b_heyer
- Web Master


- Joined: Jun 15, 2003
- Posts: 4583
- Loc: Maryland
- Status: Offline
I can understand your clients request, but I would suggest training him how to handle orders on the secure administration panel. For one reason, email isn't secure, that is why osCommerce doesn't send along the information you are missing.
I am not sure what you mean as a payment gateway, but with default settings, if you set up so they enter their ccd information, it then just adds the order as pending to the database, and it needs to be filed manually.
The separate email your getting is just used as a notifying method so they know to check the admin panel for the credit card info. I wouldn't suggest changing that for security reasons.
Finally the code, I don't know object oriented php yet so I can't really help you there
I am not sure what you mean as a payment gateway, but with default settings, if you set up so they enter their ccd information, it then just adds the order as pending to the database, and it needs to be filed manually.
The separate email your getting is just used as a notifying method so they know to check the admin panel for the credit card info. I wouldn't suggest changing that for security reasons.
Finally the code, I don't know object oriented php yet so I can't really help you there
Pixel Acres V2
- b_heyer
- Web Master


- Joined: Jun 15, 2003
- Posts: 4583
- Loc: Maryland
- Status: Offline
Whoa! RichB is on the ball. Yea his example should work great if those variables exist. I wasn't thinking and I just saw "if (is_object())" and just assumed it'd be dealing with object based stuff I don't comprehend. But as RichB has it it should work great!
//erm I am NOT going crazy he DID just have a post here... I saw it! *goes off and cries maniacally*
//erm I am NOT going crazy he DID just have a post here... I saw it! *goes off and cries maniacally*
Pixel Acres V2
- RichB
- Guru


- Joined: May 17, 2003
- Posts: 1121
- Loc: Boston
- Status: Offline
b_heyer raises a good point. I'm not sure if it would be wise to do so.
If I understand correctly you would need to add that information to the $email_order variable that is a string containing the information with the body of the email. From the code you provided it looks like the information should be in the $sql_data_array variable, so I would try to extract it and concatenate it to the $email_order variable unless it's already been defined as constants as the payment method.
I would try replacing:
with:
If I understand correctly you would need to add that information to the $email_order variable that is a string containing the information with the body of the email. From the code you provided it looks like the information should be in the $sql_data_array variable, so I would try to extract it and concatenate it to the $email_order variable unless it's already been defined as constants as the payment method.
I would try replacing:
Code: [ Select ]
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n";
EMAIL_SEPARATOR . "\n";
- $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n";
with:
Code: [ Select ]
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n";
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$sql_data_array['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n";
- $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $sql_data_array['cc_type'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $sql_data_array['cc_owner'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $sql_data_array['cc_number'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $sql_data_array['cc_expires'] . "\n" .
- EMAIL_SEPARATOR . "\n";
Free Programming Resources
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
Thanks b_heyer.
I do know the security issues and will make the recommendations (as I'm 3rd party on this and just developing the cart, I have to go through the chain of command) In the end the transactions will be handled via SSL. I'm just experimenting at the moment.
And I'm about where you are with the object stuff, I think, which is why I'm having such a hard time getting this.
I do know the security issues and will make the recommendations (as I'm 3rd party on this and just developing the cart, I have to go through the chain of command) In the end the transactions will be handled via SSL. I'm just experimenting at the moment.
And I'm about where you are with the object stuff, I think, which is why I'm having such a hard time getting this.
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
RichB I actually was trying not to post the entire code, but if it will help, it sounds to me like you have the right idea, so here's the code for you to confirm your last post:
Code: [ Select ]
<?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 (c) 2003 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;
// load the before_process function from the payment modules
$payment_modules->before_process();
require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;
$order_totals = $order_total_modules->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'],
'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);
// 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 = '';
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'];
}
}
//------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 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
// 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);
}
// 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_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
require(DIR_WS_INCLUDES . 'application_bottom.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 (c) 2003 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;
// load the before_process function from the payment modules
$payment_modules->before_process();
require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;
$order_totals = $order_total_modules->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'],
'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);
// 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 = '';
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'];
}
}
//------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 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
// 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);
}
// 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_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>
- <?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 (c) 2003 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;
- // load the before_process function from the payment modules
- $payment_modules->before_process();
- require(DIR_WS_CLASSES . 'order_total.php');
- $order_total_modules = new order_total;
- $order_totals = $order_total_modules->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'],
- '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);
- // 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 = '';
- 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'];
- }
- }
- //------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 .= $payment_class->title . "\n\n";
- if ($payment_class->email_footer) {
- $email_order .= $payment_class->email_footer . "\n\n";
- }
- }
- tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
- // 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);
- }
- // 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_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
- require(DIR_WS_INCLUDES . 'application_bottom.php');
- ?>
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- RichB
- Guru


- Joined: May 17, 2003
- Posts: 1121
- Loc: Boston
- Status: Offline
It looks like that array is used and then recreated with new values, so that won't work. I'll keep looking at it to see if I can come up with something. I've copied the code, so you can edit it out from your post if you don't want to leave it up there.
Free Programming Resources
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
Thanks. I was concerned about the size, but the page still slams open for me. I'll leave it. Thanks for looking into it.
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- RichB
- Guru


- Joined: May 17, 2003
- Posts: 1121
- Loc: Boston
- Status: Offline
Ok, I'm pretty certain this will work. The information should still be available in the order object because it is still being accessed by the script after the email confirmation code begins, so it should still be available and contain the data you are looking to extract (I see no evidence that it is unset or destroyed).
You're probably already aware of this but if I'm reading this correctly, the script is set up to send a confirmation email to the customer and a copy of the email to emails defined in SEND_EXTRA_ORDER_EMAILS_TO. I'm assuming that is the copy that will go to the store staff and be used to manually process the order. However, the same information is being sent to the customer, and I'm not sure how happy they will be to see their cc number. You could create a separate email with the extra information just for the store owner, but that would be a pretty major modification and I have no way to test it.
To add the info to the existing email I would try replacing:
with:
To create a second email for the store owner only I would leave the existing confirmation email code alone, copy and paste it a second time after the script sends the first email and before the additional emails are sent. I would modify the copied section with the new code.
You're probably already aware of this but if I'm reading this correctly, the script is set up to send a confirmation email to the customer and a copy of the email to emails defined in SEND_EXTRA_ORDER_EMAILS_TO. I'm assuming that is the copy that will go to the store staff and be used to manually process the order. However, the same information is being sent to the customer, and I'm not sure how happy they will be to see their cc number. You could create a separate email with the extra information just for the store owner, but that would be a pretty major modification and I have no way to test it.
To add the info to the existing email I would try replacing:
Code: [ Select ]
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n";
EMAIL_SEPARATOR . "\n";
- $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n";
with:
Code: [ Select ]
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n";
EMAIL_SEPARATOR . "\n" .
$order->info['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n";
- $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_type'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_owner'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_number'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_expires'] . "\n" .
- EMAIL_SEPARATOR . "\n";
To create a second email for the store owner only I would leave the existing confirmation email code alone, copy and paste it a second time after the script sends the first email and before the additional emails are sent. I would modify the copied section with the new code.
Free Programming Resources
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
Quote:
You're probably already aware of this but if I'm reading this correctly, the script is set up to send a confirmation email to the customer and a copy of the email to emails defined in SEND_EXTRA_ORDER_EMAILS_TO. I'm assuming that is the copy that will go to the store staff and be used to manually process the order. However, the same information is being sent to the customer, and I'm not sure how happy they will be to see their cc number.
Yep -- completely aware of that as currently I have defined for all emails to go to my address and understand your point fully. I have been thinking hard about a work-a-round for that. (*grins -- that will probably be one of my next questions!)
I will try your suggestion over the weekend when I have more time.
Thanks.
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- b_heyer
- Web Master


- Joined: Jun 15, 2003
- Posts: 4583
- Loc: Maryland
- Status: Offline
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
I think I understand that b_heyer. I'll take a look at it.
In the meantime, should I also assume that I'll have to define additional variables in this include file for the additions I need?
In the meantime, should I also assume that I'll have to define additional variables in this include file for the additions I need?
Code: [ Select ]
<?php
/*
$Id: checkout_process.php,v 1.26 2002/11/01 04:22:05 hpdl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 osCommerce
Released under the GNU General Public License
*/
define('EMAIL_TEXT_SUBJECT', 'Order Process');
define('EMAIL_TEXT_ORDER_NUMBER', 'Order Number:');
define('EMAIL_TEXT_INVOICE_URL', 'Detailed Invoice:');
define('EMAIL_TEXT_DATE_ORDERED', 'Date Ordered:');
define('EMAIL_TEXT_PRODUCTS', 'Products');
define('EMAIL_TEXT_SUBTOTAL', 'Sub-Total:');
define('EMAIL_TEXT_TAX', 'Tax: ');
define('EMAIL_TEXT_SHIPPING', 'Shipping: ');
define('EMAIL_TEXT_TOTAL', 'Total: ');
define('EMAIL_TEXT_DELIVERY_ADDRESS', 'Delivery Address');
define('EMAIL_TEXT_BILLING_ADDRESS', 'Billing Address');
define('EMAIL_TEXT_PAYMENT_METHOD', 'Payment Method');
define('EMAIL_SEPARATOR', '------------------------------------------------------');
define('TEXT_EMAIL_VIA', 'via');
?>
/*
$Id: checkout_process.php,v 1.26 2002/11/01 04:22:05 hpdl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 osCommerce
Released under the GNU General Public License
*/
define('EMAIL_TEXT_SUBJECT', 'Order Process');
define('EMAIL_TEXT_ORDER_NUMBER', 'Order Number:');
define('EMAIL_TEXT_INVOICE_URL', 'Detailed Invoice:');
define('EMAIL_TEXT_DATE_ORDERED', 'Date Ordered:');
define('EMAIL_TEXT_PRODUCTS', 'Products');
define('EMAIL_TEXT_SUBTOTAL', 'Sub-Total:');
define('EMAIL_TEXT_TAX', 'Tax: ');
define('EMAIL_TEXT_SHIPPING', 'Shipping: ');
define('EMAIL_TEXT_TOTAL', 'Total: ');
define('EMAIL_TEXT_DELIVERY_ADDRESS', 'Delivery Address');
define('EMAIL_TEXT_BILLING_ADDRESS', 'Billing Address');
define('EMAIL_TEXT_PAYMENT_METHOD', 'Payment Method');
define('EMAIL_SEPARATOR', '------------------------------------------------------');
define('TEXT_EMAIL_VIA', 'via');
?>
- <?php
- /*
- $Id: checkout_process.php,v 1.26 2002/11/01 04:22:05 hpdl Exp $
- osCommerce, Open Source E-Commerce Solutions
- http://www.oscommerce.com
- Copyright (c) 2002 osCommerce
- Released under the GNU General Public License
- */
- define('EMAIL_TEXT_SUBJECT', 'Order Process');
- define('EMAIL_TEXT_ORDER_NUMBER', 'Order Number:');
- define('EMAIL_TEXT_INVOICE_URL', 'Detailed Invoice:');
- define('EMAIL_TEXT_DATE_ORDERED', 'Date Ordered:');
- define('EMAIL_TEXT_PRODUCTS', 'Products');
- define('EMAIL_TEXT_SUBTOTAL', 'Sub-Total:');
- define('EMAIL_TEXT_TAX', 'Tax: ');
- define('EMAIL_TEXT_SHIPPING', 'Shipping: ');
- define('EMAIL_TEXT_TOTAL', 'Total: ');
- define('EMAIL_TEXT_DELIVERY_ADDRESS', 'Delivery Address');
- define('EMAIL_TEXT_BILLING_ADDRESS', 'Billing Address');
- define('EMAIL_TEXT_PAYMENT_METHOD', 'Payment Method');
- define('EMAIL_SEPARATOR', '------------------------------------------------------');
- define('TEXT_EMAIL_VIA', 'via');
- ?>
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- b_heyer
- Web Master


- Joined: Jun 15, 2003
- Posts: 4583
- Loc: Maryland
- Status: Offline
well you could add
and such but that would just be used for adding to the looks of the email like this:
Also you could try writing up a bidirectional encoding script for the credit card number. I'd be willing to do that just because it sounds fun!

Code: [ Select ]
define('EMAIL_TEXT_CC_NUM', 'Credit Card Number:');
and such but that would just be used for adding to the looks of the email like this:
Code: [ Select ]
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_CC_NUM . "\n" .
$order->info['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_CC_NUM . "\n" .
$order->info['cc_number'] . "\n" .
- $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n" .
- EMAIL_TEXT_CC_NUM . "\n" .
- $order->info['cc_number'] . "\n" .
Also you could try writing up a bidirectional encoding script for the credit card number. I'd be willing to do that just because it sounds fun!
Pixel Acres V2
- RichB
- Guru


- Joined: May 17, 2003
- Posts: 1121
- Loc: Boston
- Status: Offline
Ok, I just ran a test with a modified checkout_process.php and it sent the correct emails to customer and store with the store having the credit card information appended to the bottom of a copy of the customer email.
To test it insert the following code on line 259 of checkout_process.php:
and then change the variable $email_order to $email_order2 in:
Just in case you have a different copy of checkout_process.php you want to insert the new code just after:
the added code just creates an identical email between the first and second sendings with the extra credit info.
To test it insert the following code on line 259 of checkout_process.php:
Code: [ Select ]
//-------------------------------------------
$email_order2 = 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_order2 .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order2 .= EMAIL_TEXT_PRODUCTS . "\n" .
EMAIL_SEPARATOR . "\n" .
$products_ordered .
EMAIL_SEPARATOR . "\n";
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order2 .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
}
if ($order->content_type != 'virtual') {
$email_order2 .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
}
$email_order2 .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
if (is_object($$payment)) {
$email_order2 .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n"; ;
$payment_class = $$payment;
$email_order2 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order2 .= $payment_class->email_footer . "\n\n";
}
}
//-------------------------------------------
$email_order2 = 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_order2 .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order2 .= EMAIL_TEXT_PRODUCTS . "\n" .
EMAIL_SEPARATOR . "\n" .
$products_ordered .
EMAIL_SEPARATOR . "\n";
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order2 .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
}
if ($order->content_type != 'virtual') {
$email_order2 .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
}
$email_order2 .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
if (is_object($$payment)) {
$email_order2 .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_type'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_owner'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_number'] . "\n" .
EMAIL_SEPARATOR . "\n" .
$order->info['cc_expires'] . "\n" .
EMAIL_SEPARATOR . "\n"; ;
$payment_class = $$payment;
$email_order2 .= $payment_class->title . "\n\n";
if ($payment_class->email_footer) {
$email_order2 .= $payment_class->email_footer . "\n\n";
}
}
//-------------------------------------------
- //-------------------------------------------
- $email_order2 = 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_order2 .= tep_db_output($order->info['comments']) . "\n\n";
- }
- $email_order2 .= EMAIL_TEXT_PRODUCTS . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $products_ordered .
- EMAIL_SEPARATOR . "\n";
- for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
- $email_order2 .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
- }
- if ($order->content_type != 'virtual') {
- $email_order2 .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
- EMAIL_SEPARATOR . "\n" .
- tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
- }
- $email_order2 .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
- EMAIL_SEPARATOR . "\n" .
- tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
- if (is_object($$payment)) {
- $email_order2 .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_type'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_owner'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_number'] . "\n" .
- EMAIL_SEPARATOR . "\n" .
- $order->info['cc_expires'] . "\n" .
- EMAIL_SEPARATOR . "\n"; ;
- $payment_class = $$payment;
- $email_order2 .= $payment_class->title . "\n\n";
- if ($payment_class->email_footer) {
- $email_order2 .= $payment_class->email_footer . "\n\n";
- }
- }
- //-------------------------------------------
and then change the variable $email_order to $email_order2 in:
Code: [ Select ]
// 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 (SEND_EXTRA_ORDER_EMAILS_TO != '') {
tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}
- // 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);
- }
Just in case you have a different copy of checkout_process.php you want to insert the new code just after:
Code: [ Select ]
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
the added code just creates an identical email between the first and second sendings with the extra credit info.
Free Programming Resources
- ATNO/TW
- Super Moderator


- Joined: May 28, 2003
- Posts: 23407
- Loc: Woodbridge VA
- Status: Offline
Wow...I actually understand that! *lol
For what it's worth, I spoke with RichB briefly about it in PM and he thinks he has the solution so I'll wait for his post and go from there. Thanks so much.
It would have been much easier, if they had a payment gateway they wanted to use, but I'm stuck doing it this way for the moment.
For what it's worth, I spoke with RichB briefly about it in PM and he thinks he has the solution so I'll wait for his post and go from there. Thanks so much.
It would have been much easier, if they had a payment gateway they wanted to use, but I'm stuck doing it this way for the moment.
"There's no place like 127.0.0.1 except for ::1."
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
Alexandria Networks. Leader in IT consulting for associations/non-profits, and small to medium sized businesses around the northern Virginia and Washington D.C. metro area.
- Anonymous
- Bot


- Joined: 25 Feb 2008
- Posts: ?
- Loc: Ozzuland
- Status: Online
December 5th, 2003, 4:33 pm
1, 2
To Reply to this topic you need to LOGIN or REGISTER. It is free.
Post Information
- Total Posts in this topic: 24 posts
- Users browsing this forum: No registered users and 152 guests
- You cannot post new topics in this forum
- You cannot reply to topics in this forum
- You cannot edit your posts in this forum
- You cannot delete your posts in this forum
- You cannot post attachments in this forum
