Senayan Slims - Cara Membuat Pembatasan Pinjaman Karena Terlambat di Slims

Standard
 =========================================
filename        : -
tested            : SLiMS versi Meranti & Cendana
modified by  : Ido Alit
add                : Pembatasan Pinjaman Karena Terlambat
=========================================
Ini dia hasil oprekan Mas Ido Alit Cara Membuat Pembatasan Pinjaman Karena Terlambat di Slims berikut penuturannya :

Terdapat sebuah kasus: sebuah buku telat dikembalikan, sudah dikirimi notifikasi email untuk segera dikembalikan, buku pun kembali, eh minta dipinjam lagi Jadi apa gunanya notifikasi email buat dikembaliin klo boleh dipinjam langsung lagi? Sama aja peminjaman permanent. Terus klo yang lain pingin baca/pinjam buku tersebut juga bagaimana?

Kalo bisa sih suruh nunggu dulu selama 7 hari baru boleh pinjam lagi dengan buku yang sama. Kali aja ada yang ingin membaca buku tersebut/ meminjamnya, jadi bisa gantian. Sebenarnya bisa sih kontrolnya dari pustakawan sendiri. Tapi kalo petugas sirkulasinya lupa atau beda petugas, jadi bisa aja lolos itu orang. Nah dari pada bikin beban pustakawannya mending system aja yg mikir.

Mari mengerutkan dahi sejenak, ahaha

Dari kasus diatas bisa ditarik kesimpulan sebagai berikut.

Sekarang saatnya implementasinya di SLiMS
Yang diharapkan atau output dari implementasi ini adalalah :

Saat peminjaman, barcode dimasukan pada form peminjaman, jika statment kasus diatas terpenuhi, maka transaksi akan dihentikan, dengan memunculkan popup notifikasi (alert) yang berisi tulisan "Maaf, buku pernah terlambat dikembalikan. Buku baru boleh dipinjam kembali setelah 7 hari, terhitung dari tanggal pengembalian."

Karena bukan saya yang mbuat SLiMS jadi saya tidak tau harus langsung menuju kemana peraturan ini dibuat, tapi tidak perlu putus asa, mari kita runtut alurnya :

1. Kasus ini terjadi saat sirkulasi berjalan. lebih tepatnya saat peminjaman koleksi.
  • masuk menu sirkulasi dan mulai transaksi baru.
  • Arahkan kursor pada tab "peminjaman", maka akan terlihat link dari tab tersebut.
2. Buka file diatas (/admin/modules/circulation/loan.php).
Setelah terbuka, kita cari deh form untuk menginput barcodenya.
Berikut adalah kode form untu input barcode.
<form name="itemLoan" id="loanForm" action="circulation_action.php" method="post" style="display: inline;">
    <?php echo __('Insert Item Code/Barcode'); ?> :
    <input type="text" id="tempLoanID" name="tempLoanID" />
    <input type="submit" value="<?php echo __('Loan'); ?>" class="btn btn-warning button" />
</form>

3. Dari kode diatas kita bisa melihat,bahwa form tersebut akan mengirimkan data barcode dari tag input dengan nama "tempLoanID" menuju file yang ada dalam atribut "action", yaitu circulation_action.php. Silahken buka file tersebut(/admin/modules/circulation/circulation_action.php)

4. Setelah file circulation_action.php terbuka cari dimana tempLoanID dikirim. (gunakan fasilitas find (ctrl+f) dengan kata kunci tempLoanID) Yang jadi fokus adalah baris nomer 129 - 204. Kepanjangan kalau ditulis disini. ;) Disitu terdapat beberapa settingan jika sebuah statment tercapai, akan memunculkan alert menggunkan javascript.

5. Oke, mari kita tambahin alert kita. tambahkan kode berikut sebelum statmen terakhir " }else{ " atau letakan pada baris 198.


} else if ($add == ITEM_LOAN_OVERDUE){
  echo '<script type="text/javascript">';
    echo 'alert(\''.__('Maaf, buku pernah terlambat dikembalikan. Buku baru boleh dipinjam kembali setelah 7 hari, terhitung dari tanggal pengembalian.').'\');';
    echo 'location.href = \'loan.php\';';
  echo '</script>';


Oke deh, klo sudah ditambahkan jangan lupa disimpan

6. Kode itu diatas belum bisa berjalan karena statmennya belum terpenuhi, sekarang kita buka file circulation_base_lib.inc.php (/admin/modules/circulation/circulation_base_lib.inc.php)

Tambahkan kode berikut pada baris 39.
define('ITEM_LOAN_OVERDUE', 11);

Untuk mengecek keterlambatan, kita dapat mengambil data dari tabel loan Tambahkan kode berikut pada baris 166.


 // if already overdue
$_overdue_q = $this->obj_db->query("SELECT (TO_DAYS(return_date)-TO_DAYS(due_date)), (TO_DAYS(DATE(NOW()))-TO_DAYS(return_date)) FROM loan AS L WHERE L.item_code='$str_item_code' AND L.is_lent=1 AND L.is_return=1 AND L.member_id='".$_SESSION['memberID']."' ORDER BY L.return_date DESC LIMIT 1");
    if($_overdue_q->num_rows > 0){
        $_overdue_d = $_overdue_q->fetch_row();
        if($_overdue_d[0] > 0 && $_overdue_d[1] < 7){
            return ITEM_LOAN_OVERDUE;
        }
    }

 (TO_DAYS(return_date)-TO_DAYS(due_date)) => mengetahui terlambat atau tidak => tanggal dikembalikan dikurang tanggal harus kembali.
(TO_DAYS(DATE(NOW()))-TO_DAYS(return_date)) => data lama waktu dari tanggal dikembalikan => hari ini dikurangi tanggal dikembalikan.
$_overdue_d[0] > 0 => statment keterlambatan.
$_overdue_d[1] < 7 => statment menunggu 7 hari (jika ingin dipersingkat atau diperlama silahkan ganti angka 7 sesuai kebutuhan.

7. Simpan file dan silahken dicoba.
Semoga bermanfaat.

Sumber :  http://slims.web.id/forum/viewtopic.php?f=23&t=597

0 komentar:

Posting Komentar