'.__('You don\'t have enough privileges to access this area!').''); } // check if there is any active stock take proccess $stk_q = $dbs->query('SELECT * FROM stock_take WHERE is_active=1'); if ($stk_q->num_rows) { echo '
'.__('There is already stock taking proccess running!').'
'; } else { // add new stock take if (isset($_POST['saveData']) AND empty($_POST['name'])) { utility::jsAlert(__('Stock Take Name must be filled!')); exit(); } else if (isset($_POST['saveData']) AND !empty($_POST['name'])) { $data['stock_take_name'] = trim($dbs->escape_string(strip_tags($_POST['name']))); $data['start_date'] = date('Y-m-d H:i:s'); $data['init_user'] = $_SESSION['realname']; $data['is_active'] = 1; $sql_op = new simbio_dbop($dbs); if ($sql_op->insert('stock_take', $data)) { // get latest stock take id $stock_take_id = $sql_op->insert_id; // criteria $criteria = ' WHERE (ist.skip_stock_take<1 OR ist.skip_stock_take IS NULL) '; // gmd if ($_POST['gmdID'] != '0') { $criteria .= ' AND b.gmd_id='.intval($_POST['gmdID']).' '; } // collection type if ($_POST['collTypeID'] != '0') { $criteria .= ' AND i.coll_type_id=\''.intval($_POST['collTypeID']).'\' '; } // location if ($_POST['location'] != '0') { $criteria .= ' AND i.location_id=\''.$dbs->escape_string($_POST['location']).'\' '; } // site/placement if ($_POST['itemSite']) { $criteria .= ' AND i.site LIKE \''.$dbs->escape_string($_POST['itemSite']).'\' '; } // classification if ($_POST['classification']) { $criteria .= ' AND ('; // each class $arr_class = explode(',', $_POST['classification']); $class_criteria = ''; foreach ($arr_class as $each_class) { // check each class if its containing wildcard if (strpos($each_class, '*') !== false) { $each_class = str_replace('*', '%', $dbs->escape_string($each_class)); $class_criteria .= ' b.classification LIKE \''.$each_class.'\' OR '; } else { $each_class = $dbs->escape_string($each_class); $class_criteria .= ' b.classification=\''.$each_class.'\' OR '; } } // remove last OR $class_criteria = substr_replace($class_criteria, '', -3); $criteria .= $class_criteria.' )'; } // for debugging purpose only // emptying previous stock take item data $clean_q = $dbs->query('TRUNCATE TABLE stock_take_item'); // copy all item data to stock take detail table $insert_q = $dbs->query("INSERT INTO stock_take_item (stock_take_id, item_id, item_code, title, gmd_name, classification, coll_type_name, call_number, location, status, checked_by, last_update) SELECT $stock_take_id, i.item_id, i.item_code, b.title, g.gmd_name, b.classification, ct.coll_type_name, i.call_number, loc.location_name, 'm', '".$_SESSION['realname']."', NULL FROM item AS i LEFT JOIN mst_item_status AS ist ON i.item_status_id=ist.item_status_id LEFT JOIN mst_coll_type AS ct ON i.coll_type_id=ct.coll_type_id LEFT JOIN mst_location AS loc ON i.location_id=loc.location_id LEFT JOIN biblio AS b ON i.biblio_id=b.biblio_id LEFT JOIN mst_gmd AS g ON b.gmd_id=g.gmd_id $criteria"); // get number of item on loan $item_loan_q = $dbs->query("SELECT COUNT(loan_id) FROM loan AS l WHERE is_lent=1 AND is_return=0"); $item_loan_d = $item_loan_q->fetch_row(); if (!$item_loan_d[0]) { $item_loan_d[0] = 0; } // update data for item being loan $update_q = $dbs->query("UPDATE stock_take_item SET status='l' WHERE item_code IN (SELECT item_code FROM loan AS l WHERE is_lent=1 AND is_return=0)"); // total rows inserted $total_rows_q = $dbs->query("SELECT COUNT(item_code) FROM stock_take_item WHERE status='m'"); $total_rows_d = $total_rows_q->fetch_row(); if ($total_rows_d[0] > 0) { // update total_lost_item field value in stock_take table $update_total_q = $dbs->query('UPDATE stock_take SET total_item_stock_taked='.$total_rows_d[0].', total_item_loan='.$item_loan_d[0].', total_item_lost='.$total_rows_d[0].", stock_take_users='".$_SESSION['realname']."\n' WHERE stock_take_id=$stock_take_id"); // write log utility::writeLogs($dbs, 'staff', $_SESSION['uid'], 'stock_take', $_SESSION['realname'].' initialize stock take ('.$data['stock_take_name'].') from address '.$_SERVER['REMOTE_ADDR']); utility::jsAlert(__('Stock Taking Initialized')); echo ''; } else { // delete stock take data $dbs->query('DELETE FROM stock_take WHERE stock_take_id='.$stock_take_id); utility::jsAlert(__('Stock Taking FAILED to Initialized.\nNo item to stock take!')); } exit(); } } // create new instance $form = new simbio_form_table_AJAX('mainForm', $_SERVER['PHP_SELF'].'?action=new', 'post'); $form->submit_button_attr = 'name="saveData" value="'.__('Initialize Stock Take').'" class="btn btn-default"'; // form table attributes $form->table_attr = 'align="center" id="dataList" cellpadding="5" cellspacing="0"'; $form->table_header_attr = 'class="alterCell" style="font-weight: bold;"'; $form->table_content_attr = 'class="alterCell2"'; /* Form Element(s) */ // stock take name $form->addTextField('text', 'name', __('Stock Take Name').'*', '', 'style="width: 60%;"'); // gmd // get gmd data related to this record from database $gmd_q = $dbs->query('SELECT gmd_id, gmd_name FROM mst_gmd'); $gmd_options[] = array('0', __('ALL')); while ($gmd_d = $gmd_q->fetch_row()) { $gmd_options[] = array($gmd_d[0], $gmd_d[1]); } $form->addSelectList('gmdID', __('GMD'), $gmd_options); // collection type // get coll_type data related to this record from database $coll_type_q = $dbs->query('SELECT coll_type_id, coll_type_name FROM mst_coll_type'); $coll_type_options[] = array('0', __('ALL')); while ($coll_type_d = $coll_type_q->fetch_row()) { $coll_type_options[] = array($coll_type_d[0], $coll_type_d[1]); } $form->addSelectList('collTypeID', __('Collection Type'), $coll_type_options); // location // get language data related to this record from database $location_q = $dbs->query("SELECT location_id, location_name FROM mst_location"); $location_options[] = array('0', __('ALL')); while ($location_d = $location_q->fetch_row()) { $location_options[] = array($location_d[0], $location_d[1]); } $form->addSelectList('location', __('Location'), $location_options); // item site $form->addTextField('text', 'itemSite', __('Shelf Location'), '', 'style="width: 20%;"'); // classification; $str_input = simbio_form_element::textField('text', 'classification', '', 'style="width: 60%;"'); $str_input .= '
'.__('Separate each class comma sign. Use * for wildcard'); $form->addAnything(__('Classification'), $str_input); // print out the object ?> printOut(); }