From de91510beb5a51582daa7a74bdfdeefdda398a94 Mon Sep 17 00:00:00 2001 From: Steve Ireland Date: Sat, 2 Sep 2017 13:31:33 -0400 Subject: [PATCH] Add Office Menu --- application/controllers/Config.php | 3 + application/controllers/Employees.php | 13 +++- application/controllers/Home.php | 5 ++ application/controllers/Office.php | 24 +++++++ application/controllers/Secure_Controller.php | 21 +++++- application/language/en-US/config_lang.php | 1 + application/language/en-US/module_lang.php | 4 ++ application/models/Employee.php | 41 ++++++++--- application/models/Module.php | 61 +++++++++++++++- application/views/configs/general_config.php | 32 +++++++-- application/views/employees/form.php | 56 ++++++++------- application/views/office.php | 23 +++++++ application/views/partial/header.php | 17 +++-- database/3.1.0_to_office-menu.sql | 20 ++++++ database/database.sql | 63 +++++++++-------- database/tables.sql | 65 ++++++++++-------- public/images/menubar/home.png | Bin 0 -> 1099 bytes public/images/menubar/office.png | Bin 0 -> 1099 bytes 18 files changed, 342 insertions(+), 107 deletions(-) create mode 100644 application/controllers/Office.php create mode 100644 application/views/office.php create mode 100644 database/3.1.0_to_office-menu.sql create mode 100644 public/images/menubar/home.png create mode 100644 public/images/menubar/office.png diff --git a/application/controllers/Config.php b/application/controllers/Config.php index 6684f52ed..fce888253 100644 --- a/application/controllers/Config.php +++ b/application/controllers/Config.php @@ -206,6 +206,7 @@ class Config extends Secure_Controller $data['register_mode_options'] = $this->sale_lib->get_register_mode_options(); $data['rounding_options'] = Rounding_mode::get_rounding_options(); $data['tax_codes'] = $this->get_tax_code_options(); + $data['show_office_group'] = $this->Module->get_show_office_group(); $data = $this->xss_clean($data); @@ -308,6 +309,8 @@ class Config extends Secure_Controller 'custom10_name' => $this->input->post('custom10_name') ); + $this->Module->set_show_office_group($this->input->post('show_office_group') != NULL); + $result = $this->Appconfig->batch_save($batch_save_data); $success = $result ? TRUE : FALSE; diff --git a/application/controllers/Employees.php b/application/controllers/Employees.php index 533f334b2..18960ad4a 100644 --- a/application/controllers/Employees.php +++ b/application/controllers/Employees.php @@ -61,6 +61,7 @@ class Employees extends Persons { $module->module_id = $this->xss_clean($module->module_id); $module->grant = $this->xss_clean($this->Employee->has_grant($module->module_id, $person_info->person_id)); + $module->menu_group = $this->xss_clean($this->Employee->get_menu_group($module->module_id, $person_info->person_id)); $modules[] = $module; } @@ -134,6 +135,16 @@ class Employees extends Persons 'comments' => $this->input->post('comments'), ); $grants_data = $this->input->post('grants') != NULL ? $this->input->post('grants') : array(); + $menu_groups = $this->input->post('menu_groups') != NULL ? $this->input->post('menu_groups') : array(); + + $grants_array = array(); + foreach ($grants_data as $key => $value) + { + $grants = array(); + $grants['permission_id'] = $value; + $grants['menu_group'] = $menu_groups[$key]; + $grants_array[] = $grants; + } //Password has been changed OR first time password set if($this->input->post('password') != '') @@ -149,7 +160,7 @@ class Employees extends Persons $employee_data = array('username' => $this->input->post('username')); } - if($this->Employee->save_employee($person_data, $employee_data, $grants_data, $employee_id)) + if($this->Employee->save_employee($person_data, $employee_data, $grants_array, $employee_id)) { // New employee if($employee_id == -1) diff --git a/application/controllers/Home.php b/application/controllers/Home.php index 87c1df243..c4c4a5820 100644 --- a/application/controllers/Home.php +++ b/application/controllers/Home.php @@ -4,6 +4,11 @@ require_once("Secure_Controller.php"); class Home extends Secure_Controller { + function __construct() + { + parent::__construct(NULL,NULL,'home'); + } + public function index() { $this->load->view('home'); diff --git a/application/controllers/Office.php b/application/controllers/Office.php new file mode 100644 index 000000000..d9339a4d0 --- /dev/null +++ b/application/controllers/Office.php @@ -0,0 +1,24 @@ +load->view('office'); + } + + public function logout() + { + $this->track_page('logout', 'logout'); + + $this->Employee->logout(); + } +} +?> diff --git a/application/controllers/Secure_Controller.php b/application/controllers/Secure_Controller.php index ad7f18e20..3125ae518 100644 --- a/application/controllers/Secure_Controller.php +++ b/application/controllers/Secure_Controller.php @@ -6,7 +6,7 @@ class Secure_Controller extends CI_Controller * Controllers that are considered secure extend Secure_Controller, optionally a $module_id can * be set to also check if a user can access a particular module in the system. */ - public function __construct($module_id = NULL, $submodule_id = NULL) + public function __construct($module_id = NULL, $submodule_id = NULL, $menu_group = NULL) { parent::__construct(); @@ -28,7 +28,24 @@ class Secure_Controller extends CI_Controller } // load up global data visible to all the loaded views - $data['allowed_modules'] = $this->Module->get_allowed_modules($logged_in_employee_info->person_id); + + $this->load->library('session'); + if($menu_group == NULL) + { + $menu_group = $this->session->userdata('menu_group'); + } + else + { + $this->session->set_userdata('menu_group', $menu_group); + } + if($menu_group == 'home') + { + $data['allowed_modules'] = $this->Module->get_allowed_home_modules($logged_in_employee_info->person_id); + } + else + { + $data['allowed_modules'] = $this->Module->get_allowed_office_modules($logged_in_employee_info->person_id); + } $data['user_info'] = $logged_in_employee_info; $data['controller_name'] = $module_id; diff --git a/application/language/en-US/config_lang.php b/application/language/en-US/config_lang.php index f106569f9..3b028986c 100644 --- a/application/language/en-US/config_lang.php +++ b/application/language/en-US/config_lang.php @@ -225,6 +225,7 @@ $lang["config_sales_invoice_format"] = "Sales Invoice Format"; $lang["config_sales_quote_format"] = "Sales Quote Format"; $lang["config_saved_successfully"] = "Configuration save successful."; $lang["config_saved_unsuccessfully"] = "Configuration save failed."; +$lang["config_show_office_group"] = "Show office icon"; $lang["config_statistics"] = "Send Statistics"; $lang["config_statistics_tooltip"] = "Send statistics for development and feature improvement purposes."; $lang["config_stock_location"] = "Stock location"; diff --git a/application/language/en-US/module_lang.php b/application/language/en-US/module_lang.php index e447a17a6..55bc997a4 100644 --- a/application/language/en-US/module_lang.php +++ b/application/language/en-US/module_lang.php @@ -1,5 +1,6 @@ db->insert('grants', array('permission_id' => $permission_id, 'person_id' => $employee_id)); + $success = $this->db->insert('grants', array('permission_id' => $grant['permission_id'], 'person_id' => $employee_id, 'menu_group' => $grant['menu_group'])); + $count = $count+ 1; } } } @@ -390,9 +392,9 @@ class Employee extends Person return ($this->db->get()->num_rows() == 0); } - /* - Determines whether the employee specified employee has access the specific module. - */ + /** + * Determines whether the employee specified employee has access the specific module. + */ public function has_grant($permission_id, $person_id) { //if no module_id is null, allow access @@ -406,9 +408,32 @@ class Employee extends Person return ($query->num_rows() == 1); } - /* - Gets employee permission grants - */ + /** + * Returns the menu group designation that this module is to appear in + */ + public function get_menu_group($permission_id, $person_id) + { + $this->db->select('menu_group'); + $this->db->from('grants'); + $this->db->where('permission_id', $permission_id); + $this->db->where('person_id', $person_id); + + $row = $this->db->get()->row(); + + // If no grants are assigned yet then set the default to 'home' + if ($row == null) + { + return "home"; + } + else + { + return $row->menu_group; + } + } + + /* + Gets employee permission grants + */ public function get_employee_grants($person_id) { $this->db->from('grants'); diff --git a/application/models/Module.php b/application/models/Module.php index 09edd4d6a..1b95375c7 100644 --- a/application/models/Module.php +++ b/application/models/Module.php @@ -6,6 +6,11 @@ class Module extends CI_Model { + function __construct() + { + parent::__construct(); + } + public function get_module_name($module_id) { $query = $this->db->get_where('modules', array('module_id' => $module_id), 1); @@ -55,19 +60,69 @@ class Module extends CI_Model { $this->db->from('modules'); $this->db->order_by('sort', 'asc'); - return $this->db->get(); } - public function get_allowed_modules($person_id) + public function get_allowed_home_modules($person_id) { + $menus = array('home', 'both'); $this->db->from('modules'); $this->db->join('permissions', 'permissions.permission_id = modules.module_id'); $this->db->join('grants', 'permissions.permission_id = grants.permission_id'); $this->db->where('person_id', $person_id); + $this->db->where_in('menu_group', $menus); + $this->db->where('sort !=', 0); $this->db->order_by('sort', 'asc'); - return $this->db->get(); } + + public function get_allowed_office_modules($person_id) + { + $menus = array('office', 'both'); + $this->db->from('modules'); + $this->db->join('permissions', 'permissions.permission_id = modules.module_id'); + $this->db->join('grants', 'permissions.permission_id = grants.permission_id'); + $this->db->where('person_id', $person_id); + $this->db->where_in('menu_group', $menus); + $this->db->where('sort !=', 0); + $this->db->order_by('sort', 'asc'); + return $this->db->get(); + } + + /** + * This method is used to set the show the office navigation icon on the home page + * which happens when the sort value is greater than zero + */ + public function set_show_office_group($show_office_group) + { + if($show_office_group) + { + $sort = 1; + } + else + { + $sort = 0; + } + + $modules_data = array( + 'sort' => $sort + ); + $this->db->where('module_id', 'office'); + $this->db->update('modules', $modules_data); + } + + /** + * This method is used to show the office navigation icon on the home page + * which happens when the sort value is greater than zero + */ + public function get_show_office_group() + { + $this->db->select('sort'); + $this->db->from('grants'); + $this->db->where('module_id', 'office'); + $this->db->from('modules'); + return $this->db->get()->row()->sort; + } + } ?> diff --git a/application/views/configs/general_config.php b/application/views/configs/general_config.php index 1b179cf5c..86bc5a8c0 100644 --- a/application/views/configs/general_config.php +++ b/application/views/configs/general_config.php @@ -94,7 +94,7 @@
- lang->line('config_gcaptcha_site_key'), 'config_gcaptcha_site_key', array('class' => 'required control-label col-xs-2')); ?> + lang->line('config_gcaptcha_site_key'), 'config_gcaptcha_site_key', array('class' => 'required control-label col-xs-2','id' => 'config_gcaptcha_site_key')); ?>
'gcaptcha_site_key', @@ -105,7 +105,7 @@
- lang->line('config_gcaptcha_secret_key'), 'config_gcaptcha_secret_key', array('class' => 'required control-label col-xs-2')); ?> + lang->line('config_gcaptcha_secret_key'), 'config_gcaptcha_secret_key', array('class' => 'required control-label col-xs-2','id' => 'config_gcaptcha_secret_key')); ?>
'gcaptcha_secret_key', @@ -150,6 +150,17 @@
+
+ lang->line('config_show_office_group'), 'show_office_group', array('class' => 'control-label col-xs-2')); ?> +
+ 'show_office_group', + 'id' => 'show_office_group', + 'value' => 'show_office_group', + 'checked' => $show_office_group)); ?> +
+
+
lang->line('config_custom1'), 'config_custom1', array('class' => 'control-label col-xs-2')); ?>
@@ -284,7 +295,17 @@ $(document).ready(function() { var enable_disable_gcaptcha_enable = (function() { var gcaptcha_enable = $("#gcaptcha_enable").is(":checked"); - $("#gcaptcha_site_key, #gcaptcha_secret_key").prop("disabled", !gcaptcha_enable); + if(gcaptcha_enable) + { + $("#gcaptcha_site_key, #gcaptcha_secret_key").prop("disabled", !gcaptcha_enable).addClass("required"); + $("#config_gcaptcha_site_key, #config_gcaptcha_secret_key").addClass("required"); + } + else + { + $("#gcaptcha_site_key, #gcaptcha_secret_key").prop("disabled", gcaptcha_enable).removeClass("required"); + $("#config_gcaptcha_site_key, #config_gcaptcha_secret_key").removeClass("required"); + } + return arguments.callee; })(); @@ -294,6 +315,7 @@ $(document).ready(function() window.location=''; }); + $('#general_config_form').validate($.extend(form_support.handler, { errorLabelContainer: "#general_error_message_box", @@ -312,11 +334,11 @@ $(document).ready(function() }, gcaptcha_site_key: { - required: true + required: "#gcaptcha_enable:checked" }, gcaptcha_secret_key: { - required: true + required: "#gcaptcha_enable:checked" } }, diff --git a/application/views/employees/form.php b/application/views/employees/form.php index 077a98639..cb97befc1 100644 --- a/application/views/employees/form.php +++ b/application/views/employees/form.php @@ -82,6 +82,11 @@ ?>
  • module_id, $module->grant, "class='module'"); ?> + $this->lang->line('module_home'), + 'office' => $this->lang->line('module_office'), + 'both' => $this->lang->line('module_both') + ), $module->menu_group, "class='module'"); ?> lang->line('module_'.$module->module_id);?>: lang->line('module_'.$module->module_id.'_desc');?>
  • permission_id, $permission->grant); ?> +
  • @@ -139,20 +145,20 @@ $(document).ready(function() $("ul#permission_list > li > input[name='grants[]']").each(function() { - var $this = $(this); - $("ul > li > input", $this.parent()).each(function() - { - var $that = $(this); - var updateCheckboxes = function (checked) - { + var $this = $(this); + $("ul > li > input", $this.parent()).each(function() + { + var $that = $(this); + var updateCheckboxes = function (checked) + { $that.prop("disabled", !checked); - !checked && $that.prop("checked", false); - } - $this.change(function() { - updateCheckboxes($this.is(":checked")); - }); + !checked && $that.prop("checked", false); + } + $this.change(function() { + updateCheckboxes($this.is(":checked")); + }); updateCheckboxes($this.is(":checked")); - }); + }); }); $('#employee_form').validate($.extend({ @@ -191,20 +197,20 @@ $(document).ready(function() }, repeat_password: { - equalTo: "#password" + equalTo: "#password" }, - email: "email" - }, + email: "email" + }, messages: { - first_name: "lang->line('common_first_name_required'); ?>", - last_name: "lang->line('common_last_name_required'); ?>", - username: - { - required: "lang->line('employees_username_required'); ?>", - minlength: "lang->line('employees_username_minlength'); ?>" - }, - + first_name: "lang->line('common_first_name_required'); ?>", + last_name: "lang->line('common_last_name_required'); ?>", + username: + { + required: "lang->line('employees_username_required'); ?>", + minlength: "lang->line('employees_username_minlength'); ?>" + }, + password: { lang->line('employees_password_must_match'); ?>" - }, - email: "lang->line('common_email_invalid_format'); ?>" + }, + email: "lang->line('common_email_invalid_format'); ?>" } }, form_support.error)); }); diff --git a/application/views/office.php b/application/views/office.php new file mode 100644 index 000000000..f55c47bb4 --- /dev/null +++ b/application/views/office.php @@ -0,0 +1,23 @@ +load->view("partial/header"); ?> + + + +

    lang->line('common_welcome_message'); ?>

    + + + +load->view("partial/footer"); ?> \ No newline at end of file diff --git a/application/views/partial/header.php b/application/views/partial/header.php index 192acd02d..80420f109 100644 --- a/application/views/partial/header.php +++ b/application/views/partial/header.php @@ -124,13 +124,16 @@
    diff --git a/database/3.1.0_to_office-menu.sql b/database/3.1.0_to_office-menu.sql new file mode 100644 index 000000000..01045577d --- /dev/null +++ b/database/3.1.0_to_office-menu.sql @@ -0,0 +1,20 @@ +-- Add support for office menu group +ALTER TABLE `ospos_grants` + ADD COLUMN `menu_group` varchar(32) DEFAULT 'home'; + +INSERT INTO `ospos_modules` (`name_lang_key`, `desc_lang_key`, `sort`, `module_id`) VALUES +('module_office', 'module_office_desc', 1, 'office'), +('module_home', 'module_home_desc', 1, 'home'); + +INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES +('office', 'office'), +('home', 'home'); + +INSERT INTO `ospos_grants` (`permission_id`, `person_id`, `menu_group`) VALUES +('office', 1, 'home'), +('home', 1, 'office'); + +update `ospos_grants` +set menu_group = 'office' +where permission_id in ('config', 'home', 'employees', 'taxes', 'migrate') +and person_id = 1; \ No newline at end of file diff --git a/database/database.sql b/database/database.sql index ad706468b..02b0de8a3 100644 --- a/database/database.sql +++ b/database/database.sql @@ -354,10 +354,12 @@ INSERT INTO `ospos_modules` (`name_lang_key`, `desc_lang_key`, `sort`, `module_i ('module_customers', 'module_customers_desc', 10, 'customers'), ('module_employees', 'module_employees_desc', 80, 'employees'), ('module_giftcards', 'module_giftcards_desc', 90, 'giftcards'), +('module_home', 'module_home_desc', 1, 'home'), ('module_items', 'module_items_desc', 20, 'items'), ('module_item_kits', 'module_item_kits_desc', 30, 'item_kits'), ('module_messages', 'module_messages_desc', 100, 'messages'), ('module_migrate', 'module_migrate_desc', 120, 'migrate'), +('module_office', 'module_office_desc', 1, 'office'), ('module_receivings', 'module_receivings_desc', 60, 'receivings'), ('module_reports', 'module_reports_desc', 50, 'reports'), ('module_sales', 'module_sales_desc', 70, 'sales'), @@ -428,10 +430,12 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('customers', 'customers'), ('employees', 'employees'), ('giftcards', 'giftcards'), +('home', 'home'), ('items', 'items'), ('item_kits', 'item_kits'), ('messages', 'messages'), ('migrate', 'migrate'), +('office', 'office'), ('receivings', 'receivings'), ('reports', 'reports'), ('sales', 'sales'), @@ -453,6 +457,7 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VA CREATE TABLE `ospos_grants` ( `permission_id` varchar(255) NOT NULL, `person_id` int(10) NOT NULL, + `menu_group` varchar(32) DEFAULT 'home', PRIMARY KEY (`permission_id`,`person_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -461,34 +466,36 @@ CREATE TABLE `ospos_grants` ( -- -- -------------------------------------------------------- -INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES -('reports_customers', 1), -('reports_receivings', 1), -('reports_items', 1), -('reports_inventory', 1), -('reports_employees', 1), -('reports_suppliers', 1), -('reports_sales', 1), -('reports_discounts', 1), -('reports_taxes', 1), -('reports_categories', 1), -('reports_payments', 1), -('customers', 1), -('employees', 1), -('giftcards', 1), -('items', 1), -('item_kits', 1), -('messages', 1), -('migrate', 1), -('receivings', 1), -('reports', 1), -('sales', 1), -('config', 1), -('items_stock', 1), -('sales_stock', 1), -('receivings_stock', 1), -('suppliers', 1), -('taxes', 1); +INSERT INTO `ospos_grants` (`permission_id`, `person_id`, 'menu_group') VALUES +('reports_customers', 1, 'home'), +('reports_receivings', 1, 'home'), +('reports_items', 1, 'home'), +('reports_inventory', 1, 'home'), +('reports_employees', 1, 'home'), +('reports_suppliers', 1, 'home'), +('reports_sales', 1, 'home'), +('reports_discounts', 1, 'home'), +('reports_taxes', 1, 'home'), +('reports_categories', 1, 'home'), +('reports_payments', 1, 'home'), +('customers', 1, 'home'), +('employees', 1, 'office'), +('giftcards', 1, 'home'), +('items', 1, 'home'), +('item_kits', 1, 'home'), +('messages', 1, 'home'), +('migrate', 1, 'office'), +('receivings', 1, 'home'), +('reports', 1, 'home'), +('sales', 1, 'home'), +('config', 1, 'office'), +('items_stock', 1, 'home'), +('sales_stock', 1, 'home'), +('receivings_stock', 1, 'home'), +('suppliers', 1, 'home'), +('taxes', 1, 'office'), +('office', 1, 'home'), +('home', 1, 'office'); -- -- Table structure for table `ospos_receivings` diff --git a/database/tables.sql b/database/tables.sql index 1c47f83ec..37a23e993 100644 --- a/database/tables.sql +++ b/database/tables.sql @@ -354,10 +354,12 @@ INSERT INTO `ospos_modules` (`name_lang_key`, `desc_lang_key`, `sort`, `module_i ('module_customers', 'module_customers_desc', 10, 'customers'), ('module_employees', 'module_employees_desc', 80, 'employees'), ('module_giftcards', 'module_giftcards_desc', 90, 'giftcards'), +('module_home', 'module_home_desc', 1, 'home'), ('module_items', 'module_items_desc', 20, 'items'), ('module_item_kits', 'module_item_kits_desc', 30, 'item_kits'), ('module_messages', 'module_messages_desc', 100, 'messages'), ('module_migrate', 'module_migrate_desc', 120, 'migrate'), +('module_office', 'module_office_desc', 1, 'office'), ('module_receivings', 'module_receivings_desc', 60, 'receivings'), ('module_reports', 'module_reports_desc', 50, 'reports'), ('module_sales', 'module_sales_desc', 70, 'sales'), @@ -428,10 +430,12 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('customers', 'customers'), ('employees', 'employees'), ('giftcards', 'giftcards'), +('home', 'home'), ('items', 'items'), ('item_kits', 'item_kits'), ('messages', 'messages'), ('migrate', 'migrate'), +('office', 'office'), ('receivings', 'receivings'), ('reports', 'reports'), ('sales', 'sales'), @@ -439,6 +443,8 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('suppliers', 'suppliers'), ('taxes', 'taxes'); + + INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VALUES ('items_stock', 'items', 1), ('sales_stock', 'sales', 1), @@ -453,6 +459,7 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VA CREATE TABLE `ospos_grants` ( `permission_id` varchar(255) NOT NULL, `person_id` int(10) NOT NULL, + `menu_group` varchar(32) DEFAULT 'home', PRIMARY KEY (`permission_id`,`person_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -461,34 +468,36 @@ CREATE TABLE `ospos_grants` ( -- -- -------------------------------------------------------- -INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES -('reports_customers', 1), -('reports_receivings', 1), -('reports_items', 1), -('reports_inventory', 1), -('reports_employees', 1), -('reports_suppliers', 1), -('reports_sales', 1), -('reports_discounts', 1), -('reports_taxes', 1), -('reports_categories', 1), -('reports_payments', 1), -('customers', 1), -('employees', 1), -('giftcards', 1), -('items', 1), -('item_kits', 1), -('messages', 1), -('migrate', 1), -('receivings', 1), -('reports', 1), -('sales', 1), -('config', 1), -('items_stock', 1), -('sales_stock', 1), -('receivings_stock', 1), -('suppliers', 1), -('taxes', 1); +INSERT INTO `ospos_grants` (`permission_id`, `person_id`, 'menu_group') VALUES +('reports_customers', 1, 'home'), +('reports_receivings', 1, 'home'), +('reports_items', 1, 'home'), +('reports_inventory', 1, 'home'), +('reports_employees', 1, 'home'), +('reports_suppliers', 1, 'home'), +('reports_sales', 1, 'home'), +('reports_discounts', 1, 'home'), +('reports_taxes', 1, 'home'), +('reports_categories', 1, 'home'), +('reports_payments', 1, 'home'), +('customers', 1, 'home'), +('employees', 1, 'office'), +('giftcards', 1, 'home'), +('items', 1, 'home'), +('item_kits', 1, 'home'), +('messages', 1, 'home'), +('migrate', 1, 'office'), +('receivings', 1, 'home'), +('reports', 1, 'home'), +('sales', 1, 'home'), +('config', 1, 'office'), +('items_stock', 1, 'home'), +('sales_stock', 1, 'home'), +('receivings_stock', 1, 'home'), +('suppliers', 1, 'home'), +('taxes', 1, 'office'), +('office', 1, 'home'), +('home', 1, 'office'); -- -- Table structure for table `ospos_receivings` diff --git a/public/images/menubar/home.png b/public/images/menubar/home.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc8ddaf6be62a74a7ca479a8c054346b3c7b711 GIT binary patch literal 1099 zcmV-R1ho5!P)SP6G0Tm-|i+&8_`75UW$-dL98N)AmTwV|AECnKyvVI3f`OEJa~u~PlAaz zFOokY1wrV=1P?6;l28xY7;UPx#J0xw(s9|Yn`ARPQ#TpEFysfjv-|zLw==V|vs$Oq z0a;qO`yh%RX)G!BNxzc=c3Z(xW2Ibr{-_KRrHKZBrW5pmCF8=Z8?^`omJ-4!_!a;f zrwC`U+?E(Hf>FYfLl`w*0AR**SZ=}bswe^kHvpFEg@0h&u4OEF1hI8&0MLAvMLh!k zP@PT-AylLSV6A$|2T|{(MTC%-0szgYnE5#PTSbJB5ek5rFZ(Fv2dPTq4ma(BK8EIj zjX%ollH~_5qUMi4;09o6@J7+R2?2c+xY_{RvCP}rUx~Hh&fE^12^|P=@uh9R%l9YX zZ8IdicW?xN=BbZg;x&J7ep^a7pRS$q0^zFDI6?1m-7oPTg(5FY9_uc+Z3FVWN0-O}&q(M#5Wsp!A04YTP5~>48st!P9MSTxo=K4HD=i{Im zhK%YH0oeu`t7}7VM}~tZ!{%@L9=UK9w$|#xdjel(fYrS9KO+zi=xasXn{DbxJ=>N}W=O^H6edccnv5HNIjUH#Dge!6uydljCL z(hJn21K^nvx_E9HHa>2{&hAh6iU7#`Y;;n_>1`2!s^3O~x~@TdHsT0MuqxCD))XEI zb^(Rb1q z)#4+(Uf9)&@qx3#?Al4QK6I?iyUGAtCXC$+6Rw{NuuMqt_72CS#bL}3l>xSF7@L=- zxSkBLZpAOzK!dgvk9qD4uw_FURD5x=2MG0Eopk__02N=J?g7L1uh0J$U;qwpr*H0y Rxf=ig002ovPDHLkV1oVA^qK$w literal 0 HcmV?d00001 diff --git a/public/images/menubar/office.png b/public/images/menubar/office.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc8ddaf6be62a74a7ca479a8c054346b3c7b711 GIT binary patch literal 1099 zcmV-R1ho5!P)SP6G0Tm-|i+&8_`75UW$-dL98N)AmTwV|AECnKyvVI3f`OEJa~u~PlAaz zFOokY1wrV=1P?6;l28xY7;UPx#J0xw(s9|Yn`ARPQ#TpEFysfjv-|zLw==V|vs$Oq z0a;qO`yh%RX)G!BNxzc=c3Z(xW2Ibr{-_KRrHKZBrW5pmCF8=Z8?^`omJ-4!_!a;f zrwC`U+?E(Hf>FYfLl`w*0AR**SZ=}bswe^kHvpFEg@0h&u4OEF1hI8&0MLAvMLh!k zP@PT-AylLSV6A$|2T|{(MTC%-0szgYnE5#PTSbJB5ek5rFZ(Fv2dPTq4ma(BK8EIj zjX%ollH~_5qUMi4;09o6@J7+R2?2c+xY_{RvCP}rUx~Hh&fE^12^|P=@uh9R%l9YX zZ8IdicW?xN=BbZg;x&J7ep^a7pRS$q0^zFDI6?1m-7oPTg(5FY9_uc+Z3FVWN0-O}&q(M#5Wsp!A04YTP5~>48st!P9MSTxo=K4HD=i{Im zhK%YH0oeu`t7}7VM}~tZ!{%@L9=UK9w$|#xdjel(fYrS9KO+zi=xasXn{DbxJ=>N}W=O^H6edccnv5HNIjUH#Dge!6uydljCL z(hJn21K^nvx_E9HHa>2{&hAh6iU7#`Y;;n_>1`2!s^3O~x~@TdHsT0MuqxCD))XEI zb^(Rb1q z)#4+(Uf9)&@qx3#?Al4QK6I?iyUGAtCXC$+6Rw{NuuMqt_72CS#bL}3l>xSF7@L=- zxSkBLZpAOzK!dgvk9qD4uw_FURD5x=2MG0Eopk__02N=J?g7L1uh0J$U;qwpr*H0y Rxf=ig002ovPDHLkV1oVA^qK$w literal 0 HcmV?d00001