diff --git a/admin-dev/themes/template/helper/form/form.tpl b/admin-dev/themes/template/helper/form/form.tpl index 2fae564aa..b21209dfb 100644 --- a/admin-dev/themes/template/helper/form/form.tpl +++ b/admin-dev/themes/template/helper/form/form.tpl @@ -38,12 +38,12 @@ +
{block name="leadin"}{/block}
{/if} -
{block name="leadin"}{/block}
{if isset($fields.title)}

{$fields.title}

{/if} {block name="defaultForm"} -
+ {if $form_id} {/if} diff --git a/admin-dev/themes/template/invoices/content.tpl b/admin-dev/themes/template/invoices/content.tpl deleted file mode 100644 index 92e06b100..000000000 --- a/admin-dev/themes/template/invoices/content.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{* -* 2007-2011 PrestaShop -* -* NOTICE OF LICENSE -* -* This source file is subject to the Academic Free License (AFL 3.0) -* that is bundled with this package in the file LICENSE.txt. -* It is also available through the world-wide-web at this URL: -* http://opensource.org/licenses/afl-3.0.php -* If you did not receive a copy of the license and are unable to -* obtain it through the world-wide-web, please send an email -* to license@prestashop.com so we can send you a copy immediately. -* -* DISCLAIMER -* -* Do not edit or add to this file if you wish to upgrade PrestaShop to newer -* versions in the future. If you wish to customize PrestaShop for your -* needs please refer to http://www.prestashop.com for more information. -* -* @author PrestaShop SA -* @copyright 2007-2011 PrestaShop SA -* @version Release: $Revision$ -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*} - -

{l s='Print PDF invoices'}

-
{l s='By date'} - - -
- * -

{l s='Format: 2007-12-31 (inclusive)'}

-
- -
- * -

{l s='Format: 2008-12-31 (inclusive)'}

-
-
- -
-
* {l s='Required fields'}
- -
-
{l s='By statuses'} -
- -
-
    - {foreach $statuses as $status} -
  • - - -
  • - {/foreach} -
-

{l s='You can also export orders which have not been charged yet.'}()

-
-
- -
-
-
-
 
- -{$content} diff --git a/admin-dev/themes/template/invoices/form.tpl b/admin-dev/themes/template/invoices/form.tpl new file mode 100644 index 000000000..73f2d5942 --- /dev/null +++ b/admin-dev/themes/template/invoices/form.tpl @@ -0,0 +1,85 @@ +{* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 8971 $ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} +{extends file="helper/form/form.tpl"} + +{block name=script} + + $(document).ready(function() { + var btn_save_date = $('span[class~="process-icon-save-date"]').parent(); + var btn_submit_date = $('#submitPrint'); + + if (btn_save_date.length > 0 && btn_submit_date.length > 0) + { + btn_submit_date.hide(); + btn_save_date.find('span').removeClass('process-icon-save-date'); + btn_save_date.find('span').addClass('process-icon-save-calendar'); + btn_save_date.click(function() { + btn_submit_date.before(''); + + $('#invoice_date_form').submit(); + }); + } + + var btn_save_status = $('span[class~="process-icon-save-status"]').parent(); + var btn_submit_status = $('#submitPrint2'); + + if (btn_save_status.length > 0 && btn_submit_status.length > 0) + { + btn_submit_status.hide(); + btn_save_status.find('span').removeClass('process-icon-save-status'); + btn_save_status.find('span').addClass('process-icon-save'); + btn_save_status.click(function() { + btn_submit_status.before(''); + + $('#invoice_status_form').submit(); + }); + } + }); + +{/block} + +{block name="start_field_block"} +
+ {if $input.type == 'checkboxStatuses'} + {foreach $input.values.query as $value} + {assign var=id_checkbox value=$input.name|cat:'_'|cat:$value[$input.values.id]|intval} + +
+ {/foreach} + {/if} +{/block} + +{block name="other_fieldsets"}
 
{/block} + diff --git a/controllers/admin/AdminInvoicesController.php b/controllers/admin/AdminInvoicesController.php index 221e6f4cf..87445519a 100644 --- a/controllers/admin/AdminInvoicesController.php +++ b/controllers/admin/AdminInvoicesController.php @@ -35,11 +35,34 @@ class AdminInvoicesControllerCore extends AdminController 'general' => array( 'title' => $this->l('Invoice options'), 'fields' => array( - 'PS_INVOICE' => array('title' => $this->l('Enable invoices:'), 'desc' => $this->l('Select whether or not to activate invoices for your shop'), 'cast' => 'intval', 'type' => 'bool'), - 'PS_INVOICE_PREFIX' => array('title' => $this->l('Invoice prefix:'), 'desc' => $this->l('Prefix used for invoices'), 'size' => 6, 'type' => 'textLang'), - 'PS_INVOICE_START_NUMBER' => array('title' => $this->l('Invoice number:'), 'desc' => $this->l('The next invoice will begin with this number, and then increase with each additional invoice. Set to 0 if you want to keep the current number (#').(Order::getLastInvoiceNumber() + 1).').', 'size' => 6, 'type' => 'text', 'cast' => 'intval'), - 'PS_INVOICE_FREE_TEXT' => array('title' => $this->l('Free Text:'), 'desc' => $this->l('This text will appear at the bottom of the invoice'), 'size' => 6, 'type' => 'textareaLang', - 'cols' => 40, 'rows' => 8) + 'PS_INVOICE' => array( + 'title' => $this->l('Enable invoices:'), + 'desc' => $this->l('Select whether or not to activate invoices for your shop'), + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_INVOICE_PREFIX' => array( + 'title' => $this->l('Invoice prefix:'), + 'desc' => $this->l('Prefix used for invoices'), + 'size' => 6, + 'type' => 'textLang' + ), + 'PS_INVOICE_START_NUMBER' => array( + 'title' => $this->l('Invoice number:'), + 'desc' => $this->l('The next invoice will begin with this number, and then increase with each additional invoice. + Set to 0 if you want to keep the current number (#').(Order::getLastInvoiceNumber() + 1).').', + 'size' => 6, + 'type' => 'text', + 'cast' => 'intval' + ), + 'PS_INVOICE_FREE_TEXT' => array( + 'title' => $this->l('Free Text:'), + 'desc' => $this->l('This text will appear at the bottom of the invoice'), + 'size' => 6, + 'type' => 'textareaLang', + 'cols' => 40, + 'rows' => 8 + ) ), 'submit' => array() ), @@ -48,57 +71,158 @@ class AdminInvoicesControllerCore extends AdminController parent::__construct(); } + public function initFormByDate() + { + $this->fields_form = array( + 'legend' => array( + 'title' => $this->l('By date'), + 'image' => '../img/admin/pdf.gif' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('From:'), + 'name' => 'date_from', + 'size' => 20, + 'maxlength' => 10, + 'required' => true, + 'p' => $this->l('Format: 2007-12-31 (inclusive)') + ), + array( + 'type' => 'text', + 'label' => $this->l('To:'), + 'name' => 'date_to', + 'size' => 20, + 'maxlength' => 10, + 'required' => true, + 'p' => $this->l('Format: 2008-12-31 (inclusive)') + ) + ), + 'submit' => array( + 'title' => $this->l('Generate PDF file by date'), + 'class' => 'button', + 'id' => 'submitPrint' + ) + ); + + $this->fields_value = array( + 'date_from' => date('Y-m-d'), + 'date_to' => date('Y-m-d') + ); + + $this->tpl_form_vars = array('style' => 'float:left;'); + $this->table = 'invoice_date'; + $this->toolbar_title = $this->l('Print PDF invoices'); + return parent::initForm(); + } + + public function initFormByStatus() + { + $this->fields_form = array( + 'legend' => array( + 'title' => $this->l('By statuses'), + 'image' => '../img/admin/pdf.gif' + ), + 'input' => array( + array( + 'type' => 'checkboxStatuses', + 'label' => $this->l('Statuses:'), + 'name' => 'id_order_state', + 'values' => array( + 'query' => OrderState::getOrderStates($this->context->language->id), + 'id' => 'id_order_state', + 'name' => 'name' + ), + 'p' => $this->l('You can also export orders which have not been charged yet').' ().' + ) + ), + 'submit' => array( + 'title' => $this->l('Generate PDF file by status'), + 'class' => 'button', + 'id' => 'submitPrint2' + ) + ); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' + SELECT COUNT(*) as nbOrders, ( + SELECT oh.id_order_state + FROM '._DB_PREFIX_.'order_history oh + WHERE oh.id_order = o.id_order + ORDER BY oh.date_add DESC, oh.id_order_history DESC + LIMIT 1 + ) id_order_state + FROM '._DB_PREFIX_.'orders o + WHERE o.id_shop IN('.implode(', ', $this->context->shop->getListOfID()).') + GROUP BY id_order_state + '); + + $status_stats = array(); + foreach ($result as $row) + $status_stats[$row['id_order_state']] = $row['nbOrders']; + + $this->tpl_form_vars = array( + 'statusStats' => $status_stats, + 'style' => 'margin-left:400px' + ); + + $this->table = 'invoice_status'; + $this->show_toolbar = false; + return parent::initForm(); + } + public function initContent() { - $statuses = OrderState::getOrderStates($this->context->language->id); - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' - SELECT COUNT(*) as nbOrders, ( - SELECT oh.id_order_state - FROM '._DB_PREFIX_.'order_history oh - WHERE oh.id_order = o.id_order - ORDER BY oh.date_add DESC, oh.id_order_history DESC - LIMIT 1 - ) id_order_state - FROM '._DB_PREFIX_.'orders o - WHERE o.id_shop IN('.implode(', ', $this->context->shop->getListOfID()).') - GROUP BY id_order_state'); - $statusStats = array(); - foreach ($result as $row) - $statusStats[$row['id_order_state']] = $row['nbOrders']; + $this->display = 'edit'; + $this->initToolbar(); + $this->content .= $this->initFormByDate(); + $this->content .= $this->initFormByStatus(); + $this->table = 'invoice'; + $this->content .= $this->initOptions(); $this->context->smarty->assign(array( - 'date' => date('Y-m-d'), - 'statuses' => $statuses, - 'statusStats' => $statusStats + 'content' => $this->content, + 'url_post' => self::$currentIndex.'&token='.$this->token, )); - parent::initContent(); + } + + public function initToolbar() + { + $this->toolbar_btn['save-date'] = array( + 'href' => '#', + 'desc' => $this->l('Generate PDF file by date') + ); + + $this->toolbar_btn['save-status'] = array( + 'href' => '#', + 'desc' => $this->l('Generate PDF file by status') + ); } public function postProcess() { - if (Tools::isSubmit('submitPrint')) + if (Tools::getValue('submitAddinvoice_date')) { 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 (!sizeof($this->_errors)) + if (!count($this->_errors)) { - $orders = Order::getOrdersIdInvoiceByDate(Tools::getValue('date_from'), Tools::getValue('date_to'), NULL, 'invoice'); - if (sizeof($orders)) + $orders = Order::getOrdersIdInvoiceByDate(Tools::getValue('date_from'), Tools::getValue('date_to'), null, 'invoice'); + if (count($orders)) 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'); } } - elseif (Tools::isSubmit('submitPrint2')) + else if (Tools::isSubmit('submitAddinvoice_status')) { - if (!is_array($statusArray = Tools::getValue('id_order_state')) OR !count($statusArray)) + if (!is_array($status_array = Tools::getValue('id_order_state')) || !count($status_array)) $this->_errors[] = $this->l('Invalid order statuses'); else { - foreach ($statusArray as $id_order_state) + 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('-',$statusArray).'&token='.$this->token); + Tools::redirectAdmin('pdf.php?invoices2&id_order_state='.implode('-', $status_array).'&token='.$this->token); $this->_errors[] = $this->l('No invoice found for this status'); } } @@ -108,7 +232,7 @@ class AdminInvoicesControllerCore extends AdminController public function beforeUpdateOptions() { - if ((int)Tools::getValue('PS_INVOICE_START_NUMBER') != 0 AND (int)Tools::getValue('PS_INVOICE_START_NUMBER') <= Order::getLastInvoiceNumber()) - $this->_errors[] = $this->l('Invalid invoice number (must be > ').Order::getLastInvoiceNumber() .')'; + if ((int)Tools::getValue('PS_INVOICE_START_NUMBER') != 0 && (int)Tools::getValue('PS_INVOICE_START_NUMBER') <= Order::getLastInvoiceNumber()) + $this->_errors[] = $this->l('Invalid invoice number (must be > ').Order::getLastInvoiceNumber().')'; } }