Académique Documents
Professionnel Documents
Culture Documents
BERBASIS WEB
Oleh : Arief
Nugraha
105091002790
Berbasis Web
Skripsi
Oleh :
Arief Nugraha
105091002790
2014 M / 1435 H
ii
LEMBARPENGESAHAN
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh:
Arief Nugraba
105091002790
Menyetujui,
Pembimbing I
Mengetahui,
Ketua Program Studi Teknik Informatika
3
3
PENGESAHAN UJIAN
Menyetujui,
Penguji I Penguji II
Pembimbing I
cAvb~{)'-
Andrew Fiade, M. Korn
NIP. 198208112009121 004
Mengetahui,
Ketua Program Studi Teknik
I
Nurha I Ph. D
NIP. 19690316 199903 2 002
4
4
PERNYATAAN
Arief Nugraha
105091002790
v
ABSTRAK
Kata kunci : Aplikasi Apotek, Web Base, Rapid Application Development (RAD),
Unified Modelling Language (UML), Framework Code Igniter (CI),
PHP, MySQL.
vi
KATA PENGANTAR
Bissmillahirrahmanirrohiim
Assalamu’alaikum Wr. Wb
Puji dan syukur kehadirat Allah SWT atas segala rahmat dan karunia-Nya
sehingga penulis dapat menyelesaikan skripsi ini dengan baik. Shalawat serta
salam tidak lupa penulis hanturkan kepada junjungan kita Baginda Nabi Muhammad
SAW.
Web", yang disusun untuk memenuhi salah satu syarat dalam menyelesaikan
Hidayatullah Jakarta. Semoga skripsi ini bermanfaat bagi penulis khususnya bagi
pihak dan berkah dari Allah SWT sehingga segala kendala dan masalah yang
penulis hadapi tersebut dapat di atasi. Untuk itu, penulis ingin mengucapkan
banyak terima kasih kepada berbagai pihak yang telah senantiasa mendukung dan
kepada :
1. Secara khusus terima kasih kepada kedua orang tua tercinta yang selalu
vii
2. Saudara-saudaraku tersayang yang telah memberikan dukungan dan
skripsi ini.
3. Bapak Dr. Agus Salim, M. Si. selaku Dekan Fakultas Sains dan Teknologi,
8. Seluruh Dosen dan Staff Fakultas Sains dan Teknologi yang telah
10. Seluruh teman – teman Fakultas Sains dan Teknologi khususnya untuk
11. Dan semua pihak yang secara langsung maupun tidak langsung membantu
88
88
Penulis berharap semoga skrispi ini dapat bermanfaat bagi kita semua. Saran
dan kritik untuk kesempurnaan skripsi ini dapat disampaikan melalui email
uinformatika.tk@gmail.com.
Akhir kata, penulis juga ingin meminta maaf kepada seluruh pihak yang
Wassalamu’alaikum Wr. Wb
Arief Nugraha
9
9
DAFTAR ISI
Halaman
HALAMAN PERNYATAAN............................................................................... v
ABSTRAK ............................................................................................................ vi
DAFTAR ISI......................................................................................................... x
1
0
1.5.3 Metode Perancangan............................................................................... 8
2. Framework Symfony............................................................................... 14
1. Pengertian Sistem................................................................................... 21
1
1
2.10 Data Base ..................................................................................................... 40
3. XAMPP .................................................................................................. 45
1. Waterfall................................................................................................. 47
xii
4.1.2 Visi dan Misi Apotek Madani .............................................................. 66
13
13
13
5.2 Saran............................................................................................................. 125
LAMPIRAN
14
14
DAFTAR GAMBAR
15
15
Gambar 4.10 Activity Diagram Logout ................................................................ 90
16
16
DAFTAR TABEL
xvii
Tabel 4.19 Pengujian Blackbox pada Browser.................................................... 123
xviii
BAB I
PENDAHULUAN
informasi yang akurat dan tepat waktu untuk menyajikan data yang lengkap
Kalau kita perhatikan dan telusuri kemajuan yang telah kita capai itu,
pada penggunaan data dan informasi yang akurat. Penerapan suatu sistem
informasi.
tergantung dari informasi yang dibutuhkan oleh user (pemakai). Dalam hal
1
Berdasarkan pengamatan penulis terhadap bagian pelayanan konsumen
memantau kondisi administrasi keuangan apotek, dan kalau kejadian ini sering
terjadi maka apotek akan mengalami kerugian. Atas dasar pertimbangan itu,
penulis pada kesempatan ini tertarik untuk membuat suatu penelitian informasi
dengan judul : “
PENGEMBANGAN APLIKASI APOTEK
beberapa pokok permasalahan yang akan dikaji lebih lanjut yaitu sebagai
berikut:
Apotek Madani.
Madani, mulai dari transaksi, input dan edit obat, jenis obat, stock obat,
2
1.3 Batasan Masalah
obat-obatan.
Implementasi (Implementation).
PHP versi 5.2.8 dan MySQL versi 5.1.30 sebagai basis datanya.
3
1. Merancang suatu aplikasi berbasis web yang dinamis dan hanya
A. Bagi Penulis
antara lain :
Frameworks.
Hidayatullah Jakarta.
4
B. Bagi Universitas
menerapkan ilmunya.
web.
C. Bagi Instansi
dipertanggungjawabkan.
informasi.
pelanggan.
5
1.5 Metodologi Penelitian
1. Studi Lapagan:
a. Pengamatan (Observasi)
b. Wawancara (Interview)
2. Studi Pustaka
6
1.5.2 Metode Pengembangan Sistem
kedua belah pihak yakni penulis dan dari pihak apotek. Selain
7
3. Fase Implementasi (Implementation)
terhadap sistem.
yang meliputi :
1. Usecase Diagram
2. Activity Diagram
3. Sequence Diagram
4. Class Diagram
BAB I PENDAHULUAN
8
BAB II LANDASAN TEORI
Dalam bab ini diuraikan tentang teori - teori yang digunakan untuk
atau umum dan teori khusus yang mana dapat digunakan sebagai
bahas.
BAB V PENUTUP
9
BAB II LANDASAN
TEORI
berasal dari kata dasar kembang, yakni suatu proses, cara, perbuatan
Dalam hal ini, pengembangan berarti sebuah tindakan, proses, dan cara
untuk menjadikan distribusi data menjadi lebih baik, yaitu dari sistem yang
penambahan data.
10
2.3 Definisi Website
data teks, data gambar diam atau gerak, data animasi, suara, video dan atau
gabungan dari semuanya, baik bersifat statis maupun dinamis yang membentuk
1. Website Statis
diperlukan interaksi.
2 Website Dinamis
diinternet dewasa ini, seperti Portal berita, blog, situs social networking,
sisi server karena dalam rentang waktu tertentu konten dari website
11
tersebut berubah. Jadi, salah satu ciri dari website dinamis adalah
Dalam hal ini web yang digunakan oleh penulis adalah web
menjadi lebih interaktif dan isi informasinya pun dapat lebih mudah
diperbaharui.
2.4 Apotek
medis.
menjual dan kadang membuat atau meramu obat. Apotek juga merupakan
Kata ini berasal dari kata bahasa Yunani apotheca yang secara harfiah berarti
"penyimpanan".
2.5 Framework
12
Framework dalam dunia komputer digunakan sebagai sebuah acuan
utama berupa kerangka program yang bersifat global, yang dapat disesuaikan
PHP, dan Java. Untuk PHP, framework yang banyak digunakan misalnya
sendiri juga menyediakan berbagai macam fungsi siap pakai yang bisa kita
dikembangkan untuk bahasa pemrograman antara lain PHP, dan Java. Untuk
Inc.,
1. Framework CakePHP
13
CRUD (Create, Read, Update, Delete) berbasis bahasa pemrograman
codeigniter sehingga butuh waktu belajar yang cukup lama jika ingin
2. Framework Symfony
framework sebelumnya.
3. Framework Codeigniter
14
framework yang akan dapat digunakan untuk pengembangan proyek
pembuatan website.
a) Gratis
kebutuhan.
15
CodeIgniter menggunakan lingkungan pengembangan dengan
logika dan presentasi atau tampilan sehingga tugas bisa lebih mudah
e) Dokumentasi
Salah satu hal yang bisa dijadikan barometer apakah sebuah aplikasi
16
Gambar 2.1 Struktur Direktori Codeigniter
( Sumber : Hakim, 2010)
Secara sederhana konsep MVC terdiri dari tiga bagian yaitu bagian
setidaknya terdiri dari 3 hal yang paling pokok, yaitu basis data, logika aplikasi
MVC yaitu model untuk basis data, view untuk cara menampilkan halaman
17
1. Model
basis data maupun data lain, misalnya dalam bentuk file teks atau file
xml. Biasanya didalam model akan berisi class dan fungsi untuk
2. View
3. Controller
18
memproses permintaan dari View kedalam struktur data didalam
organisasi.
1. Pengertian Sistem
19
model, dari sudut pandang yang berbeda-beda. Subsistem adalah
1998)
2. Pengertian Informasi
data tersebut memiliki arti dan nilai bagi si penerima. (Turban, 2005)
2005)
20
Sistem informasi adalah komponen-komponen yang saling
dikehendaki.
21
5. Basis data (database): sekumpulan tabel, hubungan, dan lain-lain
22
mendokumentasikan sistem piranti lunak (Dharwiyanti, 2003:2). UML
berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta
atau C.
software menjadi lebih besar dan lebih kompleks, kita perlu untuk
23
mengatur kekompleksan tersebut dan dalam arti menyederhanakannya
dari sistem :
dibahas.
24
4. Berkaitan dengan unifikasi. UML memadukan praktek rekayasa
direalisasikan.
"blueprint".
25
penggabungan ini menghasilkan metode OOSE (Object Oriented
berhasil dengan dikeluarkannya UML versi 0.9 dan versi 0.91 pada
tanggapan UML versi 1.1 yang sudah dilakukan revisi. UML versi 1.1
kedua tahun 1999. Saat ini versi terbaru UML adalah 1.5 yang dirilis
26
Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson
permodelan.
27
Diagram use-case (Use case diagram) merupakan salah
kelas.
Aktor
Use case
2. Activity Diagram
28
dapat menggambarkan proses paralel yang mungkin terjadi pada
beberapa eksekusi.
sebagian besar state adalah action dan sebagian besar transisi di-
29
Pandangan dalam di aksi-aksi dan pengaruhnya pada
objek-objek
3. Sequence Diagram
terkait).
30
memiliki sifat khusus, standar UML mendefinisikan icon khusus
muncul.
case,
4. Class Diagram
tersebut (metoda/fungsi).
31
Class diagram menggambarkan struktur dan deskripsi
class, package dan objek beserta hubungan satu sama lain seperti
2) Atribut
3) Metoda
bersangkutan
operasi-operasi di kelas-kelas.
32
tapi juga mendeskripsikan perilaku. Salah satu maksud diagram
Kelas
Antarmuka (interface)
Kolaborasi
Hubungan (relationship)
terdiri dari :
1. Aktor (Actor)
tidak perlu harus orang. Aktor dapat berupa sistem eksternal yang
33
Gambar 2.3 Aktor
2. Use Case
3. Kelas (Class)
tiga compartment
34
Merepresentasikan nama kelas yang didefinisikan di Java.
hubungan penyususunan.
ketampakan.
Nama Kelas
Atribut
Operasi
35
4. Package
kita.
5. Interface
36
kelas dan interface.
6. Interaction
7. Note
37
8. Dependency
9. Association
38
interaksi untuk memodelkan pesan-pesan yang dikirim di
antara objek-objek.
struktur basis data, hubungan antar-data dalam basis data, serta berbagai
data dimana data yang sama disimpan dalam beberapa file. Independensi
dan kamus yang terpisah secara fisik dari program. Kamus data merupakan
istilah basis data yang mengacu pada definisi data yang disimpan dalam
basis data itu sendiri yang dikendalikan oleh system manajemen basis data.
39
2.11 Perangkat Lunak Pendukung Pembangun Sistem
sistem UNIX dan variannya, namun kini dapat berjalan dengan lancar
programmer web.
40
- Adabas D
- dBase
- Direct MS-SQL
- Empress
- FilePro(read only)
- FrontBase
- Hyperwave
- IBM DB2
- Infomix
- MySQL
- PostgrSQL
- Oracle
a. Kelebihan PHP
41
2. PHP dapat berjalan pada web server yang dirilis oleh
untuk dipahami.
b. Kekurangan PHP
2006):
42
2. MySQL (Structured Query Language)
source. MySQL adalah pasangan serasi dari PHP. MySQL dibuat dan
lebih cepat.
yang kecil sampai dengan yang sangat besar. MySQL juga dapat
(Arief, 2006).
43
adalah sekelompok yang terdiri atas perintah-perintah yang beroperasi
2005:139).
3. XAMPP
Program ini tersedia dalam GNU General Public License dan bebas,
44
berbasis PHP dan MySql secara online. Dengan XAMPP kita juga
(Satria, 2009)
Devi, 2008:1).
data sebagai inti dari konsep sistem. Sedangkan sebuah metodologi disebut
45
Pada penelitian ini, penulis menerapkan metodologi yang bersifat
(RAD).
1. Waterfall
46
adaptasi “kecepatan tinggi” dari model sekuensial linier di
90 hari).
a. Perencanaan Syarat-syarat
b. Workshop Design
47
ketidaksesuaian desain antara user dan analyst. Untuk
c. Implementasi
disetujui baik itu oleh user dan analys, maka pada tahap
organisasi.
informasi.
48
3. Model Spiral
49
Tahapan 1. Requirement 1. Analysis : client dan 1. Customer
2. Analysis developer bersama- Communicatio
3. Design sama berinteraksi dan n : komunikasi
4. Implementation bereksperimen antara
5. Postdelivery dengan prototype pengembang
maintenance awal yang telah ada. dengan
6. Retirement Jika client pelanggan.
menginginkan 2. Planning :
adanya perubahan penentuan
pada protoype yang tujuan,
ada, maka developer alternatif dan
harus batasan.
menggambarkan 3. Risk Analysis :
ulang spesifikasi analisa
yang diinginkan oleh alternatif dan
client. Hal ini terus identifikasi/pe
dilakukan hingga mecahan
kedua pihak resiko.
meyakini bahwa 4. Engineering :
produk yang akan pengembanga
dibuat tersebut telah n level
memenuhi kebutuhan berikutnya
client. dari produk.
2. Design : developer 5. Construction
melakukan and release :
perancangan- testing,
perancangan yang instalasi, dan
sesuai dengan menyediakan
delivery product support
yang dihasilkan dari termasuk
tahap analysis. dengan
3. Prototyping cycles : training pada
dilakukan pengerjaan user dan
dari design yang pembuatan
telah ada. Pada dokumentasi.
model RAD, di tahap 6. Customer
ini memungkinkan Evaluation :
untuk dilakukan penilaian
perubahan pada terhadap hasil
design produk yang engineering.
ada, jika diharuskan
adanya perubahan
yang mengacu
kepada produk yang
berhasil dibuat.
4. Testing : developer
masih dapat
50
memasuki tahapan
baik analysis, design,
maupun
implementation,
sesuai dengan
kebutuhan
maintenance yang
dilakukan
51
waktu yang sangat
diperpendek.
3. Kecepatan yang
tinggi dengan biaya
minimal
kemungkinan besar.
4. Proyek mungkin
berakhir dengan
lebih banyak
tambahan kebutuhan
daripada yang telah
dipenuhi
5. Potensial adanya
penambahan fitur
6. Sulit membuat
modul yang dapat
digunakan kembali
Dalam penelitian ini, penulis memutuskan untuk menggunakan
berorientasi objek.
otorisasi data. Salah satu teknik yang digunakan adalah Role-Based Access
Hal ini dapat dilakukan dengan membuat suatu fungsi yang di kelompokkan
52
ke dalam role dan user dimasukkan pada salah satu atau lebih dari role.
Agar informasi yang berada pada aplikasi hanya dapat di akses oleh orang
diberikan untuk semua user, baik Admin ataupun user biasa, di harapkan
sistem ini digunakan berdasarkan kebutuhan masing masing tiap user. Dengan
insert nilai pada data mahasiswa yang mengikuti kuliah, serta dapat melihat
history sebuah nilai sebelum sebuah nilai menjadi nilai huruf. Dengan
di sebuah toko saat ini masih banyak yang menggunakan cara manual.
wajar karena zaman sudah canggih Banyaknya data barang yang ada
mendukung proses tersebut. Data barang yang ada di toko IPC cukup
banyak. Dengan demikian data yang cukup banyak tersebut perlu ditata dan
53
codeigniter dengan menggunakan metode Model View Controller (MVC).
Dengan adanya aplikasi diharapkan dapat membatu pihak toko untuk dapat
oleh pihak toko secara komputerisasi dan aplikasi ini berjalan secara offline.
berkembang pada saat ini membuat jarak, tempat, serta kecepatan bertransaksi
akan semakin dapat dipermudah. Salah satu sarana untuk mempercepat itu
busana muslim di Butik Anaya Collection. Langkah awal yang kita lakukan
adalah dengan pengumpulan data berupa data toko, dan produk yang dijual,
54
segala informasi terbaru mengenai produk baju busana muslim dan
pembeliannya secara cepat dan tepat maka penulis telah berhasil membuat
muslim.
55
BAB III
METODOLOGI PENELITIAN
berlokasi di Cileungsi Bogor mulai dari bulan Juli 2012 sampai bulan
Oktober 2012.
56
Untuk studi literature sejenis, abstrak dapat dilihat pada bab 2.
57
3. Yudha Wicaksono, Aplikasi Dengan adanya Data barang yang
UIN Jakarta 2011 pengolahan data aplikasi diharapkan ada di toko IPC
toko barang yang dapat membatu cukup banyak dan
berbasis pihak toko untuk Aplikasi yang di
framework dapat mengelola buat hanya bisa
codeigniter datanya dengan diakses secara
dengan baik. Aplikasi ini offline
menggunakan merupakan sarana
metode Model untuk
View Controller mempermudah
(MVC) proses pengelolan
data barang di
dalam toko yang
meliputi stok
barang, pembelian,
penjualan, retur
pembelian dan
pembayaran kredit
oleh pihak toko
secara
komputerisasi dan
aplikasi ini berjalan
secara offline.
1. Wawancara
depan nanti.
58
Adapun data-data tersebut adalah: daftar nama dan jenis
obat, harga obat, serta cara penempatan obat pada rak obat.
2. Observasi
yang sedang berjalan saat ini. Hal ini perlu dilakukan agar
4.2.1.1.
59
alasan aplikasi yang akan dibuat merupakan aplikasi yang dirancang
alasan bahwa aplikasi ini adalah aplikasi kecil atau menengah sehingga
cukup dengan metode yang ringkas dan tidak membutuhkan proses yang
panjang.
60
dapat
dibicarakan oleh
tim RAD yang
terpisah dan
kemudian
diintregasikan
sehingga
waktunya lebih
efisien.
61
1. Pengamatan terhadap sistem yang sedang berjalan di Apotek
dan operator.
managemen user.
digunakan.
62
2. Activity Diagram, penulis menggambarkan aliran keseluruhan
satu kegiatan.
meliputi :
1. Membangun Sistem
2. Menguji Sistem
63
pengujian yaitu secara whitebox (pengujian mandiri) dan secara
tidak.
64
3.4 Alur Kerangka Penelitian
Penentuan Tema
Studi Pustaka
Studi Lapangan
Studi Literatur
Perancangan
Interface
Fase Implementasi
Database
BlackBox Testing
65
BAB IV
Februari 2008. Salah satu tujuan dari di buatnya apotek ini adalah
dengan waktu yang lebih panjang, sehingga di tambah jam kerja yang
1. Visi Apotek
66
2. Misi Apotek
kedokteran.
terjangkau.
sebagai berikut :
1. Kepala Apotek
pada apotek.
67
c) Menetapkan kebijakan dalam bidang medis, yang
apotek.
2. Farmasi / Apoteker
apotek.
3. Kasir / Administrasi
pembayaran.
68
4.2 Metode Pengembangan Sistem
Madani, yaitu :
pesan si pasien.
operator / kasir.
pasien.
69
4.2.1.2 Identifikasi Masalah
70
2. Membuat aplikasi sederhana namun mampu mencakup
obat-obatan.
1. Admin
1. Transaksi penjualan
71
6. Cari obat.
8. History transaksi.
9. Laporan transaksi
2. Operator / kasir
1. Transaksi penjualan.
2. Lihat Obat.
3. Cari obat
5. History transaksi.
6. Laporan transaksi.
No Aktor Deskripsi
72
serta melakukan penambahan, pengeditan,
penghapusan dan melihat data obat
maupun management user.
Usecase
No Deskripsi Aktor
Name
73
4 Edit Obat Usecase menggambarkan Admin
kegiatan merubah data obat.
5 Delete Obat Usecase menggambarkan Admin
kegiatan menghapus data obat.
6 Lihat Obat Usecase menggambarkan Admin dan
kegiatan melihat data obat.
Operator
74
Gambar 4.2 Usecase Diagram Admin
75
Gambar 4.3 Usecase Diagram Operator / Kasir
dideskripsikan
76
d) Pre Condition : syarat penting bagi usecase
untuk mengulang
oleh usecase
dilaksanakan
di atas:
77
halaman home
aplikasi jika
username dan
password benar.
Bidang Alternatif Jika username dan password benar, maka
masuk ke dalam halaman utama aplikasi
absensi.
Jika username dan password salah, maka
sistem akan menampilkan pesan login gagal!
username dan password anda tidak benar
atau account anda belum terdaftar.
Post Condition Aplikasi menampilkan halaman menu home.
78
mencari obat yang lain.
Post Condition Data obat berubah dan keluar struk transaksi.
79
Pre Condition Admin login Input Data obat, nama obat, harga
obat, jenis obat, status resep, obat depan, stok
obat, lemari, exp date, dirtributor, dan no faktur.
Typical Course of Actor Action System Response
Event 1. Ketik tombol edit 2. Sistem
obat untuk data obat menampilkan data
yang ingin di edit. obat yang dimaksud.
3. Ketik simpan untuk 4. Sistem akan
menyimpan data obat. menyimpan data
obat yang baru.
5. Ketik tombol edit 6. Sistem kembali
obat untuk mulai menampilkan data
ulang edit obat yang obat yang ingin di
lain. edit.
Bidang Alternatif Jika obat yang sudah expired, habis, maka
akan ada pemberitahuan di halaman depan.
Post Condition Data obat telah berubah.
80
Tabel 4.8 Usecase scenario Lihat Obat
81
Tabel 4.10 Usecase scenario Print Data Obat
82
menampilkan data
user dalam tabel
daftar user.
7. Admin mengklik 8. Sistem
tombol edit data user. menampilkan form
user yang ingin
diubah.
9. Admin mengklik 10. Sistem
tombol delete data menampilkan form
user. user yang ingin
dihapus.
11. Admin mengklik 12. Sistem
tombol Ok untuk menyimpan dan
menghapus data user menampilkan data
yang diinginkan. user yang masih
tersimpan dalam
tabel daftar user.
Bidang Alternatif Data harus diisi secara lengkap, jika tidak
lengkap maka tidak bisa memanage data
user.
Post Condition Data user tambah/input dan hapus/delete.
83
4.2.2.4 Perancangan Activity Diagram
usecase.
digambarkan yaitu :
84
Keterangan Gambar :
“Login” Apabila
. username ataupun password salah, maka
utama.
85
Gambar 4.5 Activity Diagram Transaksi Obat
Keterangan Gambar :
86
ingin menambah jenis obat yang lain, kembali ke input nama
Keterangan Gambar :
87
admin memilih button “simpan” untuk menyimpan dalam
daftar obat.
88
Keterangan Gambar :
Keterangan Gambar :
89
memilih menu tambah obat dan sistem.
Keterangan gambar :
90
admin dapat mengisi form tambah user. Setelah mengisi form
data user baru, maka staff admin memilih menu Lihat User
mengakses sistem.
Keterangan gambar :
91
Staff admin dan dokter terlebih dahulu melakukan login. Saat
untuk keluar dan sistem, lalu otomatis staff admin dan logout
apotek :
92
1. Sequence Diagram Login
User
Staf Admin, Dokter
93
2. Sequence Diagram Transaksi Obat untuk Pasien
94
3. Sequence Diagram Input Data Obat
95
4. Sequence Diagram Input Manajemen User Login
Admin
Admin
96
5. Sequence Diagram Logout
97
4.2.2.6 Perancangan Class Diagram
98
berperan dalam menangkap struktur dari semua kelas yang
99
a. Tabel User
b. Tabel Obat
daftar obat dan untuk melihat, menambah, edit dan delete data
100
100
100
jenis Varchar 20 Jenis obat
daftar obat dan untuk melihat, menambah, edit dan delete data
101
banyak Integer 5 Jumlah obat yg dibeli
102
102
102
interface yang memiliki rancangan dan fungsi yang saling
berbeda.
LOGO
Username
Password
capta
LOGO
transaksi input lihat history laporan user logout
Mulai transaksi
103
103
103
3. Tampilan menu input obat
obat.
andalan.
104
104
104
Gambar 4.21 Hasil pencarian nama obat andalan.
Expired obat adalah daftar obat-obat yang akan expired 3 bulan kemudian
dan obat-obat yang sudah melewati batas expired. Obat yang sudah expired dapat
105
6. Tampilan Menu Stok Minimal
Daftar stok minimal adalah daftar obat-obat yang sudah kurang dari stok
minimal. Hal ini berguna sebagai notifikasi sekaligus melakukan pengecekan jika
Module lihat obat diperuntukan untuk operator. Fitur yang ada pada
module lihat obat sama dengan module daftar obat. Pada module lihat obat, operator
hanya dapat melihat daftar obat-obat yang dijual beserta informasinya dan tidak
dapat melakukan input obat, edit obat atau pun melakukan delete obat.
Pada module lihat obat tedapat pula fitur untuk melakukan search obat.
106
106
106
Gambar 4.24 Menu lihat obat
modul transaksi, operator akan menginputkan nama obat di kolom pencarian. Jika
nama obat ditemukan maka akan ditampilkan nama obat beserta harga, lemari,
dan sebagainya. Obat tersebut dapat diubah banyaknya (quantity) dan nilai
service. Nilai Service adalah harga tambahan pada obat, jika obat yang bersangkutan
harus dilembutkan terlebih dahulu. Jika data sudah benar maka akan dikalkukalasi
107
107
107
Jika masih ada data obat yang harus diinputkan (pembelian obat lebih dari
satu), maka operator akan melakukan pencarian kembali nama obat dan
9. Dashboard / Home
Module ini akan tampil pertama kali pada saat user/operator telah melakukan
login. Pada module ini akan diberitahukan nama obat yang akan expired dalam
waktu 3 bulan kemudian dan stok obat yang lebih kecil dari batas stok minimal.
108
108
108
Gambar 4.26 Dashboard / Home
operator A hanya dapat melihat history transaksi yang dilakukan oleh Operator A
dan tidak dapat melihat history transaksi operator B. Khusus untuk Admin dapat
109
109
109
Gambar 4.27 Menu History Transaksi
Untuk membuat laporan, pilih tanggal yang akan dijadikan laporan dan
kemudian tekan tombol lihat, output dari proses tersebut dapat dilihat pada
gambar 4.15
110
12 User (User Management)
a. Nama
b. Username
c. Password
d. Level
111
111
111
4.2.3 Impelementasi
rancangan tampilan.
a. Perangkat Keras :
1. Komputer Dekstop
3. Modem Speedy
3. Kabel Data
b. Perangkat Lunak :
3. PHP 5.2.8
112
112
112
Bahasa pemrograman dan komponen – komponen yang digunakan
2 Harddisk 40 Gb 80 Gb 320 Gb
Professional Professional
113
113
113
Tabel 4.18 Struktur File Codeigniter Framework
gambar berikut:
request, akan dicek di Router alamat yang dimasukan oleh user tersebut.
Bila ada pada cache data, maka akan langsung menuju ke Caching dan
114
114
114
kembali lagi ke user. Bila di cache tidak ada maka diteruskan lagi ke
yang dimasukan user (bila ada). Lalu dari security informasi tersebut
a. Routing
berikut :
115
115
115
<?php if ( ! defined('BASEPATH')) exit('No direct script
access allowed');
$route['default_controller'] = "umum";
function Umum()
parent::Controller();
$this->load-
>helper(array('file','number','directory'));
function login(){
$data = array();
$data['pesan'] = null;
$this->load->view('umum/header');
$this->load->view('umum/login',$data);
$this->load->view('umum/footer');
116
116
116
Dari code controller umum.php pada baris akhir, system
sebagai berikut :
<div id="page">
<!-- start content -->
<div id="content">
<div class="post">
<h1 class="title" style="background-color:#efefff;border:
1px solid #8f8f9f;"> Halaman Login</h1>
<div class="entry">
117
117
117
</div><p align="right" style="padding-right:10px;"><small
style="color:#6b8732"></small></p></div>
</div>
</div>
</div>
<!-- end content -->
<!-- start sidebar -->
<div id="sidebar">
</div>
<!-- end sidebar -->
<div style="clear: both;"> </div>
</div>
ketika user mengakses aplikasi pada web browser, maka sistem akan
memanggil controller yang telah di set pada file config routes. Setelah itu
controller memanggil file view, jadi halaman yang tampil pada web
browser adalah file view yang ditentukan controller, secara detail coding
pada lampiran B.
controller sebagai logika sistem, model sebagai query database dan view
data.
118
118
118
Saat akan melakukkan view data, maka user mengklik menu
allowed');
function view_berita(){
$id = $this->uri->segment(3,0);
$data['berita'] = $this->mainmodel->getBeritaById($id);
$this->load->view('umum/header');
$this->load->view('umum/view_berita',$data);
$this->load->view('umum/footer');
<?php
119
119
119
{
function getBeritaById($id){
return $this->db->query($sql);
<div id="page">
<!-- start content -->
<div id="content">
<div class="post">
<h1 class="title" style="background-
color:#efefff;border: 1px solid #8f8f9f;"> Artikel
Kesehatan</h1>
<div class="entry">
120
120
120
style="color:#6b8732"></small></p></div>
<? endforeach?>
</div>
</div>
</div>
<!-- end content -->
<!-- start sidebar -->
<div id="sidebar">
<ul>
<li id="search">
<h2>Pencarian</h2>
<?=form_open('umum/cari_berita');?>
<fieldset>
<input type="text" name="key" value="" />
<input type="submit" id="x" value="cari" />
</fieldset>
<?=form_close();?>
</ul>
</div>
<!-- end sidebar -->
<div style="clear: both;"> </div>
</div>
browser.
c. Penerapan Keamanan
1. XSS filtering
121
121
121
diaktifkan. Cara mengaktifkannya adalah dengan merubah
$config['global_xss_filtering'] = TRUE;
proses login.
function cek_login($user,$pass){
$sql = "select * from user where
nama='$user'";
$result = $this->db->query($sql);
foreach($result->result() as $row){
if($row->password == $pass){
if($row->level == "admin")
return "admin";
else{
if($row->poli ==
"umum") return
"dokter1";
else
return
"dokter2";
}
}
else
return "salah";
}
}
122
122
122
4.2.3.4 Pengujian Browser
aplikasi ini dapat bekerja dengan baik dan apakah aplikasi ini
opera.
123
123
123
BAB V
data obat – obatan seperti sisa stock obat, harga obat, masa kadaluarsa obat, letak
perharinya.
III dan Bab IV, maka pada bab ini penulis akan menguraikan kesimpulan yang
dapat ditarik dari rangkaian penelitian tersebut. Selain kesimpulan, penulis juga
memberikan saran yang akan bermanfaat bagi pihak-pihak yang akan melanjutkan
5.1 Kesimpulan
124
124
124
2. Aplikasi ini dapat mempermudah admin di dalam mengakses
informasi berupa data obat-obatan seperti sisa stock obat, harga obat,
letak obat dalam lemari serta masa kadaluarsa obat yang terorganisir
5.2 Saran
Aplikasi ini tentu saja masih belum sempurna. Masih banyak hal
yang dapat dilakukan untuk mengembangkan aplikasi ini agar menjadi lebih
125
125
125
DAFTAR PUSTAKA
Anisyah, Suci Nur dan Riwayadi, Susilo. 2000. Kamus Lengkap Bahasa
Indonesia. Surabaya : Sinar Terang.
Dhanta, Rizky. 2009. Kamus Istilah Komputer Grafis & Internet. Surabaya:
Indah.
Dharma Oetomo, Budi Soetedjo & Handoko, Yosia, 2003 “ Teleakses Database
Pendidikan Berbasis Ponsel”, Penerbit Andi, Yogyakarta.
Kendall, Kenneth E dan Kendall, Julie E. 2010. Analisis dan Perancangan Sistem,
Edisi Kelima (Edisi Bahasa Indonesia). Jakarta : PT Indeks.
126
126
126
Putra, Darma. 2009. Sistem Biometrika. Yogyakarta : C.V. Andi Offset.
Saputra, Agus. 2011. Step by Step Membangun Aplikasi SMS dengan PHP dan
MySQL. Jakarta : PT. Elex Media Komputindo.
Saputra, Agus. 2012. Membuat Aplikasi Absensi dan Kuesioner untuk Panduan
Skripsi. Jakarta : PT. Elex Media Komputindo.
Saputra, Agus dan Agustin, Feni. 2012. Membangun Sistem Aplikasi E-Commerce
dan SMS. Jakarta : PT. Elex Media Komputindo.
Suja, Iman. 2005. Pemrograman SQL dan Database Server MySQL. Yogyakarta :
C.V. Andi Offset.
Whitten, J.L., Bentley, L.D. & Dittman, K.C. 2004. Metode Desain dan Analisis
Sistem. Diterjemahkan oleh Tim Penerjemah ANDI. Edisi 6. Yogyakarta : ANDI.
http://www.gammu.org/wiki/index.php?title=Gammu:Full_reference_manual. 2
Maret 2013
127
127
127
LAMPIRAN
SOURCE CODE
Home.php
} se
el
{ echo warning('Maaf, username atau password yang Anda masukkan salah...','home');
}
}
} ptcha($str)
function valid_ca
{ n = time()-60;
$expiratio >query("DELETE FROM captcha WHERE captcha_time < ".$expiration);
$this->db-ELECT COUNT(*) AS count FROM captcha WHERE word = ?
$sql = "S AND ip_address = ? AND captcha_time > ?";
rray($str, $this->input->ip_address(), $expiration);
$binds = a this->db->query($sql, $binds);
$query = $uery->row();
$row = $qcount == 0)
if ($row->
{
return FALSE;
}else{
return TRUE;
}
}
function logout()
{
$this->auth->logout();
echo warning('Anda berhasil logout...','home');
}
function front()
{
if(!is_logged_in())
{
$data = $this->auth->setChaptcha();
$this->load->view('home/login_form',$data);
}
else
{
$this->trmodel->get_front();
}
}
function about()
{
$this->lo d->view('home/about');
}
}
function lihat_obat()
{
$page='0';
$config['base_url'] = base_url().'obat/lihat/';
$config['total_rows'] = $this->db->count_all('table_obat');
$config['full_tag_open'] = '<strong>';
$config['full_tag_close'] = '</strong>';
$config['per_page'] = 15;
$this->pagination->initialize($config);
$data['querysemua'] = $this->obmodel->ambilobatsemua();
$data['query'] = $this->obmodel->ambil($config['per_page'],$this->uri->segment(3));
$this->load->view('obat/lihat_obat', $data);
}
function lihat($pa ge='0')
{
$config['base_url'] = base_url().'obat/lihat/';
$config['total_rows'] = $this->db->count_all('table_obat');
$config['full_tag_open'] = '<strong>';
$config['full_tag_close'] = '</strong>';
$config['per_page'] = 15;
$this->pagination->initialize($config);
$nohalaman = $this->uri->segment(3);
$data['query'] = $this->obmodel->ambil($config['per_page'],$nohalaman);
$data['no_hal'] = $nohalaman;
$this->load->view('obat/insert_obat', $data);
}
function lihat_lihat($page='0')
{
$config['base_url'] = base_url().'obat/lihat_lihat/';
$config['total_rows'] = $this->db->count_all('table_obat');
$config['full_tag_open'] = '<strong>';
$config['full_tag_close'] = '</strong>';
$config['per_page'] = 15;
$this->pagination->initialize($config);
$nohalaman = $this->uri->segment(3);
$data['querysemua'] = $this->obmodel->ambilobatsemua();
$data['query'] = $this->obmodel->ambil($config['per_page'],$nohalaman);
$data['no_hal'] = $nohalaman;
$this->load->view('obat/lihat_obat', $data);
}
function search()
{
$pilihan = $this->input->post('pilihan');
$searchobat = $this->input->post('searchobat');
if(!empty($searchobat) and !empty($pilihan))
{
$data['query'] = $this->obmodel->search($searchobat, $pilihan);
$this->load->view('obat/insert_obat', $data);
}
}
function search_lihat()
{
$pilihan = $this->input->post('pilihan');
$searchobat = $this->input->post('searchobat');
if(!empty($searchobat) and !empty($pilihan))
{
$data['pilihan'] = $pilihan;
$data['searchobat'] = $searchobat;
$data['querysemua'] = $this->obmodel->ambilobatsemua();
$data['query'] = $this->obmodel->search($searchobat, $pilihan);
$data['prints'] = 'printsearch';
$this->load->view('obat/lihat_obat', $data);
}
}
function frame_lihat_obat()
{
$this->lo d->view('obat/frame_lihat_obat');
}
function frame_obat()
{
$page='0';
$config['base_url'] = base_url().'obat/frame_obat/';
$config['total_rows'] = $this->db->count_all('table_obat');
$config['full_tag_open'] = '<strong>';
$config['full_tag_close'] = '</strong>';
$config['per_page'] = 15;
$this->paginasi->initialize($config);
$nohalaman = $this->uri->segment(3);
$data['query'] = $this->obmodel->ambil($config['per_page'],$this->uri->segment(3));
$data['querysemua'] = $this->obmodel->ambilobatsemua();
$data['no_hal'] = $nohalaman;
$this->load->view('obat/frame_lihat', $data);
}
function printobat()
{
$searchobat = $this->uri->segment(4);
$pilihan = $this->uri->segment(3);
$data['querysemua'] = $this->obmodel->ambilobatsemua();
$data['query'] = $this->obmodel->search($searchobat, $pilihan);
$this->load->view('obat/frame_lihat_search', $data);
}
function simpan()
{
$data = array(
'id_obat' => $this->input->post('id_obat') ,
'nama_obat' => $this->input->post('nama_obat') ,
'harga_satuan' => $this->input->post('harga_satuan') ,
'jenis' => $this->input->post('jenis') ,
'status_resep' => $this->input->post('status') ,
'stokmin' => $this->input->post('stokmin') ,
'distributor' => $this->input->post('distributor') , t('no_faktur') ,
'no_faktur' => $this->input->pos
'exp_date' => $this->input->post('exp_date') , mari') ,
'lemari' => $this->input->post('le
'stok' => $this->input->post('stok')
$namaob );
a t = $data['nama_obat'];
if($data['id_obat'] != '')
{
(empty($data['nama_obat']) || empty($data['harga_satuan']) || empty($data['jenis']) || empty($data['
']) || empty($data['lemari'])){
if $data['hasil'] = 'Gagal menyimpan, semua kolom harus diisi'; status_resep'])
|| empty($data['exp_date
se if(strtotime($data['exp_date']) <= strtotime(date('Y-m-d'))){
$data['hasil'] = 'Gagal menyimpan, '.$namaobat.' Sudah expired';
}else{
$this->db->where('id_obat',$data['id_obat']);
}el $this->db->update('table_obat',$data);
$data['hasil'] = 'Data Obat '.$namaobat.' Berhasil diupdate';
}
}
else
{
$this->db->from('table_obat');
$this->db->where('nama_obat',$data['nama_obat']);
$num = $this->db->count_all_results();
if($num > 0)
{
$data['hasil'] = 'Data Obat '.$namaobat.' Sudah Tersedia';
}
else
{
$this->obmodel->simpan($data, $table = 'table_obat');
$data['hasil'] = 'Data Obat '.$namaobat.' Berhasil diproses';
}
}
$page='0';
$config['base_url'] = base_url().'obat/lihat/';
$config['total_rows'] = $this->db->count_all('table_obat');
$config['full_tag_open'] = '<strong>';
$config['full_tag_close'] = '</strong>';
$config['per_page'] = 15;
$this->pagination->initialize($config);
$data['query'] = $this->obmodel->ambil($config['per_page'],$this->uri->segment(3));
$this->load->view('obat/insert_obat', $data);
}
function hapus()
{
$id = $this->uri->segment(3);
if(!is_numeric($id))
return false;
function Transaksi()
{
parent::Controller();
$this->load->library('auth');
$this->auth->restrict();
$this->load->helper('url');
$this->load->model('obmodel');
}
function index()
{
$this->lo d->view('transaksi/form_transaksi');
}
function export_data()
{
$this->lo d->view('transaksi/export_data');
}
function laporan()
{
$data['hasil'] = $this->obmodel->ambiluser($table = 'user');
$this->load->view('transaksi/laporan', $data);
}
function laporan_iframe()
{
$this->lo d->view('transaksi/laporan_iframe');
}
function history()
{
$data['hasil'] = $this->obmodel->ambiluser($table = 'user');
$this->load->view('transaksi/history', $data);
}
function search()
{
$this->lo d->view('obat/search');
}
function proses_l poran()
{
$user = $this->input->post('user');
if(empty($user))
{
$user = $this->session->userdata('user_id');
}
$tanggal = $this->input->post('tanggal');
foreach($hasil->result() as $row)
{
$data['namauser'] = $row->user_name;
}
$data['tanggal'] =$newDate;
$this->load->view('transaksi/proses_laporan', $data);
}
function proses_history()
{
$user = $this->input->post('user');
if(empty($user))
{
$user = $this->session->userdata('user_id');
}
$tanggal = $this->input->post('tanggal');
foreach($hasil->result() as $row)
{
$data['namauser'] = $row->user_name;
}
$data['tanggal'] =$newDate;
$this->load->view('transaksi/proses_history', $data);
}
function import_data()
{
$this->load->view('transaksi/import');
}
function import_data1()
{
$this->load->view ('transaksi/import1');
}
function prosescsv ()
{
$filecsv = $_FILES['filecsv'];
$fname = $filecsv['name'];
$chk_ext = explode(".",$fname);
$filename = $_FILES['filecsv']['tmp_name'];
$handle = fopen($filename, "r");
$ elect = mysql_query("select * from dataorder order by id_order desc limit 1") or die(mysql_error());
$row1 = mysql_fetch_row($select);
$idorder[$data[0]] = $row1[0];
}
else
{
if (array_key_exists($data[2], $idorder)) {
$orderid = $idorder[$data[2]];
} otal, banyak)
values('$data[1]','$orderid $sql1 = "INSERT into data_obat(id_obat, id_order, harga, priceservice, subt
','$data[3]','$data[4]','$data[5]','$data[6]')";
mysql_query($sql1) or die(mysql_error());
}
}
fclose($handle);
$msg = "Successfully Imported";
}
else
{
$msg = "Invalid File! (File must csv format)";
}
$data['name'] = $msg;
$this->load->view('transaksi/import', $data);
}
}
/* End of file transaksi.php */
/* Location: ./system/application/controllers/transaksi.php */
user.php
function User()
{
parent::Controller();
$this->load->library('auth');
$this->load->model(array('usermodel'));
$this->auth->restrict();
$this->auth->cek('manajemen_user');
}
function index()
{
$data['user'] = $this->usermodel->get_list_user();
$this->load->view('user/panel',$data);
}
function simpan()
{
$data1 = $this->fungsi->accept_data(array_keys($_POST));
$this->usermodel->simpan($data1);
$data['hasil'] = 'Proses Berhasil';
$data['user'] = $this->usermodel->get_list_user();
$this->load->view('user/panel',$data);
}
function hapus()
{
$id = $this->uri->segment(3);
$hasil = $ his->db->get_where('dataorder', array('id_user' => $id));
if($hasil->num_rows() > 0)
{
$data['hasil'] = 'Data user Gagal di hapus, karena nama user sudah ada dalam transaksi penjualan';
}
else
{
$this->usermodel->hapus_user($id);
$data['hasil'] = 'Data user Berhasil dihapus';
}
$data['user'] = $this->usermodel->get_list_user();
$this->load->view('user/panel',$data);
}
}
<?php
class Sales extends Contro ller
{
function __construct()
{
parent:: construct('sales');
$this->load->library('sale_lib');
$this->load->library('auth');
$this->load->model('obmodel');
$this->auth->restrict();
}
function index()
{
$this->_reload();
}
function item_se rch()
{
$suggestions = $this->Item->get_item_search_suggestions($this->input->post('q'),$this->input->post('limit'));
echo implode("\n",$suggestions);
}
//Alain Multiple Payments
function add_payment()
{
$data=array();
$this->form_validation->set_rules('amount_tendered', 'lang:sales_amount_tendered', 'numeric');
if ($this->form_validation->run() == FALSE)
{
if ( $this->input->post('payment_type') == $this->lang->line('sales_gift_card') )
$data['error']=$this->lang->line('sales_must_enter_numeric_giftcard');
else
$data['error']=$this->lang->line('sales_must_enter_numeric');
$ his->_reload($data);
return;
}
$payment_type=$this->input->post('payment_type');
if ( $payment_type == $this->lang->line('sales_giftcard') )
{
$payments = $this->sale_lib->get_payments();
$payment_type=$this->input->post('payment_type').':'.$payment_amount=$this->input->post('amount_ tendered');
$current_payments_with_giftcard = isset($payments[$payment_type]) ?
$payments[$payment_type]['payment_amount'] : 0;
$cur_giftcard_value = $this->Giftcard->get_giftcard_value( $this->input->post('amount_tende red') ) -
$current_payments_with_giftcard;
if ( $cur_giftcard_value <= 0 )
{
$data['error']='Giftcard balance is '.to_currency( $this->Giftcard->get_giftcard_value( $this->input-
>post('amount_tendered') ) ).' !';
$this->_reload($data);
return;
function add()
{
$data=array();
$mode = $this->sale_lib->get_mode();
$item_id_or_number_or_item_kit_or_receipt = $this->input->post("item");
$quantity = $mode=="sale" ? 1:-1;
if($this->sale_lib->out_of_stock($item_id_or_number_or_item_kit_or_receipt))
{
$data['warning'] = "Maaf, Obat yang Anda masukan stoknya sudah habis, silahkan isi kembali pada input obat";
$this->_reload($data);
}
else
{
if($this->sale_lib->is_valid_item_kit($item_id_or_number_or_item_kit_or_receipt))
{
$ his->sale_lib->add_item_kit($item_id_or_number_or_item_kit_or_receipt);
}
elseif(!$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt,$quantity))
{
$data['error']=$this->lang->line('sales_unable_to_add_item');
}
$this->_reload($data);
}
}
function edit_item($line)
{
if($this->sale_lib->out_of_stock($this->sale_lib->get_item_id($line)))
{
$data['warning'] = "Maaf stok tidak mencukupi, silahkan ubah stok terlebih dahulu";
$this->_reload($data);
}
else
{
$data= array();
$price_service = $this->input->post("price_service");
$price = $this->input->post("price");
$quantity = $this->input->post("quantity");
$discount = $this->input->post("discount");
if ($this->form_validation->run() != FALSE)
{
$this->sale_lib->edit_item($line,$quantity,$discount,$price,$price_service);
}
else
{
$data['error']=$this->lang->line('sales_error_editing_item');
}
$this->_reload($data);
}
}
$vardata['transaksi'] = $this->obmodel->print_transaksi($id_order);
$vardata['today'] = date("j-m-Y");
$vardata['nama_pasien'] = $nama_pasien;
$vardata['nama_apotek'] = $this->config->item('nama_apotek');
$vardata['alamat'] = $this->config->item('alamat');
$vardata['no_telp'] = $this->config->item('no_telp');
$vardata['apoteker'] = $this->config->item('apoteker');
$vardata['total'] = $tot;
$vardata['bayar'] = $bayar;
$this->sale_lib->clear_all();
$this->load->view('sales/print',$vardata);
}
function receipt($sale_id)
{
$sale_info = $this->Sale->get_info($sale_id)->row_array();
$this->sale_lib->copy_entire_sale($sale_id);
$data['cart']=$this->sale_lib->get_cart();
$data['payments']=$this->sale_lib->get_payments();
$data['subtotal']=$this->sale_lib->get_subtotal();
$data['taxes']=$this->sale_lib->get_taxes();
$data['total']=$this->sale_lib->get_total();
$data['receipt_title']=$this->lang->line('sales_receipt');
$data['transaction_time']= date('m/d/Y h:i:s a', strtotime($sale_info['sale_time']));
$customer_id=$this->sale_lib->get_customer();
$emp_info=$this->Employee->get_info($sale_info['employee_id']);
$data['payment_type']=$sale_info['payment_type'];
$data['amount_change']=to_currency($this->sale_lib->get_amount_due() * -1);
$data['employee']=$emp_info->first_name.' '.$emp_info->last_name;
if($customer_id!=-1)
{
$cust_info=$this->Customer->get_info($customer_id);
$data['customer']=$cust_info->first_name.' '.$cust_info->last_name;
}
$data['sale_id']='POS '.$sale_id;
$this->load->view("sales/receipt",$data);
$this->sale_lib->clear_all()
}
function edit($sale_id)
{
$data = array();
$data['employees'] = array();
foreach ($this->Employee->get_all()->result() as $employee)
{
$data['employees'][$employee->person_id] = $employee->first_name . ' '. $employee->last_name;
}
$data['sale_info'] = $this->Sale->get_info($sale_id)->row_array();
$this->lo d->view('sales/edit', $data);
}
if ($this->Sale->delete($sale_id))
{
$data['success'] = true;
}
else
{
$data['success'] = false;
}
function save($sale_id)
{
$sale_data = array(
'sale_time' => date('Y-m-d', strtotime($this->input->post('date'))),
'customer_id' => $this->input->post('customer_id') ? $this->input->post('customer_id') : null,
'employee_id' => $this->input->post('employee_id'),
'comment' => $this->input->post('comment')
);
if ($this->Sale->update($sale_data, $sale_id))
{
echo json_encode(array('success'=>true,'message'=>$this->lang->line('sales_successfully_updated')));
}
else
{
echo json_encode(array('success'=>false,'message'=>$this->lang->line('sales_unsuccessfully_updated')));
}
}
function _payments_cover_total()
{
$total_payments = 0;