Transaksi penjualan dengan mysql

November 22, 2008 at 6:50 am 1 comment

keseluruhan materi ini bisa didownload

Pada artikel sebelumya saya sudah memposting masalah relasi dimysql dengan judul “Gawe relasi nang mysqlyang saya buat dengan bahasa kebumenan, kini saya lanjutkan lagi dengan penjualannya. Dengan harapan nantinya database ini digunakan untuk membuat web penjualan atau pembelian online. Tabel-tabel yang perlu dipersiapkan :

tnotajual : untuk menyimpan nonota dan tanggal kapan transaksi penjualan dilakukan ?

tpenjualan : untuk menyimpan barang-barang apa saja yang dijual dan jumlahnya berapa ?

maka DDL dan DMLnya adalah sbb :

CREATE TABLE `tnotajual` (

`nonota` VARCHAR( 15 ) NOT NULL ,
`tgljual` DATE NOT NULL ,
PRIMARY KEY ( `nonota` )

) ENGINE = innodb;

insert into tnotajual VALUES (‘J001′,’2008/11/14’);

insert into tnotajual VALUES (‘J002′,’2008/11/14’);

CREATE TABLE `tpenjualan` (

`nonota` VARCHAR( 14 ) NOT NULL ,
`kodebrg` VARCHAR( 10 ) NOT NULL ,
`harga` INT( 10 ) NOT NULL ,
`jumlah` INT( 5 ) NOT NULL

) ENGINE = innodb;

Untuk relasinya tambahkan :

ALTER TABLE `tpenjualan`

ADD FOREIGN KEY (`kodebrg`) REFERENCES `tbarang` (`kodebrg`) ON DELETE CASCADE ON UPDATE CASCADE,

ADD FOREIGN KEY (`nonota`) REFERENCES `tnotajual` (`nonota`) ON DELETE CASCADE ON UPDATE CASCADE;

DMLnya :

insert into tpenjualan values (‘J001′,’BRG001’,1200,2);

insert into tpenjualan values (‘J001′,’BRG002’, 1400,3);

insert into tpenjualan values (‘J001′,’BRG003’, 1700,4);

insert into tpenjualan values (‘J002′,’BRG001’, 1200,2);

insert into tpenjualan values (‘J002′,’BRG002’, 1400,3);

insert into tpenjualan values (‘J002′,’BRG003’, 1700,4);

sampai disini table untuk transaksi penjualan sudah jadi tinggal dilanjutkan lagi. Bagaimana kalau ada seorang bos menanyakan barang yang sudah laku berapa ? apa saja ? dan stok barang kita tinggal berapa ?

nah untuk bisa menjawab pertanyaan tersebut perlu beberapa query atau view untuk mempermudah pekerjaan. Nah dilanjutkan lagi buat view :

buat dulu qpenjualan :

create view qpenjualan as SELECT tnotajual.nonota, tnotajual.tgljual, tpenjualan.kodebrg, tbarang.namabrg, tbarang.satuan, tpenjualan.jumlah,

tpenjualan.harga, (tpenjualan.jumlah * tpenjualan.harga) AS jumlahjual

FROM tbarang RIGHT JOIN (tnotajual INNER JOIN tpenjualan ON tnotajual.nonota=tpenjualan.nonota) ON tbarang.kodebrg=tpenjualan.kodebrg;

Sehingga kalau dilihat datanya :

relasi7

Nah tinggal dilanjutkan lagi untuk menampilkan data yang menampilkan notanota sekian transaksi tanggal sekian berapa jumlah yang dibayarkan ? nah bisa dilanjutkan dengan membuat view lagi :

CREATE view qtotjualan as select tnotajual.nonota, tnotajual.tgljual, Sum(qpenjualan.jumlahjual) AS jumlah

FROM tnotajual INNER JOIN qpenjualan ON tnotajual.nonota = qpenjualan.nonota

GROUP BY tnotajual.nonota, tnotajual.tgljual;

Sehingga hasilnya :

relasi82

Dengan demikian bisa dilihat bahwa transaski penjualan dengan nonota J001 pada tanggal 2008-11-14 jumlah yang harus dibayarkan adalah 13400, begitu juga untuk yang J002.

Nah sampai disini bisa diketahui masing-masing transaksi totalnya baik itu pembelian ataupun penjualan. Langkah selanjutnya untuk mengetahui stok barang yang ditersedia logikanya barang yang tersedia adalah seluruh barang yang dibeli dikurangi dengan seluruh barang yang terjual sehingga bisa diketahui sisanya. Untuk mengetahui jawaban ini tentunya tidak perlu melibatkan bahasa pemrograman ataupun scrip web, cukup dengan DBMS saja mestinya sudah bisa terjawab dan sudah bisa bekerja dengan sendirinya, alias datanya yang dihasilnya bisa selalu terupdate. Nah langkahnya adalah sbb :

Buat dahulu view untuk menghitung total barang yang sudah dibeli :

create view qbarangbeli as SELECT tbarang.kodebrg, tbarang.namabrg, tbarang.satuan, Sum(tpembelian.jumlah) AS totalbeli

FROM tbarang RIGHT JOIN tpembelian ON tbarang.kodebrg=tpembelian.kodebrg

GROUP BY tbarang.kodebrg, tbarang.namabrg, tbarang.satuan;


Sehingga hasilnya :

relasi9

Terlihat masing-masing barang yang sudah dibeli berapa ? nah sekarang tinggal melanjutkan untuk barang yang sudah terjual juga berapa ? langkahnya buat view :

create view qbarangjual as SELECT tbarang.kodebrg, tbarang.namabrg, tbarang.satuan, if(Sum(qpenjualan.jumlah),Sum(qpenjualan.jumlah),0) AS totaljual

FROM tbarang LEFT JOIN qpenjualan ON tbarang.kodebrg=qpenjualan.kodebrg

GROUP BY tbarang.kodebrg, tbarang.namabrg, tbarang.satuan;

Dengan demikian hasilnya :

relasi10

Nah kelihatan bahwa Sabun GIV sudah laku 4, Sabun Lifeboy sudah laku 6, Soklin 1 Kg sudah laku 8 dan Rinso 1 Kg belum laku alias nol.

Sampai disini tentunya masih belum terjawab, berapa sih stok pada masing-masing barang. Nah untuk menjawab ini bisa dengan cara membuat view lagi, yaitu view Qbarangbeli dikurangi dengan view Qbarangjual, Oke bisa dilanjutkan lagi begini :

create view qstokbarang as SELECT tbarang.kodebrg, tbarang.namabrg, tbarang.satuan, qbarangbeli.totalbeli, qbarangjual.totaljual, (qbarangbeli.totalbeli)-(qbarangjual.totaljual) AS stok FROM (tbarang LEFT JOIN qbarangbeli ON tbarang.kodebrg=qbarangbeli.kodebrg) LEFT JOIN qbarangjual ON tbarang.kodebrg=qbarangjual.kodebrg;

Sehingga hasilnya sbb :

relasi11


Terlihat dengan jelas, bahwa untuk Sabun GIV membeli sebanyak 20 kemudian laku 4 tinggal 16, Sabun Lifeboy beli 60 laku 6 tinggal 54 dan seterusnya. Sebagai uji coba, coba diupdate datanya pada transaksi penjualan :

update tpenjualan set jumlah=5 where nonota=’J001′ and kodebrg =’BRG001′;

select * from tpenjual


sehingga hasilnya :

relasi12


kelihatan bahwa jumlah yang dijual pada transaksi dengan nonota = J001 dengan kodebrg = BRG001 telah dirubah menjadi 5, mestinya perubahan ini juga berpengaruh pada stok barang, yang tadinya Sabun GIV stoknya 16 menjadi 13 seperti gambar berikut :

relasi13

nah kalau dilihat keseluruhan relasinya sbb :

relasi14

Nah akhirnya selesai juga, transaksi jual beli dengan mysql dan menggunakan relasi. Semoga bermanfaat, selamat mencoba…

Entry filed under: Database. Tags: .

Gawe relasi nang mysql Mengenal CSS

1 Comment Add your own

  • 1. spodaso  |  March 24, 2009 at 2:13 am

    trimakasih untuk tutorial x sangat bagus sekali
    ni sangat bermanfaat buat saya cz newbie banget nich

    trimakasih buanget ntar pasti tak add di blog Q

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


November 2008
M T W T F S S
« Oct   Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

%d bloggers like this: