Jump to content
chris23

[CONTRIBUTION] PDF Customer Invoice

Recommended Posts

There is some very weird behaviour going on with the attachement e.g.

 

Some users only get a PDF attachment if "Send HTML mails" is set to false.

 

I have tried the following and ALWAYS get the PDF attached correctly:

 

1. Using UNIX and Exim as mail transport agent. Win 32 test server using ISPs SMTP server. Both HTML mail on and off

 

2. Clients tested - Thunderbird 2.0.0.12, Outlook 2003 and Outlook Express, GMail and Yahoo Mail. All on XP SP2.

 

To get this fixed, I'm going to need help from all those getting attachment failure

 

1. MTAs used

2. Server OS used

3. Desktop OS used

4. Email client(s) used

5. Whether oSC "Send HTML email" set true / false and whether this makes any difference.

 

Mail headers and message source are useful but please obfuscate your email addresses!

 

HTH

 

Finally got this installed, and want say first THANKS! Long needed feature is finally real.

 

Then, the weird problem. I have problems also when sending order confirmation with attached invoice.

I have now tested this in two different environments, Windows and Linux.

 

On Windows I have WAMP2 installed and everything works perfectly.

 

1. Win 32 test server using ISPs SMTP server

2. Windows XP, Apache PHP 2.2.8 and PHP 5.2.5, osCommerce 2.2-MS2

3. Windows XP Pro

4. Thunderbird 2.0.0.12 and webmail Horde

5. Html set true: no problem / Html set false: no problem

 

Then I have production environment on Linux

 

1. The standart osC mail agent: sendmail

2. Linux, Apache version 1.3.37 (Unix), 2.2.8 and PHP 4.4.3, osCommerce 2.2-MS2

3. Windows XP Pro

4. Thunderbird 2.0.0.12 and webmail Horde

5. Html set true: attachment is there, but no text

Html set false: no problems

 

I will keep HTML set to false to enable customers get email correctly.

Have to say, this is one very weird problem! :)

Share this post


Link to post
Share on other sites
Chris maybe you can help me :blush:

 

kristoz, please check catalog/checkout_process.php, have you done changes there correctly?

 

From readme.txt install instructions:

 

FIND:

 

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

 

REPLACE WITH:

 

// BEGIN added for pdfinvoice email attachment:

 

if (PDF_INVOICE_EMAIL_ATTACHMENT == 'true') {

// customers will be logged in so usual security checks of pdfinvoice.php will be met. All we do is set the order_id for pdfinvoice.php to pick up

$HTTP_GET_VARS['order_id'] = $insert_id;

// set stream mode

$stream = true;

// include pdfinvoice.php

include_once(FILENAME_CUSTOMER_PDF);

// add text to email informing customer a pdf invoice copy has been attached:

$email_order .= PDF_INVOICE_ATTACHED ."\n\n";

// send email with pdf invoice attached. Check to make sure pdfinvoice.php returns some data, else send standard email

// note $order object reinstantiated by inclusion of pdfinvoice.php hence customer['name']

if (tep_not_null($pdf_data)) {

tep_mail_string_attachment($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, $pdf_data, $file_name);

} else {

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

}

} else {

// send vanilla e-mail - if email attachment option is false

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

}

 

// END added for pdfinvoice email attachment:

Share this post


Link to post
Share on other sites

I think I found the problem, but don't know how to do it...

 

catalog/checkout_process.php it looking like this

 

<?php
/*
 $Id: checkout_process.php,v 1.1.1.2 2004/03/04 23:37:57 ccwjr 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');

 $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
 $client = gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]);
 $str = preg_split("/\./", $client);
 $i = count($str);
 $x = $i - 1;
 $n = $i - 2;
 $isp = $str[$n] . "." . $str[$x];

// 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);

 // RCI code start
 echo $cre_RCI->get('checkoutprocess', 'check');
 // RCI code eof  

// load selected payment module
 require(DIR_WS_CLASSES . 'payment.php');
 if ($credit_covers) $payment=''; //ICW added for CREDIT CLASS
 $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;

if(!class_exists('order_total')) {
include(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.
// Authorize.net/QuickCommerce/PlugnPlay processing - this called moved to a later point
// This is maintained for compatiblity with all other modules
if( ((MODULE_PAYMENT_AUTHORIZENET_STATUS == 'True') && ($payment == 'authorizenet') ) ||
  ((MODULE_PAYMENT_CREMERCHANT_AUTHORIZENET_STATUS == 'True') && ($payment == 'CREMerchant_authorizenet') ) ||  
  ((MODULE_PAYMENT_QUICKCOMMERCE_STATUS =='True') && ($payment == 'quickcommerce') ) ||
  ((MODULE_PAYMENT_PLUGNPAY_STATUS =='True')  && ($payment == 'plugnpay')) ){
//don't load before process
 } elseif((MODULE_PAYMENT_PAYPAL_STATUS == 'True') && ($payment == 'paypal')) {
$payment_modules->before_process();
include(DIR_WS_MODULES . 'payment/paypal/catalog/checkout_process.inc.php');
 } else {
$payment_modules->before_process();
 }

 if ( (PAYMENT_CC_CRYPT == 'True' ) && !empty($order->info['cc_number']) ){
  $cc_number1 = cc_encrypt($order->info['cc_number']);
  $cc_expires1 = cc_encrypt($order->info['cc_expires']);
 }else{
  $cc_number1 =$order->info['cc_number'];
  $cc_expires1 =$order->info['cc_expires'];
 }

// BOF: WebMakers.com Added: Downloads Controller
 $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'],
					  'payment_info' => $GLOBALS['payment_info'],
					  'cc_type' => $order->info['cc_type'],
					  'cc_owner' => $order->info['cc_owner'],
					  'cc_number' => $cc_number1,
					  'cc_ccv' => '',
					  'cc_start' => $order->info['cc_start'],
					  'cc_issue' => $order->info['cc_issue'],
					  'cc_expires' => $cc_expires1,
					  'date_purchased' => 'now()',
					  'last_modified' => 'now()',
					  'orders_status' => $order->info['order_status'],
					  'currency' => $order->info['currency'],
					  'currency_value' => $order->info['currency_value'],
					  'ipaddy' => $ip,
					  'ipisp' => $isp);

// EOF: WebMakers.com Added: Downloads Controller
 tep_db_perform(TABLE_ORDERS, $sql_data_array);
 $insert_id = tep_db_insert_id();

 // RCI code start
 echo $cre_RCI->get('checkoutprocess', 'logic', false);
 // RCI code eof

// Make sure the /catalog/includes/class/order.php is included
// and $order object is created before this!!!
// load the before_process function from the payment modules

//************
 if( defined(MODULE_PAYMENT_AUTHORIZENET_STATUS) && (MODULE_PAYMENT_AUTHORIZENET_STATUS == 'True') && ($payment == 'authorizenet') ) {
include(DIR_WS_MODULES . 'authorizenet_direct.php');
$payment_modules->before_process();
 }

 // CREMerchant_authorizenet
 if( defined(MODULE_PAYMENT_CREMERCHANT_AUTHORIZENET_STATUS) && (MODULE_PAYMENT_CREMERCHANT_AUTHORIZENET_STATUS == 'True') && ($payment == 'CREMerchant_authorizenet') ) {
include(DIR_WS_MODULES . 'CREMerchant_authorizenet_direct.php'); 
$payment_modules->before_process();
 }  
//************************************************************

//quickcommerce
if(defined(MODULE_PAYMENT_QUICKCOMMERCE_STATUS) && (MODULE_PAYMENT_QUICKCOMMERCE_STATUS =='True') && ($payment == 'quickcommerce')) {
include(DIR_WS_MODULES . 'quickcommerce_direct.php');
$payment_modules->before_process();
 }
//***********************************
 if(defined(MODULE_PAYMENT_PLUGNPAY_STATUS) && (MODULE_PAYMENT_PLUGNPAY_STATUS =='True')  && ($payment == 'plugnpay')) {
include(DIR_WS_MODULES . 'plugnpay_api.php');
$payment_modules->before_process();
 }


//insert order total

 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') {
  $downloadable_product = false;
  if (DOWNLOAD_ENABLED == 'true') {
	// see if this product actually has a downloadable file in the attributes
	$download_check_query_raw = "SELECT products_quantity, pad.products_attributes_filename
						FROM " . TABLE_PRODUCTS . " p,
						" . TABLE_PRODUCTS_ATTRIBUTES . " pa,
						" . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
						 WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'
						 and p.products_id=pa.products_id
						 and pad.products_attributes_id=pa.products_attributes_id ";

	$download_check_query = tep_db_query($download_check_query_raw);
	if (tep_db_num_rows($download_check_query) > 0) {
	  $downloadable_product = true;
	}
  }  // end of downloadable product check
  if ( !$downloadable_product ) {
	$stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
	$stock_values = tep_db_fetch_array($stock_query);
	$stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
	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') ) {
	  $products_id_tmp = tep_get_prid($order->products[$i]['id']);
	  //Check to see if product is a sub product
	  $products_id_query = tep_subproducts_parent($products_id_tmp);
	  if($products_id_query !== false) {
		// get all sub product id's
		$qty_check_query_raw = tep_db_query("SELECT p.products_id, p.products_quantity
											 FROM " . TABLE_PRODUCTS . " p
											 WHERE p.products_parent_id = '" . $products_id_query . "'");
		$parent_quantity = 0;
		while ($qty_check_query = tep_db_fetch_array($qty_check_query_raw)) {
		  $parent_quantity += $qty_check_query['products_quantity'];  // add up all the sub products quantity to get the parent value
		}
		// if product is a sub and all other subs are zero qty, set parent to out of stock
		if ($parent_quantity > 0){
		  tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = " . $parent_quantity . " where products_id = '" . $products_id_query . "'");
		} else {
		  tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = " . $parent_quantity . ", products_status = '0' where products_id = '" . $products_id_query . "'");
		}
	  } else {
		tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . $products_id_tmp . "'");
	  }
	}
  }
}

// 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();
$order_total_modules->update_credit_account($i);//ICW ADDED FOR CREDIT CLASS SYSTEM

//------insert customer choosen option to order--------
$products_ordered_attributes = '';
if (isset($order->products[$i]['attributes'])) {
  for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {

	$sql_data_array = array('orders_id' => $insert_id,
							'orders_products_id' => $order_products_id,
							'products_options' => $order->products[$i]['attributes'][$j]['option'],
							'products_options_values' => $order->products[$i]['attributes'][$j]['value'],
							'options_values_price' => $order->products[$i]['attributes'][$j]['price'],
							'price_prefix' => $order->products[$i]['attributes'][$j]['prefix'],
							'products_options_id' => $order->products[$i]['attributes'][$j]['option_id'],
							'products_options_values_id' => $order->products[$i]['attributes'][$j]['value_id']);
	tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

	if (DOWNLOAD_ENABLED == 'true') {
	  $attributes_query = "select pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
					   from " . TABLE_PRODUCTS_ATTRIBUTES . " pa,
							" . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
						  where pa.products_id = '" . $order->products[$i]['id'] . "'
							and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
							and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
							and pa.products_attributes_id = pad.products_attributes_id";
	  $attributes = tep_db_query($attributes_query);

	  $attributes_values = tep_db_fetch_array($attributes);

	  if ( 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" . $order->products[$i]['attributes'][$j]['option'] . ' ' . $order->products[$i]['attributes'][$j]['value'];
  }
}
//------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 ' . tep_db_decoder($order->products[$i]['name']) . '  = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
 }
$order_total_modules->apply_credit();//ICW ADDED FOR CREDIT CLASS SYSTEM
// lets start with the email confirmation

 // Include OSC-AFFILIATE - only if there is a affiliate_ref id available
 if (tep_session_is_registered('affiliate_ref')) {
require(DIR_WS_INCLUDES . 'affiliate_checkout_process.php');
 }

 if (!tep_session_is_registered('noaccount'))
{
$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";
}else{
$email_order = STORE_NAME . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
}

// EOF: daithik change for PWA

 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";
}
 }

 // BEGIN added for pdfinvoice email attachment:

if (PDF_INVOICE_EMAIL_ATTACHMENT == 'true') {
	// customers will be logged in so usual security checks of pdfinvoice.php will be met. All we do is set the order_id for pdfinvoice.php to pick up
	$HTTP_GET_VARS['order_id'] = $insert_id;
	// set stream mode
	$stream = true;
	// include pdfinvoice.php
	include_once(FILENAME_CUSTOMER_PDF);
	// add text to email informing customer a pdf invoice copy has been attached:
	$email_order .= PDF_INVOICE_ATTACHED ."\n\n";
	// send email with pdf invoice attached. Check to make sure pdfinvoice.php returns some data, else send standard email
	// note $order object reinstantiated by inclusion of pdfinvoice.php hence customer['name']
	if (tep_not_null($pdf_data)) {
		tep_mail_string_attachment($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, $pdf_data, $file_name);
	} else {
		tep_mail($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
	}
} else {
	// send vanilla e-mail - if email attachment option is false
	tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

// END added for pdfinvoice email attachment:


// 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();

// AFSv1.0 - record the customers order and ip address info for fraud screening process

$ip = $REMOTE_ADDR;
$proxy = $HTTP_X_FORWARDED_FOR;
if($proxy != ''){ $ip = $proxy; }
$sql_data_array = array( 'order_id' => $insert_id,
'ip_address' => $ip);

tep_db_perform('algozone_fraud_queries', $sql_data_array);

// End AFSv1.0
 $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');
 // RCI code start
 echo $cre_RCI->get('checkoutprocess', 'unregister', false);
 // RCI code eof

 if(tep_session_is_registered('credit_covers')) tep_session_unregister('credit_covers');
 $order_total_modules->clear_posts();//ICW ADDED FOR CREDIT CLASS SYSTEM
// BOF: Lango added for print order mod
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, 'order_id='. $insert_id, 'SSL'));
// EOF: Lango added for print order mod
 require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

 

But is this code wrong?

 

// 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);
 }

 

How can help me please... :blush:

Share this post


Link to post
Share on other sites
But is this code wrong?

 

// 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);
 }

 

No this code is correct. All this does is send an extra e-mail to the store owner if you have set your store up to do this in configuration


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites
I will keep HTML set to false to enable customers get email correctly.

Have to say, this is one very weird problem! :)

 

Thanks for the helpful post Toni. You have an almost identical setup to mine, both local and remote.

I'd love to know what's causing the "html enabled" to cause the attachment to fail.

 

Can you tell me what carriage return you have set under e-mail options (I'm using LF not LF/CR on both servers)?

 

Rgds

 

Chris


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites

Hi Chris,

 

Thanks for creating this mod which I think makes things look far more pleasing.

 

Wonder if you could point me in the right direction. I loaded the mod on to an unaltered 2.2RC2a version and all seems to go well except I keep getting the following show up on the invoice output.

 

Order number: 1 Date of Order: 04/18/2008 Payment Method: Cash on Delivery

PDF_INV_CUSTOMER_REF2

 

I maybe acting like a muppet but I just can't find the problem. Any thoughts or help would be most appreciated.

 

Thanks in advance

 

John

Share this post


Link to post
Share on other sites

Hello Chris!

 

First of all let me thank you for this marvelous contribution!

 

I'm currently making a website with osCommerce 2.2 RC1 and I'm trying to integrate PDF Invoice Attachment with Ultimate Html Emails v1.2. However, as you already know there is currently a bug which either allows only HTML e-mails to flow or allow the PDF attachment to be sent, but not both.

 

I've already tested all possible outcomes in the file: checkout_process.php and the problem does not rely on the code as it in that file, but simply in the fact that the system cannot handle the HTML code of the e-mail and also process the PDF file to be transcoded and then sent as an attachment, both of them at the same time.

 

Somehow when you send HTML code through the function "tep_mail_string_attachment" in the parameter "$email_order" it all messes up and it just cannot process it which results in 1) Not processing the body of the e-mail and 2) Not processign the PDF attachment.

 

I currently have "send PDFs as attachment" turned off and HTML turned on. And by that way I can send nice pretty e-mails :rolleyes: but when I turn both on it ends up giving me a completely blank e-mail with just a single attachment called "noname" and with no extension on it :blink:

 

Well, hope this helps a little bit in something, might not help a thing but thought it was worst not saying a thing :lol: after all the tests I made

 

Again, thanks for this fantastic contribution! Keep it going!

 

Juan

Share this post


Link to post
Share on other sites
Thanks for the helpful post Toni. You have an almost identical setup to mine, both local and remote.

I'd love to know what's causing the "html enabled" to cause the attachment to fail.

 

Can you tell me what carriage return you have set under e-mail options (I'm using LF not LF/CR on both servers)?

 

Rgds

 

Chris

 

My email linefeeds are set to LF in both servers.

 

I wonder why LF work in Windows server, but not in *nix?

Share this post


Link to post
Share on other sites

Hi, this contribution is not working for me currectly.

 

the PDF attachment is not working. the content is encoded. Could you please help me??? it is very urgent for me. From last 5 days i am struggling with the code.

 

thanks..

sura

 

Support for PDF Customer Invoice contribution

 

This contribution will add a link to a customer's order history detail page (account_history_info.php). When clicked, this link

will generate a PDF copy invoice for the order.

This contribution is based on PDF Invoice (http://www.oscommerce.com/community/contributions,3027)

Apart from recoding PDF Invoice to work client side, I have added the following features, configurable from within admin:

 

1. Font can be chosen - arial, times, courier, helvetica.

2. Colours for the invoice elements can be chosen. Hex values supplied are automatically converted to RGB as needed by FPDF so you can easily

match up your stylesheet.css colours to the invoice colours for a consistent look.

3. An optional watermark (text of your choice e.g. "Copy Invoice") can be added to the invoice.

4. An optional VAT tax reference can be added to the invoice.

5. Choice of displaying generated PDF inline or by forcing a download - set within admin configuration.

6. PDF Metadata (Store owner, Invoice number etc) is automatically added to the PDF.

7. Choice of store logos - png, gif, jpg.

8. Custom footer splash (marketing text) can be added.

9. Store logo size can be easily 'tweaked'.

 

The invoice will also display product attributes, if applicable (something which is missing from PDF Invoice)

 

Download contribution at http://www.oscommerce.com/community/contributions,5321

Share this post


Link to post
Share on other sites

Hi, this contribution is not working for me correctly.

 

the PDF attachment is not working . the content is encoded showing in mail. Could you please help me??? it is very urgent for me. From last 5 days i am struggling with the code.

 

thanks..

sura :rolleyes:

 

kristoz, please check catalog/checkout_process.php, have you done changes there correctly?

 

From readme.txt install instructions:

Share this post


Link to post
Share on other sites
the PDF attachment is not working . the content is encoded showing in mail. Could you please help me??? it is very urgent for me. From last 5 days i am struggling with the code.

 

Have you tried setting "HTML emails" to false?

 

Chris


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites
Order number: 1 Date of Order: 04/18/2008 Payment Method: Cash on Delivery

PDF_INV_CUSTOMER_REF2

 

I maybe acting like a muppet but I just can't find the problem. Any thoughts or help would be most appreciated.

 

John,

 

You should have:

 

define ('PDF_INV_CUSTOMER_REF','Customer reference: ');

 

in

 

includes/languages/english/pdfinvoice.php

 

Pls check your copy to see you have this defined

 

HTH

 

Chris


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites

Yes in my cofiguration

 

Use MIME HTML When Sending Emails false

 

and i am getting like this...in my gmail account. so you suggest me something please

thanks.

 

 

--=_d8be9672b8e44d07cb09474a075195b0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Online Quote System ------------------------------------------------------ Order Number: 146 Detailed Invoice: http://projects.enfinet.com/online_quote/a...hp?order_id=146 Date Ordered: Tuesday 29 April, 2008 Products ------------------------------------------------------ 1 x MCT0141-25-49 (Subscription Key (electronic with ESD media)) = £48.00 ------------------------------------------------------ Sub-Total: £48.00 Total: £48.00 Delivery Address ------------------------------------------------------ , Billing Address ------------------------------------------------------ , PDF_INVOICE_ATTACHED --=_d8be9672b8e44d07cb09474a075195b0 Content-Type: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="online_quote_system_invoice_146.pdf" JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy IDAgUgovQW5ub3RzIFs8PC9UeXBlIC9Bbm5vdCAvU3VidHlwZSAvTGluayAvUmVjdCBbMTkuODQg ODEzLjU0IDE4Ny44OCA3NzAuMjNdIC9Cb3JkZXIgWzAgMCAwXSAvQSA8PC9TIC9VUkkgL1VSSSAo aW5kZXgucGhwKT4+Pj5dCi9Db250ZW50cyA0IDAgUj4+CmVuZG9iago0IDAgb2JqCjw8L0ZpbHRl ciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMTc5Pj4Kc3RyZWFtCnicjVfbcuM2DH33V2CmL+3Mmsu7 yDx1cmu3bba5OA991NqK40a2ZmWl23xPf7TgRRJl2comGScggQMQxAERDr/NKFEZfJt9BaYNoRIo fktBBANmiZGQZZRwAcstfPzE4LKCu9n5Aj5e4z4llMLiCa4WYYmD7Ve+gtumsAbcY1YRZcFQxGKw WMGPn3ZNUefLZvNPAZ9WRb6HP5rVT7D4G23RxTHrzKK19daPu00DfC7gokCcXV6/wX2Vv2dvKBGZ t7/aPW2KcgVXnwVkj9fv2GEGpOr8Fiv4fbNbr6ptb9ZmhJ04vxTWuc6UJFx7pLvHPxdXBwB8kNKj AEK7O/EAr1VT/AD71zpnLP8yZ1KfOEZr6+5TeFu4zJsCzoDbOZVzTqkZHyWJBNOOf6ef97+0dUOJ VQLSz3o945xoAxk1RGvYzrjWROpWLlG2Pq9B5hknDK+BasJ4L3FiLSxhFheUxNQpZ9zKzKsHKCUM UQaioyg5Yx9IlMsZZkCpVmQZoazFaQXvBA2DHKMoO9GHGFDa6NOjouH5u1cp0KEBbRSxxt/Gojo7 dXOKCAUaT6xlZM0T3vryGcrN1lXitJ0WhAcX95vlc16v4DlflW8wbaUEsaFMVnlZvk0rY8KU6ZXZ tLZQhHOvvXxtmnz58gGkVJh1JacNuSImMLeqN/t9/gHOi3K9ed2eMIs5prYl7tVNvimn06xshvXr tV+qqnTE+nm9RTOyrKb9KIO/qLe8zv89A//FKMMfSq2Rpw4XrbGEs9AUbp+rXYH21mhmqMhUQukp ErKAORPYgAzriaeUSohWomxIxltZaea6UazqTmqJFxc64nWyJ0yEilyKjnrixUg65gnnsmOicC5l C9VJLfniQse+TtZB3SSUGx7ZE/BoS4ptzfSkjJSnjGQCsMAUg3lYqws4h8FNceEuWOIDFDvoXZMQ Q3KieIuUaaLkaaRQawnSbV2tXpcNXFSroodkDJ9g20XHsAPQ06CMaUesMeq+RxTcN5yIqDTR9jSg wNLEhzoBvCzysqjhtt4skzCFCQ02gLoBQkyAGp/kBHRRNXAcWMrMMf77opXKEjYA9vPBw/1tD6io dFz5PkCFG0IfRjrAO9LlA5o00hFjG58UqTMnlvAAB/uhaqLo9gcL3f7IPiwc2R9WrHa3LTPRdlw2 il0noYdy62OPcuL8QCOWUxL+cKXXGGO0JxhrHK3qTBIZznCPs9eveQOfi+ZbVb/ATb7L18UWZ0C4 wXovC5gDg7+KvMY/uJpLC64S9kAITF5dXMr6lfcu42B/mJ5jCRundIB5TOFY48BksJCMm4sFZZLN /TlHPJ+4hpFGIHF6lYOVXmOM0V3lSGNIffyPQos0+v/wJZB01EmmXB5oxBaREmiw0muMMToOjTSG OQ9NYyLs910easRGlIQ9XOk1xhht2GONYdha+cpKwpbu4Rt1wwmXI43w+qdhD1Z6jTFGF/ZIY9h1 cZZ2j87psIenxHnNdX2kkQ3T8cPrlzk26rw8g0PLI//VHIBxN4tJnrWD5gkgnLgoh/QTx7A4Sghi uqlqTt3s7Z+Wtrsks8f/9flgVAplbmRzdHJlYW0KZW5kb2JqCjEgMCBvYmoKPDwvVHlwZSAvUGFn ZXMKL0tpZHMgWzMgMCBSIF0KL0NvdW50IDEKL01lZGlhQm94IFswIDAgNTk1LjI4IDg0MS44OV0K Pj4KZW5kb2JqCjUgMCBvYmoKPDwvVHlwZSAvRm9udAovQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xk Ci9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKNiAw IG9iago8PC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvSGVsdmV0aWNhCi9TdWJ0eXBlIC9UeXBlMQov RW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKNyAwIG9iago8PC9UeXBlIC9YT2Jq ZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNzQxCi9IZWlnaHQgMTkxCi9Db2xvclNwYWNlIFsv SW5kZXhlZCAvRGV2aWNlUkdCIDI1NCA4IDAgUl0KL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVy IC9GbGF0ZURlY29kZQovRGVjb2RlUGFybXMgPDwvUHJlZGljdG9yIDE1IC9Db2xvcnMgMSAvQml0 c1BlckNvbXBvbmVudCA4IC9Db2x1bW5zIDc0MT4+Ci9NYXNrIFswIDAgXQovTGVuZ3RoIDE3NTcx Pj4Kc3RyZWFtCnic7X0NfBTneafQaj+0u2AhbJAQ4OAgZOP0M3UMJ/v8wTo6kqY5HG9yGMLNORfb SakyGNuBsyque9TEKaRKiE0dsMdxiMgK2Y57zS7J4OiuhyKUTkVrVyabRDkVybXBlX0hnu9Z/+59 3ndmdnY1XytE5Y/5J5bQ7jsz78w8887zfz5raqbj7UevXdXYuHjFtR9+2+bbAO9XvP32h9fe8xKX OvjYo2+/ByRj6aKGBUVlQWPzXE8kwDsKd3+563snz3LZ3kduneupXDwWxUS5qMhyLPb6XE8lwDsI 93z183eeyvZoKjtEz/VcLhp1sURRR7x2ricT4J2Dh472doz0bMqzgyOsMNeTuUgsEpViCY1zPZ0A 7xSoAkNpmpZfp6Hf6qG5ns7FIVwsyqIoygr6IRVDcz2dAO8QrFUFzYLtN871hC4GrXVSMqkoSrKI fiSk6DVzPaEA7wzcowoD+7R9A0jC0W/t2BfnekIXg+V1YhypLLIMynlSFlfN9YQCvDOwlZ/M0/T+ fEGjETT2O3M9oYvB0jpJQgIuSTLWy8Wr5npCAd4ZSAkThQMdI4VTXMd9Bzq4/iNzPaGLwYVw0Qpx 9VxPKMA7AyldL+dS8DOVeXKuJ3QxaAP2KRVFspQH7DOAjrVqmkHizbPoh6Bq7PNzPaGLgox0ckQ9 k0hrSSal6FxPJ8A7BerJMU3b132AYu/bJLDfn+vpXBxaw5JuMJeT8jtiKQ9F5noG710c5R/xO/Sl k0hlGejqZPgsTat3X8pZ/RugAdZygCLFz8/1ZBCK4boVcz2H9ypyLEv5Hvz9QUGYyHUJ2uTxjicu 3Zz+jdAQkgjzrH0nCHkoroiBlF8aPM9r2o/9D2dUVeBVFXTzSzenfzs0hQBL5noaGKFoNBRI+aVB F5JyqpoNUjftUFWVuUTTef+iIZ6Qo4GUXxKs/0RunL1jrmcRoKYmgvhBoLFcGuz4GjfJB1I+92iS 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 SZyLP+GDj/g4OOUxR1FOcUbJmORdk4KSUePhrbnlP+IP/w3/euy9e1zH8he/fvRlal9MwhbDJzTz ceTQQvEhfVY2ni6VcWocx3//c+33d0TD8K2DkTsvPTcPHGyve+ntF9++vJB4KsbweeK5jWbOktXz 8aOq2RfWyP6nFJXSQ/N0nlNQEUAZ2TaN4wOCEgKR3L6UyNdePRIjEGhWoKiO/WWj4BVYAjDLKCdp E0EpQejn1y4GkUKYztqUzFlfmpezvB8WHypJmvOhYtQIwx4+qJZ3RAXnFVhl8GTLQrLmE8Exa5zT RRmCDJvPsJ5YCKiGLvXVpak90QeBpK0kayW4cvWpOGqMsBEQ9lph+Gk5z9gPKyv3Ll92ud19BoyD g1ckaSQYnE4m5wy+AgFlcnIqFKIcMTbD4XC0tbV1dHR0dXUVndRET09PoVD4HwPfcI0KZW5kc3Ry ZWFtCmVuZG9iagoyIDAgb2JqCjw8Ci9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdl QyAvSW1hZ2VJXQovRm9udCA8PAovRjEgNSAwIFIKL0YyIDYgMCBSCj4+Ci9YT2JqZWN0IDw8Ci9J MSA3IDAgUgo+Pgo+PgplbmRvYmoKOSAwIG9iago8PAovUHJvZHVjZXIgKEZQREYgMS41MykKL1Rp dGxlIChZb3VyIEludm9pY2UpCi9TdWJqZWN0IChQREYgY29weSBvZiB5b3VyIGludm9pY2UgbnVt YmVyOiAxNDYpCi9BdXRob3IgKFN1cmVuZHJhIFJvdXQpCi9DcmVhdGlvbkRhdGUgKEQ6MjAwODA0 MjkwNTM2MDcpCj4+CmVuZG9iagoxMCAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMSAw IFIKL09wZW5BY3Rpb24gWzMgMCBSIC9GaXRIIG51bGxdCi9QYWdlTGF5b3V0IC9PbmVDb2x1bW4K Pj4KZW5kb2JqCnhyZWYKMCAxMQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDE0NjIgMDAwMDAg biAKMDAwMDAyMDQxNyAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAyMTIgMDAw MDAgbiAKMDAwMDAwMTU0OSAwMDAwMCBuIAowMDAwMDAxNjUwIDAwMDAwIG4gCjAwMDAwMDE3NDYg MDAwMDAgbiAKMDAwMDAxOTU5NCAwMDAwMCBuIAowMDAwMDIwNTQxIDAwMDAwIG4gCjAwMDAwMjA3 MTEgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMQovUm9vdCAxMCAwIFIKL0luZm8gOSAwIFIK Pj4Kc3RhcnR4cmVmCjIwODE1CiUlRU9GCg== --=_d8be9672b8e44d07cb09474a075195b0--

 

 

 

 

 

 

 

Have you tried setting "HTML emails" to false?

 

Chris

Share this post


Link to post
Share on other sites

Hi, I have installed PDF invoice email 1.2 contribution and OsCommerce send me this message when confirm sales:

 

Warning: include_once(FILENAME_CUSTOMER_PDF) [function.include-once]: failed to open stream: No such file or directory in /usr/home/motoresyautomatismos/www/tienda/checkout_process.php on line 295

 

Warning: include_once() [function.include]: Failed opening 'FILENAME_CUSTOMER_PDF' for inclusion (include_path='.:/usr/local/lib/php') in /usr/home/motoresyautomatismos/www/tienda/checkout_process.php on line 295

 

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/motoresyautomatismos/www/tienda/checkout_process.php:295) in /usr/home/motoresyautomatismos/www/tienda/includes/functions/general.php on line 33

 

I have pdfinvoicefile.php in catalog/pdinvoice.php path.

Share this post


Link to post
Share on other sites
Hi, I have installed PDF invoice email 1.2 contribution and OsCommerce send me this message when confirm sales:

 

Warning: include_once(FILENAME_CUSTOMER_PDF) [function.include-once]: failed to open stream: No such file or directory in /usr/home/motoresyautomatismos/www/tienda/checkout_process.php on line 295

 

Warning: include_once() [function.include]: Failed opening 'FILENAME_CUSTOMER_PDF' for inclusion (include_path='.:/usr/local/lib/php') in /usr/home/motoresyautomatismos/www/tienda/checkout_process.php on line 295

 

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/motoresyautomatismos/www/tienda/checkout_process.php:295) in /usr/home/motoresyautomatismos/www/tienda/includes/functions/general.php on line 33

 

I have pdfinvoicefile.php in catalog/pdinvoice.php path.

 

 

Did you put:

 

define('FILENAME_CUSTOMER_PDF','pdfinvoice.php');

 

in catalog/includes/filenames.php?

 

Chris


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites
John,

 

You should have:

 

define ('PDF_INV_CUSTOMER_REF','Customer reference: ');

 

in

 

includes/languages/english/pdfinvoice.php

 

Pls check your copy to see you have this defined

 

HTH

 

Chris

 

Hi Chris,

 

Thanks for the response and the kick in the right direction. All sorted out. I should have figured it out myself. Sorry for being so dim!!

 

Thanks again for your time for producing this great contribution.

 

John

Share this post


Link to post
Share on other sites

newbie here...

 

I just added the module it is excellent but have a major problem now...

Accidentally added sql file 5 times now it is showing PDF INVOICE option 5 times in my configuration... i dont know how to rectify this can you please help me in this.

 

thanks in advance

Mankomal Singh

Share this post


Link to post
Share on other sites

Canada post HTML/XML response causing problems.

 

First off - great contrib. thank you very much.

 

I just installed the PDF invoice admin mod on my modified OSC RC2 store and it works great other than one issue with formating. Canada Post contribution provides a fairly lengthy shipping description, which then overlaps all the 'totals' lines on the invoice. That and the <ACRONYM> tag isn't being processed properly.

 

For example the shipping description looks liek:

 

Canada Post [1 box(es) to be shipped]<br>Medium Box -

7.5(kg) (Expedited, <acronym title='Estimated Delivery

Date'>EDD</acronym>: May 06, 2008):

 

And my questions are:

1. Is it possible to eliminate the acronym tag and everything in between <acronym> and </acronym>

2. How could I trim the input text so it fits into the 25-40 character space

 

Thanks again for the contribution and your help!

 

Cheers

Share this post


Link to post
Share on other sites
newbie here...

 

I just added the module it is excellent but have a major problem now...

Accidentally added sql file 5 times now it is showing PDF INVOICE option 5 times in my configuration... i dont know how to rectify this can you please help me in this.

 

thanks in advance

Mankomal Singh

 

 

You can remove the duplicate entries from the configuration table using phpMyAdmin - but backup your database first


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites

Ivan,

 

I just installed the PDF invoice admin mod on my modified OSC RC2 store and it works great other than one issue with formating. Canada Post contribution provides a fairly lengthy shipping description, which then overlaps all the 'totals' lines on the invoice. That and the <ACRONYM> tag isn't being processed properly.

 

 

If your order totals are returning html tags, these must be stripped out (fpdf doesn't translate html). See post #92 here for details

 

For example the shipping description looks liek:

 

Canada Post [1 box(es) to be shipped]<br>Medium Box -

7.5(kg) (Expedited, <acronym title='Estimated Delivery

Date'>EDD</acronym>: May 06, 2008):

 

 

Your second issue, you could:

 

- First try dropping the font size - this may allow you to get the text in without truncating it.

 

- Increase the cell size of the order total cells, moving the cell left.

 

- If these dont work, you could do a simple str_replace around the order total and take out the word(s) you don't want (e.g. why do you need "[1 box(es) to be shipped]" when [1 box(es)] would do?)

 

HTH

 

Chris


Please use forum for support rather than PM - PMs unrelated to my contributions will be ignored.

Google Site Search is your friend

My contributions: Tracking Module | PDF Customer Invoice | Subcategory textboxes

Share this post


Link to post
Share on other sites

Thank you sir. I used the solution from the referenced post to strip the HTML and expanded the box to fit the full description... No idea why they use such a long description in the first place.

 

Cheers.

 

Ivan,

If your order totals are returning html tags, these must be stripped out (fpdf doesn't translate html). See post #92 here for details

Your second issue, you could:

 

- First try dropping the font size - this may allow you to get the text in without truncating it.

 

- Increase the cell size of the order total cells, moving the cell left.

 

- If these dont work, you could do a simple str_replace around the order total and take out the word(s) you don't want (e.g. why do you need "[1 box(es) to be shipped]" when [1 box(es)] would do?)

 

HTH

 

Chris

Share this post


Link to post
Share on other sites

Firstly Thanks for the great contribute Chris,

 

Secondly i got the same problem with the pdf not attach to email when HTML Email is set to true, for the last 2 days i was looking thru the checkout_process.php cluelessly cos i am noob to php script hee hee.

 

I found out the reason Why it won't attach the pdf, for my case. below is for your ref

 

// lets start with the email confirmation

// START HTML Invoice

if (EMAIL_INVOICE == 'true') {

require(DIR_WS_MODULES . EMAIL_INVOICE_DIR . FILENAME_EMAIL_INVOICE);

} else {

// END HTML Invoice

$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";

}

}

// BEGIN added for pdfinvoice email attachment:

 

if (PDF_INVOICE_EMAIL_ATTACHMENT == 'true') {

// customers will be logged in so usual security checks of pdfinvoice.php will be met. All we do is set the order_id for pdfinvoice.php to pick up

$HTTP_GET_VARS['order_id'] = $insert_id;

// set stream mode

$stream = true;

// include pdfinvoice.php

include_once(FILENAME_CUSTOMER_PDF);

// add text to email informing customer a pdf invoice copy has been attached:

$email_order .= PDF_INVOICE_ATTACHED ."\n\n";

// send email with pdf invoice attached. Check to make sure pdfinvoice.php returns some data, else send standard email

// note $order object reinstantiated by inclusion of pdfinvoice.php hence customer['name']

if (tep_not_null($pdf_data)) {

tep_mail_string_attachment($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, $pdf_data, $file_name);

} else {

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

}

} else {

// send vanilla e-mail - if email attachment option is false

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

}

 

// END added for pdfinvoice email attachment:

 

// 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);

}

// START HTML Invoice

}

// END HTML Invoice

// 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');

// {{ buySAFE Module

tep_session_unregister('WantsBond');

// }}

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

 

require(DIR_WS_INCLUDES . 'application_bottom.php');

?>

 

 

The problem is with

 

// START HTML Invoice

if (EMAIL_INVOICE == 'true') {

require(DIR_WS_MODULES . EMAIL_INVOICE_DIR . FILENAME_EMAIL_INVOICE);

} else {

// END HTML Invoice

 

But still i can't get it to work, only get it in 2 emails. 1 attached pdf, other 1 is the Fancier_invoice_6.2_Fixed_2007 contribute withput pdf

 

Hope you can figure out a way to merge them.

Share this post


Link to post
Share on other sites

Hi,

 

Thanks for this great distribution chris, you did a great job. But I want to be able to manually enter the invoice-number. I do not only have orders generated by my OScommerce site. The dutch IRS requires us however to have sequential ordernumbers, so if an order is cancelled or if I have an order by phone or email, I need to be able to adjust the invoice-number.

 

a) is that possible?

B) how do I do that?

 

TIA

gina

Edited by chemjul2005

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×