From b2f33740fe6e83bb11b4f61a07db869213f7182d Mon Sep 17 00:00:00 2001 From: fBrignoli Date: Thu, 1 Dec 2011 14:24:17 +0000 Subject: [PATCH] // OrderInvoice PDF compliant git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@10830 b9a71923-0436-4b27-9f14-aed3839534dd --- admin-dev/pdf.php | 25 +++++++++++-------- classes/order/Order.php | 12 +++++++++ classes/order/OrderInvoice.php | 22 ++++++++++++++++ controllers/admin/AdminInvoicesController.php | 14 ++++++++--- 4 files changed, 59 insertions(+), 14 deletions(-) diff --git a/admin-dev/pdf.php b/admin-dev/pdf.php index 47069a133..a8908b3a8 100644 --- a/admin-dev/pdf.php +++ b/admin-dev/pdf.php @@ -116,15 +116,12 @@ function generateDeliverySlipPDF() function generateInvoicesPDF() { - $id_orders_list = Order::getOrdersIdInvoiceByDate($_GET['date_from'], $_GET['date_to'], NULL, 'invoice'); + $id_orders_list = OrderInvoice::getByDateInterval($_GET['date_from'], $_GET['date_to'], NULL, 'invoice'); + if (!is_array($id_orders_list)) die (Tools::displayError('No invoices found')); - $orders = array(); - foreach ($id_orders_list as $id_order) - $orders[] = new Order((int)$id_order); - - generatePDF($orders, PDF::TEMPLATE_INVOICE); + generateOrderInvoicesPDF($id_orders_list); } function generateInvoicesPDF2() @@ -134,11 +131,19 @@ function generateInvoicesPDF2() if (is_array($id_orders = Order::getOrderIdsByStatus((int)$id_order_state))) $id_orders_list = array_merge($id_orders_list, $id_orders); - $orders = array(); - foreach ($id_orders_list as $id_order) - $orders[] = new Order((int)$id_order); + generateOrderInvoicesPDF($id_orders_list); +} - generatePDF($orders, PDF::TEMPLATE_INVOICE); +function generateOrderInvoicesPDF($id_orders_list) +{ + $orders_invoices = array(); + foreach ($id_orders_list as $id_order) + { + $order = new Order((int)$id_order); + $orders_invoices = array_merge($orders_invoices, $order->getInvoicesCollection()); + } + + generatePDF($orders_invoices, PDF::TEMPLATE_INVOICE); } function generateOrderSlipsPDF() diff --git a/classes/order/Order.php b/classes/order/Order.php index 25a47540c..f116d0351 100644 --- a/classes/order/Order.php +++ b/classes/order/Order.php @@ -826,8 +826,20 @@ class OrderCore extends ObjectModel return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); } + /** + * @deprecated since 1.5.0.2 + * + * @static + * @param $date_from + * @param $date_to + * @param $id_customer + * @param $type + * + * @return array + */ public static function getOrdersIdInvoiceByDate($date_from, $date_to, $id_customer = NULL, $type = NULL) { + Tools::displayAsDeprecated(); $sql = 'SELECT `id_order` FROM `'._DB_PREFIX_.'orders` WHERE DATE_ADD(invoice_date, INTERVAL -1 DAY) <= \''.pSQL($date_to).'\' AND invoice_date >= \''.pSQL($date_from).'\' diff --git a/classes/order/OrderInvoice.php b/classes/order/OrderInvoice.php index 43aabf12c..c19adcfbd 100644 --- a/classes/order/OrderInvoice.php +++ b/classes/order/OrderInvoice.php @@ -384,4 +384,26 @@ class OrderInvoiceCore extends ObjectModel AND `id_order_invoice` = '.(int)$this->id ); } + + /** + * Returns all the order invoice that match the date interval + * + * @since 1.5.0.2 + * @static + * @param $date_from + * @param $date_to + * @return array collection of OrderInvoice + */ + public static function getByDateInterval($date_from, $date_to) + { + $order_invoice_list = Db::getInstance()->ExecuteS('SELECT oi.* + FROM `'._DB_PREFIX_.'order_invoice` oi + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = oi.`id_order`) + WHERE DATE_ADD(oi.date_add, INTERVAL -1 DAY) <= \''.pSQL($date_to).'\' + AND oi.date_add >= \''.pSQL($date_from).'\' + '.Context::getContext()->shop->addSqlRestriction(). + ' ORDER BY oi.date_add ASC'); + + return ObjectModel::hydrateCollection('OrderInvoice', $order_invoice_list); + } } \ No newline at end of file diff --git a/controllers/admin/AdminInvoicesController.php b/controllers/admin/AdminInvoicesController.php index 042e0c4cb..8206448b0 100644 --- a/controllers/admin/AdminInvoicesController.php +++ b/controllers/admin/AdminInvoicesController.php @@ -147,11 +147,12 @@ class AdminInvoicesControllerCore extends AdminController SELECT COUNT(*) as nbOrders, ( SELECT oh.id_order_state FROM '._DB_PREFIX_.'order_history oh - WHERE oh.id_order = o.id_order + WHERE oh.id_order = oi.id_order ORDER BY oh.date_add DESC, oh.id_order_history DESC LIMIT 1 ) id_order_state - FROM '._DB_PREFIX_.'orders o + FROM '._DB_PREFIX_.'order_invoice oi + LEFT JOIN '._DB_PREFIX_.'orders o ON (oi.id_order = o.id_order) WHERE o.id_shop IN('.implode(', ', $this->context->shop->getListOfID()).') GROUP BY id_order_state '); @@ -204,13 +205,17 @@ class AdminInvoicesControllerCore extends AdminController { if (!Validate::isDate(Tools::getValue('date_from'))) $this->_errors[] = $this->l('Invalid from date'); + if (!Validate::isDate(Tools::getValue('date_to'))) $this->_errors[] = $this->l('Invalid end date'); + if (!count($this->_errors)) { - $orders = Order::getOrdersIdInvoiceByDate(Tools::getValue('date_from'), Tools::getValue('date_to'), null, 'invoice'); - if (count($orders)) + $order_invoice_list = OrderInvoice::getByDateInterval(Tools::getValue('date_from'), Tools::getValue('date_to')); + + if (count($order_invoice_list)) Tools::redirectAdmin('pdf.php?invoices&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode(Tools::getValue('date_to')).'&token='.$this->token); + $this->_errors[] = $this->l('No invoice found for this period'); } } @@ -223,6 +228,7 @@ class AdminInvoicesControllerCore extends AdminController foreach ($status_array as $id_order_state) if (count($orders = Order::getOrderIdsByStatus((int)$id_order_state))) Tools::redirectAdmin('pdf.php?invoices2&id_order_state='.implode('-', $status_array).'&token='.$this->token); + $this->_errors[] = $this->l('No invoice found for this status'); } }