From 0fd7bdcea458fcab1a651e4b499c9f712fb5788a Mon Sep 17 00:00:00 2001 From: bMancone Date: Mon, 14 Nov 2011 14:28:30 +0000 Subject: [PATCH] // Warehouse: getWarehouseList is now getWarehouses. Employee: it is not possible to delete an employee if he manages warehouses, anymore. --- classes/stock/Warehouse.php | 26 +++++++++++++++---- .../admin/AdminEmployeesController.php | 8 ++++++ controllers/admin/AdminOrdersController.php | 2 +- .../admin/AdminStockCoverController.php | 2 +- .../AdminStockInstantStateController.php | 2 +- controllers/admin/AdminStockMvtController.php | 2 +- .../admin/AdminSupplierOrdersController.php | 2 +- 7 files changed, 34 insertions(+), 10 deletions(-) diff --git a/classes/stock/Warehouse.php b/classes/stock/Warehouse.php index 2834c170e..f34a5f3c0 100644 --- a/classes/stock/Warehouse.php +++ b/classes/stock/Warehouse.php @@ -260,14 +260,14 @@ class WarehouseCore extends ObjectModel } /** - * Gets the list of warehouses + * Gets the wareehouses * It is possible via ignore_shop and id_shop to filter the list with shop id * * @param bool $ignore_shop false by default * @param int $id_shop null by default * @return array */ - public static function getWarehouseList($ignore_shop = false, $id_shop = null) + public static function getWarehouses($ignore_shop = false, $id_shop = null) { if (!$ignore_shop) if (is_null($id_shop)) @@ -326,10 +326,26 @@ class WarehouseCore extends ObjectModel public function getStockValue() { $query = new DbQuery(); - $query->select('SUM(s.`price_te`)'); - $query->from('stock s'); - $query->where('s.`id_warehouse` = '.(int)$this->id); + $query->select('SUM(s.`price_te`)'); + $query->from('stock s'); + $query->where('s.`id_warehouse` = '.(int)$this->id); return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query); } + + /** + * For a given employee, gets the warehouse(s) he manages + * + * @param int $id_employee + * @return array ids_warehouse + */ + public static function getWarehousesByEmployee($id_employee) + { + $query = new DbQuery(); + $query->select('w.id_warehouse'); + $query->from('warehouse w'); + $query->where('w.id_employee = '.(int)$id_employee); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); + } } \ No newline at end of file diff --git a/controllers/admin/AdminEmployeesController.php b/controllers/admin/AdminEmployeesController.php index ec4a48a63..54da486e1 100644 --- a/controllers/admin/AdminEmployeesController.php +++ b/controllers/admin/AdminEmployeesController.php @@ -331,6 +331,14 @@ class AdminEmployeesControllerCore extends AdminController $this->_errors[] = Tools::displayError('You cannot disable or delete the last administrator account.'); return false; } + + // It is not possible to delete an employee if he manages warehouses + $warehouses = Warehouse::getWarehousesByEmployee((int)Tools::getValue('id_employee')); + if (Tools::isSubmit('deleteemployee') && count($warehouses) > 0) + { + $this->_errors[] = Tools::displayError('You cannot delete this account since it manages warehouses. Check your warehouses first.'); + return false; + } } else if (Tools::isSubmit('submitAddemployee')) { diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php index 7c381f26a..b9c04860d 100755 --- a/controllers/admin/AdminOrdersController.php +++ b/controllers/admin/AdminOrdersController.php @@ -534,7 +534,7 @@ class AdminOrdersControllerCore extends AdminController 'carrier' => $carrier = new Carrier($order->id_carrier), 'history' => $order->getHistory($this->context->language->id), 'states' => OrderState::getOrderStates($this->context->language->id), - 'warehouse_list' => Warehouse::getWarehouseList(false, $order->id_shop), + 'warehouse_list' => Warehouse::getWarehouses(false, $order->id_shop), 'sources' => ConnectionsSource::getOrderSources($order->id), 'currentState' => OrderHistory::getLastOrderState($order->id), 'currency' => new Currency($order->id_currency), diff --git a/controllers/admin/AdminStockCoverController.php b/controllers/admin/AdminStockCoverController.php index e8ea0b4f6..3b0e89815 100644 --- a/controllers/admin/AdminStockCoverController.php +++ b/controllers/admin/AdminStockCoverController.php @@ -82,7 +82,7 @@ class AdminStockCoverControllerCore extends AdminController ); // gets the list of warehouses available - $this->stock_cover_warehouses = Warehouse::getWarehouseList(true); + $this->stock_cover_warehouses = Warehouse::getWarehouses(true); // gets the final list of warehouses array_unshift($this->stock_cover_warehouses, array('id_warehouse' => -1, 'name' => $this->l('All Warehouses'))); diff --git a/controllers/admin/AdminStockInstantStateController.php b/controllers/admin/AdminStockInstantStateController.php index 20ece73ea..417c3466a 100644 --- a/controllers/admin/AdminStockInstantStateController.php +++ b/controllers/admin/AdminStockInstantStateController.php @@ -85,7 +85,7 @@ class AdminStockInstantStateControllerCore extends AdminController ), ); - $this->stock_instant_state_warehouses = Warehouse::getWarehouseList(true); + $this->stock_instant_state_warehouses = Warehouse::getWarehouses(true); array_unshift($this->stock_instant_state_warehouses, array('id_warehouse' => -1, 'name' => $this->l('All Warehouses'))); parent::__construct(); diff --git a/controllers/admin/AdminStockMvtController.php b/controllers/admin/AdminStockMvtController.php index 09abbb902..d61f825c5 100644 --- a/controllers/admin/AdminStockMvtController.php +++ b/controllers/admin/AdminStockMvtController.php @@ -202,7 +202,7 @@ class AdminStockMvtControllerCore extends AdminController /* * Manage second list */ - $warehouses = Warehouse::getWarehouseList(true); + $warehouses = Warehouse::getWarehouses(true); array_unshift($warehouses, array('id_warehouse' => -1, 'name' => $this->l('All Warehouses'))); $this->tpl_list_vars['list_warehouses'] = $warehouses; $this->tpl_list_vars['current_warehouse'] = $this->getCurrentWarehouseId(); diff --git a/controllers/admin/AdminSupplierOrdersController.php b/controllers/admin/AdminSupplierOrdersController.php index 1fa65cfdc..ddf8612cd 100644 --- a/controllers/admin/AdminSupplierOrdersController.php +++ b/controllers/admin/AdminSupplierOrdersController.php @@ -327,7 +327,7 @@ class AdminSupplierOrdersControllerCore extends AdminController $this->addJqueryUI('ui.datepicker'); //get warehouses list - $warehouses = Warehouse::getWarehouseList(true); + $warehouses = Warehouse::getWarehouses(true); //get currencies list $currencies = Currency::getCurrencies();