'.__('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();
}