From e236f28fbda6d9ea388f259017a491487fb2625d Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 15 Mar 2017 19:47:42 +0100 Subject: [PATCH] Item template adjustments --- Admin/Installer.php | 152 ++++++++++++++------------ Controller.php | 5 + Models/ItemMapper.php | 137 +++++++++++++++++++++++ Theme/Backend/item-create.tpl.php | 94 ++++++++-------- Theme/Backend/sales-item-list.tpl.php | 11 +- 5 files changed, 283 insertions(+), 116 deletions(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index 31a2e48..bacaba0 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -25,7 +25,7 @@ use phpOMS\Module\InstallerAbstract; * Item Reference install class. * * @category Modules - * @package Modules\ItemReference + * @package Modules\itemmgmt * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 @@ -45,104 +45,114 @@ class Installer extends InstallerAbstract switch ($dbPool->get('core')->getType()) { case DatabaseType::MYSQL: $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_item` ( - `itemreference_item_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_item_no` varchar(30) DEFAULT NULL, - `itemreference_item_articlegroup` int(11) DEFAULT NULL, - `itemreference_item_salesgroup` int(11) DEFAULT NULL, - `itemreference_item_productgroup` int(11) DEFAULT NULL, - `itemreference_item_segment` int(11) DEFAULT NULL, - `itemreference_item_successor` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_item_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_item` ( + `itemmgmt_item_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_item_no` varchar(30) DEFAULT NULL, + `itemmgmt_item_articlegroup` int(11) DEFAULT NULL, + `itemmgmt_item_salesgroup` int(11) DEFAULT NULL, + `itemmgmt_item_productgroup` int(11) DEFAULT NULL, + `itemmgmt_item_segment` int(11) DEFAULT NULL, + `itemmgmt_item_successor` int(11) DEFAULT NULL, + `itemmgmt_item_info` varchar(255) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_item_id`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' + )->execute(); + + // all types here segment, sales group etc since it's easier to create l11n references?! + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_segmentation` ( + `itemmgmt_segmentation_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_segmentation_type` varchar(30) DEFAULT NULL, + `itemmgmt_segmentation_no` varchar(30) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_segmentation_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_segmentation` ( - `itemreference_segmentation_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_segmentation_type` varchar(30) DEFAULT NULL, - `itemreference_segmentation_no` varchar(30) DEFAULT NULL, - PRIMARY KEY (`itemreference_segmentation_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_segmentation_l11n` ( + `itemmgmt_segmentation_l11n_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_segmentation_no` varchar(30) DEFAULT NULL, + `itemmgmt_segmentation_name` varchar(30) DEFAULT NULL, + `itemmgmt_segmentation_language` varchar(30) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_segmentation_l11n_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_segmentation_l11n` ( - `itemreference_segmentation_l11n_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_segmentation_no` varchar(30) DEFAULT NULL, - `itemreference_segmentation_name` varchar(30) DEFAULT NULL, - `itemreference_segmentation_language` varchar(30) DEFAULT NULL, - PRIMARY KEY (`itemreference_segmentation_l11n_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_item_media` ( + `itemmgmt_item_media_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_item_media_src` int(11) NOT NULL, + `itemmgmt_item_media_dst` int(11) NOT NULL, + PRIMARY KEY (`itemmgmt_item_media_id`), + KEY `itemmgmt_item_media_src` (`itemmgmt_item_media_src`), + KEY `itemmgmt_item_media_dst` (`itemmgmt_item_media_dst`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_media` ( - `itemreference_media_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_media_item` int(11) DEFAULT NULL, - `itemreference_media_media` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_media_id`) + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'itemmgmt_item_media` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'itemmgmt_item_media_ibfk_1` FOREIGN KEY (`itemmgmt_item_media_src`) REFERENCES `' . $dbPool->get('core')->prefix . 'itemmgmt_item_media` (`itemmgmt_item_media_id`), + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'itemmgmt_item_media_ibfk_2` FOREIGN KEY (`itemmgmt_item_media_dst`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`);' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_item_l11n` ( + `itemmgmt_item_l11n_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_item_l11n_language` varchar(30) DEFAULT NULL, + `itemmgmt_item_l11n_name1` varchar(30) DEFAULT NULL, + `itemmgmt_item_l11n_name2` varchar(30) DEFAULT NULL, + `itemmgmt_item_l11n_name3` varchar(30) DEFAULT NULL, + `itemmgmt_item_l11n_desc` text DEFAULT NULL, + `itemmgmt_item_l11n_item` text DEFAULT NULL, + PRIMARY KEY (`itemmgmt_item_l11n_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_item_l11n` ( - `itemreference_item_l11n_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_item_l11n_language` varchar(30) DEFAULT NULL, - `itemreference_item_l11n_name1` varchar(30) DEFAULT NULL, - `itemreference_item_l11n_name2` varchar(30) DEFAULT NULL, - `itemreference_item_l11n_name3` varchar(30) DEFAULT NULL, - `itemreference_item_l11n_desc` text DEFAULT NULL, - `itemreference_item_l11n_item` text DEFAULT NULL, - PRIMARY KEY (`itemreference_item_l11n_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_partslist` ( + `itemmgmt_partslist_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_partslist_item` int(11) DEFAULT NULL, + `itemmgmt_partslist_ref` int(11) DEFAULT NULL, + `itemmgmt_partslist_pos` int(11) DEFAULT NULL, + `itemmgmt_partslist_amount` int(11) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_partslist_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_partslist` ( - `itemreference_partslist_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_partslist_item` int(11) DEFAULT NULL, - `itemreference_partslist_ref` int(11) DEFAULT NULL, - `itemreference_partslist_pos` int(11) DEFAULT NULL, - `itemreference_partslist_amount` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_partslist_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_purchase` ( + `itemmgmt_purchase_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_purchase_item` int(11) DEFAULT NULL, + `itemmgmt_purchase_supplier` int(11) DEFAULT NULL, + `itemmgmt_purchase_order_no` varchar(50) DEFAULT NULL, + `itemmgmt_purchase_amount` int(11) DEFAULT NULL, + `itemmgmt_purchase_leadtime` int(11) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_partslist_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_purchase` ( - `itemreference_purchase_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_purchase_item` int(11) DEFAULT NULL, - `itemreference_purchase_supplier` int(11) DEFAULT NULL, - `itemreference_purchase_order_no` varchar(50) DEFAULT NULL, - `itemreference_purchase_amount` int(11) DEFAULT NULL, - `itemreference_purchase_leadtime` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_partslist_id`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_purchase_price` ( - `itemreference_purchase_price_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_purchase_price_supplier` int(11) DEFAULT NULL, - `itemreference_purchase_price_amount` varchar(50) DEFAULT NULL, - `itemreference_purchase_price_price` int(11) DEFAULT NULL, - `itemreference_purchase_price_bonus` int(11) DEFAULT NULL, - `itemreference_purchase_price_discountp` int(11) DEFAULT NULL, - `itemreference_purchase_price_discount` int(11) DEFAULT NULL, - `itemreference_purchase_price_weight` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_purchase_price_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_purchase_price` ( + `itemmgmt_purchase_price_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_purchase_price_supplier` int(11) DEFAULT NULL, + `itemmgmt_purchase_price_amount` varchar(50) DEFAULT NULL, + `itemmgmt_purchase_price_price` int(11) DEFAULT NULL, + `itemmgmt_purchase_price_bonus` int(11) DEFAULT NULL, + `itemmgmt_purchase_price_discountp` int(11) DEFAULT NULL, + `itemmgmt_purchase_price_discount` int(11) DEFAULT NULL, + `itemmgmt_purchase_price_weight` int(11) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_purchase_price_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemreference_disposal` ( - `itemreference_disposal_id` int(11) NOT NULL AUTO_INCREMENT, - `itemreference_disposal_item` int(11) DEFAULT NULL, - `itemreference_disposal_type` int(11) DEFAULT NULL, - `itemreference_disposal_amount` int(11) DEFAULT NULL, - `itemreference_disposal_cost` int(11) DEFAULT NULL, - PRIMARY KEY (`itemreference_disposal_id`) + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'itemmgmt_disposal` ( + `itemmgmt_disposal_id` int(11) NOT NULL AUTO_INCREMENT, + `itemmgmt_disposal_item` int(11) DEFAULT NULL, + `itemmgmt_disposal_type` int(11) DEFAULT NULL, + `itemmgmt_disposal_amount` int(11) DEFAULT NULL, + `itemmgmt_disposal_cost` int(11) DEFAULT NULL, + PRIMARY KEY (`itemmgmt_disposal_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); diff --git a/Controller.php b/Controller.php index 37da47c..5d2de18 100644 --- a/Controller.php +++ b/Controller.php @@ -18,6 +18,8 @@ namespace Modules\ItemManagement; use Modules\Navigation\Models\Navigation; use Modules\Navigation\Views\NavigationView; +use Modules\ItemManagement\Models\Item; +use Modules\ItemManagement\Models\ItemMapper; use phpOMS\Contract\RenderableInterface; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -97,6 +99,9 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/ItemManagement/Theme/Backend/sales-item-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004805001, $request, $response)); + $items = ItemMapper::getNewest(50); + $view->addData('items', $items); + return $view; } diff --git a/Models/ItemMapper.php b/Models/ItemMapper.php index e69de29..b07febe 100644 --- a/Models/ItemMapper.php +++ b/Models/ItemMapper.php @@ -0,0 +1,137 @@ + + * @author Dennis Eichhorn + * @copyright Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +declare(strict_types=1); +namespace Modules\ItemManagement\Models; + +use Modules\Media\Models\MediaMapper; +use Modules\Profile\Models\ProfileMapper; +use Modules\Profile\Models\ContactElement; +use Modules\Profile\Models\ContactElementMapper; +use Modules\Profile\Models\ContactMapper; +use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Query\Builder; +use phpOMS\DataStorage\Database\Query\Column; +use phpOMS\DataStorage\Database\RelationType; + +class ItemMapper extends DataMapperAbstract +{ + /** + * Columns. + * + * @var array + * @since 1.0.0 + */ + protected static $columns = [ + 'itemmgmt_item_id' => ['name' => 'itemmgmt_item_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_item_no' => ['name' => 'itemmgmt_item_no', 'type' => 'int', 'internal' => 'number'], + 'itemmgmt_item_segment' => ['name' => 'itemmgmt_item_segment', 'type' => 'int', 'internal' => 'segment'], + 'itemmgmt_item_productgroup' => ['name' => 'itemmgmt_item_productgroup', 'type' => 'int', 'internal' => 'productGroup'], + 'itemmgmt_item_salesgroup' => ['name' => 'itemmgmt_item_salesgroup', 'type' => 'int', 'internal' => 'salesGroup'], + 'itemmgmt_item_articlegroup' => ['name' => 'itemmgmt_item_articlegroup', 'type' => 'int', 'internal' => 'articleGroup'], + 'itemmgmt_item_successor' => ['name' => 'itemmgmt_item_successor', 'type' => 'int', 'internal' => 'sucessor'], + 'itemmgmt_item_info' => ['name' => 'itemmgmt_item_info', 'type' => 'string', 'internal' => 'info'], + ]; + + /** + * Primary table. + * + * @var string + * @since 1.0.0 + */ + protected static $table = 'itemmgmt_item'; + + /** + * Primary field name. + * + * @var string + * @since 1.0.0 + */ + protected static $primaryField = 'itemmgmt_item_id'; + + protected static $hasMany = [ + 'media' => [ + 'mapper' => MediaMapper::class, /* mapper of the related object */ + 'table' => 'itemmgmt_item_media', /* table of the related object, null if no relation table is used (many->1) */ + 'dst' => 'itemmgmt_item_media_dst', + 'src' => 'itemmgmt_item_media_src', + ], + ]; + + /** + * Create object. + * + * @param mixed $obj Object + * @param int $relations Behavior for relations creation + * + * @return mixed + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public static function create($obj, int $relations = RelationType::ALL) + { + try { + $objId = parent::create($obj, $relations); + + if($objId === null || !is_scalar($objId)) { + return $objId; + } + + $query = new Builder(self::$db); + + $query->prefix(self::$db->getPrefix()) + ->insert( + 'account_permission_account', + 'account_permission_from', + 'account_permission_for', + 'account_permission_id1', + 'account_permission_id2', + 'account_permission_r', + 'account_permission_w', + 'account_permission_m', + 'account_permission_d', + 'account_permission_p' + ) + ->into('account_permission') + ->values(1, 'itemmgmt_item', 'itemmgmt_item', 1, $objId, 1, 1, 1, 1, 1); + + self::$db->con->prepare($query->toSql())->execute(); + } catch (\Exception $e) { + var_dump($e->getMessage()); + + return false; + } + + return $objId; + } + + /** + * Get object. + * + * @param mixed $primaryKey Key + * @param int $relations Load relations + * @param mixed $fill Object to fill + * + * @return Client + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public static function get($primaryKey, int $relations = RelationType::ALL, $fill = null) + { + return parent::get((int) $primaryKey, $relations, $fill); + } +} diff --git a/Theme/Backend/item-create.tpl.php b/Theme/Backend/item-create.tpl.php index ab8f8f1..e8c613c 100644 --- a/Theme/Backend/item-create.tpl.php +++ b/Theme/Backend/item-create.tpl.php @@ -40,53 +40,59 @@ echo $this->getData('nav')->render(); ?>
-
-

getText('Item') ?>

-
-
- - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+

getText('Item') ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-

getText('Language') ?>

-
-
- - -
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+

getText('Language') ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/Theme/Backend/sales-item-list.tpl.php b/Theme/Backend/sales-item-list.tpl.php index b293306..3893767 100644 --- a/Theme/Backend/sales-item-list.tpl.php +++ b/Theme/Backend/sales-item-list.tpl.php @@ -19,6 +19,8 @@ $footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig'); $footerView->setPages(20); $footerView->setPage(1); +$items = $this->getData('items'); + echo $this->getData('nav')->render(); ?>
@@ -38,7 +40,14 @@ echo $this->getData('nav')->render(); ?> render(); ?> - $value) : $count++; ?> + $value) : $count++; ?> + + getNumber(); ?> + + + + + getText('Empty', 0, 0); ?>