Nama Kelompok :
- Muhammad Rizqi Tsani (05111940000045)
- Muhammad Arif Faizin (05111940000060)
- Arsyad Ardiansyah (05111940000228)
Pada postingan ini kami akan menjelaskan aplikasi POS yang telah dibuat melalui aplikasi desktop.
Ada beberapa fungsi yang dapat dapat dilakukan oleh program ini, yakni :
- Melakukan print daftar item yang telah ditambahkan ke dalam checkout
- Menambahkan item ke dalam checkout
- Menghapus item dari checkout
- Menghitung pembayaran
- Melakukan reset daftar item yang ada di checkout
- Melakukan pembelian dan menyimpannya ke dalam database
Tutorial ini terbagi menjadi 2 bagian, yakni tahap persiapan dan tahap logika.
Tahap Persiapan
Untuk tahap persiapan, ada beberapa hal yang perlu dipersiapkan untuk digunakan pada program seperti
- Gambar makanan atau minuman dari menu yang akan ditampilkan
Kemudian ikuti langkah berikut
- Jalankan Visual Studio 2019, lalu Create a new project dan pilih Windows Forms App (.NET Framework). Kemudian isi project name dengan "PointOfSales" lalu Create.
- Lalu seperti biasa, akan muncul tampilan form jendela kosong yang baru dibuat. Tambahkan beberapa komponen seperti pada gambar berikut
Fungsionalisasi Program
Dalam program PointOfSales ini terdapat beberapa fungsi yang dapat dijalankan. Berikut cara untuk mengimplementasikan masing-masing fungsionalitas dari program tersebut.
Print Daftar Item yang Ada di Checkout
Daftar item yang akan dibeli dapat dicetak terlebih dahulu sebelum pembelian. Berikut langkah-langkah untuk menambahkan fungsinya :
- Buka Form1.cs atau class yang akan digunakan untuk logic dari program utama program ini
- Lalu tambahkan kode berikut ke dalam class utama program (dalam contoh ini class Form1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Bitmap bitmap; private void button27_Click(object sender, EventArgs e) { try { int height = dataGridView1.Height; dataGridView1.Height = dataGridView1.RowCount * dataGridView1.RowTemplate.Height * 2; bitmap = new Bitmap(dataGridView1.Width, dataGridView1.Height); dataGridView1.DrawToBitmap(bitmap, new Rectangle(0, 0, dataGridView1.Width, dataGridView1.Height)); printPreviewDialog1.PrintPreviewControl.Zoom = 1; printPreviewDialog1.ShowDialog(); dataGridView1.Height = height; } catch(Exception error) { MessageBox.Show(error.Message); } } private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { try { e.Graphics.DrawImage(bitmap, 0, 0); } catch (Exception error) { MessageBox.Show(error.Message); } }
- Coba jalankan program dan tambahkan beberapa item ke dalam tabel checkout
- Kemudian tekan tombol Cetak untuk mencetak checkout
Reset Item yang Ada di Checkout
List item yang telah masuk ke dalam checkout dapat dibersihkan menggunakan fungsi ini. Berikut langkah untuk menambahkan fungsionalitasnya :
- Buka Form1.cs
- Lalu tambahkan kode berikut ke dalam class utama (Form1.cs). Pastikan variabel nama label sudah sesuai dengan yang telah ditambahkan pada proses design.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
private void button26_Click(object sender, EventArgs e) { try { label4.Text = ""; label5.Text = ""; label6.Text = ""; label7.Text = ""; label8.Text = "0"; dataGridView1.Rows.Clear(); dataGridView1.Refresh(); comboBox1.Text = ""; } catch (Exception error) { MessageBox.Show(error.Message); } }
- Coba jalankan program. Tambahkan beberapa item ke dalam checkout
- Lalu tekan button Reset untuk menghapus semua item
Menambahkan Item ke Checkout
Sebelum dapat menambahkan item ke dalam checkout, perlu beberapa fungsi lain agar item dapat ditambahkan ke dalam list.
Pertama, lakukan inisialisasi pada komponen form agar tidak terjadi error saat menambahkan item. Ikuti langkah berikut :
- Buka Form1.cs
- Tambahkan fungsi berikut dalam class utama (class Form1)
1 2 3 4 5
private void Form1_Load(object sender, EventArgs e) { comboBox1.Items.Add("Tunai"); comboBox1.Items.Add("Kredit"); }
- Kemudian jalankan program, cek apakah item pada dropdown sudah dapat ditampilkan
Kemudian yang perlu ditambahkan fungsinya adalah memfungsikan tombol nomor. Ikuti langkah berikut :
- Buka design dari Form1
- Lalu select semua button number (0, 1, 2, .. 9)
- Kemudian pilih properties lalu action
- Kemudian pada action Click isikan "NumbersOnly" sebagai fungsi baru
- Isikan kode berikut pada fungsi NumbersOnly
1 2 3 4 5 6 7 8 9 10 11 12 13 14
private void NumbersOnly(object sender, EventArgs e) { Button b = (Button)sender; if (label8.Text == "0") { label8.Text = ""; label8.Text = b.Text; } else { label8.Text = label8.Text + b.Text; } }
- Coba jalankan program lalu klik tombol nomor pada program. Cek apakah setelah menekan tombol, nilai pada label berubah.
Kemudian ada beberapa fungsi yang perlu ditambahkan untuk menghitung harga dari tiap barang. Ikuti langkah berikut :
- Buka form1.cs
- Isikan kode berikut pada fungsi main dalam class utama (class Form1)
public double cost_Of_Items() { Double sum = 0; for(int i = 0; i < dataGridView1.Rows.Count; i++) { sum += Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value); } return sum; } private double get_Total_Cost() { Double tax = 0.1, taxTotal, total; taxTotal = cost_Of_Items() * tax; total = cost_Of_Items() + taxTotal; if (dataGridView1.Rows.Count > 0) { label5.Text = taxTotal.ToString("C", CultureInfo.CreateSpecificCulture("id-ID")); label4.Text = cost_Of_Items().ToString("C", CultureInfo.CreateSpecificCulture("id-ID")); label6.Text = total.ToString("C", CultureInfo.CreateSpecificCulture("id-ID")); } return cost_Of_Items() + taxTotal; } public void get_Change() { Double cost, paid, change; cost = Convert.ToInt32(get_Total_Cost()); paid = Convert.ToInt32(label8.Text); change = cost - paid; if (dataGridView1.Rows.Count > 0) { label7.Text = String.Format("{0:c2}", change); } }
- Buka desain form1 (form1.design.cs)
- Double klik pada button Bayar
- Kemudian isikan kode berikut
private void button25_Click(object sender, EventArgs e) { if(comboBox1.Text == "") { MessageBox.Show("Pilih metode pembayaran!"); } else { if (comboBox1.Text == "Tunai") { get_Change(); } else { label7.Text = ""; label8.Text = "0"; } List<TransactionDetail> details = new List<TransactionDetail>(); for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { details.Add(new TransactionDetail((string)dataGridView1.Rows[i].Cells[0].Value, Int32.Parse((string)dataGridView1.Rows[i].Cells[1].Value))); } Transaction trans = new Transaction(get_Total_Cost(), comboBox1.Text.Trim()); DbTransaction.AddTransaction(trans, details); } }
- Coba jalankan program dan cek apakah kode berjalan dengan benar
Langkah selanjutnya yaitu menambahkan fungsi di setiap button pada menu. Setiap button tersebut akan diberi fungsi untuk menambahkan data pada checkout ketika di klik. Untuk caranya, ikuti langkah berikut :
- Buka form1.design.cs
- Double klik pada button salah satu menu
- Kemudian isikan fungsi berikut pada fungsi yang baru dibuat
private void button24_Click(object sender, EventArgs e) { Double cost = 15000; if (dataGridView1.Rows.Count > 1 && dataGridView1.Rows != null) { bool newData = true; for (int i = 0; i < dataGridView1.Rows.Count; i++) { if ((string) dataGridView1.Rows[i].Cells[0].Value == "Pizza") { newData = false; Double newQty = Double.Parse((string)dataGridView1.Rows[i].Cells[1].Value) + 1; dataGridView1.Rows[i].Cells[1].Value = newQty.ToString(); dataGridView1.Rows[i].Cells[2].Value = newQty * cost; break; } } if(newData) { dataGridView1.Rows.Add("Pizza", "1", cost); } } else { dataGridView1.Rows.Add("Pizza", "1", cost); } get_Total_Cost(); }
- Coba jalankan, apakah berjalan dengan baik atau tidak.
- Ulangi langkah dari awal untuk setiap button menu pada program.
Menghapus Item dari Checkout
Item yang telah ditambahkan ke dalam checkout dapat dihapus satu per satu.
Untuk menambahkan fitur tersebut, ikuti langkah berikut :
- Buka form1.desgin.cs
- Double klik pada tombol Hapus
- Tambahkan kode berikut dalam fungsi utama program. Ingat untuk mengubah nama fungsi sesuai dengan nama button
private void button28_Click(object sender, EventArgs e) { foreach(DataGridViewRow row in this.dataGridView1.SelectedRows) { if(Double.Parse((string) row.Cells[1].Value) > 1) { Double newQty = Double.Parse((string)row.Cells[1].Value) - 1; Double cost = (double)row.Cells[2].Value / Convert.ToDouble(row.Cells[1].Value); row.Cells[1].Value = newQty.ToString(); row.Cells[2].Value = newQty * cost; } else { dataGridView1.Rows.Remove(row); } } if (comboBox1.Text == "Tunai") { get_Change(); } else { label7.Text = ""; label8.Text = "0"; } }
- Coba jalankan dan cek apakah kode berjalan dengan benar
Comments
Post a Comment