• Tidak ada hasil yang ditemukan

BAB IV PERANCANGAN SISTEM USULAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV PERANCANGAN SISTEM USULAN"

Copied!
66
0
0

Teks penuh

(1)

BAB IV

PERANCANGAN SISTEM USULAN

4.1. Analisa Kebutuhan Software 4.1.1. Tahapan Analisis

Berikut spesifikasi kebutuhan (system requirement) dari website POS pada Maktab Abu Ahmad:

1. Halaman Kasir

A1. Kasir dapat melakukan Login untuk masuk ke halaman kasir A2. Kasir dapat memilih menu Beranda

A3. Kasir dapat memilih menu Transaksi Penjualan untuk menginput transaki penjualan

A4. Kasir dapat memilih menu Laporan Penjualan untuk mengelola laporan penjualan

A5. Kasir dapat memilih menu Pelanggan untuk mengelola data pelanggan A6. Kasir dapat memilih menu Logout untuk keluar dari halaman kasir 2. Halaman Admin

B1. Admin dapat melakukan Login untuk masuk ke halaman admin B2. Admin dapat memilih menu Beranda

B3. Admin dapat memilih menu Persediaan Masuk dan Persediaan Keluar untuk menginput data persediaan masuk dan persediaan keluar

B4. Admin dapat memilih menu Barang untuk mengelola data barang B5. Admin dapat memilih menu Kategori untuk mengelola data kategori B6. Admin dapat memilih menu Pemasok untuk mengelola data pemasok

(2)

B7. Admin dapat memilih menu Pengguna untuk mengelola data pengguna B8. Admin dapat memilih menu Laporan Persediaan Masuk dan Persediaan

Keluar untuk mengelola laporan persediaan masuk dan persediaan keluar B9. Admin dapat memilih menu Logout untuk keluar dari halaman admin

(3)

4.1.2. Rancangan Diagram Use Case 1. Usecase Diagram

Gambar IV.1 Usecase Diagram

(4)

Tabel IV.1

Deskripsi Use Case Diagram Login Use Case Name Login

Requirements Admin dan Kasir harus memasukan username dan password

Goal Admin dapat masuk ke sistem untuk mengelola data Pre-Conditions Menginput username dan password

Post-Conditions Admin dan Kasir dapat masuk ke aplikasi Failed and

Conditions

Gagal login username atau password salah

Actors Admin dan Kasir

Main Flow/Basic Path

1. Admin dan Kasir menginput username dan password 2. Admin dan Kasir masuk ke aplikasi

Tabel IV.2

Deskripsi Use Case Diagram Input Data Transaksi Penjualan Use Case Name Input data transaksi penjualan

Requirements Kasir harus login

Goal Kasir dapat masuk ke sistem untuk menginput data penjualan

Pre-Conditions Kasir memilih menu penjualan Post-Conditions Data transaksi penjualan tersimpan Failed and

Conditions

1. Kasir tidak dapat mengakeses halaman penjualan 2. Data transaksi tidak tersimpan

Actors Kasir

Main Flow/Basic Path

1. Kasir melakukan login

2. Kasir memilih menu penjualan 3. Kasir mencetak nota penjualan

(5)

Tabel IV.3

Deskripsi Use Case Diagram Input Data Persediaan Masuk dan Keluar Use Case Name Input data persediaan

Requirements Admin harus login

Goal Admin dapat masuk ke sistem untuk menginput data persediaan

Pre-Conditions Admin memilih menu persediaan Post-Conditions Data persediaan tersimpan Failed and

Conditions

1. Admin tidak dapat mengakeses halaman persediaan 2. Data persediaan tidak tersimpan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login

2. Admin memilih menu persediaan

Tabel IV.4

Deskripsi Use Case Diagram Mengelola Data Barang Use Case Name Mengelola data barang

Requirements Admin harus login

Goal Admin dapat mengelola data barang Pre-Conditions Admin memilih menu data barang Post-Conditions Data barang berhasil tersimpan Failed and

Conditions

1. Admin tidak dapat mengakeses halaman data barang 2. Data barang tidak tersimpan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login

2. Admin memilih menu data barang

(6)

Tabel IV.5

Deskripsi Use Case Diagram Mengelola Data Pegawai Use Case Name Mengelola data pegawai

Requirements Admin harus login

Goal Admin dapat mengelola data pegawai Pre-Conditions Admin memilih menu pegawai Post-Conditions Data pegawai tersimpan Failed and

Conditions

1. Admin tidak dapat mengakeses halaman pegawai 2. Data pegawai tidak tersimpan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login 2. Admin memilih menu pegawai

Tabel IV.6

Deskripsi Use Case Diagram Mengelola Data Pemasok Use Case Name Mengelola data pemasok

Requirements Admin harus login

Goal Admin dapat mengelola data pemasok Pre-Conditions Admin memilih menu pemasok Post-Conditions Data pemasok tersimpan Failed and

Conditions

1. Admin tidak dapat mengakeses halaman pemasok 2. Data pemasok tidak tersimpan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login

2. Admin memilih menu pemasok

(7)

Tabel IV.7

Deskripsi Use Case Diagram Mengelola Data Pelanggan Use Case Name Mengelola data pelanggan

Requirements Kasir harus login

Goal Kasir dapat mengelola data pelanggan Pre-Conditions Kasir memilih menu pelanggan Post-Conditions Data pelanggan tersimpan Failed and

Conditions

1. Kasir tidak dapat mengakeses halaman pelanggan 2. Data pelanggan tidak tersimpan

Actors Kasir

Main Flow/Basic Path

1. Kasir melakukan login

2. Kasir memilih menu pelanggan Tabel IV.8

Deskripsi Use Case Diagram Mengelola Data Kategori Use Case Name Mengelola data kategori

Requirements Admin harus login

Goal Admin dapat mengelola data kategori Pre-Conditions Admin memilih menu kategori Post-Conditions Data kategori tersimpan Failed and

Conditions

1. Admin tidak dapat mengakeses halaman kategori 2. Data kategori tersimpan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login 2. Admin memilih menu kategori

(8)

Tabel IV.9

Deskripsi Use Case Diagram Laporan Penjualan Use Case Name Laporan Penjualan

Requirements Kasir harus login

Goal Kasir dapat masuk ke sistem untuk mengelola data laporan penjualan

Pre-Conditions Kasir memilih menu laporan penjualan Post-Conditions Kasir halaman laporan penjualan Failed and

Conditions

Kasir tidak dapat mengakeses halaman laporan penjualan

Actors Kasir

Main Flow/Basic Path

1. Kasir melakukan login

2. Kasir memilih menu laporan penjualan 3. Kasir mencetak laporan penjualan

Tabel IV.10

Deskripsi Use Case Diagram Laporan Persediaan Use Case Name Laporan Persediaan

Requirements Admin harus login

Goal Admin dapat masuk ke sistem untuk mengelola data laporan persediaan

Pre-Conditions Admin memilih menu laporan persediaan Post-Conditions Tampil halaman laporan persediaan Failed and

Conditions

Admin tidak dapat mengakese halaman laporan persediaan

Actors Admin

Main Flow/Basic Path

1. Admin melakukan login

2. Admin memilih menu laporan persediaan 3. Admin mencetak laporan persediaan

(9)

4.1.3. Activity Diagram 1. Activity Diagram Login

Gambar IV.2 Activity Diagram Login

(10)

2. Activity Diagram Penjualan

Gambar IV.3

Activity Diagram Penjualan

(11)

3. Activity Diagram Persediaan

Gambar IV.4

Activity Diagram Persediaan

(12)

4. Activity Diagram Barang

Gambar IV.5 Activity Diagram Barang

(13)

5. Activity Diagram Pegawai

Gambar IV.6 Activity Diagram Pegawai

(14)

6. Activity Diagram Pemasok

Gambar IV.7 Activity Diagram Pemasok

(15)

7. Activity Diagram Pelanggan

Gambar IV.8

Activity Diagram Pelanggan

(16)

8. Activity Diagram Kategori

Gambar IV.9 Activity Diagram Kategori

(17)

9. Activity Diagram Laporan Penjualan

Gambar IV.10

Activity Diagram Laporan Penjualan

(18)

10. Activity Diagram Laporan Persediaan

Gambar IV.11

Activity Diagram Laporan Persediaan

(19)

4.2. Desain 4.2.1. Database

A. Entity Relationship Diagram (ERD)

Gambar IV.12

Entity Relationship Diagram

(20)

B. Logical Record Structure (LRS)

Gambar IV.13 Logical Record Structure

(21)

C. Spesifikasi File 1. Spesifikasi file user

Nama File : User

Akronim : User

Tipe File : File Master

Akses File : Random

Panjang Record : 342

Kunci File : Id_user

Tabel IV.11 Spesifikasi File User

No Elemen Data Nama Field Type Size Ket

1 Id user Id_user int 11 Primary Key

2 Nama nama varchar 50

3 Username username varchar 25

4 Password password varchar 30

5 Alamat alamat varchar 200

6 Telpon telpon varchar 15

7 Level level int 11

2. Spesifikasi file penjualan

Nama File : Penjualan

Akronim : Penjualan

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 94

Kunci File : Id_penjualan

(22)

Tabel IV.12

Spesifikasi File Penjualan

No Elemen Data Nama Field Type Size Ket

1 Id penjualan id_penjualan Int 11 Primary Key

2 Faktur faktur Varchar 50 Unique

3 Id user id_user Int 11 Foreign key

4 Diskon diskon Int 11

5 Total Harga total_harga Double

6 Total Bayar total_bayar Int 11

7 Uang Bayar uang_bayar Double

8 Kembalian kembalian Double

9 Tanggal tanggal date

3. Spesifikasi file persediaan

Nama File : Persediaan

Akronim : Persediaan

Tipe File : File Master

Akses File : Random

Panjang Record : 55

Kunci File : Id_persediaan

Tabel IV.13

Spesifikasi File Persediaan

No Elemen Data Nama Field Type Size Ket

1 Id penjualan id_persediaan Int 11 Primary Key

2 Id produk Id_produk Int 11 Foreign key

(23)

3 Id user Id_user Int 11 Foreign key

4 Id pemasok Id_pemasok Int 11 Foreign key

5 Qty Qty Int 11

7 Tipe Tipe Enum

8 Harga beli Harga_beli Double

9 Harga jual Harga_jual Double

10 Tanggal tanggal date

4. Spesifikasi file detail penjualan

Nama File : Detail Penjualan

Akronim : Detail Penjualan

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 77

Kunci File : Id_detail_penjualan

Tabel IV.14

Spesifikasi File Detail Penjualan

No Elemen Data Nama Field Type Size Ket

1 Id detail penjualan Id_detail_penjualan Int 11 Primary Key

2 Id produk Id_produk Int 11 Foreign key

3 Id penjualan Id_penjualan Int 11 Foreign key

4 Harga Harga Int 11

5 Diskon produk Diskon_produk Int 11

6 Total Total Int 11

7 Qty Qty Int 11

(24)

5. Spesifikasi file produk

Nama File : Produk

Akronim : Produk

Tipe File : File Master

Akses File : Random

Panjang Record : 244

Kunci File : Id_produk

Tabel IV.15 Spesifikasi File Produk

No Elemen Data Nama Field Type Size Ket

1 Id produk id_produk Int 11 Primary Key

2 Kode produk kode_produk Varchar 50 3 Nama produk nama_produk Varchar 50

4 harga harga Int 11

5 Harga beli Harga_beli Int 11

6 Stok stok Text

7 Id kategori id_kategori Int 11 Foreign key

8 Gambar gambar Varchar 100

9 Tanggal tanggal date

6. Spesifikasi file kategori

Nama File : Kategori

Akronim : Kategori

Tipe File : File Master

Akses File : Random

(25)

Panjang Record : 61

Kunci File : Id_kategori

Tabel IV.16 Spesifikasi File Kategori

No Elemen Data Nama Field Type Size Ket

1 Id kategori id_kategori Int 11 Primary Key

2 Nama kategori Nama_kategori Varchar 50

7. Spesifikasi file pemasok

Nama File : Pemasok

Akronim : Pemasok

Tipe File : File Master

Akses File : Random

Panjang Record : 276

Kunci File : Id_pemasok

Tabel IV.17 Spesifikasi File Pemasok

No Elemen Data Nama Field Type Size Ket

1 Id pemasok id_pemasok Int 11 Primary Key

2 Nama pemasok Nama_pemasok Varchar 50

3 Alamat alamat Varchar 200

4 Telpon telpon Varchar 15

5 Deskripsi deskripsi Text

(26)

4.2.2. Software Architectur A. Class Diagram

Gambar IV.14 Class Diagram

(27)

B. Sequence Diagram 1. Sequence Diagram Login

Gambar IV.15 Sequence Diagram Login

(28)

2. Sequence Diagram Penjualan

Gambar IV.16

Sequence Diagram Penjualan

(29)

3. Sequence Diagram Persediaan

Gambar IV.17

Sequence Diagram Persediaan

(30)

4. Sequence Diagram Barang

Gambar IV.18 Sequence Diagram Barang

(31)

5. Sequence Diagram Pengguna

Gambar IV.19

Sequence Diagram Pengguna

(32)

6. Sequence Diagram Pemasok

Gambar IV.20

Sequence Diagram Pemasok

(33)

7. Sequence Diagram Pelanggan

Gambar IV.21

Sequence Diagram Pelanggan

(34)

8. Sequence Diagram Kategori

Gambar IV.22

Sequence Diagram Kategori

(35)

9. Sequence Diagram Laporan Penjualan

Gambar IV.23

Sequence Diagram Laporan Penjualan

(36)

10. Sequence Diagram Laporan Persediaan

Gambar IV.24

Sequence Diagram Laporan Persediaan

(37)

C. Devloyment Diagram

Gambar IV.25 Devloyment Diagram

(38)

D. Component Diagram

Gambar IV.26 Component Diagram

(39)

4.2.3. User Interface A. Interface Kasir 1. Interface Login

Gambar IV.27 Interface Login

Halaman login merupakan halaman untuk login. Pengguna diharuskan untuk memasukan username dan password agar dapat masuk ke dalam sistem Point Of Sale (POS) Maktab Abu Ahmad.

2. Interface Beranda

Gambar IV.28 Interface Beranda

Halaman ini merupakan halaman utama setelah login sebagai kasir. Terdapat beberapa menu untuk mengelola dan melakukan transaksi.

(40)

3. Interface Transaksi Penjualan

Gambar IV.29 Interface Transaksi Penjualan

Halaman ini merupakan halaman transaksi penjualan. Terdapat form-form dan daftar barang yang bisa dipilih untuk dimasukkan ke dalam keranjang.

4. Interface Laporan Penjualan

Gambar IV.30 Interface Laporan Penjualan

Halaman ini merupakan halaman yang berfungsi untuk melakukan pengumpulan data transaksi penjualan dan akan diserahkan kepada pemilik.

(41)

5. Interface Data Pelanggan

Gambar IV.31 Interface Data Pelanggan

Halaman ini merupakan halaman yang berfungsi untuk melihat, menambah dan merubah data pelanggan.

6. Interface Data Penjualan

Gambar IV.32 Interface Data Penjualan

Halaman ini merupakan halaman yang berfungsi untuk melihat data penjualan yang sudah terjadi pada toko Maktab Abu Ahmad.

(42)

7. Interface Detail Penjualan

Gambar IV.33 Interface Detail Penjualan

Halaman ini merupakan halaman yang berfungsi untuk melihat detail barang dan mencetak Struk Penjualan.

B. Interface Admin

1. Interface Data Pengguna

Gambar IV.34 Interface Data Pengguna

Halaman ini merupakan halaman yang berfungsi untuk melihat, menambah dan merubah data pengguna.

(43)

2. Interface Data Kategori

Gambar IV.35 Interface Data Kategori

Halaman ini merupakan halaman yang berfungsi untuk melihat, menambah dan merubah data kategori.

3. Interface Data Pemasok

Gambar IV.36 Interface Data Pemasok

Halaman ini merupakan halaman yang berfungsi untuk melihat, menambah dan merubah data pemasok.

(44)

4. Interface Data Produk

Gambar IV.37 Interface Data Produk

Halaman ini merupakan halaman yang berfungsi untuk melihat, menambah dan merubah data produk.

5. Interface Persediaan Masuk

Gambar IV.38 Interface Persediaan Masuk

Halaman ini merupakan halaman persediaan masuk. Jika ada pembeliaan barang, admin harus memasukan ke persediaan masuk agar stok dan harga terupdate.

(45)

6. Interface Persediaan Keluar

Gambar IV.39 Interface Persediaan Keluar

Halaman ini merupakan halaman persediaan keluar. Jika ada barang rusak, hilang ataupun salah input jumlah saat persediaan masuk, admin harus memasukan data tersebut sesuai dengan keterangan.

4.3. Code Generation

Code Generation dari aplikasi Point Of Sale Maktab Abu Ahmad menggunakan model MVC (Model, View, Controller).

4.3.1. Model

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class penjualan_m extends CI_Model { public function get_data_penjualan() {

$this->db->select('*, detail_penjualan.harga as harga_jual');

$this->db->from('detail_penjualan');

$this->db->join('produk', 'detail_penjualan.id_produk = produk.id_produk');

$this->db->join('penjualan', 'detail_penjualan.id_penjualan = penjualan.id_penjualan');

$this->db->order_by('id_detail_penjualan', 'desc');

$query = $this->db->get();

return $query;

(46)

}

public function kode_penjualan() {

$query = $this->db->query("SELECT

MAX(MID(kode_penjualan,9,4)) AS kode_penjualan FROM penjualan WHERE MID(kode_penjualan,3,6) = DATE_FORMAT(CURDATE(), '%y%m%d')");

if($query->num_rows() > 0) {

$row = $query->row();

$int = ((int)$row->kode_penjualan) + 1;

$no = sprintf("%'.04d", $int);

} else {

$no = "0001";

}

$kode_penjualan = "MR".date('ymd').$no;

return $kode_penjualan;

}

public function get_keranjang($params = null) {

$this->db->select('*, keranjang.harga as keranjang_harga');

$this->db->from('keranjang');

$this->db->join('produk', 'keranjang.id_produk = produk.id_produk');

if($params != null) {

$this->db->where($params);

}

$this->db->where('id_user', $this->session->userdata('iduser'));

$query = $this->db->get();

return $query;

}

public function tambah_keranjang($post) {

$query = $this->db->query("SELECT MAX(id_keranjang) AS no_keranjang FROM keranjang");

if($query->num_rows() > 0) {

$row = $query->row();

$no_ker = ((int)$row->no_keranjang) + 1;

}else{

$no_ker = "1";

}

$params = array(

'id_keranjang' => $no_ker,

'id_produk' => $post['id_produk'], 'harga' => $post['harga'], 'qty' => $post['qty'],

'total' => $post['harga'] * $post['qty'],

'id_user' => $this->session->userdata('iduser') );

$this->db->insert('keranjang', $params);

}

(47)

function qty_keranjang($post) {

$sql = "UPDATE keranjang SET harga = '$post[harga]', qty = qty + '$post[qty]',

total = '$post[harga]' * qty

WHERE id_produk = '$post[id_produk]'";

$this->db->query($sql);

}

public function hapus_keranjang($params = null) {

if($params != null){

$this->db->where($params);

}

$this->db->delete('keranjang');

}

public function edit_keranjang($post) {

$params = array(

'harga' => $post['harga'], 'qty' => $post['qty'], 'diskon_produk' => $post['diskon'], 'total' => $post['total'], );

$this->db->where('id_keranjang', $post['id_keranjang']);

$this->db->update('keranjang', $params);

}

public function simpan_penjualan($post) {

$params = array(

'kode_penjualan' => $this->kode_penjualan(),

'id_pelanggan' => $post['id_pelanggan'] == "" ? null :

$post['id_pelanggan'],

'total_harga' => $post['subtotal'],

'diskon' => $post['diskon'],

'total_bayar' => $post['total_bayar'], 'uang_bayar' => $post['cash'],

'kembalian' => $post['kembalian'],

'ket' => $post['ket'],

'tanggal' => $post['tanggal'],

'id_user' => $this->session-

>userdata('iduser') );

$this->db->insert('penjualan', $params);

return $this->db->insert_id();

}

function simpan_detail($params) {

$this->db->insert_batch('detail_penjualan', $params);

}

public function get_penjualan($id = null)

(48)

{

$this->db->select('*, user.username as user_name');

$this->db->from('penjualan');

$this->db->join('pelanggan', 'penjualan.id_pelanggan = pelanggan.id_pelanggan', 'left');

$this->db->join('user', 'penjualan.id_user = user.id_user');

if($id != null) {

$this->db->where('id_penjualan', $id);

}

$query = $this->db->get();

return $query;

}

public function get_detail_penjualan($id_penjualan = null) {

$this->db->from('detail_penjualan');

$this->db->join('produk', 'detail_penjualan.id_produk = produk.id_produk');

if($id_penjualan != null) {

$this->db->where('detail_penjualan.id_penjualan',

$id_penjualan);

}

$query = $this->db->get();

return $query;

} }

4.3.2. View

<section class="content-header">

<h1>Penjualan

<small>Pejualan Barang</small>

</h1>

<ol class="breadcrumb">

<li><a href="#"><i class="fa fa-user"></i></a></li>

<li class="active">Penjualan</li>

</ol>

</section>

<section class="content">

<div class="row">

<div class="col-lg-4">

<div class="box box-widget">

<div class="box-body">

<div align="right">

<h4>No. Faktur : <b><span id="nota"><?= $kode_penjualan ?></span></b></h4>

<h1><b><span id="total2" style="font-size: 50pt">0</span></b></h1>

</div></div></div></div>

<div class="col-lg-4">

<div class="box box-widget">

(49)

<div class="box-body">

<table width="100%">tr>

<td style="vertical-align: top; width: 30%">

<label for="kode_produk">Kode Produk</label></td><td>

<div class="form-group input-group">

<input type="hidden" id="id_produk">

<input type="hidden" id="nama_produk">

<input type="hidden" id="harga">

<input type="hidden" id="stok">

<input type="text" id="kode_produk" class="form-control" autofocus>

<span class="input-group-btn">

<button type="button" class="btn btn-info btn-flat" data-toggle="modal" data- target="#modal-produk">

<i class="fa fa-search"></i>

</button>

</span>

</div>td>tr>tr>

<td style="vertical-align: top">

<label for="qty">Qty</label>

</td>

<td>

<div class="form-group">

<input type="number" id="qty" value="1" class="form-control">

</div></td></tr>tr><td></td><td>

<div class="form-group">

<button type="button" id="add" class="btn btn-info btn-flat">

<i class="fa fa-cart-plus"></i> Tambah </button>

</div></td>tr>

</table>div></div>div>

<div class="col-lg-4">

<div class="box box-widget">

<div class="box-body">

<table width="100%">

<tr>

<td style="vertical-align: top">

<label for="tanggal">Tanggal</label>

</td>

<td>

<div class="form-group">

<input type="date" id="tanggal" class="form-control" value="<?=date('Y-m-d')?>">

</div></td></tr>tr>

<td style="vertical-align: top; width: 30%">

<label for="user">Kasir</label>

</td><td>

<div class="form-group">

<input type="text" id="user" class="form-control" value="<?=$this->fungsi-

>user_login()->nama?>" readonly></div></td></tr><tr>

<td style="vertical-align: top">

<label for="pelanggan">Pelanggan</label></td>td>

(50)

<div class="form-group">

<select id="pelanggan" class="form-control">

<option value="">Umum</option>

<?php foreach ($pelanggan as $user => $data) { echo '<option value="'.$data->id_pelanggan.'">'.$data->nama_pelanggan.'</option>'; } ?>

</select>

</div>

</td>

</tr>

</table>

</div>

</div>

</div>

</div>

<div class="row">

<div class="col-lg-12">

<div class="box box-widget">

<div class="box-body table-responsive">

<table class="table table-bordered">

<thead>

<tr>

<th>No</th>

<th>Kode Produk</th>

<th>Nama Produk</th>

<th width="10%">Harga</th>

<th class="text-center" width="10%">Qty/Gram</th>

<th class="text-center" width="10%">Diskon Produk</th>

<th class="text-center" width="15%">Total</th>

<th class="text-center" width="20%">Aksi</th></tr>

</thead>

<tbody id='tabel_keranjang'>

<?php $this->view('transaksi/penjualan/data_keranjang') ?>

</tbody></table>

</div>

</div>

</div>

</div>

<div class="row">

<div class="col-lg-3">

<div class="box box-widget">

<div class="box-body">

<table><tr>

<td style="vertical-align: top; width: 30%">

<label for="qty">Sub Total</label></td>td>

<div class="form-group">

<input type="number" id="sub_total" class="form-control" readonly ="">

</div>td></tr><tr>

<td style="vertical-align: top; width: 30%">

(51)

<div class="form-group">

<label for="diskon">Diskon</label>

</div></td>td>

<div class="form-group">

<input type="number" id="diskon" value="0" min="0" class="form-control">

</div></td></tr><tr>

<td style="vertical-align: top">

<label for="total_bayar">Total Bayar</label>td>td>

<div class="form-group">

<input type="number" id="total_bayar" value="" class="form-control" readonly>

</div></td></tr></table></div></div></div>

<div class="col-lg-3">

<div class="box box-widget">

<div class="box-body">

<table><tr>

<td style="vertical-align: top; width: 40%">

<label for="cash">Uang Bayar</label>

</td>td>

<div class="form-group">

<input type="number" id="cash" value="0" min="0" class="form-control">

</div></td></tr><tr>

<td style="vertical-align: top">

<label for="kembalian">Kembalian</label></td><td>

<div class="form-group">

<input type="number" id="kembalian" class="form-control" readonly>

</div></td></tr></table></div></div>div>

<div class="col-lg-3">

<div class="box box-widget">

<div class="box-body">

<table><tr>

<td style="vertical-align: top">

<label for="ket">Ket.</label>

</td>

<td>

<div class="form-group">

<textarea id="ket" rows="3" class="form-control"></textarea>

</div></td></tr>

</table></div>div></div>

<div class="col-lg-3">

<div class="form-group">

<form>

<button id="hapus" class="btn btn-flat btn-warning">

<i class="fa fa-refresh"></i> Batal

</button><br><br>

</form>

<button id="simpan" class="btn btn-flat btn-lg btn-success">

<i class="fa fa-paper-plane-o"></i> Simpan

</button>

</div>

(52)

</div>

</div>

</section>

<div class="modal fade" id="modal-produk">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

<h4 class="modal-title">Pilih Kode Produk</h4>

</div>

<div class="modal-body table-responsive">

<table class="table table-bordered table-striped" id="table1">

<thead>

<tr>

<th>Kode Produk</th>

<th>Nama Produk</th>

<th>Nama Kategori</th>

<th>Harga</th>

<th>Stok</th>

<th>Aksi</th>

</tr>

</thead>

<tbody>

<?php foreach($produk as $user => $data) { ?>

<tr>

<td><?=$data->kode_produk?></td>

<td><?=$data->nama_produk?></td>

<td><?=$data->nama_kategori?></td>

<td><?=indo_currency($data->harga)?></td>

<td class="text-center"><?=$data->stok?></td>

<td>

<button id="select" class="btn btn-xs btn-info"

data-id_produk="<?=$data->id_produk?>"

data-kode_produk="<?=$data->kode_produk?>"

data-harga="<?=$data->harga?>"

data-stok="<?=$data->stok?>">

<i class="fa fa-check"></i> Pilih </button>

</td>

</tr>

<?php } ?>

</tbody>

</table>

</div>

</div>

</div>

</div>

(53)

<div class="modal fade" id="keranjang-edit">

<div class="modal-dialog modal-sm">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

<h4 class="modal-title">Edit Keranjang</h4>

</div>

<div class="modal-body">

<input type="hidden" id="id_keranjang_produk">

<div class="form-group">

<label for="nama">Produk</label>

<div class="row">

<div class="col-md-5">

<input type="text" id="kode" class="form-control" readonly>

</div>

<div class="col-md-7">

<input type="text" id="nama" class="form-control" readonly>

</div>

</div>

</div>

<div class="form-group">

<label for="harga_produk">Harga</label>

<input type="number" id="harga_produk" class="form-control" readonly>

</div>

<div class="form-group">

<label for="qty_produk">Qty</label>

<input type="number" id="qty_produk" min="1" class="form-control">

</div>

<div class="form-group">

<label for="total_sebelum">Total Sebelum Diskon</label>

<input type="number" id="total_sebelum" class="form-control" readonly>

</div>

<div class="form-group">

<label for="diskon_produk">Diskon Produk</label>

<input type="number" id="diskon_produk" min="0" class="form-control">

</div>

<div class="form-group">

<label for="total_sesudah">Total Sesudah Diskon</label>

<input type="number" id="total_sesudah" class="form-control" readonly>

</div>

</div>

<div class="modal-footer">

<div class="pull-right">

<button type="button" id="edit_keranjang" class="btn btn-flat- btn- success">

<i class="fa fa-paper-plane"></i> Simpan

(54)

</button>

</div>

</div>

</div>

</div>

</div>

<script>

// pilih produk

$(document).on('click', '#select', function() { $('#id_produk').val($(this).data('id_produk')) $('#kode_produk').val($(this).data('kode_produk')) $('#harga').val($(this).data('harga'))

$('#stok').val($(this).data('stok')) $('#modal-produk').modal('hide') })

$(document).on('click', '#add', function() { var id_produk = $('#id_produk').val() var harga = $('#harga').val()

var stok = $('#stok').val() var qty = $('#qty').val() if(id_produk == '') {

alert('Produk belum dipilih') $('#kode_produk').focus() } else if(stok < 1) {

alert('Stok tidak mencukupi') $('#id_produk').val('')

$('#kode_produk').val('') $('#kode_produk').focus() } else if(qty <= 0) {

alert('Qty tidak boleh kosong') $('#id_produk').val('')

$('#kode_produk').val('') $('#kode_produk').focus() } else if(qty > stok) {

alert('Stok tidak mencukupi') $('#id_produk').val('')

$('#kode_produk').val('') $('#kode_produk').focus() } else {

$.ajax({

type: 'POST',

url: '<?=site_url('penjualan/proses')?>',

data: {'add' : true, 'id_produk' : id_produk, 'harga' : harga, 'qty' : qty},

dataType: 'json',

success: function(result) {

if(result.success == true) {

$('#tabel_keranjang').load('<?=site_url('penjualan/data_keranjang')?>', function() {

(55)

kalkukali()

})

$('#id_produk').val('')

$('#kode_produk').val('')

$('#qty').val('1')

$('#kode_produk').focus()

}else {

alert('Gagal menambah produk')

}

}

})

} })

$(document).on('click', '#hapus_keranjang', function(){

if(confirm('Apakah ingin menghapus?')) {

var id_keranjang = $(this).data('id_keranjang')

$.ajax({

type: 'POST',

url: '<?=site_url('penjualan/hapus_keranjang')?>',

dataType: 'json',

data: {'id_keranjang': id_keranjang},

success: function(result) {

if(result.success == true) {

$('#tabel_keranjang').load('<?=site_url('penjualan/data_keranjang')?>', function() {

kalkukali()

})

} else {

alert('menghapus produk keranjang gagal');

}

}

})

} })

$(document).on('click', '#update_keranjang', function() {

$('#id_keranjang_produk').val($(this).data('id_keranjang')) $('#kode').val($(this).data('kode_produk'))

$('#nama').val($(this).data('nama_produk')) $('#harga_produk').val($(this).data('harga')) $('#qty_produk').val($(this).data('qty'))

$('#total_sebelum').val($(this).data('harga') * $(this).data('qty')) $('#diskon_produk').val($(this).data('diskon'))

$('#total_sesudah').val($(this).data('total')) $('#modal-produk').modal('hide')

})

function count_edit() {

var harga = $('#harga_produk').val() var qty = $('#qty_produk').val() var diskon = $('#diskon_produk').val()

(56)

total_sebelum = harga * qty

$('#total_sebelum').val(total_sebelum) total = (harga - diskon) * qty

$('#total_sesudah').val(total) if(diskon == '') {

$('#diskon_produk').val(0) }

}

$(document).on('keyup mouseup', '#harga_produk, #qty_produk, #diskon_produk', function(){

count_edit() })

$(document).on('click', '#edit_keranjang', function() { var id_keranjang = $('#id_keranjang_produk').val() var harga = $('#harga_produk').val()

var qty = $('#qty_produk').val() var diskon = $('#diskon_produk').val() var total = $('#total_sesudah').val() if(harga == '' || harga < 1) {

alert('Harga tidak boleh kosong') $('#harga_produk').focus() } else if(qty == '' || qty < 1) { alert('Qty minimal 1') $('#qty_produk').focus() } else {

$.ajax({

type: 'POST',

url: '<?=site_url('penjualan/proses')?>',

data: {'edit_keranjang' : true, 'id_keranjang' : id_keranjang, 'harga' : harga, 'qty' : qty, 'diskon' : diskon, 'total' : total},

dataType: 'json',

success: function(result) {

if(result.success == true) {

$('#tabel_keranjang').load('<?=site_url('penjualan/data_keranjang')?>', function() {

kalkukali()

})

$('#keranjang-edit').modal('hide');

}else {

alert('Gagal edit keranjang')

}

}

})

} })

function kalkukali() { var subtotal = 0;

$('#tabel_keranjang tr').each(function(){

(57)

subtotal += parseInt($(this).find('#total').text()) })

isNaN(subtotal) ? $('#sub_total').val(0) : $('#sub_total').val(subtotal) var diskon = $('#diskon').val()

var total_bayar = subtotal - diskon if(isNaN(total_bayar)) {

$('#total_bayar').val(0) $('#total2').text(0) } else {

$('#total_bayar').val(total_bayar) $('#total2').text(total_bayar) }

var cash = $('#cash').val();

cash != 0 ? $('#kembalian').val(cash - total_bayar) : $('#kembalian').val(0) if(diskon == '') {

$('#diskon').val(0) }

}

$(document).on('keyup mouseup', '#diskon, #cash', function(){

kalkukali() })

$(document).ready(function(){

kalkukali() })

$(document).on('click', '#simpan', function() { var id_pelanggan = $('#pelanggan').val() var subtotal = $('#sub_total').val() var diskon = $('#diskon').val()

var total_bayar = $('#total_bayar').val() var cash = $('#cash').val()

var kembalian = $('#kembalian').val() var ket = $('#ket').val()

var tanggal = $('#tanggal').val() if(subtotal < 1) {

alert('Keranjang masih kosong') $('#kode_produk').focus() } else if (cash < 1) {

alert('Uang Bayar belum di isi') $('#cash').focus()

} else {

if(confirm('Simpan penjualan?')) {

$.ajax({

type: 'POST',

url: '<?=site_url('penjualan/proses')?>',

data: {'simpan': true, 'id_pelanggan': id_pelanggan, 'subtotal': subtotal, 'diskon':

diskon, 'total_bayar': total_bayar, 'cash': cash, 'kembalian': kembalian, 'ket': ket, 'tanggal': tanggal},

(58)

dataType: 'json',

success: function(result) {

if(result.success) {

alert('Penjualan berhasil disimpan');

window.open('<?=site_url('penjualan/cetak/')?>' + result.id_penjualan, '_blank')

} else {

alert('Proses penjualan gagal');

}

location.href='<?=site_url('penjualan')?>'

}

})

}

} })

$(document).on('click', '#hapus', function(){

if(confirm('Apakah Anda Yakin??')) { $.ajax({

type: 'POST',

url: '<?=site_url('penjualan/hapus_keranjang')?>', dataType: 'json',

data: {'hapus': true}, success: function(result) { if(result.success == true) {

$('#tabel_keranjang').load('<?=site_url('penjualan/data_keranjang')?>', function() {

kalkukali() })

} } })

$('#diskon').val(0) $('#cash').val(0)

$('#pelanggan').val(0).change() $('#kode_produk').val('') $('#kode_produk').focus() }

})

</script>

Referensi

Dokumen terkait

Goal Admin membuat surat keluar Admin dapat mengelola surat keluar Pre-Conditions Admin memilih Menu Surat

Goal Admin dapat mengelola data master, yaitu: data barang supplier, data pemesanan PO, mencetak laporan PO Pre-conditions Admin supplier telah login. Post-conditions

Studi ini bertujuan untuk menganalisis harga air berdasarkan beberapa ketentuan kelayakan ekonomi di PDAM (Perusahaan Daerah Air Minum) Kota Malang karena semakin

Pre-condition Admin memilih menu tambah data konsultan Post-condition Sistem menampilkan halaman input data diri Failed end condition Sistem tidak menampilkan halaman input

Goal Admin dapat mengelola pendaftaran santri Pre-conditionts Admin sudah melakukan login.. Post-conditionts Data calon santri berhasil disimpan Failed End Condition

Data barang dapat tersimpan, admin dapat menambah, mengedit dan menghapus data barang.. Proses berjalan sesuai yang

Goal User dan Admin dapat melakukan login Pre-condition User atau Admin memilih menu login Post-condition Tampil form login. Failed end condition User atau Admin tidak

Pre-condition Admin telah melakukan login kemudian memilih menu data laporan kemudian pilih print laporan Post-condition Data laporan bisa dicetak2. Failed condition Admin