public function invoice()
{
$this->output->enable_profiler(FALSE);
$action = $this->uri->rsegment('3');
$this->template->setStyleTag('css/bootstrap.min.css', 'bootstrap-css', '1');
$this->template->setStyleTag('css/fonts.css', 'fonts-css', '2');
$this->load->model('Image_tool_model');
$data['invoice_logo'] = $this->Image_tool_model->resize($this->config->item('site_logo'));
$invoice_info = $this->Orders_model->getInvoice($this->uri->rsegment('4'));
$data['order_id'] = $invoice_info['order_id'];
$data['invoice_no'] = $invoice_info['invoice_prefix'] . $invoice_info['invoice_no'];
$data['customer_id'] = $invoice_info['customer_id'];
$data['first_name'] = $invoice_info['first_name'];
$data['last_name'] = $invoice_info['last_name'];
$data['email'] = $invoice_info['email'];
$data['telephone'] = $invoice_info['telephone'];
$data['date_added'] = mdate('%F %d, %Y', strtotime($invoice_info['date_added']));
$data['invoice_date'] = mdate('%F %d, %Y', strtotime($invoice_info['invoice_date']));
$data['date_modified'] = mdate('%d %M %y', strtotime($invoice_info['date_modified']));
$data['order_time'] = mdate('%H:%i', strtotime($invoice_info['order_time']));
$data['order_type'] = $invoice_info['order_type'] === '1' ? $this->lang->line('text_delivery') : $this->lang->line('text_collection');
$data['comment'] = $invoice_info['comment'];
$data['check_order_type'] = $invoice_info['order_type'];
if ($payment = $this->extension->getPayment($invoice_info['payment'])) {
if ($payment['name'] === 'paypal_express') {
$this->load->model('paypal_express/Paypal_model');
$data['paypal_details'] = isset($this->Paypal_model) ? $this->Paypal_model->getPaypalDetails($invoice_info['order_id'], $invoice_info['customer_id']) : '';
}
$data['payment'] = !empty($payment['ext_data']['title']) ? $payment['ext_data']['title'] : $payment['title'];
} else {
$data['payment'] = 'No Payment';
}
$this->load->library('country');
$data['location_name'] = $data['location_address'] = '';
if (!empty($invoice_info['location_id'])) {
$location_address = $this->Locations_model->getAddress($invoice_info['location_id']);
if ($location_address) {
$data['location_name'] = $location_address['location_name'];
$data['location_address'] = $this->country->addressFormat($location_address);
}
}
$data['customer_address'] = '';
if (!empty($invoice_info['customer_id'])) {
$customer_address = $this->Addresses_model->getAddress($invoice_info['customer_id'], $invoice_info['address_id']);
$data['customer_address'] = $this->country->addressFormat($customer_address);
} else {
if (!empty($invoice_info['address_id'])) {
$customer_address = $this->Addresses_model->getGuestAddress($invoice_info['address_id']);
$data['customer_address'] = $this->country->addressFormat($customer_address);
}
}
$data['cart_items'] = array();
$cart_items = $this->Orders_model->getOrderMenus($invoice_info['order_id']);
$menu_options = $this->Orders_model->getOrderMenuOptions($invoice_info['order_id']);
foreach ($cart_items as $cart_item) {
$option_data = array();
if (!empty($menu_options)) {
foreach ($menu_options as $menu_option) {
if ($cart_item['order_menu_id'] === $menu_option['order_menu_id']) {
$option_data[] = $menu_option['order_option_name'] . $this->lang->line('text_equals') . $this->currency->format($menu_option['order_option_price']);
}
}
}
$data['cart_items'][] = array('id' => $cart_item['menu_id'], 'name' => $cart_item['name'], 'qty' => $cart_item['quantity'], 'price' => $this->currency->format($cart_item['price']), 'subtotal' => $this->currency->format($cart_item['subtotal']), 'comment' => $cart_item['comment'], 'options' => implode(', ', $option_data));
}
$data['totals'] = array();
$order_totals = $this->Orders_model->getOrderTotals($invoice_info['order_id']);
foreach ($order_totals as $name => $total) {
if ($total['code'] == 'delivery' and $invoice_info['order_type'] === '2') {
continue;
}
$data['totals'][] = array('code' => $total['code'], 'title' => htmlspecialchars_decode($total['title']), 'value' => $this->currency->format($total['value']), 'priority' => $total['priority']);
}
$data['order_total'] = $this->currency->format($invoice_info['order_total']);
if ($action === 'view') {
$this->load->view($this->config->item(ADMINDIR, 'default_themes') . 'orders_invoice', $data);
}
}