Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the pue-sales domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/staging-poc/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the better-click-to-tweet domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/staging-poc/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the pue-amazon domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/staging-poc/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the pue-stats domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/staging-poc/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/staging-poc/public_html/wp-includes/functions.php on line 6114
Adding Company Name to Invoice | Event Espresso - Staging Server

Support

Home Forums Event Espresso Premium Adding Company Name to Invoice

Adding Company Name to Invoice

Posted: March 13, 2014 at 9:58 am

Viewing 9 reply threads


Dan Rositano

March 13, 2014 at 9:58 am

I wanted to add the company name to my invoices using the link here: https://staging.eventespresso.com/topic/invoice-edit-to-add-a-question-company-name/

I followed the instructions but no luck. I will add my code below. Can you tell me if I am missing anything or anything I can try to get it to work?

Thanks

————–

<?php

//Added by Imon
if (isset($_SESSION[‘espresso_session’][‘id’])) {
unset($_SESSION[‘espresso_session’][‘id’]);
}

define(‘FPDF_FONTPATH’, EVENT_ESPRESSO_PLUGINFULLPATH . ‘class/fpdf/font/’);
require_once EVENT_ESPRESSO_PLUGINFULLPATH . ‘class/fpdf/fpdf.php’;

require_once(dirname(__FILE__) . ‘/function.pdf.php’); //Added by Imon

global $espresso_premium;
if ($espresso_premium != true)
return;
global $wpdb, $org_options;

$invoice_payment_settings = get_option(‘event_espresso_invoice_payment_settings’);

//Added by Imon
$multi_reg = false;
$registration_id = espresso_return_reg_id();
$admin = isset($_REQUEST[‘admin’]) ? $_REQUEST[‘admin’] : false;
$registration_ids = array();
$c_sql = “select * from ” . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . ” where registration_id = ‘$registration_id’ “;
//echo $c_sql;
$check = $wpdb->get_row($c_sql);
if ($check !== NULL) {
$registration_id = $check->primary_registration_id;
$registration_ids = $wpdb->get_results(“select registration_id from ” . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . ” where primary_registration_id = ‘$registration_id’ “, ARRAY_A);
$multi_reg = true;
} else {
$registration_ids[] = array(“registration_id” => $registration_id);
}
$attendees = $wpdb->get_results(“SELECT a.*, e.event_name FROM ” . EVENTS_ATTENDEE_TABLE . ” a JOIN ” . EVENTS_DETAIL_TABLE . ” e ON e.id=a.event_id WHERE a.registration_id ='” . $registration_id . “‘ order by a.id LIMIT 0,1 “);

foreach ($attendees as $attendee) {
$attendee_id = $attendee->id;
$attendee_last = html_entity_decode(stripslashes($attendee->lname), ENT_QUOTES, “UTF-8”);
$attendee_first = html_entity_decode(stripslashes($attendee->fname), ENT_QUOTES, “UTF-8”);
$attendee_address = html_entity_decode(stripslashes($attendee->address), ENT_QUOTES, “UTF-8”);
$attendee_address .= isset($attendee->address2) ? “\n” . html_entity_decode(stripslashes($attendee->address2), ENT_QUOTES, “UTF-8″) : ”;
$attendee_city = html_entity_decode(stripslashes($attendee->city), ENT_QUOTES, “UTF-8”);
$attendee_state = html_entity_decode(stripslashes($attendee->state), ENT_QUOTES, “UTF-8”);
$attendee_zip = $attendee->zip;
$attendee_email = $attendee->email;
$attendee_organization_name = $attendee->organization_name;
//$attendee_country = $attendee->country_id;
$phone = $attendee->phone;
$date = $attendee->date;
$num_people = $attendee->quantity;
$payment_status = $attendee->payment_status;
$txn_type = $attendee->txn_type;
$amount_pd = $attendee->amount_pd;
$payment_date = $attendee->payment_date;
$event_id = $attendee->event_id;
$event_name = html_entity_decode(stripslashes($attendee->event_name), ENT_QUOTES, “UTF-8”);
//$attendee_session = $attendee->attendee_session;
//$registration_id=$attendee->registration_id;
}

#$num_people = isset($num_people) && $num_people > 0 ? $num_people : espresso_count_attendees_for_registration($attendee_id);
#$event_meta = event_espresso_get_event_meta($event_id);
// $event_data[‘additional_attendee_reg_info’]
//if ($payment_status != ‘Completed’) {
// $payment_status = ‘Pending’;
// $txn_type = ‘INV’;
// $payment_date = date(‘Y-m-d-H:i:s’);

//Added by Imon
// if (count($registration_ids) > 0 && $admin == false) {
// foreach ($registration_ids as $reg_id) {
// $sql = “UPDATE ” . EVENTS_ATTENDEE_TABLE . ” SET payment_status = ‘” . $payment_status . “‘, txn_type = ‘” . $txn_type . “‘, payment_date ='” . $payment_date . “‘ WHERE registration_id ='” . $reg_id[‘registration_id’] . “‘ AND txn_type =” “;
// $wpdb->query($sql);
// }
// }
//}
//Query Database for event and get variable
/* $events = $wpdb->get_results(“SELECT * FROM ” . EVENTS_DETAIL_TABLE . ” WHERE id='” . $event_id . “‘”);
foreach ($events as $event){
//$event_id = $event->id;
$event_name = html_entity_decode(stripslashes($event->event_name),ENT_QUOTES,”UTF-8″);
$event_desc = $event->event_desc;
$event_description = $event->event_desc;
$event_identifier = $event->event_identifier;
$start_date = $event->start_date;
} */
//This is an example of how to get custom questions for an attendee
//Get the questions for the attendee
$q_sql = “SELECT ea.answer, eq.question
FROM ” . EVENTS_ANSWER_TABLE . ” ea
LEFT JOIN ” . EVENTS_QUESTION_TABLE . ” eq ON eq.id = ea.question_id
WHERE ea.registration_id = ‘”.$registration_id.”‘”;
$q_sql .= ” AND ea.question_id = ‘9’ “;
$q_sql .= ” ORDER BY eq.sequence asc “;
$wpdb->get_results($q_sql);

$organization_name = $wpdb->last_result[0]->answer;//question_id = ‘9’

//Instanciation of inherited class
$pdf = new Espresso_PDF();
$pdf->AliasNbPages();
$pdf->SetAuthor(pdftext($org_options[‘organization’]));
if (isset($invoice_payment_settings[‘pdf_title’])) {
$pdf->SetTitle(pdftext($event_name . ‘ – ‘ . $invoice_payment_settings[‘pdf_title’]));
} else {
$pdf->SetTitle(pdftext($event_name));
}

//$pdf->SetAutoPageBreak(‘auto’);
$pdf->AddPage();
//Create the top right of invoice below header
$pdf->SetFont(‘Times’, ”, 12);
$pdf->Cell(180, 0, __(‘Date: ‘, ‘event_espresso’) . date(get_option(‘date_format’)), 0, 1, ‘R’); //Set invoice date
$pdf->Cell(180, 10, __(‘Primary Attendee ID: ‘, ‘event_espresso’) . $attendee_id, 0, 0, ‘R’); //Set Invoice number
$pdf->Ln(0);

//Set the top left of invoice below header
$pdf->SetFont(‘Times’, ‘BI’, 14);
if (isset($invoice_payment_settings[‘payable_to’])) {
$pdf->MultiCell(0, 10, pdftext($invoice_payment_settings[‘payable_to’]), 0, ‘L’); //Set payable to
} else {
$pdf->MultiCell(0, 10, pdftext(”), 0, ‘L’); //Set payable to
}
$pdf->SetFont(‘Times’, ”, 12);
if (isset($invoice_payment_settings[‘payment_address’])) {
$pdf->MultiCell(50, 5, pdftext($invoice_payment_settings[‘payment_address’]), 0, ‘L’); //Set address
} else {
$pdf->MultiCell(50, 5, pdftext(”), 0, ‘L’); //Set address
}
$pdf->Ln(5);

//Set the biiling information
$pdf->SetFont(‘Times’, ‘B’, 12);
$pdf->Cell(50, 5, __(‘Bill To: ‘, ‘event_espresso’), 0, 1, ‘L’); //Set biil to
$pdf->SetFont(‘Times’, ”, 12);
$pdf->Cell(50, 5, pdftext($attendee_first . ‘ ‘ . $attendee_last), 0, 1, ‘L’); //Set attendee name
$pdf->Cell(50, 5, $attendee_email, 0, 1, ‘L’); //Set attendee email
$pdf->Cell(50, 5, $organization_name, 0, 1, ‘L’); //Set attendee email
//Set attendee address
$attendee_address != ” ? $pdf->Cell(100, 5, $attendee_address, 0, 1, ‘L’) : ”;
$pdf->Cell(100, 5, (pdftext($attendee_city != ” ? $attendee_city : ”) . ($attendee_state != ” ? ‘ ‘ . $attendee_state : ”)), 0, 1, ‘L’);
$attendee_zip != ” ? $pdf->Cell(50, 5, $attendee_zip, 0, 1, ‘L’) : ”;

$pdf->Ln(10);

//Added by Imon
$attendees = array();
$total_cost = 0.00;
$total_orig_cost = 0.00;
$total_amount_pd = 0.00;
foreach ($registration_ids as $reg_id) {
$sql = “select ea.registration_id, ed.event_name, ed.start_date, ed.event_identifier, ea.fname, ea.lname, ea.quantity, ea.orig_price, ea.final_price, ea.amount_pd from ” . EVENTS_ATTENDEE_TABLE . ” ea “;
//$sql .= ” inner join ” . EVENTS_ATTENDEE_COST_TABLE . ” eac on ea.id = eac.attendee_id “;
$sql .= ” inner join ” . EVENTS_DETAIL_TABLE . ” ed on ea.event_id = ed.id “;
$sql .= ” where ea.registration_id = ‘” . $reg_id[‘registration_id’] . “‘ order by ed.event_name “;

$tmp_attendees = $wpdb->get_results($sql, ARRAY_A);

foreach ($tmp_attendees as $tmp_attendee) {
$sub_total = $tmp_attendee[“final_price”] * $tmp_attendee[“quantity”];
$orig_total = $tmp_attendee[“orig_price”] * $tmp_attendee[“quantity”];
$attendees[] = $pdf->LoadData(array(
pdftext($tmp_attendee[“event_name”] . “[” . date(‘m-d-Y’, strtotime($tmp_attendee[‘start_date’])) . “]”) . ‘ >> ‘
. pdftext(html_entity_decode($tmp_attendee[“fname”], ENT_QUOTES, “UTF-8″) . ” ” . html_entity_decode($tmp_attendee[“lname”], ENT_QUOTES, “UTF-8”)) . ‘;’
. pdftext($tmp_attendee[“quantity”]) . ‘;’
. doubleval($tmp_attendee[“final_price”]) . ‘;’
. doubleval($sub_total)
)
);
$total_cost += $sub_total;
$total_orig_cost += $orig_total;
$total_amount_pd += $tmp_attendee[“amount_pd”];
$event_identifier = $tmp_attendee[“event_identifier”];
}
}
$header = array(__(‘Event & Attendee’, ‘event_espresso’), __(‘Quantity’, ‘event_espresso’), __(‘Per Unit’, ‘event_espresso’), __(‘Sub total’, ‘event_espresso’));
$w = array(100, 25, 30, 30);
$alling = array(‘L’, ‘L’, ‘C’, ‘C’, ‘C’);
$left = 100 + 25 + 30;
$right = 30;

$pdf->ImprovedTable($header, $attendees, $w, $alling);

$pdf->Ln();
//if ( $total_amount_pd != $total_cost ) {
$pdf->InvoiceTotals(__(‘Total:’, ‘event_espresso’), $total_cost, $left, $right);
$text = __(‘Amount Paid:’, ‘event_espresso’);
$pdf->InvoiceTotals($text, $total_amount_pd, $left, $right);
// $discount = $total_orig_cost – $total_cost;
// if ($discount > 0) {
// $text = __(‘Discount:’, ‘event_espresso’);
// } else {
// $text = __(‘Discount:’, ‘event_espresso’);
// $pdf->InvoiceTotals($text, $discount, $left, $right);
// }
//}
$total_owing = $total_cost – $total_amount_pd;
$text = __(“Total due:”, ‘event_espresso’);
$pdf->InvoiceTotals($text, $total_owing, $left, $right);
$pdf->Ln(10);

//Build the payment link and instructions
if (isset($invoice_payment_settings[‘pdf_instructions’])) {
$pdf->MultiCell(100, 5, pdftext($invoice_payment_settings[‘pdf_instructions’]), 0, ‘L’); //Set instructions
} else {
$pdf->MultiCell(100, 5, pdftext(”), 0, ‘L’); //Set instructions
}

//Create a payment link
$payment_link = home_url() . “/?page_id=” . $org_options[‘return_url’] . “&r_id=” . $registration_id;

$pdf->SetFont(‘Arial’, ‘BU’, 20);
$pdf->Cell(200, 20, ‘Pay Online’, 0, 1, ‘C’, 0, $payment_link); //Set payment link

$pdf->Output(‘Invoice_’ . $attendee_id . ‘_’ . $event_identifier . ‘.pdf’, ‘D’);
exit;


Anonymous

March 13, 2014 at 10:24 am

Hi Dan,

Rather than writing your own query, we have a shortcode you can use to pull in specific answers. So within the template you can use:

do_shortcode('[EE_ANSWER q="XX" a="'.$attendee_id.'"]');

Where XX is the ID of the specific question (in your case its appears to be 9?)

Place the answer into a variable and use that.

Does that help?


Dan Rositano

March 13, 2014 at 12:49 pm

Gave this a try but no luck. I replaced this code:

$pdf->Cell(50, 5, $organization_name, 0, 1, ‘L’); //Set attendee email

with the code you gave me and substituted the ID and when I viewed the invoice the Company name still did not come up.


Anonymous

March 14, 2014 at 8:37 am

Hi Dan,

You’ll need that code to actually output the $organisation_name within the PDF.

Where you can use the code I provided is in place of this:

$q_sql = “SELECT ea.answer, eq.question
FROM ” . EVENTS_ANSWER_TABLE . ” ea
LEFT JOIN ” . EVENTS_QUESTION_TABLE . ” eq ON eq.id = ea.question_id
WHERE ea.registration_id = ‘”.$registration_id.”‘”;
$q_sql .= ” AND ea.question_id = ’9? “;
$q_sql .= ” ORDER BY eq.sequence asc “;
$wpdb->get_results($q_sql);
$organization_name = $wpdb->last_result[0]->answer;//question_id = ’9?

You can simply do:

$organization_name = do_shortcode('[EE_ANSWER q="XX" a="'.$attendee_id.'"]');

You’ll then need:

$pdf->Cell(50, 5, $organization_name, 0, 1, ‘L’);

To output that variable to within the PDF.

Where is it you are trying to output the company name?


Dan Rositano

March 14, 2014 at 2:00 pm

Tom,

I am trying to output the company name on the invoice one downloads when using the invoice payment option. Per your directions I made the changes but still not Company name. I am including the code for you to see what I did.

———–

<?php

//Added by Imon
if (isset($_SESSION[‘espresso_session’][‘id’])) {
unset($_SESSION[‘espresso_session’][‘id’]);
}

define(‘FPDF_FONTPATH’, EVENT_ESPRESSO_PLUGINFULLPATH . ‘class/fpdf/font/’);
require_once EVENT_ESPRESSO_PLUGINFULLPATH . ‘class/fpdf/fpdf.php’;

require_once(dirname(__FILE__) . ‘/function.pdf.php’); //Added by Imon

global $espresso_premium;
if ($espresso_premium != true)
return;
global $wpdb, $org_options;

$invoice_payment_settings = get_option(‘event_espresso_invoice_payment_settings’);

//Added by Imon
$multi_reg = false;
$registration_id = espresso_return_reg_id();
$admin = isset($_REQUEST[‘admin’]) ? $_REQUEST[‘admin’] : false;
$registration_ids = array();
$c_sql = “select * from ” . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . ” where registration_id = ‘$registration_id’ “;
//echo $c_sql;
$check = $wpdb->get_row($c_sql);
if ($check !== NULL) {
$registration_id = $check->primary_registration_id;
$registration_ids = $wpdb->get_results(“select registration_id from ” . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . ” where primary_registration_id = ‘$registration_id’ “, ARRAY_A);
$multi_reg = true;
} else {
$registration_ids[] = array(“registration_id” => $registration_id);
}
$attendees = $wpdb->get_results(“SELECT a.*, e.event_name FROM ” . EVENTS_ATTENDEE_TABLE . ” a JOIN ” . EVENTS_DETAIL_TABLE . ” e ON e.id=a.event_id WHERE a.registration_id ='” . $registration_id . “‘ order by a.id LIMIT 0,1 “);

foreach ($attendees as $attendee) {
$attendee_id = $attendee->id;
$attendee_last = html_entity_decode(stripslashes($attendee->lname), ENT_QUOTES, “UTF-8”);
$attendee_first = html_entity_decode(stripslashes($attendee->fname), ENT_QUOTES, “UTF-8”);
$attendee_address = html_entity_decode(stripslashes($attendee->address), ENT_QUOTES, “UTF-8”);
$attendee_address .= isset($attendee->address2) ? “\n” . html_entity_decode(stripslashes($attendee->address2), ENT_QUOTES, “UTF-8″) : ”;
$attendee_city = html_entity_decode(stripslashes($attendee->city), ENT_QUOTES, “UTF-8”);
$attendee_state = html_entity_decode(stripslashes($attendee->state), ENT_QUOTES, “UTF-8”);
$attendee_zip = $attendee->zip;
$attendee_email = $attendee->email;
$attendee_organization_name = $attendee->organization_name;
//$attendee_country = $attendee->country_id;
$phone = $attendee->phone;
$date = $attendee->date;
$num_people = $attendee->quantity;
$payment_status = $attendee->payment_status;
$txn_type = $attendee->txn_type;
$amount_pd = $attendee->amount_pd;
$payment_date = $attendee->payment_date;
$event_id = $attendee->event_id;
$event_name = html_entity_decode(stripslashes($attendee->event_name), ENT_QUOTES, “UTF-8”);
//$attendee_session = $attendee->attendee_session;
//$registration_id=$attendee->registration_id;
}

#$num_people = isset($num_people) && $num_people > 0 ? $num_people : espresso_count_attendees_for_registration($attendee_id);
#$event_meta = event_espresso_get_event_meta($event_id);
// $event_data[‘additional_attendee_reg_info’]
//if ($payment_status != ‘Completed’) {
// $payment_status = ‘Pending’;
// $txn_type = ‘INV’;
// $payment_date = date(‘Y-m-d-H:i:s’);

//Added by Imon
// if (count($registration_ids) > 0 && $admin == false) {
// foreach ($registration_ids as $reg_id) {
// $sql = “UPDATE ” . EVENTS_ATTENDEE_TABLE . ” SET payment_status = ‘” . $payment_status . “‘, txn_type = ‘” . $txn_type . “‘, payment_date ='” . $payment_date . “‘ WHERE registration_id ='” . $reg_id[‘registration_id’] . “‘ AND txn_type =” “;
// $wpdb->query($sql);
// }
// }
//}
//Query Database for event and get variable
/* $events = $wpdb->get_results(“SELECT * FROM ” . EVENTS_DETAIL_TABLE . ” WHERE id='” . $event_id . “‘”);
foreach ($events as $event){
//$event_id = $event->id;
$event_name = html_entity_decode(stripslashes($event->event_name),ENT_QUOTES,”UTF-8″);
$event_desc = $event->event_desc;
$event_description = $event->event_desc;
$event_identifier = $event->event_identifier;
$start_date = $event->start_date;
} */
//This is an example of how to get custom questions for an attendee
//Get the questions for the attendee
/* $q_sql = “SELECT ea.answer, eq.question
FROM ” . EVENTS_ANSWER_TABLE . ” ea
LEFT JOIN ” . EVENTS_QUESTION_TABLE . ” eq ON eq.id = ea.question_id
WHERE ea.registration_id = ‘”.$registration_id.”‘”;
$q_sql .= ” AND ea.question_id = ‘9’ “;
$q_sql .= ” ORDER BY eq.sequence asc “;
$wpdb->get_results($q_sql);*/

$organization_name = $wpdb->last_result[0]->answer;//question_id = ‘9’

$organization_name = do_shortcode(‘[EE_ANSWER q=”9″ a=”‘.$attendee_id.'”]’);

//Instanciation of inherited class
$pdf = new Espresso_PDF();
$pdf->AliasNbPages();
$pdf->SetAuthor(pdftext($org_options[‘organization’]));
if (isset($invoice_payment_settings[‘pdf_title’])) {
$pdf->SetTitle(pdftext($event_name . ‘ – ‘ . $invoice_payment_settings[‘pdf_title’]));
} else {
$pdf->SetTitle(pdftext($event_name));
}

//$pdf->SetAutoPageBreak(‘auto’);
$pdf->AddPage();
//Create the top right of invoice below header
$pdf->SetFont(‘Times’, ”, 12);
$pdf->Cell(180, 0, __(‘Date: ‘, ‘event_espresso’) . date(get_option(‘date_format’)), 0, 1, ‘R’); //Set invoice date
$pdf->Cell(180, 10, __(‘Primary Attendee ID: ‘, ‘event_espresso’) . $attendee_id, 0, 0, ‘R’); //Set Invoice number
$pdf->Ln(0);

//Set the top left of invoice below header
$pdf->SetFont(‘Times’, ‘BI’, 14);
if (isset($invoice_payment_settings[‘payable_to’])) {
$pdf->MultiCell(0, 10, pdftext($invoice_payment_settings[‘payable_to’]), 0, ‘L’); //Set payable to
} else {
$pdf->MultiCell(0, 10, pdftext(”), 0, ‘L’); //Set payable to
}
$pdf->SetFont(‘Times’, ”, 12);
if (isset($invoice_payment_settings[‘payment_address’])) {
$pdf->MultiCell(50, 5, pdftext($invoice_payment_settings[‘payment_address’]), 0, ‘L’); //Set address
} else {
$pdf->MultiCell(50, 5, pdftext(”), 0, ‘L’); //Set address
}
$pdf->Ln(5);

//Set the biiling information
$pdf->SetFont(‘Times’, ‘B’, 12);
$pdf->Cell(50, 5, __(‘Bill To: ‘, ‘event_espresso’), 0, 1, ‘L’); //Set biil to
$pdf->SetFont(‘Times’, ”, 12);
$pdf->Cell(50, 5, pdftext($attendee_first . ‘ ‘ . $attendee_last), 0, 1, ‘L’); //Set attendee name
$pdf->Cell(50, 5, $attendee_email, 0, 1, ‘L’); //Set attendee email
$pdf->Cell(50, 5, $organization_name, 0, 1, ‘L’); //Set attendee email
//Set attendee address
$attendee_address != ” ? $pdf->Cell(100, 5, $attendee_address, 0, 1, ‘L’) : ”;
$pdf->Cell(100, 5, (pdftext($attendee_city != ” ? $attendee_city : ”) . ($attendee_state != ” ? ‘ ‘ . $attendee_state : ”)), 0, 1, ‘L’);
$attendee_zip != ” ? $pdf->Cell(50, 5, $attendee_zip, 0, 1, ‘L’) : ”;

$pdf->Ln(10);

//Added by Imon
$attendees = array();
$total_cost = 0.00;
$total_orig_cost = 0.00;
$total_amount_pd = 0.00;
foreach ($registration_ids as $reg_id) {
$sql = “select ea.registration_id, ed.event_name, ed.start_date, ed.event_identifier, ea.fname, ea.lname, ea.quantity, ea.orig_price, ea.final_price, ea.amount_pd from ” . EVENTS_ATTENDEE_TABLE . ” ea “;
//$sql .= ” inner join ” . EVENTS_ATTENDEE_COST_TABLE . ” eac on ea.id = eac.attendee_id “;
$sql .= ” inner join ” . EVENTS_DETAIL_TABLE . ” ed on ea.event_id = ed.id “;
$sql .= ” where ea.registration_id = ‘” . $reg_id[‘registration_id’] . “‘ order by ed.event_name “;

$tmp_attendees = $wpdb->get_results($sql, ARRAY_A);

foreach ($tmp_attendees as $tmp_attendee) {
$sub_total = $tmp_attendee[“final_price”] * $tmp_attendee[“quantity”];
$orig_total = $tmp_attendee[“orig_price”] * $tmp_attendee[“quantity”];
$attendees[] = $pdf->LoadData(array(
pdftext($tmp_attendee[“event_name”] . “[” . date(‘m-d-Y’, strtotime($tmp_attendee[‘start_date’])) . “]”) . ‘ >> ‘
. pdftext(html_entity_decode($tmp_attendee[“fname”], ENT_QUOTES, “UTF-8″) . ” ” . html_entity_decode($tmp_attendee[“lname”], ENT_QUOTES, “UTF-8”)) . ‘;’
. pdftext($tmp_attendee[“quantity”]) . ‘;’
. doubleval($tmp_attendee[“final_price”]) . ‘;’
. doubleval($sub_total)
)
);
$total_cost += $sub_total;
$total_orig_cost += $orig_total;
$total_amount_pd += $tmp_attendee[“amount_pd”];
$event_identifier = $tmp_attendee[“event_identifier”];
}
}
$header = array(__(‘Event & Attendee’, ‘event_espresso’), __(‘Quantity’, ‘event_espresso’), __(‘Per Unit’, ‘event_espresso’), __(‘Sub total’, ‘event_espresso’));
$w = array(100, 25, 30, 30);
$alling = array(‘L’, ‘L’, ‘C’, ‘C’, ‘C’);
$left = 100 + 25 + 30;
$right = 30;

$pdf->ImprovedTable($header, $attendees, $w, $alling);

$pdf->Ln();
//if ( $total_amount_pd != $total_cost ) {
$pdf->InvoiceTotals(__(‘Total:’, ‘event_espresso’), $total_cost, $left, $right);
$text = __(‘Amount Paid:’, ‘event_espresso’);
$pdf->InvoiceTotals($text, $total_amount_pd, $left, $right);
// $discount = $total_orig_cost – $total_cost;
// if ($discount > 0) {
// $text = __(‘Discount:’, ‘event_espresso’);
// } else {
// $text = __(‘Discount:’, ‘event_espresso’);
// $pdf->InvoiceTotals($text, $discount, $left, $right);
// }
//}
$total_owing = $total_cost – $total_amount_pd;
$text = __(“Total due:”, ‘event_espresso’);
$pdf->InvoiceTotals($text, $total_owing, $left, $right);
$pdf->Ln(10);

//Build the payment link and instructions
if (isset($invoice_payment_settings[‘pdf_instructions’])) {
$pdf->MultiCell(100, 5, pdftext($invoice_payment_settings[‘pdf_instructions’]), 0, ‘L’); //Set instructions
} else {
$pdf->MultiCell(100, 5, pdftext(”), 0, ‘L’); //Set instructions
}

//Create a payment link
$payment_link = home_url() . “/?page_id=” . $org_options[‘return_url’] . “&r_id=” . $registration_id;

$pdf->SetFont(‘Arial’, ‘BU’, 20);
$pdf->Cell(200, 20, ‘Pay Online’, 0, 1, ‘C’, 0, $payment_link); //Set payment link

$pdf->Output(‘Invoice_’ . $attendee_id . ‘_’ . $event_identifier . ‘.pdf’, ‘D’);
exit;


Anonymous

March 14, 2014 at 5:50 pm

Hi Dan,

Could you post your code to something like http://pastebin.com/ and then post the link here please?

The forum adjusts the code preventing me from testing it.


Dan Rositano

March 17, 2014 at 12:12 pm

Tony,

Try seeing if this works for you to review the code:

<pre class=”brush: html; gutter: true; first-line: 1; highlight: []; html-script: false”><?php

//Added by Imon
if (isset($_SESSION['espresso_session']['id'])) {
unset($_SESSION['espresso_session']['id']);
}

define('FPDF_FONTPATH', EVENT_ESPRESSO_PLUGINFULLPATH . 'class/fpdf/font/');
require_once EVENT_ESPRESSO_PLUGINFULLPATH . 'class/fpdf/fpdf.php';

require_once(dirname(__FILE__) . '/function.pdf.php'); //Added by Imon

global $espresso_premium;
if ($espresso_premium != true)
return;
global $wpdb, $org_options;

$invoice_payment_settings = get_option('event_espresso_invoice_payment_settings');

//Added by Imon
$multi_reg = false;
$registration_id = espresso_return_reg_id();
$admin = isset($_REQUEST['admin']) ? $_REQUEST['admin'] : false;
$registration_ids = array();
$c_sql = "select * from " . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . " where registration_id = '$registration_id' ";
//echo $c_sql;
$check = $wpdb->get_row($c_sql);
if ($check !== NULL) {
$registration_id = $check->primary_registration_id;
$registration_ids = $wpdb->get_results("select registration_id from " . EVENTS_MULTI_EVENT_REGISTRATION_ID_GROUP_TABLE . " where primary_registration_id = '$registration_id' ", ARRAY_A);
$multi_reg = true;
} else {
$registration_ids[] = array("registration_id" => $registration_id);
}
$attendees = $wpdb->get_results("SELECT a.*, e.event_name FROM " . EVENTS_ATTENDEE_TABLE . " a JOIN " . EVENTS_DETAIL_TABLE . " e ON e.id=a.event_id WHERE a.registration_id ='" . $registration_id . "' order by a.id LIMIT 0,1 ");

foreach ($attendees as $attendee) {
$attendee_id = $attendee->id;
$attendee_last = html_entity_decode(stripslashes($attendee->lname), ENT_QUOTES, "UTF-8");
$attendee_first = html_entity_decode(stripslashes($attendee->fname), ENT_QUOTES, "UTF-8");
$attendee_address = html_entity_decode(stripslashes($attendee->address), ENT_QUOTES, "UTF-8");
$attendee_address .= isset($attendee->address2) ? "\n" . html_entity_decode(stripslashes($attendee->address2), ENT_QUOTES, "UTF-8") : '';
$attendee_city = html_entity_decode(stripslashes($attendee->city), ENT_QUOTES, "UTF-8");
$attendee_state = html_entity_decode(stripslashes($attendee->state), ENT_QUOTES, "UTF-8");
$attendee_zip = $attendee->zip;
$attendee_email = $attendee->email;
$attendee_organization_name = $attendee->organization_name;
//$attendee_country = $attendee->country_id;
$phone = $attendee->phone;
$date = $attendee->date;
$num_people = $attendee->quantity;
$payment_status = $attendee->payment_status;
$txn_type = $attendee->txn_type;
$amount_pd = $attendee->amount_pd;
$payment_date = $attendee->payment_date;
$event_id = $attendee->event_id;
$event_name = html_entity_decode(stripslashes($attendee->event_name), ENT_QUOTES, "UTF-8");
//$attendee_session = $attendee->attendee_session;
//$registration_id=$attendee->registration_id;
}

#$num_people = isset($num_people) && $num_people > 0 ? $num_people : espresso_count_attendees_for_registration($attendee_id);
#$event_meta = event_espresso_get_event_meta($event_id);
// $event_data['additional_attendee_reg_info']
//if ($payment_status != 'Completed') {
// $payment_status = 'Pending';
// $txn_type = 'INV';
// $payment_date = date('Y-m-d-H:i:s');

//Added by Imon
// if (count($registration_ids) > 0 && $admin == false) {
// foreach ($registration_ids as $reg_id) {
// $sql = "UPDATE " . EVENTS_ATTENDEE_TABLE . " SET payment_status = '" . $payment_status . "', txn_type = '" . $txn_type . "', payment_date ='" . $payment_date . "' WHERE registration_id ='" . $reg_id['registration_id'] . "' AND txn_type ='' ";
// $wpdb->query($sql);
// }
// }
//}
//Query Database for event and get variable
/* $events = $wpdb->get_results("SELECT * FROM " . EVENTS_DETAIL_TABLE . " WHERE id='" . $event_id . "'");
foreach ($events as $event){
//$event_id = $event->id;
$event_name = html_entity_decode(stripslashes($event->event_name),ENT_QUOTES,"UTF-8");
$event_desc = $event->event_desc;
$event_description = $event->event_desc;
$event_identifier = $event->event_identifier;
$start_date = $event->start_date;
} */
//This is an example of how to get custom questions for an attendee
//Get the questions for the attendee
/* $q_sql = "SELECT ea.answer, eq.question
FROM " . EVENTS_ANSWER_TABLE . " ea
LEFT JOIN " . EVENTS_QUESTION_TABLE . " eq ON eq.id = ea.question_id
WHERE ea.registration_id = '".$registration_id."'";
$q_sql .= " AND ea.question_id = '9' ";
$q_sql .= " ORDER BY eq.sequence asc ";
$wpdb->get_results($q_sql);*/

$organization_name = $wpdb->last_result[0]->answer;//question_id = '9'

$organization_name = do_shortcode('[EE_ANSWER q="9" a="'.$attendee_id.'"]');

//Instanciation of inherited class
$pdf = new Espresso_PDF();
$pdf->AliasNbPages();
$pdf->SetAuthor(pdftext($org_options['organization']));
if (isset($invoice_payment_settings['pdf_title'])) {
$pdf->SetTitle(pdftext($event_name . ' – ' . $invoice_payment_settings['pdf_title']));
} else {
$pdf->SetTitle(pdftext($event_name));
}

//$pdf->SetAutoPageBreak('auto');
$pdf->AddPage();
//Create the top right of invoice below header
$pdf->SetFont('Times', '', 12);
$pdf->Cell(180, 0, __('Date: ', 'event_espresso') . date(get_option('date_format')), 0, 1, 'R'); //Set invoice date
$pdf->Cell(180, 10, __('Primary Attendee ID: ', 'event_espresso') . $attendee_id, 0, 0, 'R'); //Set Invoice number
$pdf->Ln(0);

//Set the top left of invoice below header
$pdf->SetFont('Times', 'BI', 14);
if (isset($invoice_payment_settings['payable_to'])) {
$pdf->MultiCell(0, 10, pdftext($invoice_payment_settings['payable_to']), 0, 'L'); //Set payable to
} else {
$pdf->MultiCell(0, 10, pdftext(''), 0, 'L'); //Set payable to
}
$pdf->SetFont('Times', '', 12);
if (isset($invoice_payment_settings['payment_address'])) {
$pdf->MultiCell(50, 5, pdftext($invoice_payment_settings['payment_address']), 0, 'L'); //Set address
} else {
$pdf->MultiCell(50, 5, pdftext(''), 0, 'L'); //Set address
}
$pdf->Ln(5);

//Set the biiling information
$pdf->SetFont('Times', 'B', 12);
$pdf->Cell(50, 5, __('Bill To: ', 'event_espresso'), 0, 1, 'L'); //Set biil to
$pdf->SetFont('Times', '', 12);
$pdf->Cell(50, 5, pdftext($attendee_first . ' ' . $attendee_last), 0, 1, 'L'); //Set attendee name
$pdf->Cell(50, 5, $attendee_email, 0, 1, 'L'); //Set attendee email
$pdf->Cell(50, 5, $organization_name, 0, 1, 'L'); //Set attendee email
//Set attendee address
$attendee_address != '' ? $pdf->Cell(100, 5, $attendee_address, 0, 1, 'L') : '';
$pdf->Cell(100, 5, (pdftext($attendee_city != '' ? $attendee_city : '') . ($attendee_state != '' ? ' ' . $attendee_state : '')), 0, 1, 'L');
$attendee_zip != '' ? $pdf->Cell(50, 5, $attendee_zip, 0, 1, 'L') : '';

$pdf->Ln(10);

//Added by Imon
$attendees = array();
$total_cost = 0.00;
$total_orig_cost = 0.00;
$total_amount_pd = 0.00;
foreach ($registration_ids as $reg_id) {
$sql = "select ea.registration_id, ed.event_name, ed.start_date, ed.event_identifier, ea.fname, ea.lname, ea.quantity, ea.orig_price, ea.final_price, ea.amount_pd from " . EVENTS_ATTENDEE_TABLE . " ea ";
//$sql .= " inner join " . EVENTS_ATTENDEE_COST_TABLE . " eac on ea.id = eac.attendee_id ";
$sql .= " inner join " . EVENTS_DETAIL_TABLE . " ed on ea.event_id = ed.id ";
$sql .= " where ea.registration_id = '" . $reg_id['registration_id'] . "' order by ed.event_name ";

$tmp_attendees = $wpdb->get_results($sql, ARRAY_A);

foreach ($tmp_attendees as $tmp_attendee) {
$sub_total = $tmp_attendee["final_price"] * $tmp_attendee["quantity"];
$orig_total = $tmp_attendee["orig_price"] * $tmp_attendee["quantity"];
$attendees[] = $pdf->LoadData(array(
pdftext($tmp_attendee["event_name"] . "[" . date('m-d-Y', strtotime($tmp_attendee['start_date'])) . "]") . ' >> '
. pdftext(html_entity_decode($tmp_attendee["fname"], ENT_QUOTES, "UTF-8") . " " . html_entity_decode($tmp_attendee["lname"], ENT_QUOTES, "UTF-8")) . ';'
. pdftext($tmp_attendee["quantity"]) . ';'
. doubleval($tmp_attendee["final_price"]) . ';'
. doubleval($sub_total)
)
);
$total_cost += $sub_total;
$total_orig_cost += $orig_total;
$total_amount_pd += $tmp_attendee["amount_pd"];
$event_identifier = $tmp_attendee["event_identifier"];
}
}
$header = array(__('Event & Attendee', 'event_espresso'), __('Quantity', 'event_espresso'), __('Per Unit', 'event_espresso'), __('Sub total', 'event_espresso'));
$w = array(100, 25, 30, 30);
$alling = array('L', 'L', 'C', 'C', 'C');
$left = 100 + 25 + 30;
$right = 30;

$pdf->ImprovedTable($header, $attendees, $w, $alling);

$pdf->Ln();
//if ( $total_amount_pd != $total_cost ) {
$pdf->InvoiceTotals(__('Total:', 'event_espresso'), $total_cost, $left, $right);
$text = __('Amount Paid:', 'event_espresso');
$pdf->InvoiceTotals($text, $total_amount_pd, $left, $right);
// $discount = $total_orig_cost – $total_cost;
// if ($discount > 0) {
// $text = __('Discount:', 'event_espresso');
// } else {
// $text = __('Discount:', 'event_espresso');
// $pdf->InvoiceTotals($text, $discount, $left, $right);
// }
//}
$total_owing = $total_cost – $total_amount_pd;
$text = __("Total due:", 'event_espresso');
$pdf->InvoiceTotals($text, $total_owing, $left, $right);
$pdf->Ln(10);

//Build the payment link and instructions
if (isset($invoice_payment_settings['pdf_instructions'])) {
$pdf->MultiCell(100, 5, pdftext($invoice_payment_settings['pdf_instructions']), 0, 'L'); //Set instructions
} else {
$pdf->MultiCell(100, 5, pdftext(''), 0, 'L'); //Set instructions
}

//Create a payment link
$payment_link = home_url() . "/?page_id=" . $org_options['return_url'] . "&r_id=" . $registration_id;

$pdf->SetFont('Arial', 'BU', 20);
$pdf->Cell(200, 20, 'Pay Online', 0, 1, 'C', 0, $payment_link); //Set payment link

$pdf->Output('Invoice_' . $attendee_id . '_' . $event_identifier . '.pdf', 'D');
exit;


Dan Rositano

March 17, 2014 at 12:13 pm

Tony,

Here is my attempt with the pastebin link: http://pastebin.com/9bwhSpVQ


Anonymous

March 18, 2014 at 4:16 am

Hi Dan,

The code you provided works fine. However there is a couple of thing to note.

Remove or comment out line 98:

$organization_name = $wpdb->last_result[0]->answer;//question_id = '9'

It is not needed.

On my install the question with ID number 9 is ‘ZIP’, which is a system question and is therefor likely the same question ID on your install.

How are you gathering the attendee organisation name?

I’m assuming via a custom question, can you go to Event Espresso -> Questions. Then Click on your custom question from within the list. In the address bar at the top you will see question_id=XX on the end of the URL. http://take.ms/KdUwi

Use that question ID within your invoice template within the EE_ANSWER shortcode.

In my example the question ID was 20. So i use:

$organization_name = do_shortcode('[EE_ANSWER q="20" a="'.$attendee_id.'"]');

Be sure the attendee has already answered this question or it will not be displayed within the Invoice.

The EE_ANSWER shortcode pulls in the answer to whichever question ID you set in q=XX so if you create custom question you must input the custom question ID into that field.

Hope that helps.


Dan Rositano

March 18, 2014 at 7:34 am

There is a Company name field under the “personal information” section when you sign up to an event espresso event. I am assuming that I am pulling from that field. If it would help I can send a screen shot. Is there a way to attach a file?


Anonymous

March 18, 2014 at 8:05 am

For images you would need to host the image and then include the link here.

Can you find the Company Name question within Event Espresso -> Questions?

Viewing 9 reply threads

The support post ‘Adding Company Name to Invoice’ is closed to new replies.

Have a question about this support post? Create a new support post in our support forums and include a link to this existing support post so we can help you.

Event Espresso - Staging Server