From d010c0a9f6a7897834e5aa056cecd309bd463e90 Mon Sep 17 00:00:00 2001 From: bMancone Date: Tue, 13 Dec 2011 14:50:57 +0000 Subject: [PATCH] // Improved StockInstantState/StockMvt/SupplyOrders interfaces --- .../AdminStockInstantStateController.php | 14 ++- controllers/admin/AdminStockMvtController.php | 11 ++- .../admin/AdminSupplyOrdersController.php | 90 +++++++++++-------- 3 files changed, 72 insertions(+), 43 deletions(-) diff --git a/controllers/admin/AdminStockInstantStateController.php b/controllers/admin/AdminStockInstantStateController.php index 1f43c2e95..6e1bc59fe 100644 --- a/controllers/admin/AdminStockInstantStateController.php +++ b/controllers/admin/AdminStockInstantStateController.php @@ -158,10 +158,16 @@ class AdminStockInstantStateControllerCore extends AdminController $list = parent::renderList(); // if export requested - if ((Tools::isSubmit('csv_quantities') || Tools::isSubmit('csv_prices')) && (int)Tools::getValue('id_warehouse') != -1) + if ((Tools::isSubmit('csv_quantities') || Tools::isSubmit('csv_prices')) && + (int)Tools::getValue('id_warehouse') != -1) { - $this->renderCSV(); - die; + if (count($this->_list) > 0) + { + $this->renderCSV(); + die; + } + else + $this->displayWarning($this->l('There is nothing to export as CSV.')); } return $list; @@ -283,7 +289,7 @@ class AdminStockInstantStateControllerCore extends AdminController */ public function initToolbar() { - if (Tools::isSubmit('id_warehouse') && (int)Tools::getValue('id_warehouse') != -1 && count($this->_list) > 0) + if (Tools::isSubmit('id_warehouse') && (int)Tools::getValue('id_warehouse') != -1) { $this->toolbar_btn['export-stock-state-quantities-csv'] = array( 'short' => 'Export this list as CSV', diff --git a/controllers/admin/AdminStockMvtController.php b/controllers/admin/AdminStockMvtController.php index 647052ac2..0d8455317 100644 --- a/controllers/admin/AdminStockMvtController.php +++ b/controllers/admin/AdminStockMvtController.php @@ -171,8 +171,13 @@ class AdminStockMvtControllerCore extends AdminController // if export requested if (Tools::isSubmit('csv')) { - $this->renderCSV(); - die; + if (count($this->_list) > 0) + { + $this->renderCSV(); + die; + } + else + $this->displayWarning($this->l('There is nothing to export as CSV.')); } return $list; @@ -229,7 +234,7 @@ class AdminStockMvtControllerCore extends AdminController */ public function initToolbar() { - if (count($this->_list) > 0) + if (Tools::isSubmit('id_warehouse') && (int)Tools::getValue('id_warehouse') != -1) { $this->toolbar_btn['export-stock-mvt-csv'] = array( 'short' => 'Export this list as CSV', diff --git a/controllers/admin/AdminSupplyOrdersController.php b/controllers/admin/AdminSupplyOrdersController.php index 2413a87e7..555d4e1dc 100644 --- a/controllers/admin/AdminSupplyOrdersController.php +++ b/controllers/admin/AdminSupplyOrdersController.php @@ -43,6 +43,7 @@ class AdminSupplyOrdersControllerCore extends AdminController $this->className = 'SupplyOrder'; $this->identifier = 'id_supply_order'; $this->lang = false; + $this->is_template_list = false; $this->addRowAction('updatereceipt'); $this->addRowAction('changestate'); @@ -309,6 +310,32 @@ class AdminSupplyOrdersControllerCore extends AdminController if (Tools::isSubmit('csv_orders') || Tools::isSubmit('csv_orders_details') || Tools::isSubmit('csv_order_details')) $limit = false; + // defines button specific for non-template supply orders + if (!$this->is_template_list) + { + // adds export csv buttons + $this->toolbar_btn['export-csv-orders'] = array( + 'short' => 'Export Orders', + 'href' => $this->context->link->getAdminLink('AdminSupplyOrders').'&csv_orders&id_warehouse='.$this->getCurrentWarehouse(), + 'desc' => $this->l('Export Orders (CSV)'), + ); + + $this->toolbar_btn['export-csv-details'] = array( + 'short' => 'Export Orders Details', + 'href' => $this->context->link->getAdminLink('AdminSupplyOrders').'&csv_orders_details&id_warehouse='.$this->getCurrentWarehouse(), + 'desc' => $this->l('Export Orders Details (CSV)'), + ); + + unset($this->toolbar_btn['new']); + if ($this->tabAccess['add'] === '1') + { + $this->toolbar_btn['new'] = array( + 'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token, + 'desc' => $this->l('Add new') + ); + } + } + parent::getList($id_lang, $order_by, $order_way, $start, $limit, $id_lang_shop); // actions filters on supply orders list @@ -343,16 +370,6 @@ class AdminSupplyOrdersControllerCore extends AdminController $this->tpl_list_vars['current_warehouse'] = $this->getCurrentWarehouse(); $this->tpl_list_vars['filter_status'] = $this->getFilterStatus(); - // access - unset($this->toolbar_btn['new']); - if ($this->tabAccess['add'] === '1') - { - $this->toolbar_btn['new'] = array( - 'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token, - 'desc' => $this->l('Add new') - ); - } - // overrides query $this->_select = ' s.name AS supplier, @@ -383,30 +400,20 @@ class AdminSupplyOrdersControllerCore extends AdminController $this->_where .= ' AND st.enclosed != 1'; $first_list = parent::renderList(); - if (count($this->_list) > 0) - { - // adds export csv buttons - $this->toolbar_btn['export-csv-orders'] = array( - 'short' => 'Export Orders', - 'href' => $this->context->link->getAdminLink('AdminSupplyOrders').'&csv_orders', - 'desc' => $this->l('Export Orders (CSV)'), - ); - - $this->toolbar_btn['export-csv-details'] = array( - 'short' => 'Export Orders Details', - 'href' => $this->context->link->getAdminLink('AdminSupplyOrders').'&csv_orders_details', - 'desc' => $this->l('Export Orders Details (CSV)'), - ); - } - if (Tools::isSubmit('csv_orders') || Tools::isSubmit('csv_orders_details') || Tools::isSubmit('csv_order_details')) { - $this->renderCSV(); - die; + if (count($this->_list) > 0) + { + $this->renderCSV(); + die; + } + else + $this->displayWarning($this->l('There is nothing to export as CSV.')); } // second list : templates $second_list = null; + $this->is_template_list = true; unset($this->tpl_list_vars['warehouses']); unset($this->tpl_list_vars['current_warehouse']); unset($this->tpl_list_vars['filter_status']); @@ -421,7 +428,10 @@ class AdminSupplyOrdersControllerCore extends AdminController $this->addRowAction('edit'); $this->addRowAction('createsupplyorder'); // unsets some fields - unset($this->fieldsDisplay['state'], $this->fieldsDisplay['date_upd'], $this->fieldsDisplay['id_pdf'], $this->fieldsDisplay['date_delivery_expected']); + unset($this->fieldsDisplay['state'], + $this->fieldsDisplay['date_upd'], + $this->fieldsDisplay['id_pdf'], + $this->fieldsDisplay['date_delivery_expected']); // adds filter, to gets only templates unset($this->_where); $this->_where = ' AND a.is_template = 1'; @@ -431,6 +441,7 @@ class AdminSupplyOrdersControllerCore extends AdminController // re-defines toolbar & buttons $this->toolbar_title = $this->l('Stock : Supply orders templates'); $this->initToolbar(); + unset($this->toolbar_btn['new']); $this->toolbar_btn['new'] = array( 'href' => self::$currentIndex.'&add'.$this->table.'&mod=template&token='.$this->token, 'desc' => $this->l('Add new template') @@ -1055,7 +1066,7 @@ class AdminSupplyOrdersControllerCore extends AdminController if (Tools::isSubmit('create_supply_order') && Tools::isSubmit('id_supply_order')) $this->postProcessCopyFromTemplate(); - if ( (!count($this->_errors) && $this->is_editing_order) || !$this->is_editing_order) + if ((!count($this->_errors) && $this->is_editing_order) || !$this->is_editing_order) parent::postProcess(); // if the threshold is defined and we are saving the order @@ -1081,6 +1092,9 @@ class AdminSupplyOrdersControllerCore extends AdminController $orders = new Collection('SupplyOrder', $id_lang = (int)Context::getContext()->language->id); $orders->where('is_template = 0'); $orders->where('id_supply_order IN('.implode(', ', $ids).')'); + $id_warehouse = $this->getCurrentWarehouse(); + if ($id_warehouse != -1) + $orders->where('id_warehouse = '.(int)$id_warehouse); $orders->getAll(); $csv = new CSV($orders, $this->l('supply_orders')); $csv->export(); @@ -1102,19 +1116,23 @@ class AdminSupplyOrdersControllerCore extends AdminController return; // for each supply order - $keys = array('id_supply_order', 'id_product', 'id_product_attribute', 'reference', 'supplier_reference', 'ean13', 'upc', 'name', + $keys = array('id_product', 'id_product_attribute', 'reference', 'supplier_reference', 'ean13', 'upc', 'name', 'unit_price_te', 'quantity_expected', 'quantity_received', 'price_te', 'discount_rate', 'discount_value_te', 'price_with_discount_te', 'tax_rate', 'tax_value', 'price_ti', 'tax_value_with_order_discount', - 'price_with_order_discount_te'); + 'price_with_order_discount_te', 'id_supply_order'); echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $keys))); foreach ($ids as $id) { $query = new DbQuery(); - $query->select(implode(',', $keys)); - $query->from('supply_order_detail'); - $query->where('id_supply_order = '.(int)$id); - $query->orderBy('id_supply_order_detail DESC'); + $query->select(implode(', sod.', $keys)); + $query->from('supply_order_detail sod'); + $query->leftJoin('supply_order so ON (so.id_supply_order = sod.id_supply_order)'); + $id_warehouse = $this->getCurrentWarehouse(); + if ($id_warehouse != -1) + $query->where('so.id_warehouse = '.(int)$id_warehouse); + $query->where('sod.id_supply_order = '.(int)$id); + $query->orderBy('sod.id_supply_order_detail DESC'); $resource = Db::getInstance()->query($query); // gets details while ($row = Db::getInstance()->nextRow($resource))