private void txtSearchActionPerformed(ActionEvent e) { stock = StockTools.findByIDORScanner(txtSearch.getText()); if (stock != null) { if (stock.isAusgebucht() && !cbZombieRevive.isSelected()) { Tools.log( txtLog, stock.getId(), stock.getProdukt().getBezeichnung(), "Dieser Vorrat wurde bereits ausgebucht."); Tools.fadeout(lblProdukt); sp.error(); stock = null; } else { if (btnSofortUmbuchen.isSelected()) { umbuchen(); Tools.fadeinout( lblProdukt, "[" + stock.getId() + "] " + stock.getProdukt().getBezeichnung()); stock = null; } else { Tools.fadein( lblProdukt, "[" + stock.getId() + "] " + stock.getProdukt().getBezeichnung()); } } } else { Tools.log(txtLog, 0, txtSearch.getText(), "Unbekannte Vorrat Nummer."); Tools.fadeout(lblProdukt); sp.warning(); } btnUmbuchen.setEnabled(stock != null); txtSearch.selectAll(); txtSearch.requestFocus(); txtSearchChecked = true; }
private void umbuchen() { EntityManager em = Main.getEMF().createEntityManager(); try { em.getTransaction().begin(); Stock myStock = em.merge(stock); if (myStock.isAusgebucht()) { myStock.setAusgang(Const.DATE_BIS_AUF_WEITERES); myStock.setAnbruch(Const.DATE_BIS_AUF_WEITERES); Query query = em.createQuery( "DELETE FROM Buchungen b WHERE b.stock = :vorrat AND b.status <> :butnotstatus"); query.setParameter("vorrat", myStock); query.setParameter("butnotstatus", BuchungenTools.BUCHEN_EINBUCHEN_ANFANGSBESTAND); query.executeUpdate(); // Collection<Buchungen> buchungen = myVorrat.getBuchungenCollection(); // for (Buchungen b : buchungen) { // Buchungen buchung = em.merge(b); // if (buchung.getStatus() != // BuchungenTools.BUCHEN_EINBUCHEN_ANFANGSBESTAND) { // em.remove(buchung); // } // } // for (Buchungen b : buchungen) { // if (b.getStatus() != BuchungenTools.BUCHEN_EINBUCHEN_ANFANGSBESTAND) { // myVorrat.getBuchungenCollection().remove(b); // } // } } myStock.setLager(em.merge(ziel)); if (lieferant != null) { myStock.setLieferant(em.merge(lieferant)); } // EntityTools.merge(vorrat); em.getTransaction().commit(); stock = myStock; Tools.log(txtLog, myStock.getId(), myStock.getProdukt().getBezeichnung(), "umgebucht"); if (tblVorrat.getModel() instanceof StockTableModel2) { int row = ((StockTableModel2) tblVorrat.getModel()) .addVorrat(stock); // diese Methode fügt den Vorrat nur dann hinzu, wenn nötig. Tools.scrollCellToVisible(tblVorrat, row, 1); tblVorrat.getSelectionModel().setSelectionInterval(row, row); } sp.bell(); } catch (Exception ee) { em.getTransaction().rollback(); ee.printStackTrace(); } finally { em.close(); } }