// override artinya menimpa/mengganti implementasi superclass
  @Override
  public BigDecimal hitungDiskon(Penjualan p) {
    BigDecimal totalDiskon = BigDecimal.ZERO;

    for (Produk x : p.getDaftarProduk()) {
      if (x.sedangDiskon()) {
        BigDecimal diskon = x.nilaiDiskon().multiply(x.getHarga());
        totalDiskon = totalDiskon.add(diskon);
      }
    }

    return totalDiskon;
  }
  private void dataChange() {
    List<PenjualanBarang> listPenjBrg = new ArrayList<PenjualanBarang>();
    List<Barang> listBarang = new ArrayList<Barang>();
    listPenjBrg = formPenjualan.itemPenjualan;
    for (int i = 0; i < listPenjBrg.size(); i++) {
      int idBrg = listPenjBrg.get(i).getBarang().getId();
      Barang barang = new windu.pos.DaoImpl.Barang().selectById(idBrg);
      int jumJual = listPenjBrg.get(i).getJumlah();
      int jumAwal = barang.getJumlah();
      barang.setJumlah(jumAwal - jumJual);
      listBarang.add(barang);
    }
    new windu.pos.DaoImpl.Barang().updateByBatch(listBarang);

    // insert ke tabel penjualan
    windu.pos.entity.Penjualan penj = new windu.pos.entity.Penjualan();
    Pelanggan pelanggan = new Pelanggan();
    pelanggan.setId(1);

    penj.setTanggal(new Date());
    penj.setPelanggan(pelanggan);
    int idPenjualan = new windu.pos.DaoImpl.Penjualan().add(penj);
    penj.setIdPenjualan(idPenjualan);

    // insert ke tabel penjualanbarang
    for (int i = 0; i < listPenjBrg.size(); i++) listPenjBrg.get(i).setPenjualan(penj);
    new windu.pos.DaoImpl.PenjualanBarang().addByBatch(listPenjBrg);

    // kembali ke form penjualan
    formPenjualan.setLblKeterangan(
        NumberHelper.thousandSparator(pembelian),
        NumberHelper.thousandSparator(pembayaran),
        NumberHelper.thousandSparator(kembalian));
    formPenjualan.setEnabled(true);
    formPenjualan.setVisible(true);
    this.setVisible(false);
  }
 private void enterEvent(ActionEvent e) {
   try {
     pembayaran = Double.parseDouble(txtPembayaran.getText());
     pembelian = formPenjualan.totalPembelian;
     kembalian = pembayaran - formPenjualan.totalPembelian;
     dataChange();
     if (kembalian < 0) {
       JOptionPane.showMessageDialog(
           this, "Uang yang dibayarkan kurang", "Warning", JOptionPane.WARNING_MESSAGE);
       txtPembayaran.setText("");
       txtPembayaran.requestFocusInWindow();
     } else {
       lblKembalian.setText(String.valueOf(kembalian));
       formPenjualan.kembalian = kembalian;
     }
   } catch (NumberFormatException nfe) {
     JOptionPane.showMessageDialog(null, "Hanya boleh angka", "Error", JOptionPane.ERROR_MESSAGE);
   }
 }
 private void escEvent(ActionEvent actionEvent) {
   formPenjualan.setEnabled(true);
   formPenjualan.setVisible(true);
   this.setVisible(false);
 }