diff --git a/admin-dev/tabs/AdminStockManagement.php b/admin-dev/tabs/AdminStockManagement.php new file mode 100644 index 000000000..023479d21 --- /dev/null +++ b/admin-dev/tabs/AdminStockManagement.php @@ -0,0 +1,212 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 7307 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminStockManagement extends AdminTab +{ + public function __construct() + { + $this->context = Context::getContext(); + $this->table = 'stock_mvt'; + $this->className = 'StockMvt'; + $this->edit = false; + $this->delete = false; + $this->view = false; + + $this->fieldsDisplay = array( + 'id_stock_mvt' => array('title' => $this->l('ID'), 'width' => 40), + 'product_name' => array('title' => $this->l('Product Name'), 'width' => 200, 'havingFilter' => true), + 'physical_quantity' => array('title' => $this->l('Quantity'), 'width' => 40), + 'reason' => array('title' => $this->l('Reason'), 'width' => 200), + 'id_order' => array('title' => $this->l('ID Order'), 'width' => 40), + 'employee' => array('title' => $this->l('Employee'), 'width' => 100, 'havingFilter' => true), + 'warehouse' => array('title' => $this->l('Warehouse'), 'width' => 100, 'havingFilter' => true), + ); + + $this->_select = 'CONCAT(pl.name, \' \', GROUP_CONCAT(IFNULL(al.name, \'\'), \'\')) product_name, CONCAT(e.lastname, \' \', e.firstname) AS employee, mrl.name AS reason, CONCAT(w.reference, " - ", w.name) AS warehouse'; + $this->_join = 'INNER JOIN '._DB_PREFIX_.'stock stock ON a.id_stock = stock.id_stock + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (stock.id_product = pl.id_product AND pl.id_lang = '.(int)$this->context->language->id.$this->context->shop->sqlLang('pl').') + LEFT JOIN `'._DB_PREFIX_.'stock_mvt_reason_lang` mrl ON (a.id_stock_mvt_reason = mrl.id_stock_mvt_reason AND mrl.id_lang = '.(int)$this->context->language->id.') + LEFT JOIN `'._DB_PREFIX_.'employee` e ON (e.id_employee = a.id_employee) + LEFT JOIN `'._DB_PREFIX_.'warehouse` w ON (w.id_warehouse = stock.id_warehouse) + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pac.id_product_attribute = stock.id_product_attribute) + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (al.id_attribute = pac.id_attribute AND al.id_lang = '.(int)$this->context->language->id.')'; + $this->_group = 'GROUP BY a.id_stock_mvt'; + parent::__construct(); + } + + public function postProcess() + { + /*if (Tools::isSubmit('rebuildStock')) + StockMvt::addMissingMvt($this->context->employee->id, false);*/ + return parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $dl = 'name'; + echo '
+ '.($obj->id ? '' : '').' +
'.$this->l('Stock Movement').' + +
'; + foreach ($this->_languages as $language) + echo '
+ * +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $dl, 'name'); + echo '
+
 
+ +
+ +
+
 
'; + echo '
+ +
+
+
'; + } +/* + public function viewstock_mvt() + { + $stockMvt = new StockMvt((int)Tools::getValue('id_stock_mvt')); + $product = new Product((int)$stockMvt->id_product, true, $this->context->language->id); + $movements = $product->getStockMvts($this->context->language->id); + + echo '

'.$this->l('Stock Movements for').' '.$product->name.'

+ + + + + + + + + + '; + $irow = 0; + foreach ($movements AS $k => $mvt) + { + echo ' + + + + + + + + + '; + } + echo '
'.$this->l('ID').''.$this->l('Product Name').''.$this->l('Quantity').''.$this->l('Reason').''.$this->l('Employee').''.$this->l('Order').''.$this->l('Date').'
'.$mvt['id_stock_mvt'].''.$mvt['product_name'].''.$mvt['quantity'].''.$mvt['reason'].''.$mvt['employee'].'#'.$mvt['id_order'].''.Tools::displayDate($mvt['date_add'], $this->context->language->id).'
'; + } +*/ + public function display() + { + $old_post = false; + + if (!isset($_GET['addstock_mvt_reason']) OR (Tools::isSubmit('submitAddstock_mvt_reason') AND Tools::getValue('id_stock_mvt_reason'))) + { + if (isset($_POST)) + { + $old_post = $_POST; + } + echo '

'.$this->l('Stock movement history').'

'; + parent::display(); + /*if (!isset($_GET['view'.$this->table])) + echo ' +
+
+ +
+ +
+
+

';*/ + } + if (isset($_GET['view'.$this->table])) + return; + if ($old_post) + $_POST = $old_post; + + $this->table = 'stock_mvt_reason'; + $this->className = 'StockMvtReason'; + $this->identifier = 'id_stock_mvt_reason'; + $this->edit = true; + $this->delete = true; + $this->lang = true; + $this->add = true; + $this->view = false; + $this->_listSkipDelete = array(1,2,3,4); + + + $this->_defaultOrderBy = $this->identifier; + $this->fieldsDisplay = array('id_stock_mvt_reason' => array('title' => $this->l('ID'), 'width' => 40), + 'sign' => array('title' => $this->l('Sign'), 'width' => 15, 'align' => 'center', 'type' => 'select', 'icon' => array(-1 => 'arrow_down.png', 1 => 'arrow_up.png'), 'orderby' => false), + 'name' => array('title' => $this->l('Name'), 'width' => 500)); + + $reasons_inc = StockMvtReason::getStockMvtReasons($this->context->language->id, 1); + $reasons_dec = StockMvtReason::getStockMvtReasons($this->context->language->id, -1); + + $this->optionsList = array( + 'general' => array( + 'title' => $this->l('Options'), + 'fields' => array( + 'PS_STOCK_MVT_INC_REASON_DEFAULT' => array( + 'title' => $this->l('Default Stock Movement reason for increment stock:'), + 'cast' => 'intval', + 'type' => 'select', + 'list' => $reasons_inc, + 'identifier' => 'id_stock_mvt_reason' + ), + 'PS_STOCK_MVT_DEC_REASON_DEFAULT' => array( + 'title' => $this->l('Default Stock Movement reason for decrement stock:'), + 'cast' => 'intval', + 'type' => 'select', + 'list' => $reasons_dec, + 'identifier' => 'id_stock_mvt_reason' + ), + ), + ), + ); + unset($this->_select, $this->_join, $this->_group, $this->_filterHaving, $this->_filter); + + echo '

'.$this->l('Stock movement reason').'

'; + $this->postProcess(); + return parent::display(); + } +} + + diff --git a/admin-dev/themes/template/adminStock.tpl b/admin-dev/themes/template/adminStock.tpl new file mode 100644 index 000000000..4634a7489 --- /dev/null +++ b/admin-dev/themes/template/adminStock.tpl @@ -0,0 +1,32 @@ +{* +* 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: 8697 $ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +
+ {l s='Stock Management'} +

{l s='Several tools are available to manage your stock.'}

+
+

{l s='Please choose a tool by selecting a Tools sub-tab above.'}

+