diff --git a/admin-dev/pdf.php b/admin-dev/pdf.php index 4c2fffb69..1ce614865 100644 --- a/admin-dev/pdf.php +++ b/admin-dev/pdf.php @@ -26,9 +26,14 @@ */ define('_PS_ADMIN_DIR_', getcwd()); - include(_PS_ADMIN_DIR_.'/../config/config.inc.php'); +/** + * @deprecated 1.5.0 + * This file is deprecated, please use AdminPdfController instead + */ +Tools::displayFileAsDeprecated(); + if (!Context::getContext()->employee->id) Tools::redirectAdmin('index.php?controller=AdminLogin'); @@ -44,153 +49,12 @@ $function_array = array( 'id_supply_order' => 'generateSupplyOrderFormPDF' ); +$pdf_controller = new AdminPdfController(); foreach ($function_array as $var => $function) if (isset($_GET[$var])) { - call_user_func($function); - die; + $pdf_controller->{'process'.$function}(); + exit; } -function generateSupplyOrderFormPDF() -{ - if (!Tools::isSubmit('id_supply_order')) - die (Tools::displayError('Missing supply order ID')); - - $id_supply_order = (int)Tools::getValue('id_supply_order'); - $supply_order = new SupplyOrder($id_supply_order); - - if (!Validate::isLoadedObject($supply_order)) - die(Tools::displayError('Cannot find this supply order in the database')); - - generatePDF($supply_order, PDF::TEMPLATE_SUPPLY_ORDER_FORM); -} - -function generateInvoicePDF() -{ - if (Tools::isSubmit('id_order')) - generateInvoicePDFByIdOrder(Tools::getValue('id_order')); - elseif (Tools::isSubmit('id_order_invoice')) - generateInvoicePDFByIdOrderInvoice(Tools::getValue('id_order_invoice')); - else - die (Tools::displayError('Missing order ID or invoice order ID')); - exit; -} - -function generateInvoicePDFByIdOrder($id_order) -{ - $order = new Order((int)$id_order); - if (!Validate::isLoadedObject($order)) - die(Tools::displayError('Cannot find order in database')); - - $order_invoice_list = $order->getInvoicesCollection(); - Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list)); - generatePDF($order_invoice_list, PDF::TEMPLATE_INVOICE); -} - -function generateInvoicePDFByIdOrderInvoice($id_order_invoice) -{ - $order_invoice = new OrderInvoice((int)$id_order_invoice); - if (!Validate::isLoadedObject($order_invoice)) - die(Tools::displayError('Cannot find order invoice in database')); - - Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => array($order_invoice))); - generatePDF($order_invoice, PDF::TEMPLATE_INVOICE); -} - -function generateOrderSlipPDF() -{ - $orderSlip = new OrderSlip((int)Tools::getValue('id_order_slip')); - $order = new Order((int)$orderSlip->id_order); - if (!Validate::isLoadedObject($order)) - die(Tools::displayError('Cannot find order in database')); - $order->products = OrderSlip::getOrdersSlipProducts($orderSlip->id, $order); - - generatePDF($orderSlip, PDF::TEMPLATE_ORDER_SLIP); -} - -function generateDeliverySlipPDF() -{ - if (Tools::isSubmit('id_order')) - generateDeliverySlipPDFByIdOrder((int)Tools::getValue('id_order')); - elseif (Tools::isSubmit('id_order_invoice')) - generateDeliverySlipPDFByIdOrderInvoice((int)Tools::getValue('id_order_invoice')); - elseif (Tools::isSubmit('id_delivery')) - { - $order = Order::getByDelivery((int)Tools::getValue('id_delivery')); - generateDeliverySlipPDFByIdOrder((int)$order->id); - } - else - die (Tools::displayError('Missing order ID or invoice order ID')); - exit; -} - -function generateDeliverySlipPDFByIdOrder($id_order) -{ - $order = new Order((int)$id_order); - if (!Validate::isLoadedObject($order)) - throw new PrestaShopException('Can\'t load Order object'); - - $order_invoice_collection = $order->getInvoicesCollection(); - generatePDF($order_invoice_collection, PDF::TEMPLATE_DELIVERY_SLIP); -} - -function generateDeliverySlipPDFByIdOrderInvoice($id_order_invoice) -{ - $order_invoice = new OrderInvoice((int)$id_order_invoice); - if (!Validate::isLoadedObject($order_invoice)) - throw new PrestaShopException('Can\'t load Order Invoice object'); - - generatePDF($order_invoice, PDF::TEMPLATE_DELIVERY_SLIP); -} - -function generateInvoicesPDF() -{ - $order_invoice_collection = OrderInvoice::getByDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')); - - if (!count($order_invoice_collection)) - die(Tools::displayError('No invoices found')); - - generatePDF($order_invoice_collection, PDF::TEMPLATE_INVOICE); -} - -function generateInvoicesPDF2() -{ - $order_invoice_collection = array(); - foreach (explode('-', Tools::getValue('id_order_state')) as $id_order_state) - if (is_array($order_invoices = OrderInvoice::getByStatus((int)$id_order_state))) - $order_invoice_collection = array_merge($order_invoices, $order_invoice_collection); - - if (!count($order_invoice_collection)) - die(Tools::displayError('No invoices found')); - - generatePDF($order_invoice_collection, PDF::TEMPLATE_INVOICE); -} - -function generateOrderSlipsPDF() -{ - $id_order_slips_list = OrderSlip::getSlipsIdByDate(Tools::getValue('date_from'), Tools::getValue('date_to')); - if (!count($id_order_slips_list)) - die (Tools::displayError('No order slips found')); - - $order_slips = array(); - foreach ($id_order_slips_list as $id_order_slips) - $order_slips[] = new OrderSlip((int)$id_order_slips); - - generatePDF($order_slips, PDF::TEMPLATE_ORDER_SLIP); -} - -function generateDeliverySlipsPDF() -{ - $order_invoice_collection = OrderInvoice::getByDeliveryDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')); - - if (!count($order_invoice_collection)) - die(Tools::displayError('No invoices found')); - - generatePDF($order_invoice_collection, PDF::TEMPLATE_DELIVERY_SLIP); -} - -function generatePDF($object, $template) -{ - $pdf = new PDF($object, $template, Context::getContext()->smarty); - $pdf->render(); -} \ No newline at end of file +exit; \ No newline at end of file diff --git a/admin-dev/themes/default/template/controllers/orders/_documents.tpl b/admin-dev/themes/default/template/controllers/orders/_documents.tpl index 2b3bee1c6..95b0570c8 100644 --- a/admin-dev/themes/default/template/controllers/orders/_documents.tpl +++ b/admin-dev/themes/default/template/controllers/orders/_documents.tpl @@ -58,12 +58,15 @@ {l s='Credit Slip'} {/if} - + {else} + + {/if} {elseif get_class($document) eq 'OrderSlip'} - pdf.php?id_order_slip={$document->id} - {/if}"> + + {/if} {if get_class($document) eq 'OrderInvoice'} {if isset($document->is_delivery)} #{Configuration::get('PS_DELIVERY_PREFIX', $current_id_lang)}{'%06d'|sprintf:$document->delivery_number} diff --git a/admin-dev/themes/default/template/controllers/orders/_print_pdf_icon.tpl b/admin-dev/themes/default/template/controllers/orders/_print_pdf_icon.tpl index ca2c4f2da..6dbd9e273 100644 --- a/admin-dev/themes/default/template/controllers/orders/_print_pdf_icon.tpl +++ b/admin-dev/themes/default/template/controllers/orders/_print_pdf_icon.tpl @@ -27,7 +27,7 @@ {* Generate HTML code for printing Invoice Icon with link *} {if ($order_state->invoice && $order->invoice_number)} - invoice + invoice {else} - {/if} @@ -36,7 +36,7 @@ {* Generate HTML code for printing Delivery Icon with link *} {if ($order_state->delivery && $order->delivery_number)} - delivery + delivery {else} - {/if} diff --git a/admin-dev/themes/default/template/controllers/orders/helpers/view/view.tpl b/admin-dev/themes/default/template/controllers/orders/helpers/view/view.tpl index 0d4ccc6f6..892389fd2 100755 --- a/admin-dev/themes/default/template/controllers/orders/helpers/view/view.tpl +++ b/admin-dev/themes/default/template/controllers/orders/helpers/view/view.tpl @@ -64,15 +64,19 @@
{if (count($invoices_collection))} - {l s='View invoice'} {l s='View invoice'} + + {l s='View invoice'} {l s='View invoice'} + {else} - {l s='No invoice'} {l s='No invoice'} + {l s='No invoice'} {l s='No invoice'} {/if} | {if (($currentState && $currentState->delivery) || $order->delivery_number)} - {l s='View delivery slip'} {l s='View delivery slip'} + + {l s='View delivery slip'} {l s='View delivery slip'} + {else} - {l s='No delivery slip'} {l s='No delivery slip'} + {l s='No delivery slip'} {l s='No delivery slip'} {/if} | {l s='Print order'} {l s='Print order'} diff --git a/admin-dev/themes/default/template/controllers/outstanding/_print_pdf_icon.tpl b/admin-dev/themes/default/template/controllers/outstanding/_print_pdf_icon.tpl index 46df6d034..e8b1b2541 100644 --- a/admin-dev/themes/default/template/controllers/outstanding/_print_pdf_icon.tpl +++ b/admin-dev/themes/default/template/controllers/outstanding/_print_pdf_icon.tpl @@ -26,5 +26,5 @@ {* Generate HTML code for printing Invoice Icon with link *} - invoice + invoice \ No newline at end of file diff --git a/admin-dev/themes/default/template/controllers/supply_orders_change_state/helpers/form/form.tpl b/admin-dev/themes/default/template/controllers/supply_orders_change_state/helpers/form/form.tpl index 1c1fc1270..cf12cf1dd 100644 --- a/admin-dev/themes/default/template/controllers/supply_orders_change_state/helpers/form/form.tpl +++ b/admin-dev/themes/default/template/controllers/supply_orders_change_state/helpers/form/form.tpl @@ -68,7 +68,7 @@ $(document).ready(function() { {l s='Supply Order State'} {l s='Print the supply order form'} -{l s='Click here to download the supply order form'}. +{l s='Click here to download the supply order form'}. {/if} diff --git a/cache/class_index.php b/cache/class_index.php index d14e58450..a59a545e9 100644 --- a/cache/class_index.php +++ b/cache/class_index.php @@ -122,6 +122,8 @@ 'AdminPPreferencesControllerCore' => 'controllers/admin/AdminPPreferencesController.php', 'AdminPaymentController' => 'override/controllers/admin/AdminPaymentController.php', 'AdminPaymentControllerCore' => 'controllers/admin/AdminPaymentController.php', + 'AdminPdfController' => '', + 'AdminPdfControllerCore' => 'controllers/admin/AdminPdfController.php', 'AdminPerformanceController' => 'override/controllers/admin/AdminPerformanceController.php', 'AdminPerformanceControllerCore' => 'controllers/admin/AdminPerformanceController.php', 'AdminPreferencesController' => 'override/controllers/admin/AdminPreferencesController.php', diff --git a/controllers/admin/AdminDeliverySlipController.php b/controllers/admin/AdminDeliverySlipController.php index 97dc60cfc..d67f810f6 100644 --- a/controllers/admin/AdminDeliverySlipController.php +++ b/controllers/admin/AdminDeliverySlipController.php @@ -110,7 +110,7 @@ class AdminDeliverySlipControllerCore extends AdminController if (!count($this->errors)) { if (count(OrderInvoice::getByDeliveryDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')))) - Tools::redirectAdmin('pdf.php?deliveryslips&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to')).'&token='.$this->token); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateDeliverySlipsPDF&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to'))); else $this->errors[] = Tools::displayError('No delivery slip found for this period'); } diff --git a/controllers/admin/AdminInvoicesController.php b/controllers/admin/AdminInvoicesController.php index b3410093d..ac5eccb08 100644 --- a/controllers/admin/AdminInvoicesController.php +++ b/controllers/admin/AdminInvoicesController.php @@ -224,7 +224,7 @@ class AdminInvoicesControllerCore extends AdminController if (!count($this->errors)) { if (count(OrderInvoice::getByDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')))) - Tools::redirectAdmin('pdf.php?invoices&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to')).'&token='.$this->token); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateInvoicesPDF&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to'))); $this->errors[] = $this->l('No invoice found for this period'); } @@ -237,7 +237,7 @@ class AdminInvoicesControllerCore extends AdminController { foreach ($status_array as $id_order_state) if (count(OrderInvoice::getByStatus((int)$id_order_state))) - Tools::redirectAdmin('pdf.php?invoices2&id_order_state='.implode('-', $status_array).'&token='.$this->token); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateInvoicesPDF2&id_order_state='.implode('-', $status_array)); $this->errors[] = $this->l('No invoice found for this status'); } diff --git a/controllers/admin/AdminPdfController.php b/controllers/admin/AdminPdfController.php new file mode 100644 index 000000000..b7b10174b --- /dev/null +++ b/controllers/admin/AdminPdfController.php @@ -0,0 +1,179 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminPdfControllerCore extends AdminController +{ + public function postProcess() + { + parent::postProcess(); + + // We want to be sure that displaying PDF is the last thing this controller will do + exit; + } + + public function processGenerateInvoicePdf() + { + if (Tools::isSubmit('id_order')) + $this->generateInvoicePDFByIdOrder(Tools::getValue('id_order')); + elseif (Tools::isSubmit('id_order_invoice')) + $this->generateInvoicePDFByIdOrderInvoice(Tools::getValue('id_order_invoice')); + else + die (Tools::displayError('Missing order ID or invoice order ID')); + } + + public function processGenerateOrderSlipPDF() + { + $orderSlip = new OrderSlip((int)Tools::getValue('id_order_slip')); + $order = new Order((int)$orderSlip->id_order); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError('Cannot find order in database')); + $order->products = OrderSlip::getOrdersSlipProducts($orderSlip->id, $order); + + $this->generatePDF($orderSlip, PDF::TEMPLATE_ORDER_SLIP); + } + + public function processGenerateDeliverySlipPDF() + { + if (Tools::isSubmit('id_order')) + $this->generateDeliverySlipPDFByIdOrder((int)Tools::getValue('id_order')); + elseif (Tools::isSubmit('id_order_invoice')) + $this->generateDeliverySlipPDFByIdOrderInvoice((int)Tools::getValue('id_order_invoice')); + elseif (Tools::isSubmit('id_delivery')) + { + $order = Order::getByDelivery((int)Tools::getValue('id_delivery')); + $this->generateDeliverySlipPDFByIdOrder((int)$order->id); + } + else + die (Tools::displayError('Missing order ID or invoice order ID')); + } + + public function processGenerateInvoicesPDF() + { + $order_invoice_collection = OrderInvoice::getByDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')); + + if (!count($order_invoice_collection)) + die(Tools::displayError('No invoices found')); + + $this->generatePDF($order_invoice_collection, PDF::TEMPLATE_INVOICE); + } + + public function processGenerateInvoicesPDF2() + { + $order_invoice_collection = array(); + foreach (explode('-', Tools::getValue('id_order_state')) as $id_order_state) + if (is_array($order_invoices = OrderInvoice::getByStatus((int)$id_order_state))) + $order_invoice_collection = array_merge($order_invoices, $order_invoice_collection); + + if (!count($order_invoice_collection)) + die(Tools::displayError('No invoices found')); + + $this->generatePDF($order_invoice_collection, PDF::TEMPLATE_INVOICE); + } + + public function processGenerateOrderSlipsPDF() + { + $id_order_slips_list = OrderSlip::getSlipsIdByDate(Tools::getValue('date_from'), Tools::getValue('date_to')); + if (!count($id_order_slips_list)) + die (Tools::displayError('No order slips found')); + + $order_slips = array(); + foreach ($id_order_slips_list as $id_order_slips) + $order_slips[] = new OrderSlip((int)$id_order_slips); + + $this->generatePDF($order_slips, PDF::TEMPLATE_ORDER_SLIP); + } + + public function processGenerateDeliverySlipsPDF() + { + $order_invoice_collection = OrderInvoice::getByDeliveryDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')); + + if (!count($order_invoice_collection)) + die(Tools::displayError('No invoices found')); + + $this->generatePDF($order_invoice_collection, PDF::TEMPLATE_DELIVERY_SLIP); + } + + public function processGenerateSupplyOrderFormPDF() + { + if (!Tools::isSubmit('id_supply_order')) + die (Tools::displayError('Missing supply order ID')); + + $id_supply_order = (int)Tools::getValue('id_supply_order'); + $supply_order = new SupplyOrder($id_supply_order); + + if (!Validate::isLoadedObject($supply_order)) + die(Tools::displayError('Cannot find this supply order in the database')); + + $this->generatePDF($supply_order, PDF::TEMPLATE_SUPPLY_ORDER_FORM); + } + + public function generateDeliverySlipPDFByIdOrder($id_order) + { + $order = new Order((int)$id_order); + if (!Validate::isLoadedObject($order)) + throw new PrestaShopException('Can\'t load Order object'); + + $order_invoice_collection = $order->getInvoicesCollection(); + $this->generatePDF($order_invoice_collection, PDF::TEMPLATE_DELIVERY_SLIP); + } + + public function generateDeliverySlipPDFByIdOrderInvoice($id_order_invoice) + { + $order_invoice = new OrderInvoice((int)$id_order_invoice); + if (!Validate::isLoadedObject($order_invoice)) + throw new PrestaShopException('Can\'t load Order Invoice object'); + + $this->generatePDF($order_invoice, PDF::TEMPLATE_DELIVERY_SLIP); + } + + public function generateInvoicePDFByIdOrder($id_order) + { + $order = new Order((int)$id_order); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError('Cannot find order in database')); + + $order_invoice_list = $order->getInvoicesCollection(); + Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list)); + $this->generatePDF($order_invoice_list, PDF::TEMPLATE_INVOICE); + } + + public function generateInvoicePDFByIdOrderInvoice($id_order_invoice) + { + $order_invoice = new OrderInvoice((int)$id_order_invoice); + if (!Validate::isLoadedObject($order_invoice)) + die(Tools::displayError('Cannot find order invoice in database')); + + Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => array($order_invoice))); + $this->generatePDF($order_invoice, PDF::TEMPLATE_INVOICE); + } + + public function generatePDF($object, $template) + { + $pdf = new PDF($object, $template, Context::getContext()->smarty); + $pdf->render(); + } +} diff --git a/controllers/admin/AdminSearchController.php b/controllers/admin/AdminSearchController.php index 9a6c74243..e1a871f7c 100644 --- a/controllers/admin/AdminSearchController.php +++ b/controllers/admin/AdminSearchController.php @@ -86,7 +86,7 @@ class AdminSearchControllerCore extends AdminController if ($searchType == 4) { if ((int)$this->query && Validate::isUnsignedInt((int)$this->query) && ($invoice = Order::getInvoice((int)$this->query))) - Tools::redirectAdmin('pdf.php?id_order='.(int)($invoice['id_order']).'&pdf'); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateInvoicePDF&id_order='.(int)($invoice['id_order'])); $this->errors[] = Tools::displayError('No invoice found with this ID:').' '.Tools::htmlentitiesUTF8($this->query); } diff --git a/controllers/admin/AdminSlipController.php b/controllers/admin/AdminSlipController.php index b5d0d76e1..244e7b134 100644 --- a/controllers/admin/AdminSlipController.php +++ b/controllers/admin/AdminSlipController.php @@ -119,8 +119,7 @@ class AdminSlipControllerCore extends AdminController { $order_slips = OrderSlip::getSlipsIdByDate(Tools::getValue('date_from'), Tools::getValue('date_to')); if (count($order_slips)) - Tools::redirectAdmin( - 'pdf.php?slips&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to')).'&token='.$this->token); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateOrderSlipsPDF&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to'))); $this->errors[] = $this->l('No order slips found for this period'); } } diff --git a/controllers/admin/AdminSupplyOrdersController.php b/controllers/admin/AdminSupplyOrdersController.php index e0ccfe907..5ec5182e3 100644 --- a/controllers/admin/AdminSupplyOrdersController.php +++ b/controllers/admin/AdminSupplyOrdersController.php @@ -1906,7 +1906,7 @@ class AdminSupplyOrdersControllerCore extends AdminController $content = ''; if ($supply_order_state->editable == false) - $content .= ''; + $content .= ''; else $content .= '-'; $content .= ''; diff --git a/override/classes/AdminTab.php b/override/classes/AdminTab.php index 2029a16e3..edb772765 100644 --- a/override/classes/AdminTab.php +++ b/override/classes/AdminTab.php @@ -1,5 +1,7 @@ -