From 54fbb4e7d7adf445e875c7e5aa7e65c0290877e8 Mon Sep 17 00:00:00 2001 From: jekkos-t520 Date: Sat, 11 Oct 2014 17:55:00 +0200 Subject: [PATCH] Refactor stock location save Add config to permissions and grants in database script --- application/models/stock_locations.php | 80 +++++++++++--------------- database/database.sql | 2 + 2 files changed, 34 insertions(+), 48 deletions(-) diff --git a/application/models/stock_locations.php b/application/models/stock_locations.php index fa463a888..96349648d 100644 --- a/application/models/stock_locations.php +++ b/application/models/stock_locations.php @@ -75,72 +75,56 @@ class Stock_locations extends CI_Model function array_save($stock_locations) { - $location_db = $this->get_all()->result_array(); - //Delete all in db - $this->db->trans_start(); - $location_ids=array(); - foreach($location_db as $db) + $allowed_locations = $this->get_allowed_locations(); + // check for insertion + foreach ($stock_locations as $location_name) { - array_push($location_ids,$db['location_id']); - } - if (sizeof($location_ids) > 0) - { - $this->db->where_in('location_id', $location_ids); - $this->db->update('stock_locations',array('deleted'=>1)); - $this->db->trans_complete(); - } - - //Update the stock location - $this->db->trans_start(); - foreach ($stock_locations as $location) - { - $to_create = true; - foreach($location_db as $db) + if(!$this->exists($location_name)) { - if($db['location_name'] == $location) - { - if($db['deleted'] == 1) - { - $this->db->where('location_id', $db['location_id']); - - $this->db->update('stock_locations',array('location_name'=>$db['location_name'],'deleted'=>0)); - // remmove module (and permissions) for stock location - $this->db->delete('permissions', array('module_id' => 'items_'.$db['location_name'])); - } - $to_create = false; - break; - } - } - - if($to_create) - { - $location_data = array('location_name'=>$location,'deleted'=>0); + $this->db->trans_start(); + $location_data = array('location_name'=>$location_name,'deleted'=>0); $this->db->insert('stock_locations',$location_data); $location_id = $this->db->insert_id(); - + // insert new permission for stock location - $permission_id = 'items_'.$location; - $permission_data = array('permission_id'=>$permission_id,'module_id'=>'items','location_id' => $location_id); - $this->db->insert('permissions', $permission_data); - + $permission_id = 'items_'.$location_name; + $permission_data = array('permission_id'=>$permission_id,'module_id'=>'items','location_id' => $location_id); + $this->db->insert('permissions', $permission_data); + // insert grants for new permission $employees = $this->Employee->get_all(); foreach ($employees->result_array() as $employee) { - $grants_data = array('permission_id' => $permission_id, 'person_id' => $employee['person_id']); - $this->db->insert('grants', $grants_data); + $grants_data = array('permission_id' => $permission_id, 'person_id' => $employee['person_id']); + $this->db->insert('grants', $grants_data); } - + // insert quantities for existing items $items = $this->Item->get_all(); foreach ($items->result_array() as $item) { $quantity_data = array('item_id' => $item['item_id'], 'location_id' => $location_id, 'quantity' => 0); $this->db->insert('item_quantities', $quantity_data); - } + } + $this->db->trans_complete(); + } + else if (!in_array($location_name, array_values($allowed_locations))) + { + $this->db->where('location_name', $location_name); + $this->db->update('stock_locations', array('deleted' => 0)); } } - $this->db->trans_complete(); + + // check for deletion + foreach ($allowed_locations as $location_id => $location_name) + { + if (!in_array($location_name, $stock_locations)) + { + $this->db->where('location_id', $location_id); + $this->db->update('stock_locations', array('deleted' => 1)); + } + } + return true; } } diff --git a/database/database.sql b/database/database.sql index d2f446c69..635a7b278 100644 --- a/database/database.sql +++ b/database/database.sql @@ -335,6 +335,7 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('receivings', 'receivings'), ('reports', 'reports'), ('sales', 'sales'), +('config', 'config'), ('suppliers', 'suppliers'); INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VALUES @@ -377,6 +378,7 @@ INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES ('receivings', 1), ('reports', 1), ('sales', 1), +('config', 1), ('suppliers', 1); --