/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package puntocassa; import java.awt.*; import java.awt.event.*; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.sql.*; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.Timer; import java.util.TimerTask; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JToggleButton; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.plaf.FontUIResource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import jssc.SerialPort; import jssc.SerialPortException; import org.apache.log4j.LogManager; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; //****************************************************************************** // * // * @author Master // * //****************************************************************************** public class PuntoCassa extends JFrame implements ActionListener { // ========================================================================== // *** Variabili globali relative alle connessioni // ========================================================================== public static String versione = "2.4"; public static String dbStringa = ""; private String dbTipo = ""; private String dbDriver = ""; public static String dbUsername = ""; public static String dbPassword = ""; private String utenteLoggato = ""; private String imgPath = "";// "L:\\Lavoro\\Goffredo\\risorse\\"; private int displayWidth = 1024; private int displayHeight = 768; private Long progressivo = 0L; private Long progressivoTurno = 0L; private Long progressivoGiorno = 0L; private Double progressivoScalare = 0.0; private Double progressivoContanti = 0.0; private Double progressivoTicket = 0.0; private Double progressivoDifferito = 0.0; private Double saldoMinimoStop = 0.0; private Long idTurno = 0L; private String nomeTurno = ""; private Long idTurnoAttuale = 0L; private String nomeTurnoAttuale = ""; private int colImporto = 1; private int colPunti = 2; private int colIDProdotto = 3; private int colImporto2 = 4; private int colCategoria = 5; public Long idPuntoCassa = 0L; private Boolean consentiCredito = false; private Long idProfiloTariffario = 0L; private Long idProfiloTariffarioDefault = 0L; public static Long idModoPagamento = 0L; public static String modoPagamentoDefault = "A scalare"; public static Integer flagBonus = 0; private Long idTessera = 0L; private Long idPrenotazione = 0L; private Boolean isCassaAperta = false; private Long idAccount = 0L; Timer timerCard; private int numeroCategorie = 0; private Boolean statoCardLettore = false; StringBuilder testoSwipCard = new StringBuilder(); StringBuilder testoRFIDCard = new StringBuilder(); StringBuilder logTestoTessera = new StringBuilder(); String logNumeroTessera = "", logIDTessera = "", logTesseraErrore = ""; private Boolean unSoloTipoPagamento = false; private Boolean menuGiornoPresente = false, messaggioSaldoUnaVolta = false; private Boolean flagMostraDataDiNascita = true; private Boolean stoCalcolando = false; private Boolean flagEsegueStorni = true; enum StatiCarta { ASSENTE, INSERITA, RIMOSSA } public StatiCarta statoCarta; public Boolean cartaLetta = false; public static KeyEventDispatcher keyDispatcher; public int hFont = 15; private int altControlli = 100; private int largControlli = 100; public FrmProgress myProgressForm; public FrmMeteo myMeteoForm; private int gratuitaResidue = 0; private int bonusResidui = 0; private StringBuilder modiPagamento = new StringBuilder(""); private static Boolean keyDespatcherAttivo = false; public Boolean passaggioTessera = false; private Boolean passaggiEsauritiNoComposizione = false; private static Boolean visualizzaMessaggiDisplay = true; private static String messageDisplay = ""; public static Boolean flagExtra = false; public static Boolean flagRicevuta = false; Timer timerDisplay = new Timer(); private static Integer delaySwipCard = 100; private static Boolean bottoneImposta = true; private static Boolean asporto = false; private static Boolean flagPrecaricaLista = false; private void verificaAggiornamentoDB() { String flagProponiAggiornamentoDB = mySelect("Select Valore from Parametri where chiave='FlagProponiAggiornamentoDB' ", "Valore"); if (flagProponiAggiornamentoDB.equals("NO")) { return; } Long agg = mySelectInteger("Select DB_locale_aggiornato as Agg from dual", "Agg"); if (flagProponiAggiornamentoDB.equals("SI")) { if (agg == 0) { aggiornaDB(true); } } else { if (agg == 0) { aggiornaDB(false); } } } private void verificaModoPagamento() { String flagImpostaTipoPagamento = mySelect("Select Valore from Parametri where chiave='FlagImpostaTipoPagamento' ", "Valore"); unSoloTipoPagamento = flagImpostaTipoPagamento.equals("NO"); } private void logTessera() { try { /*if(!"".equals(logIDTessera) || !"".equals(logNumeroTessera) || logTestoTessera.toString().length() > 0){*/ if (!logIDTessera.isEmpty() || !logNumeroTessera.isEmpty() || logTestoTessera.length() > 0) { myInsert("Insert into LETTURE_TESSERE (STRINGA_LETTA,NUMERO_TESSERA,ID_TESSERA,ERRORE) values " + "('" + logTestoTessera.toString().replace("'", "''") + "','" + logNumeroTessera + "','" + logIDTessera + "','" + logTesseraErrore.replace("'", "''") + "')"); logIDTessera = ""; logNumeroTessera = ""; logTestoTessera = new StringBuilder(); } } catch (Exception ex) { } } private void clearTable(MyTableModel model) { try { for (Integer i = model.getRowCount() - 1; i >= 0; i--) { model.deleteRow(i); } } catch (Exception e) { } } // ========================================================================== // *** Constructor della classe PuntoCassa // ========================================================================== public PuntoCassa() { // ----------------------------------------------------------------------- // *** Esegue le impostazioni di base // ----------------------------------------------------------------------- initComponents(); // ----------------------------------------------------------------------- // *** Legge la configurazione dal file XML // ----------------------------------------------------------------------- try { DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = documentFactory.newDocumentBuilder(); String startDir = System.getProperty("user.dir"); Document document = builder.parse(new File(startDir + "/risorse/puntocassa.xml")); File iconaApp = new File(startDir + "/risorse/logo.png"); if (iconaApp.exists()) { ImageIcon icon = new ImageIcon(startDir + "/risorse/logo.png"); this.setIconImage(icon.getImage()); } // -------------------------------------------------------------------- // ** Accesso al database // -------------------------------------------------------------------- NodeList database = document.getElementsByTagName("database"); for (int i = 0; i < database.getLength(); i++) { Node nodo = database.item(i); if (nodo.getNodeType() == Node.ELEMENT_NODE) { Element db = (Element) nodo; String attivo = db.getElementsByTagName("attivo").item(0).getFirstChild().getNodeValue(); String tipo = db.getElementsByTagName("tipo").item(0).getFirstChild().getNodeValue(); String driver = db.getElementsByTagName("driver").item(0).getFirstChild().getNodeValue(); String server = db.getElementsByTagName("server").item(0).getFirstChild().getNodeValue(); String porta = db.getElementsByTagName("porta").item(0).getFirstChild().getNodeValue(); String istanza = db.getElementsByTagName("istanza").item(0).getFirstChild().getNodeValue(); String username = db.getElementsByTagName("username").item(0).getFirstChild().getNodeValue(); String password = db.getElementsByTagName("password").item(0).getFirstChild().getNodeValue(); if (attivo.equals("SI")) { Encoding en = new Encoding(); dbUsername = username; dbPassword = Encoding.decodeString(password); dbTipo = tipo; dbDriver = driver; if (tipo.equals("MySQL")) { dbStringa = "jdbc:mysql://" + server + ":" + porta + "/" + istanza; } else if (tipo.equals("Oracle")) { dbStringa = "jdbc:oracle:thin:@" + server + ":" + porta + ":" + istanza; } } } } // -------------------------------------------------------------------- // ** Path // -------------------------------------------------------------------- NodeList paths = document.getElementsByTagName("path"); for (int i = 0; i < paths.getLength(); i++) { Node path = paths.item(i); if (path.getNodeType() == Node.ELEMENT_NODE) { Element p = (Element) path; imgPath = p.getElementsByTagName("img_path").item(0).getFirstChild().getNodeValue(); if (imgPath.equalsIgnoreCase("..\\risorse\\")) { imgPath = startDir + "/risorse/"; } } } // -------------------------------------------------------------------- // ** Etichette // -------------------------------------------------------------------- NodeList etichette = document.getElementsByTagName("etichette"); String titolo = ""; MyApplication myApp = new MyApplication(); for (int i = 0; i < paths.getLength(); i++) { Node etichetta = etichette.item(i); if (etichetta.getNodeType() == Node.ELEMENT_NODE) { Element p = (Element) etichetta; titolo = p.getElementsByTagName("titolo").item(0).getFirstChild().getNodeValue(); idPuntoCassa = Long.valueOf(myApp.mySelect(this, "SELECT valore FROM parametri WHERE chiave = 'IdPuntoCassa'", "valore")); String credito = myApp.mySelect(this, "SELECT valore FROM parametri WHERE chiave = 'FlagIgnoraSaldoStop'", "valore"); if (credito.equalsIgnoreCase("SI")) { consentiCredito = true; } titolo = titolo + " " + idPuntoCassa; this.setTitle(titolo); //Aggiornamento 14-01-2019 String stringDatiPagamento = myApp.mySelect(this, "select tp.id || '|' || tp.nome || '|' || pd.flag_bonus || '|' || " + "pd.flag_extra as valore from punti_cassa pc " + "inner join punti_distribuzione pd on pc.id_punto_distribuzione = pd.id " + "inner join tipi_pagamenti tp on pd.id_tipo_paga_default = tp.id " + "where pc.id=" + idPuntoCassa, "valore"); String[] arrayDatiPagamento = stringDatiPagamento.split("\\|", -1); if (arrayDatiPagamento.length >= 2) { idModoPagamento = Long.valueOf(arrayDatiPagamento[0]); modoPagamentoDefault = arrayDatiPagamento[1]; lblTipoPagamento.setText(arrayDatiPagamento[1]); //Aggiornamento 14-01-2019 flagBonus = Integer.valueOf(arrayDatiPagamento[2]); flagExtra = false; if (arrayDatiPagamento[3].equalsIgnoreCase("1")) { flagExtra = true; } pulsantiModoPagamento(); } } } // -------------------------------------------------------------------- // ** display // -------------------------------------------------------------------- NodeList disp = document.getElementsByTagName("display"); for (int i = 0; i < disp.getLength(); i++) { Node display = disp.item(i); if (display.getNodeType() == Node.ELEMENT_NODE) { Element p = (Element) display; displayWidth = Integer.parseInt(p.getElementsByTagName("larghezza").item(0).getFirstChild().getNodeValue()); displayHeight = Integer.parseInt(p.getElementsByTagName("altezza").item(0).getFirstChild().getNodeValue()); hFont = Integer.parseInt(p.getElementsByTagName("fontSize").item(0).getFirstChild().getNodeValue()); altControlli = Integer.parseInt(p.getElementsByTagName("altezzaControlli").item(0).getFirstChild().getNodeValue()); largControlli = Integer.parseInt(p.getElementsByTagName("larghezzaControlli").item(0).getFirstChild().getNodeValue()); String tastiera = p.getElementsByTagName("TastieraVideo").item(0).getFirstChild().getNodeValue(); myApp.tastieraVideo = !tastiera.equals("NO"); } } //adatto panel login Font f = new Font("Tahoma", 0, hFont); UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("Tahoma", Font.BOLD, hFont)) ); UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("Tahoma", Font.BOLD, 25))); btnLogin.setFont(f); pnlLogin.setSize(calcolaLarghezzaAltezza(pnlLogin.getWidth(), largControlli), calcolaLarghezzaAltezza(pnlLogin.getHeight(), altControlli)); lblPassword.setFont(f); lblUsername.setFont(f); txtUsername.setFont(f); txtPassword.setFont(f); jTxtTessera.setFont(f); jChLogin.setFont(f); jBtnReadCard.setVisible(false); // -------------------------------------------------------------------- // ** ID_PUNTO_CASSA // -------------------------------------------------------------------- jcmbSC.setVisible(false); String VMD = document.getElementsByTagName("Visualizza_Messaggi_Display").item(0).getFirstChild().getNodeValue(); visualizzaMessaggiDisplay = VMD.equalsIgnoreCase("SI"); messageDisplay = document.getElementsByTagName("Messaggio_Display").item(0).getFirstChild().getNodeValue(); updateReaderCombo(); String ultimiMovimenti = myApp.mySelect(this, "SELECT valore FROM parametri WHERE chiave = 'FlagVisualizzaUltimiPassaggi'", "valore"); if (ultimiMovimenti.equalsIgnoreCase("NO")) { jBtnMovimenti.setEnabled(false); } timerCard = new java.util.Timer(); timerCard.schedule(new CardTask(this), 0, 1 * 1000); statoAttivoNonLoggato(); String flagRicevutaValue = mySelect("Select Valore from Parametri where Chiave='FlagRicevuta'", "Valore"); PuntoCassa.flagRicevuta = !flagRicevutaValue.equalsIgnoreCase("NO"); String flagDataNascita = mySelect("Select Valore from Parametri where Chiave='FlagMostraDataDiNascita'", "Valore"); flagMostraDataDiNascita = !flagDataNascita.equalsIgnoreCase("NO"); String flagEsegueStorniValue = mySelect("Select Valore from Parametri where Chiave='FlagEsegueStorni'", "Valore"); this.flagEsegueStorni = !flagEsegueStorniValue.equalsIgnoreCase("NO"); String timeoutSwipCard = mySelect("Select Valore from Parametri where Chiave='TimeoutSwipCard'", "Valore"); if (myApp.isNumeric(timeoutSwipCard)) { delaySwipCard = Integer.valueOf(timeoutSwipCard); } myInsert("UPDATE PARAMETRI set valore='NO' where chiave='FlagDownloadInCorso'"); String flagDefaultAsporto = mySelect("Select Valore from Parametri where Chiave='FlagDefaultAsporto'", "Valore"); if (flagDefaultAsporto.equalsIgnoreCase("SI")) { asporto = true; } String flagPrecarica = mySelect("Select Valore from Parametri where Chiave='FlagPrecaricaLista'", "Valore"); flagPrecaricaLista = !flagPrecarica.equalsIgnoreCase("NO"); keyDispatcher = new KeyEventDispatcher() { Boolean swip = false; Boolean spiaAltreCarte = false; Boolean timerUnaVolta = false; MyApplication myApp = new MyApplication(); public boolean dispatchKeyEvent(KeyEvent e) { int id = e.getID(); if (jbtnChiudi.isEnabled() && pnlLogin.isVisible() == false && jTxtTessera.getText().length() > 0) { e.consume(); if (myApp.unaVolta == false) { myApp.unaVolta = true; } return false; } myApp.unaVolta = false; int keyCode = e.getKeyCode(); if (id == KeyEvent.KEY_RELEASED) { String tasto = "" + e.getKeyChar(); System.out.println(keyCode + " - " + tasto); logTestoTessera.append(e.getKeyChar()); if (tasto.equalsIgnoreCase("ò")) { //144 swip = true; } //05-12-2017 if (keyCode == 16 || keyCode == 45 || tasto.equalsIgnoreCase("ò")) { spiaAltreCarte = true; } if (tasto.equalsIgnoreCase("ò") == false && keyCode != 16 && keyCode != 45 && swip) { //keyCode != 144 && keyCode != 17 testoSwipCard.append(tasto); System.out.println(testoSwipCard.toString()); } if (keyCode == 45 && swip) { //keyCode != 144 swip = false; System.out.println(testoSwipCard.toString()); warn(); } //30-11-2017 modifica per rfid if (keyCode != 16) { testoRFIDCard.append(tasto); } if (keyCode == 10 && swip == false && spiaAltreCarte == false) { //keyCode != 144 System.out.println(testoRFIDCard.toString()); testoSwipCard = testoRFIDCard; testoRFIDCard = new StringBuilder(); warn(); } //29-10-18------------------------------------------------------ if (timerUnaVolta == false) { timerUnaVolta = true; final Timer timer = new Timer(); final TimerTask task = new TimerTask() { @Override public void run() { if (testoRFIDCard.toString().length() > 2) { System.out.println("Timer: " + testoRFIDCard.toString()); testoSwipCard = testoRFIDCard; testoRFIDCard = new StringBuilder(); warn(); } timer.cancel(); timer.purge(); timerUnaVolta = false; } }; timer.schedule(task, 5000); } //fine 29-10-18------------------------------------------------------ } return true; } public void warn() { if (statoCardLettore) { return; } //29-10-2018 testoRFIDCard = new StringBuilder(); //fine 29-10-2018 if (testoSwipCard.toString().length() > 0) { statoCardLettore = true; final Timer timer = new Timer(); final TimerTask task = new TimerTask() { @Override public void run() { String tessera = ""; //per tessere tipo 8 e 9 if (testoSwipCard.toString().contains("ì")) { String[] txt = testoSwipCard.toString().split("ì"); // per tessera MASTERCARD CARDHOLDER if (testoSwipCard.toString().length() > 30) { tessera = txt[0].trim().replace("_", ""); } else { tessera = txt[1].trim().replace("_", ""); } } else if (testoSwipCard.toString().contains("&")) { // per tessera MASTERCARD CARDHOLDER String[] txt = testoSwipCard.toString().split("&"); tessera = txt[0].trim().replace("%B", ""); } else { tessera = testoSwipCard.toString().trim().replace("_", ""); } //per tessera tipo 3 if (tessera.length() >= 17 && tessera.length() <= 19) { tessera = tessera.substring(0, 7); } //per tessere tipo 6 e 7 if (tessera.length() == 21) { tessera = tessera.substring(0, 10); int posI = 0; for (int i = 0; i <= tessera.length(); i++) { if (tessera.substring(i, i + 1).equalsIgnoreCase("0") == false) { posI = i; break; } } tessera = tessera.substring(posI); } spiaAltreCarte = false; swip = false; if (pnlLogin.isVisible()) { controllaLogInCarta(tessera); } else { //05/11/2018 le nuove tessere con CF a volte leggono solo la matricola jTxtTessera.setText(tessera); passaggioTessera = true; logNumeroTessera = tessera; cercaTessera(); } testoSwipCard = new StringBuilder(); timer.cancel(); timer.purge(); statoCardLettore = false; } }; timer.schedule(task, delaySwipCard); } } }; KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyDispatcher); keyDespatcherAttivo = true; verificaDB(); } catch (Exception e) { e.printStackTrace(); } // ----------------------------------------------------------------------- // *** Aggiunge un timer con relativa schedulazione a 5 secondi // ----------------------------------------------------------------------- timerDBConn mt = new timerDBConn(this); java.util.Timer timer = new java.util.Timer(); timer.schedule(mt, 0, 5000); verificaAggiornamentiJAR(); } private void verificaAggiornamentiJAR() { try { String pathURLAggiornamento = mySelect("Select Valore from Parametri where chiave='UrlJAR' ", "Valore"); if (pathURLAggiornamento.length() > 0) { String startDir = System.getProperty("user.dir"); URL url = new URL(pathURLAggiornamento); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); Date d = new Date(httpCon.getLastModified()); System.out.println(' ' + d.toString()); File fileAttuale = new File(startDir + "/Cassa.jar"); Date dataUltimaModificaJarCorrente = new Date(fileAttuale.lastModified()); if (d.after(dataUltimaModificaJarCorrente)) { if (JOptionPane.showConfirmDialog(null, "Aggiornamento disponibile. Aggiornare?", "Aggiornamento", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { System.out.print("Aggiorna............."); Runtime.getRuntime().exec("java -jar " + startDir + "/Aggiornamento.jar " + startDir + " " + pathURLAggiornamento); System.exit(0); } } } } catch (IOException ex) { LogManager.getLogger(PuntoCassa.class.getName()).error(ex); } } private void updateReaderCombo() { try { MyApplication myApp = new MyApplication(); jcmbSC.setModel(new DefaultComboBoxModel(myApp.smartCard.listReaders())); } catch (Exception ex) { LogManager.getLogger(PuntoCassa.class.getName()).error(ex); } } /*private void scaricaImmagini() { this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try { Statement st; ResultSet rs; String sql = "SELECT distinct prodotti.id FROM prodotti " + "inner join catalogo_punti_cassa on prodotti.id=CATALOGO_PUNTI_CASSA.ID_Prodotto " + "WHERE prodotti.nome IS NOT NULL " + "and CATALOGO_PUNTI_CASSA.id_Punto_Cassa=" + idPuntoCassa; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(); rs = st.executeQuery(sql); while (rs.next()) { getImage(rs.getString("id")); } st.close(); rs.close(); dbConnection.close(); } catch (Exception e) { JOptionPane.showMessageDialog(this, "Errore Scarico Immagini " + e.getMessage(), "scaricaImmagini", JOptionPane.ERROR_MESSAGE); } this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); }*/ private Integer calcolaLarghezzaAltezza(Integer larControllo, Integer percentuale) { Integer d = percentuale - 100; if (d == 0) { return larControllo; } else { Integer n = larControllo + ((larControllo * d) / 100); return n; } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { pnlErrore = new javax.swing.JPanel(); lblMessaggioErrore = new javax.swing.JLabel(); pnlTop = new javax.swing.JPanel(); pnlCliente = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); lblCodice1 = new javax.swing.JLabel(); lblSaldo = new javax.swing.JLabel(); lblCodice2 = new javax.swing.JLabel(); lblPunti = new javax.swing.JLabel(); jTxtTessera = new javax.swing.JTextField(); btnImpostaCliente = new javax.swing.JButton(); jBtnReadCard = new javax.swing.JButton(); jcmbSC = new javax.swing.JComboBox(); lblCodice3 = new javax.swing.JLabel(); lblTipoPagamento = new javax.swing.JLabel(); lblCodice4 = new javax.swing.JLabel(); lblResiduo = new javax.swing.JLabel(); lblCodice5 = new javax.swing.JLabel(); lblGratuita = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); lblCodice = new javax.swing.JLabel(); lblCategoria = new javax.swing.JLabel(); lblDenominazione = new javax.swing.JLabel(); lblCognome = new javax.swing.JLabel(); lblOrganizzazione = new javax.swing.JLabel(); lblNome = new javax.swing.JLabel(); lblOrganizzazione1 = new javax.swing.JLabel(); lblNascita = new javax.swing.JLabel(); lblOrganizzazione2 = new javax.swing.JLabel(); lblScadTessera = new javax.swing.JLabel(); lblOrganizzazione3 = new javax.swing.JLabel(); lblAzienda = new javax.swing.JLabel(); lblOrganizzazione4 = new javax.swing.JLabel(); lblConvenzione = new javax.swing.JLabel(); lblOrganizzazione5 = new javax.swing.JLabel(); lblFascia = new javax.swing.JLabel(); pnlCategorie = new javax.swing.JPanel(); pnlConto = new javax.swing.JPanel(); jbtnDuplica = new javax.swing.JButton(); jbtnElimina = new javax.swing.JButton(); jbtnAnnulla = new javax.swing.JButton(); jbtnSu = new javax.swing.JButton(); jbtnGiu = new javax.swing.JButton(); txtTotaleCassa = new javax.swing.JTextField(); jbtnChiudi = new javax.swing.JButton(); jbtnStampa = new javax.swing.JButton(); txtTotalePunti = new javax.swing.JTextField(); pnlAzioni = new javax.swing.JPanel(); jBtnStorno = new javax.swing.JButton(); jBtnAsporto = new javax.swing.JToggleButton(); jBtnprodotti = new javax.swing.JButton(); jBtnMovimenti = new javax.swing.JButton(); jBtnBuoni = new javax.swing.JButton(); jTBP0 = new javax.swing.JToggleButton(); jTBP1 = new javax.swing.JToggleButton(); jTBP2 = new javax.swing.JToggleButton(); jTBP3 = new javax.swing.JToggleButton(); jbtnEsci = new javax.swing.JButton(); pnlLista = new javax.swing.JPanel(); scpLista = new javax.swing.JScrollPane(); tblLista = new javax.swing.JTable(); pnlProdotti = new javax.swing.JPanel(); pnlLista1 = new javax.swing.JPanel(); scpLista1 = new javax.swing.JScrollPane(); tblLista1 = new javax.swing.JTable(); pnlLogin = new javax.swing.JPanel(); btnLogin = new javax.swing.JButton(); txtUsername = new javax.swing.JTextField(); lblUsername = new javax.swing.JLabel(); lblPassword = new javax.swing.JLabel(); txtPassword = new javax.swing.JPasswordField(); btnTermina = new javax.swing.JButton(); jChLogin = new javax.swing.JCheckBox(); jBtnDB1 = new javax.swing.JButton(); lblUtenteLoggato = new javax.swing.JLabel(); lblStatoConnessione = new javax.swing.JLabel(); lblInfo = new javax.swing.JLabel(); lblInfo2 = new javax.swing.JLabel(); lblDB = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("Prova di titolo"); setName("frmPrincipale"); // NOI18N setResizable(false); addComponentListener(new java.awt.event.ComponentAdapter() { public void componentResized(java.awt.event.ComponentEvent evt) { resizeRules(evt); } }); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } public void windowDeiconified(java.awt.event.WindowEvent evt) { formWindowDeiconified(evt); } }); getContentPane().setLayout(null); pnlErrore.setBackground(new java.awt.Color(255, 255, 153)); pnlErrore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); pnlErrore.setLayout(null); lblMessaggioErrore.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblMessaggioErrore.setText("lblMessaggioErrore"); lblMessaggioErrore.setToolTipText(""); lblMessaggioErrore.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); lblMessaggioErrore.setName("lblMessaggioErrore"); // NOI18N pnlErrore.add(lblMessaggioErrore); lblMessaggioErrore.setBounds(96, 24, 600, 240); getContentPane().add(pnlErrore); pnlErrore.setBounds(0, 0, 0, 0); pnlTop.setName("pnlTop"); // NOI18N pnlTop.setLayout(null); pnlCliente.setToolTipText(""); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Tessera")); lblCodice1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblCodice1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice1.setText("Saldo:"); lblSaldo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblSaldo.setText("[...]"); lblCodice2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblCodice2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice2.setText("Punti:"); lblPunti.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblPunti.setText("[...]"); jTxtTessera.setToolTipText(""); jTxtTessera.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { jTxtTesseraFocusGained(evt); } }); btnImpostaCliente.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N btnImpostaCliente.setText("Imposta"); btnImpostaCliente.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnImpostaClienteActionPerformed(evt); } }); jBtnReadCard.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N jBtnReadCard.setText("Leggi Tessera"); jBtnReadCard.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnReadCardActionPerformed(evt); } }); jcmbSC.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); lblCodice3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblCodice3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice3.setText("Tipo Pagamento:"); lblTipoPagamento.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblTipoPagamento.setText("[...]"); lblCodice4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblCodice4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice4.setText("Residuo:"); lblResiduo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblResiduo.setText("[...]"); lblCodice5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblCodice5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice5.setText("Gratuità Residue:"); lblGratuita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblGratuita.setText("[...]"); lblGratuita.setName(""); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(lblCodice2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCodice1, javax.swing.GroupLayout.DEFAULT_SIZE, 104, Short.MAX_VALUE)) .addGap(8, 8, 8) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblPunti, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblSaldo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(lblCodice3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCodice4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCodice5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(lblResiduo, javax.swing.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE) .addComponent(lblTipoPagamento, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblGratuita, javax.swing.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE))) .addComponent(btnImpostaCliente, javax.swing.GroupLayout.DEFAULT_SIZE, 252, Short.MAX_VALUE) .addComponent(jTxtTessera))) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(48, 48, 48) .addComponent(jBtnReadCard, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jcmbSC, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jcmbSC, javax.swing.GroupLayout.PREFERRED_SIZE, 3, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jBtnReadCard, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtTessera, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnImpostaCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblSaldo) .addComponent(lblCodice1, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblPunti) .addComponent(lblCodice2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblTipoPagamento) .addComponent(lblCodice3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblResiduo) .addComponent(lblCodice4, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblCodice5) .addComponent(lblGratuita))) ); lblCodice5.getAccessibleContext().setAccessibleName("Gtratuità Residue:"); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Cliente")); lblCodice.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblCodice.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblCodice.setText("Categoria:"); lblCategoria.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblCategoria.setText("[...]"); lblDenominazione.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblDenominazione.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblDenominazione.setText("Cognome:"); lblCognome.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblCognome.setText("[...]"); lblOrganizzazione.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblOrganizzazione.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione.setText("Nome:"); lblNome.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblNome.setText("[...]"); lblOrganizzazione1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblOrganizzazione1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione1.setText("Data Nascita:"); lblNascita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblNascita.setText("[...]"); lblOrganizzazione2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblOrganizzazione2.setForeground(new java.awt.Color(255, 0, 0)); lblOrganizzazione2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione2.setText("Bonus Residui:"); lblScadTessera.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblScadTessera.setForeground(new java.awt.Color(255, 0, 0)); lblScadTessera.setText("[...]"); lblOrganizzazione3.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblOrganizzazione3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione3.setText("Azienda:"); lblAzienda.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblAzienda.setText("[...]"); lblOrganizzazione4.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblOrganizzazione4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione4.setText("Convenzione:"); lblConvenzione.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N lblConvenzione.setText("[...]"); lblOrganizzazione5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblOrganizzazione5.setForeground(new java.awt.Color(255, 0, 0)); lblOrganizzazione5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblOrganizzazione5.setText("Fascia:"); lblFascia.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N lblFascia.setForeground(new java.awt.Color(255, 0, 0)); lblFascia.setText("[...]"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(lblOrganizzazione5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblOrganizzazione4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblOrganizzazione3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblOrganizzazione2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCodice, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblDenominazione, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblOrganizzazione, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblOrganizzazione1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(lblConvenzione, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE) .addComponent(lblAzienda, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblScadTessera, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblNascita, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblNome, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCognome, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblCategoria, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblFascia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, 0)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblCodice) .addComponent(lblCategoria)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblDenominazione) .addComponent(lblCognome)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblNome) .addComponent(lblOrganizzazione)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblOrganizzazione1) .addComponent(lblNascita)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblOrganizzazione3) .addComponent(lblAzienda)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblOrganizzazione4) .addComponent(lblConvenzione)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblOrganizzazione5) .addComponent(lblFascia)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblOrganizzazione2) .addComponent(lblScadTessera)) .addGap(6, 6, 6)) ); javax.swing.GroupLayout pnlClienteLayout = new javax.swing.GroupLayout(pnlCliente); pnlCliente.setLayout(pnlClienteLayout); pnlClienteLayout.setHorizontalGroup( pnlClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlClienteLayout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pnlClienteLayout.setVerticalGroup( pnlClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pnlTop.add(pnlCliente); pnlCliente.setBounds(0, 0, 660, 140); pnlCliente.getAccessibleContext().setAccessibleDescription("Cliente"); pnlCliente.getAccessibleContext().setAccessibleParent(pnlCliente); pnlCategorie.setBackground(new java.awt.Color(255, 204, 204)); pnlCategorie.setBorder(javax.swing.BorderFactory.createTitledBorder("Categoria")); pnlCategorie.setLayout(new java.awt.GridLayout(10, 1, 1, 1)); pnlTop.add(pnlCategorie); pnlCategorie.setBounds(0, 0, 9, 32); pnlConto.setBackground(new java.awt.Color(255, 255, 153)); pnlConto.setBorder(javax.swing.BorderFactory.createTitledBorder("Conto")); pnlConto.setLayout(new java.awt.GridLayout(3, 0, 2, 2)); jbtnDuplica.setBackground(new java.awt.Color(140, 240, 240)); jbtnDuplica.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jbtnDuplica.setEnabled(false); jbtnDuplica.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnDuplicaActionPerformed(evt); } }); pnlConto.add(jbtnDuplica); jbtnElimina.setBackground(new java.awt.Color(140, 240, 240)); jbtnElimina.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jbtnElimina.setToolTipText(""); jbtnElimina.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnEliminaActionPerformed(evt); } }); pnlConto.add(jbtnElimina); jbtnAnnulla.setBackground(new java.awt.Color(140, 240, 240)); jbtnAnnulla.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jbtnAnnulla.setText("Annulla"); jbtnAnnulla.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnAnnullaActionPerformed(evt); } }); pnlConto.add(jbtnAnnulla); jbtnSu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnSuActionPerformed(evt); } }); pnlConto.add(jbtnSu); jbtnGiu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnGiuActionPerformed(evt); } }); pnlConto.add(jbtnGiu); txtTotaleCassa.setFont(new java.awt.Font("Tahoma", 1, 20)); // NOI18N txtTotaleCassa.setForeground(new java.awt.Color(242, 0, 0)); txtTotaleCassa.setHorizontalAlignment(javax.swing.JTextField.CENTER); txtTotaleCassa.setText("€ 0,00"); txtTotaleCassa.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { txtTotaleCassaActionPerformed(evt); } }); pnlConto.add(txtTotaleCassa); jbtnChiudi.setBackground(new java.awt.Color(51, 255, 51)); jbtnChiudi.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jbtnChiudi.setText("Chiudi"); jbtnChiudi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnChiudiActionPerformed(evt); } }); pnlConto.add(jbtnChiudi); jbtnStampa.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnStampaActionPerformed(evt); } }); pnlConto.add(jbtnStampa); txtTotalePunti.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N txtTotalePunti.setHorizontalAlignment(javax.swing.JTextField.CENTER); txtTotalePunti.setText("Punti 0"); txtTotalePunti.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { txtTotalePuntiActionPerformed(evt); } }); pnlConto.add(txtTotalePunti); pnlTop.add(pnlConto); pnlConto.setBounds(286, 150, 257, 120); pnlAzioni.setBackground(new java.awt.Color(255, 204, 204)); pnlAzioni.setBorder(javax.swing.BorderFactory.createTitledBorder("Azioni")); pnlAzioni.setLayout(new java.awt.GridLayout(2, 6, 2, 2)); jBtnStorno.setToolTipText("Storno"); jBtnStorno.setMargin(new java.awt.Insets(2, 2, 2, 2)); jBtnStorno.setVerticalTextPosition(javax.swing.SwingConstants.TOP); jBtnStorno.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnStornoActionPerformed(evt); } }); pnlAzioni.add(jBtnStorno); jBtnAsporto.setToolTipText("Modalità"); jBtnAsporto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnAsportoActionPerformed(evt); } }); pnlAzioni.add(jBtnAsporto); jBtnprodotti.setToolTipText("Prodotti"); jBtnprodotti.setMargin(new java.awt.Insets(2, 2, 2, 2)); jBtnprodotti.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnprodottiActionPerformed(evt); } }); pnlAzioni.add(jBtnprodotti); jBtnMovimenti.setToolTipText("Ultimi movimenti"); jBtnMovimenti.setMargin(new java.awt.Insets(2, 2, 2, 2)); jBtnMovimenti.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnMovimentiActionPerformed(evt); } }); pnlAzioni.add(jBtnMovimenti); jBtnBuoni.setToolTipText(""); jBtnBuoni.setMargin(new java.awt.Insets(2, 2, 2, 2)); jBtnBuoni.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnBuoniActionPerformed(evt); } }); pnlAzioni.add(jBtnBuoni); jTBP0.setToolTipText("A Scalare"); jTBP0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTBP0ActionPerformed(evt); } }); pnlAzioni.add(jTBP0); jTBP1.setToolTipText("Contanti"); jTBP1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTBP1ActionPerformed(evt); } }); pnlAzioni.add(jTBP1); jTBP2.setToolTipText("Ticket"); jTBP2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTBP2ActionPerformed(evt); } }); pnlAzioni.add(jTBP2); jTBP3.setToolTipText("Differito"); jTBP3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTBP3ActionPerformed(evt); } }); pnlAzioni.add(jTBP3); jbtnEsci.setBackground(new java.awt.Color(255, 255, 0)); jbtnEsci.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jbtnEsci.setText("Esci"); jbtnEsci.setToolTipText("Esci"); jbtnEsci.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jbtnEsciActionPerformed(evt); } }); pnlAzioni.add(jbtnEsci); pnlTop.add(pnlAzioni); pnlAzioni.setBounds(0, 153, 378, 73); pnlLista.setBackground(new java.awt.Color(204, 255, 204)); pnlLista.setBorder(javax.swing.BorderFactory.createTitledBorder("Lista")); pnlLista.setLayout(new javax.swing.BoxLayout(pnlLista, javax.swing.BoxLayout.LINE_AXIS)); scpLista.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N tblLista.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {}, {}, {}, {} }, new String [] { } )); tblLista.setName("jtbl"); // NOI18N scpLista.setViewportView(tblLista); pnlLista.add(scpLista); pnlTop.add(pnlLista); pnlLista.setBounds(288, 0, 140, 144); pnlProdotti.setBackground(new java.awt.Color(204, 255, 204)); pnlProdotti.setBorder(javax.swing.BorderFactory.createTitledBorder("Prodotto")); pnlProdotti.setLayout(new java.awt.GridLayout(6, 2, 2, 2)); pnlTop.add(pnlProdotti); pnlProdotti.setBounds(0, 0, 8, 33); pnlLista1.setBackground(new java.awt.Color(204, 255, 204)); pnlLista1.setBorder(javax.swing.BorderFactory.createTitledBorder("Lista")); pnlLista1.setLayout(new javax.swing.BoxLayout(pnlLista1, javax.swing.BoxLayout.LINE_AXIS)); scpLista1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N tblLista1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {}, {}, {}, {} }, new String [] { } )); tblLista1.setName("jtbl"); // NOI18N scpLista1.setViewportView(tblLista1); pnlLista1.add(scpLista1); pnlTop.add(pnlLista1); pnlLista1.setBounds(288, 0, 140, 144); pnlLista1.getAccessibleContext().setAccessibleName("Lista1"); getContentPane().add(pnlTop); pnlTop.setBounds(0, 188, 0, 0); pnlTop.getAccessibleContext().setAccessibleName("pnlTop"); pnlTop.getAccessibleContext().setAccessibleDescription(""); pnlLogin.setBackground(new java.awt.Color(255, 255, 153)); pnlLogin.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Accesso al sistema", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 14))); // NOI18N pnlLogin.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N btnLogin.setText("Login"); btnLogin.setEnabled(false); btnLogin.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btnLogin.setName("btnLogin"); // NOI18N btnLogin.setVerticalTextPosition(javax.swing.SwingConstants.TOP); btnLogin.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnLoginActionPerformed(evt); } }); txtUsername.setEnabled(false); txtUsername.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { txtUsernameFocusGained(evt); } }); txtUsername.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { txtUsernameMouseClicked(evt); } }); lblUsername.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblUsername.setText("Username"); lblUsername.setToolTipText(""); lblPassword.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblPassword.setText("Password"); txtPassword.setEnabled(false); txtPassword.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { txtPasswordFocusGained(evt); } }); txtPassword.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { txtPasswordMouseClicked(evt); } }); btnTermina.setIcon(new javax.swing.ImageIcon(getClass().getResource("/puntocassa/esci2.jpg"))); // NOI18N btnTermina.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); btnTermina.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); btnTermina.setLabel(" Termina Programma"); btnTermina.setName("btnTermina"); // NOI18N btnTermina.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnTerminaActionPerformed(evt); } }); jChLogin.setBackground(new java.awt.Color(255, 255, 153)); jChLogin.setSelected(true); jChLogin.setText("Login con tessera"); jChLogin.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jChLoginActionPerformed(evt); } }); jBtnDB1.setToolTipText("DB"); jBtnDB1.setMargin(new java.awt.Insets(2, 2, 2, 2)); jBtnDB1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnDB1ActionPerformed(evt); } }); javax.swing.GroupLayout pnlLoginLayout = new javax.swing.GroupLayout(pnlLogin); pnlLogin.setLayout(pnlLoginLayout); pnlLoginLayout.setHorizontalGroup( pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlLoginLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(lblPassword, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblUsername, javax.swing.GroupLayout.DEFAULT_SIZE, 62, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtPassword) .addComponent(txtUsername) .addComponent(btnLogin, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(pnlLoginLayout.createSequentialGroup() .addComponent(jChLogin) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(jBtnDB1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnTermina, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 262, Short.MAX_VALUE)) .addContainerGap()) ); pnlLoginLayout.setVerticalGroup( pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlLoginLayout.createSequentialGroup() .addComponent(jChLogin) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblUsername)) .addGap(10, 10, 10) .addGroup(pnlLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblPassword)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnLogin, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBtnDB1, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnTermina, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); getContentPane().add(pnlLogin); pnlLogin.setBounds(0, 70, 360, 220); pnlLogin.getAccessibleContext().setAccessibleName("pnlLogin"); pnlLogin.getAccessibleContext().setAccessibleDescription(""); lblUtenteLoggato.setText("[Nessun utente connesso]"); lblUtenteLoggato.setVerticalAlignment(javax.swing.SwingConstants.TOP); lblUtenteLoggato.setAlignmentY(0.0F); lblUtenteLoggato.setBorder(javax.swing.BorderFactory.createEtchedBorder()); lblUtenteLoggato.setVerticalTextPosition(javax.swing.SwingConstants.TOP); getContentPane().add(lblUtenteLoggato); lblUtenteLoggato.setBounds(20, 310, 130, 20); lblStatoConnessione.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblStatoConnessione.setText("[Nessuna connessione]"); lblStatoConnessione.setVerticalAlignment(javax.swing.SwingConstants.TOP); lblStatoConnessione.setAlignmentY(0.0F); lblStatoConnessione.setBorder(javax.swing.BorderFactory.createEtchedBorder()); lblStatoConnessione.setVerticalTextPosition(javax.swing.SwingConstants.TOP); getContentPane().add(lblStatoConnessione); lblStatoConnessione.setBounds(425, 340, 120, 20); lblInfo.setText("[Info Turno]"); lblInfo.setVerticalAlignment(javax.swing.SwingConstants.TOP); lblInfo.setAlignmentY(0.0F); lblInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); lblInfo.setVerticalTextPosition(javax.swing.SwingConstants.TOP); getContentPane().add(lblInfo); lblInfo.setBounds(180, 340, 130, 20); lblInfo2.setText("[Info Incassi]"); lblInfo2.setVerticalAlignment(javax.swing.SwingConstants.TOP); lblInfo2.setAlignmentY(0.0F); lblInfo2.setBorder(javax.swing.BorderFactory.createEtchedBorder()); lblInfo2.setVerticalTextPosition(javax.swing.SwingConstants.TOP); getContentPane().add(lblInfo2); lblInfo2.setBounds(160, 310, 130, 20); lblDB.setBackground(new java.awt.Color(51, 255, 0)); lblDB.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblDB.setText("DB"); lblDB.setOpaque(true); getContentPane().add(lblDB); lblDB.setBounds(604, 360, 20, 20); getAccessibleContext().setAccessibleName("frmPrincipale"); getAccessibleContext().setAccessibleDescription(""); getAccessibleContext().setAccessibleParent(this); setBounds(0, 0, 857, 531); }// //GEN-END:initComponents // ========================================================================== // ** Imposta dimensioni e posizione dei panel // ========================================================================== private void resize() { int x, y, w, h, tw, th; // ----------------------------------------------------------------------- // *** Dimensioni del frame // ----------------------------------------------------------------------- this.setSize(displayWidth, displayHeight); tw = this.getWidth(); th = this.getHeight(); // ----------------------------------------------------------------------- // *** Posizione della status bar // ----------------------------------------------------------------------- x = 0; y = th - 50; w = (tw / 8); h = 50; lblUtenteLoggato.setLocation(x, y); lblUtenteLoggato.setSize(w, h); lblInfo.setLocation(w, y); lblInfo.setSize(w * 2 + 60 - lblDB.getWidth(), h); lblInfo2.setLocation(w * 3 + 60 - lblDB.getWidth(), y); // lblInfo2.setSize(tw - (w * 2 + 10) - 131, h); int larg = tw - (w * 2 + 10) - 359; lblInfo2.setSize(larg, h); lblStatoConnessione.setLocation(tw - 181 - lblDB.getWidth(), y); lblStatoConnessione.setSize(175, h); lblDB.setLocation(tw - 181 - lblDB.getWidth() + lblStatoConnessione.getWidth(), y); // ----------------------------------------------------------------------- // *** Posizione del panel Errore // ----------------------------------------------------------------------- x = 0; y = 0; w = tw; h = th - lblUtenteLoggato.getHeight(); pnlErrore.setLocation(x, y); pnlErrore.setSize(w, h); // ----------------------------------------------------------------------- // *** Posizione del panel Login // ----------------------------------------------------------------------- x = 0; y = 0; w = pnlLogin.getWidth(); h = pnlLogin.getHeight(); pnlLogin.setLocation((int) (tw - w) / 2, (int) (th - h) / 2); pnlLogin.setSize(w, h); // ----------------------------------------------------------------------- // *** Posizione del panel Top (operativo) // ----------------------------------------------------------------------- x = 0; y = 0; w = tw + 5; h = th - lblUtenteLoggato.getHeight(); pnlTop.setLocation(x, y); pnlTop.setSize(w, h); // ----------------------------------------------------------------------- // *** Posizionamento degli oggetti nel panel Top (operativo) // ----------------------------------------------------------------------- tw = pnlTop.getWidth(); th = pnlTop.getHeight(); // ----------------------------------------------------------------------- // ** Panel Categorie // ----------------------------------------------------------------------- x = 0; y = 0; w = (int) (13 * tw / 100); h = (int) (68 * th / 100); pnlCategorie.setLocation(x, y); pnlCategorie.setSize(w, h); // ----------------------------------------------------------------------- // ** Panel Prodotti // ----------------------------------------------------------------------- x = w; y = 0; w = (int) (57 * tw / 100); h = (int) (68 * th / 100); pnlProdotti.setLocation(x, y); pnlProdotti.setSize(w, h); // ----------------------------------------------------------------------- // ** Panel Lista // ----------------------------------------------------------------------- x = x + w; y = 0; w = tw - x - 10; h = (int) (25 * th / 100); pnlLista.setLocation(x, y); pnlLista.setSize(w, h); scpLista.setLocation(0, 0); scpLista.setSize(w, h); scpLista.setBackground(Color.BLUE); tblLista.setLocation(0, 0); tblLista.setSize(w, h); tblLista.setShowGrid(true); int Col1 = (w / 100) * 80; MyTableModel model = new MyTableModel(); String[] col = {"Prodotto", "Prezzo", "Punti"}; model.setColumname(col); Object[][] data = null; model.setRow(data); tblLista.setModel(model); tblLista.getColumnModel().getColumn(0).setPreferredWidth(Col1); tblLista.getColumnModel().getColumn(1).setPreferredWidth(50); tblLista.getColumnModel().getColumn(1).setCellRenderer(new DecimalFormatRenderer()); tblLista.getColumnModel().getColumn(2).setPreferredWidth(50); tblLista.setVisible(true); // ----------------------------------------------------------------------- // ** Panel Lista1 // ----------------------------------------------------------------------- y = h; pnlLista1.setBorder(javax.swing.BorderFactory.createTitledBorder("Composizione")); pnlLista1.setLocation(x, y); pnlLista1.setSize(w, 70); scpLista1.setLocation(0, 0); scpLista1.setSize(w, h); scpLista1.setBackground(Color.BLUE); tblLista1.setLocation(0, 0); tblLista1.setSize(w, h); tblLista1.setShowGrid(true); MyTableModel model1 = new MyTableModel(); String[] colVassoio = {"Vassoio", "Prezzo"}; model1.setColumname(colVassoio); Object[][] data1 = null; model1.setRow(data1); tblLista1.setModel(model1); tblLista1.getColumnModel().getColumn(0).setPreferredWidth(Col1); tblLista1.getColumnModel().getColumn(1).setPreferredWidth(50); tblLista1.setVisible(true); // ----------------------------------------------------------------------- // ** Panel Cliente // ----------------------------------------------------------------------- x = 0; y = pnlCategorie.getHeight(); w = pnlCategorie.getWidth() + pnlProdotti.getWidth() - 120; //h = pnlConto.getHeight(); h = th - pnlProdotti.getHeight(); pnlCliente.setLocation(x, y); pnlCliente.setSize(w, h); // ----------------------------------------------------------------------- // ** Panel Conto // ----------------------------------------------------------------------- x = pnlLista.getX();//pnlAzioni.getWidth(); y = pnlLista.getHeight() + pnlLista1.getHeight(); w = pnlLista.getWidth(); h = 220;//th-y; pnlConto.setLocation(x, y); pnlConto.setSize(w, h - 10); ImageIcon icon = new ImageIcon(imgPath + "freccia_down.jpg"); Image img = icon.getImage(); Image newimg = img.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH); icon = new ImageIcon(newimg); jbtnGiu.setIcon(icon); ImageIcon icon2 = new ImageIcon(imgPath + "freccia_up.jpg"); Image img2 = icon2.getImage(); Image newimg2 = img2.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH); icon2 = new ImageIcon(newimg2); jbtnSu.setIcon(icon2); ImageIcon icon3 = new ImageIcon(imgPath + "ticket2.png"); Image img3 = icon3.getImage(); Image newimg3 = img3.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH); icon3 = new ImageIcon(newimg3); jBtnBuoni.setIcon(icon3); ImageIcon iconFulmine = new ImageIcon(imgPath + "fulmine.jpg"); Image imgF = iconFulmine.getImage(); Image newimgF = imgF.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH); iconFulmine = new ImageIcon(newimgF); jbtnStampa.setIcon(iconFulmine); // ----------------------------------------------------------------------- // ** Panel Azioni // ----------------------------------------------------------------------- //x = 0; x = pnlLista.getX() - 120; y = pnlConto.getY() + pnlConto.getHeight();//pnlProdotti.getHeight() + pnlCliente.getHeight(); w = pnlLista.getWidth() + 120; //pnlCategorie.getWidth() + pnlProdotti.getWidth(); h = th - (pnlLista.getHeight() + pnlLista1.getHeight() + pnlConto.getHeight()); //th-y; pnlAzioni.setLocation(x, y); pnlAzioni.setSize(w, h); // ----------------------------------------------------------------------- // *** Refresh dell'interfaccia // ----------------------------------------------------------------------- this.revalidate(); this.repaint(); } // ========================================================================== // *** Metodo per gestire gli eventi sui button dinamici // ========================================================================== public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); String tipo; String id; String sql = ""; Statement st; ResultSet rs; int i, j, k; // JButton b; i = cmd.indexOf("["); j = cmd.indexOf("]"); id = cmd.substring(i + 1, j); tipo = cmd.substring(0, i); switch (tipo) { case "CATEGORIA": pulsantiCategoria(id, cmd); break; case "PRODOTTO": if (isCassaAperta) { sql = "SELECT " + "prodotti.id as idProdotto," + "prodotti.nome, " + "prodotti.prezzo_base," + "tariffe.Punti as Punti_Base," + "tariffe.prezzo as Prezzo," + "tariffe.punti as Punti," + "prodotti.id_Categoria " + "FROM prodotti " + "left join tariffe on prodotti.id=tariffe.id_prodotto " + "where prodotti.id = " + id + " and Tariffe.id_fascia=" + idProfiloTariffario; try { //spengo altri togglebutton for (Integer y = 0; y < this.pnlProdotti.getComponentCount(); y++) { JToggleButton bt = (JToggleButton) this.pnlProdotti.getComponent(y); if (!bt.getActionCommand().equals(cmd)) { bt.setSelected(false); } } jbtnSu.setEnabled(true); jbtnGiu.setEnabled(true); jbtnElimina.setEnabled(true); jbtnAnnulla.setEnabled(true); doLayout(); Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(); rs = st.executeQuery(sql); MyTableModel model = (MyTableModel) tblLista.getModel(); while (rs.next()) { Double prezzo = 0.0; Integer punti = 0; if (rs.getDouble("Prezzo") > 0) { prezzo = rs.getDouble("Prezzo"); } else { prezzo = rs.getDouble("prezzo_base"); } if (rs.getDouble("Punti") > 0) { punti = rs.getInt("Punti"); } else { punti = rs.getInt("Punti_Base"); } //14-01-2019 if (model.getRowCount() > 0) { //è una composizione non la metto if (rs.getLong("id_Categoria") == 0L) { JOptionPane.showOptionDialog(this, "Composizione gia presente!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); return; } } //21-12-8<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< model.addRow(new Object[]{rs.getString("nome"), prezzo, punti, rs.getLong("idProdotto"), prezzo, rs.getLong("id_Categoria")}); } if (model.getRowCount() > 0) { tblLista.setRowSelectionInterval(model.getRowCount() - 1, model.getRowCount() - 1); } tblLista.setModel(model); controllaCompleti(model); controllaExtra(model); sommaColonne(model); //inizio 21-12-18<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< if (jbtnChiudi.isEnabled()) { if (saldoAcquisti(0.0) == false && cercaTestoModoPagamento().equalsIgnoreCase("A scalare") && gratuitaResidue <= 0 && (bonusResidui <= 0 || flagBonus == 0) && consentiCredito == false) { JOptionPane.showOptionDialog(this, "Saldo tessera insufficiente!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); jbtnEliminaActionPerformed(null); return; } } else { if (idTessera != 0L) { jbtnChiudi.setEnabled(true); } } //fine 21-12-18<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //stessa procedura in Cercates //prendo l'ultimo valore della griglia if (model.getRowCount() > 0) {// Double totAcquisto = 0.0; try { if (txtTotaleCassa.getText().length() > 0) { String saldo = txtTotaleCassa.getText().replace("? ", "").replace(".", ""); saldo = saldo.replace(",", "."); totAcquisto = Double.valueOf(saldo); } } catch (Exception ex) { LogManager.getLogger(PuntoCassa.class).error(ex); } //DecimalFormat df2 = new DecimalFormat("##0.00"); //String prezzoDisplay = ("E " + df2.format(totAcquisto)); /*String fa = "FASCIA " + lblFascia.getText().replaceAll("Fascia", "").trim(); if (fa.length() >= 10) { fa = fa.substring(fa.length() - 10, fa.length()); } else { fa = spaziBianchi(fa, 10, true); }*/ //String uProd = spaziBianchi("Totale ", 20, true); } rs.close(); st.close(); dbConnection.close(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } break; default: break; } } private void pulsantiCategoria(String id, String cmd) { for (Integer k = this.pnlProdotti.getComponentCount(); k > 0; k--) { this.pnlProdotti.remove(k - 1); } this.caricaDati("PRODOTTI", id); //spengo altri togglebutton if (this.pnlCategorie.getComponentCount() > 2) { for (Integer y = 0; y < this.pnlCategorie.getComponentCount(); y++) { JToggleButton bt = (JToggleButton) this.pnlCategorie.getComponent(y); if (!bt.getActionCommand().equals(cmd)) { bt.setSelected(false); } else { if (bt.isSelected() == false) { this.caricaPannello(); } } } } } private Boolean saldoAcquisti(Double prezzo) { Boolean ok = false; Double saldoTessera = 0.0; Double totAcquisto = 0.0; try { if (lblSaldo.getText().length() > 0) { String saldo = lblSaldo.getText().replace("? ", "").trim().replace(".", ""); saldo = saldo.replace("[", ""); saldo = saldo.replace("]", ""); saldo = saldo.replace(",", "."); if (saldo.length() > 0) { saldoTessera = Double.valueOf(saldo); } } if (txtTotaleCassa.getText().length() > 0) { String totaleCassa = txtTotaleCassa.getText().replace("? ", "").replace(".", ""); totaleCassa = totaleCassa.replace(",", "."); totAcquisto = Double.valueOf(totaleCassa); } } catch (Exception e) { LogManager.getLogger(PuntoCassa.class).error(e); } Double s = saldoTessera - (totAcquisto + prezzo); if (s >= saldoMinimoStop) { ok = true; } return ok; } private void sommaColonne(MyTableModel model) { Double t = model.somma(colImporto); MyTableModel model2 = (MyTableModel) tblLista1.getModel(); if (model2.getRowCount() > 0) { t = t + model2.somma(1); } DecimalFormat df2 = new DecimalFormat("#,###,###,##0.00"); txtTotaleCassa.setText("? " + df2.format(t)); int p = model.sommaInt(2); txtTotalePunti.setText("Punti " + p); //if(idModoPagamento==0L){ if (cercaTestoModoPagamento().equalsIgnoreCase("A scalare")) { Double saldoCarta = 0.0; if (lblSaldo.getText().trim().length() > 0) { String saldo = lblSaldo.getText().replace("? ", "").trim().replace(".", ""); saldo = saldo.replace("[", ""); saldo = saldo.replace("]", ""); saldo = saldo.replace(",", "."); if (saldo.length() > 0) { saldoCarta = Double.valueOf(saldo); } } saldoCarta = saldoCarta - t; lblResiduo.setText("? " + df2.format(saldoCarta)); } } private void controllaExtra(MyTableModel model) { if (flagExtra == false) { for (int i = 0; i < model.getRowCount(); i++) { Object row[] = model.getRow(i); Double p = Double.valueOf(row[colImporto].toString()); if (p != 0) { JOptionPane.showMessageDialog(this, "Composizione errata, questo prodotto sarà eliminato!"); jbtnEliminaActionPerformed(null); break; } } } else { for (int i = 0; i < model.getRowCount(); i++) { Object row[] = model.getRow(i); Double p = Double.valueOf(row[colImporto].toString()); if (p != 0) { JOptionPane.showMessageDialog(this, "Nella lista sono presenti degli extra!"); break; } } } } //02/09/2021 private void controllaCompleti(MyTableModel model) { if (passaggiEsauritiNoComposizione == true) { return; } MyTableModel model1 = (MyTableModel) tblLista1.getModel(); clearTable(model1); Boolean composizionePresente = false; StringBuilder sb = new StringBuilder(); //verifico se sono presenti composizioni for (int i = 0; i < model.getRowCount(); i++) { Object row[] = model.getRow(i); Double p = Double.valueOf(row[4].toString()); model.setValueAt(p, i, colImporto); sb.append(model.getValueAt(i, 3)); sb.append(","); if (Long.parseLong(row[5].toString()) == 0L) { composizionePresente = true; if (gratuitaResidue > 0) {//Gratuita_ResidueProg clearTable(model1); model1.addRow(new Object[]{model.getValueAt(i, 0), 0.00, model.getValueAt(i, 3)}); } else if (flagBonus == 1 && bonusResidui > 0) { clearTable(model1); model1.addRow(new Object[]{model.getValueAt(i, 0), 0.00, model.getValueAt(i, 3)}); } else { clearTable(model1); model1.addRow(new Object[]{model.getValueAt(i, 0), model.getValueAt(i, 1), model.getValueAt(i, 3)}); } model.setValueAt(0.0, i, colImporto); } } doLayout(); if (composizionePresente == false && sb.toString().length() > 0) { //azzero prezzi dei componenti della composizione //23-09-22 for (int i = 0; i < model.getRowCount(); i++) { model.setValueAt(0.00, i, colImporto); } String idVassoio = mySelect("SELECT seleziona_composizione('" + sb.toString().substring(0, sb.toString().length() - 1) + "') " + "as idCompleto from dual", "idCompleto"); if (Long.parseLong(idVassoio) != -1) { String nomeVassoio = mySelect("Select nome from vassoi where id=" + idVassoio, "nome"); String prezzo = mySelect("Select prezzo from tariffe where id_fascia=" + idProfiloTariffario + " " + "and id_prodotto=" + idVassoio, "prezzo"); clearTable(model1); if (gratuitaResidue > 0) {//Gratuita_ResidueProg model1.addRow(new Object[]{nomeVassoio, 0.00, idVassoio}); } else if (flagBonus == 1 && bonusResidui > 0) { model1.addRow(new Object[]{nomeVassoio, 0.00, idVassoio}); } else { model1.addRow(new Object[]{nomeVassoio, prezzo, idVassoio}); } //azzero elemento appena inserito se fa parte di una composizione model.setValueAt(0.00, model.getRowCount() - 1, colImporto); doLayout(); } else { JOptionPane.showMessageDialog(this, "Composizione errata, questo prodotto sarà eliminato!"); jbtnEliminaActionPerformed(null); } // } } if (composizionePresente == true && sb.toString().length() > 0 && model.getRowCount() > 1) { JOptionPane.showMessageDialog(this, "Composizione presente, questo prodotto sarà eliminato!"); jbtnEliminaActionPerformed(null); } } // ======================Com==================================================== // ** Carica i dati di base per la maschera principale // ========================================================================== public void caricaDati(String tipo, String id) { String sql = ""; String azione = ""; String nome = ""; Statement st; ResultSet rs; JToggleButton b; JPanel pnl = this.pnlCategorie; switch (tipo) { case "CATEGORIE" -> { sql = "SELECT distinct c.id, c.nome, c.descrizione FROM categorie_prodotti c " + " INNER JOIN prodotti p ON p.id_categoria = c.ID " + " INNER JOIN catalogo_punti_cassa l ON l.id_prodotto = p.ID " + " INNER JOIN punti_cassa x ON l.id_punto_cassa = x.ID " + " WHERE x.id =" + idPuntoCassa + " order by c.descrizione"; System.out.println(sql); azione = "CATEGORIA"; pnl = this.pnlCategorie; } case "PRODOTTI" -> { sql = "SELECT p.ID, p.nome, NVL (t.prezzo, p.prezzo_base) AS prezzo,NVL (t.punti, 0) AS punti FROM prodotti p , tariffe t, catalogo_punti_cassa c " + " WHERE p.id_categoria = " + id + " AND t.id_prodotto = p.id " + " AND t.id_fascia = " + idProfiloTariffario + " AND c.id_prodotto = p.id AND c.id_punto_cassa =" + idPuntoCassa + " ORDER BY p.flag_catalogo_variabile desc, p.nome"; System.out.println(sql); azione = "PRODOTTO"; pnl = this.pnlProdotti; } } try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = st.executeQuery(sql); if (tipo.equalsIgnoreCase("CATEGORIE")) { int rowcount = 0; while (rs.next()) { rowcount++; } if (rowcount > 0) { numeroCategorie = rowcount; rs.beforeFirst(); pnl.setLayout(new GridLayout(rowcount + 1, 1, 1, 1)); } } pnl.removeAll(); while (rs.next()) { nome = "" + rs.getString("nome") + ""; b = new JToggleButton(nome); b.setEnabled(isCassaAperta); b.setHorizontalAlignment(SwingConstants.CENTER); b.setVerticalAlignment(SwingConstants.CENTER); b.setVerticalTextPosition(SwingConstants.CENTER); b.setText(nome); b.setName(rs.getString("id")); b.setActionCommand(azione + "[" + rs.getString("id") + "]"); b.addActionListener(this); b.setVisible(true); if (tipo.equalsIgnoreCase("CATEGORIE")) { Font f = new Font("Tahoma", Font.BOLD, 14); b.setFont(f); b.setForeground(Color.RED); } pnl.add(b); } if (tipo.equalsIgnoreCase("CATEGORIE")) { JToggleButton bGost = new JToggleButton("[DEFAULT]"); bGost.setName("btnDefault"); Font f = new Font("Tahoma", Font.BOLD, 14); bGost.setFont(f); bGost.setForeground(Color.RED); bGost.setActionCommand("CATEGORIA[0]"); bGost.addActionListener(this); bGost.setVisible(false); pnl.add(bGost); } this.revalidate(); this.repaint(); rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { } } public void caricaPannello() { String azione = "PRODOTTO"; String where = ""; Statement st; ResultSet rs; String sql = "select * from (SELECT p.ID, p.nome, NVL (t.prezzo, p.prezzo_base) AS prezzo,NVL (t.punti, 0) AS punti,cat.nome as Categoria "; String sql2 = " FROM prodotti p , tariffe t, catalogo_punti_cassa c,categorie_prodotti cat " + " WHERE p.flag_catalogo_variabile = 1" + " AND p.id_categoria = cat.id " + " AND t.id_prodotto = p.id " + " AND t.id_fascia = " + idProfiloTariffario + " AND c.id_prodotto = p.id AND c.id_punto_cassa =" + idPuntoCassa; MyApplication myApp = new MyApplication(); String nrec = myApp.mySelect(this, "SELECT count(*) as nrec " + sql2, "nrec"); if (Integer.parseInt(nrec) <= 0) { menuGiornoPresente = false; String idComposizione = myApp.mySelect(this, "select id from Categorie_Prodotti where Upper(Nome)='COMPOSIZIONE'", "id"); caricaDati("PRODOTTI", idComposizione); } else { menuGiornoPresente = true; sql = sql + sql2; } JPanel pnl = this.pnlProdotti; pnl.setLayout(new GridLayout(6, 5, 1, 1)); pnl.removeAll(); for (Integer r = 0; r < 6; r++) { Color c2 = new Color(255, 153, 255); switch (r) { case 0 -> where = " and upper(cat.CODICE)='PRIM' "; case 1 -> { where = " and upper(cat.CODICE)='SECO' "; c2 = Color.CYAN; } case 2 -> { where = " and upper(cat.CODICE)='CONT' "; c2 = new Color(146, 208, 80); } case 3 -> { where = " and upper(cat.CODICE)='DESS' "; c2 = Color.yellow; } case 4 -> { where = " and (upper(cat.CODICE)='INSA' OR upper(cat.CODICE)='UNI' OR upper(cat.CODICE)='UNR2') "; c2 = Color.GREEN; } case 5 -> { where = " and (upper(cat.CODICE)='SALA' OR upper(cat.CODICE)='PIZZ') "; c2 = new Color(255, 217, 102); } } Integer np = 0; try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = st.executeQuery(sql + where + " order by p.id) where ROWNUM <= 7"); Font f = new Font("Tahoma", Font.BOLD, 13); String jolly = ""; String idJolly = ""; while (rs.next()) { if (rs.getString("nome").toUpperCase().indexOf("JOLLY") >= 0) { jolly = "" + rs.getString("nome") + ""; idJolly = rs.getString("id"); } else { String nome = "" + rs.getString("nome") + ""; JToggleButton bt = new JToggleButton(nome); bt.setBackground(c2); bt.setEnabled(isCassaAperta); bt.setFont(f); Insets ins = new Insets(0, 0, 0, 0); bt.setMargin(ins); bt.setHorizontalAlignment(SwingConstants.LEFT); bt.setVerticalAlignment(SwingConstants.TOP); bt.setVerticalTextPosition(SwingConstants.TOP); bt.setName(rs.getString("id")); bt.setActionCommand(azione + "[" + rs.getString("id") + "]"); bt.addActionListener(this); bt.setVisible(true); pnl.add(bt); np++; if (np == 5) { break; } } } for (Integer c = np; c < 6; c++) { JToggleButton bt; if (c == 5 && jolly.length() > 1) { bt = new JToggleButton(jolly); bt.setName(idJolly); bt.setActionCommand(azione + "[" + idJolly + "]"); } else { bt = new JToggleButton(""); bt.setName("0"); bt.setActionCommand(azione + "[0]"); } bt.setBackground(c2); bt.setFont(f); bt.setEnabled(isCassaAperta); Insets ins = new Insets(0, 0, 0, 0); bt.setMargin(ins); bt.setHorizontalAlignment(SwingConstants.LEFT); bt.setVerticalAlignment(SwingConstants.TOP); bt.setVerticalTextPosition(SwingConstants.TOP); bt.addActionListener(this); bt.setVisible(true); pnl.add(bt); } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { LogManager.getLogger(PuntoCassa.class).error(e); } } this.revalidate(); this.repaint(); } private void caricaModiPagamento() { try { Statement st; ResultSet rs; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(); rs = st.executeQuery("Select * from Tipi_Pagamenti order by id"); while (rs.next()) { modiPagamento.append(rs.getString("id")).append(';').append(rs.getString("nome")).append("|"); } this.revalidate(); this.repaint(); rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { LogManager.getLogger(PuntoCassa.class).error(e); } } // ========================================================================== // ** Quando viene chiusa la form esce dall'applicazione // ========================================================================== private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Confermi chiusura programma?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]); if (Integer.parseInt(selectedValue.toString()) == 0) { myInsert("UPDATE PARAMETRI set valore='NO' where chiave='FlagDownloadInCorso'"); Long nrec = mySelectInteger("SELECT count(*) as nrec FROM acquisti", "nrec"); if (nrec > 0) { if (JOptionPane.showConfirmDialog(null, "Attenzione, ci sono " + nrec + " passaggi non ancora trasferiti al database centrale,\nconferma chiusura programma?", "Acquisti", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { statoAttivoNonLoggato(); System.exit(0); } else { return; } } statoAttivoNonLoggato(); System.exit(0); } }//GEN-LAST:event_exitForm // ========================================================================== // ** Click sul btnLogin // ========================================================================== private Boolean turno() { Boolean ok = false; String query = "select t.dalle, t.alle, t.id, t.nome from turni t, turni_punti_distribuzione x, punti_distribuzione p, punti_cassa c " + "where x.id_turno = t.id " + "and x.id_punto_distribuzione = p.id " + "and c.id_punto_distribuzione = p.id and c.id =" + idPuntoCassa; try { String[] nowString = mySelect("Select sysdate as mo from dual", "mo").split(" "); Statement st; ResultSet rs; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(); rs = st.executeQuery(query); while (rs.next()) { String dalle = rs.getString("dalle"); String alle = rs.getString("alle"); try { Date now = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(nowString[0] + " " + nowString[1]); Date da = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(nowString[0] + " " + dalle); Date a = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(nowString[0] + " " + alle); if (now.after(da) && now.before(a)) { idTurno = rs.getLong("id"); nomeTurno = rs.getString("nome"); idTurnoAttuale = idTurno; nomeTurnoAttuale = nomeTurno; ok = true; break; } } catch (Exception e) { LogManager.getLogger(PuntoCassa.class).error(e); } } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(this, "Errore DB ['" + query + "']"); } return ok; } private void turnoAttuale() { String query = "select t.dalle, t.alle, t.id, t.nome from turni t, turni_punti_distribuzione x, punti_distribuzione p, punti_cassa c " + "where x.id_turno = t.id and x.id_punto_distribuzione = p.id " + "and c.id_punto_distribuzione = p.id and c.id =" + idPuntoCassa; try { String[] mo = mySelect("Select sysdate as mo from dual", "mo").split(" "); Statement st; ResultSet rs; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); st = dbConnection.createStatement(); rs = st.executeQuery(query); while (rs.next()) { String dalle = rs.getString("dalle"); String alle = rs.getString("alle"); try { Date adesso = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(mo[0] + " " + mo[1]); Date da = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(mo[0] + " " + dalle); Date a = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(mo[0] + " " + alle); //JOptionPane.showMessageDialog(this, da + " e " + now.compareTo(a)); if (adesso.after(da) && adesso.before(a)) { idTurnoAttuale = rs.getLong("id"); nomeTurnoAttuale = rs.getString("nome"); break; } } catch (Exception e) { LogManager.getLogger(PuntoCassa.class).error(e); } } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(this, "Errore DB ['" + query + "']"); } } private void impostaAmbiente() { // ----------------------------------------------------------- // ** id punto cassa // ----------------------------------------------------------- idPuntoCassa = mySelectInteger("select Punti_Cassa.id as idPC from Punti_Cassa where Punti_Cassa.id=" + idPuntoCassa, "idPC"); // ----------------------------------------------------------- // ** Imposta l'ambiente // ----------------------------------------------------------- txtUsername.setEnabled(false); txtPassword.setEnabled(false); btnLogin.setEnabled(false); addRemoveKeyDispatcher(true); aggiungiImmaginiPulsanti(); if (jChLogin.isSelected() == false && utenteLoggato.length() <= 0) { utenteLoggato = txtUsername.getText(); } lblUtenteLoggato.setText("LogIn: [" + utenteLoggato + "]"); this.resize(); this.caricaDati("CATEGORIE", "0"); pnlErrore.setVisible(false); pnlLogin.setVisible(false); pnlTop.setVisible(true); pnlProdotti.setVisible(true); jBtnStorno.setEnabled(false); jBtnAsporto.setEnabled(false); jbtnSu.setEnabled(false); jbtnGiu.setEnabled(false); jbtnElimina.setEnabled(false); jbtnAnnulla.setEnabled(false); jbtnDuplica.setEnabled(false); String pulsante = mySelect("SELECT p.flag_imposta_tessera as Pulsante " + "FROM punti_distribuzione p, punti_cassa c " + "WHERE c.id_punto_distribuzione = p.id AND c.id =" + idPuntoCassa, "Pulsante"); if (Integer.parseInt(pulsante) == 1) { bottoneImposta = true; btnImpostaCliente.setVisible(true); btnImpostaCliente.setEnabled(true); jTxtTessera.setEnabled(true); } else { bottoneImposta = false; btnImpostaCliente.setEnabled(false); jTxtTessera.setEnabled(false); } if (idPuntoCassa != 0) { aggiornaProgressivi(); if (btnImpostaCliente.isVisible()) { btnImpostaCliente.setEnabled(false); } jBtnprodotti.setEnabled(false); meteo(); if (btnImpostaCliente.isVisible()) { btnImpostaCliente.setEnabled(bottoneImposta); } jBtnprodotti.setEnabled(true); jbtnDuplica.setText("Duplica
Prodotto"); jbtnElimina.setText("Elimina
Prodotto"); caricaModiPagamento(); verificaModoPagamento(); pulsantiModoPagamento(); //modifica 09-5-2018------------------------------------ if (flagPrecaricaLista) { abilitaPulsanti(pnlCategorie, true, true); abilitaPulsanti(pnlProdotti, true, true); idProfiloTariffarioDefault = mySelectInteger("select Valore from Parametri where upper(chiave)='IDFASCIADEFAULT'", "Valore"); System.out.print("" + idProfiloTariffarioDefault); apriCassaDefault(); } } else { JOptionPane.showMessageDialog(this, "ID Punto Cassa non configurato!"); } } private void verificaDB() { final Timer timer = new Timer(); final TimerTask task = new TimerTask() { @Override public void run() { Long res = mySelectInteger("SELECT db_remoto_connesso as Stato FROM dual", "Stato"); if (res == 1) { lblDB.setBackground(Color.green); } else { lblDB.setBackground(Color.red); } lblDB.setOpaque(true); lblDB.repaint(); } }; timer.schedule(task, 1000, 10000); } public void aggiornaProgressivi() { // ----------------------------------------------------------- // ** progressivo assoluto scontrino // ----------------------------------------------------------- String prog = mySelect("select nvl(max(prog_assoluto),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa, "Prog"); // if(progressivo < Long.parseLong(prog)){ progressivo = Long.valueOf(prog); // } // ----------------------------------------------------------- // ** progressivo giorno turno scontrino // ----------------------------------------------------------- Date now = new Date(); String progT = mySelect("select nvl(max(prog_turno),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and id_Turno=" + idTurno + " and data=" + formattaData(now), "Prog"); progressivoTurno = Long.valueOf(progT); String progG = mySelect("select nvl(max(prog_giorno),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and data=" + formattaData(now), "Prog"); progressivoGiorno = Long.valueOf(progG); String controlloTurno = mySelect("select count(*) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and data=" + formattaData(now) + " and id_Turno=" + idTurno, "Prog"); if (Long.parseLong(controlloTurno) <= 0) { myInsert("Insert into Progressivi (data,id_Punto_cassa,id_Turno,prog_assoluto,prog_giorno,prog_turno) " + " values (" + formattaData(now) + "," + idPuntoCassa + "," + idTurno + "," + progressivo + "," + progressivoGiorno + ",0)"); } // ----------------------------------------------------------- // ** incassi turno pagamento a scalare // ----------------------------------------------------------- String progPS = mySelect("select nvl(sum(incasso_turno_scalare),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and id_Turno=" + idTurno + " and data=" + formattaData(now), "Prog"); progressivoScalare = Double.valueOf(progPS); // ----------------------------------------------------------- // ** incassi turno pagamento a contanti // ----------------------------------------------------------- String progPC = mySelect("select nvl(sum(incasso_turno_contanti),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and id_Turno=" + idTurno + " and data=" + formattaData(now), "Prog"); progressivoContanti = Double.valueOf(progPC); // ----------------------------------------------------------- // ** incassi turno pagamento ticket // ----------------------------------------------------------- String progPT = mySelect("select nvl(sum(incasso_turno_ticket),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and id_Turno=" + idTurno + " and data=" + formattaData(now), "Prog"); progressivoTicket = Double.valueOf(progPT); // ----------------------------------------------------------- // ** incassi turno pagamento differito // ----------------------------------------------------------- String progDI = mySelect("select nvl(sum(incasso_turno_differito),0) as Prog from Progressivi where id_Punto_cassa=" + idPuntoCassa + " and id_Turno=" + idTurno + " and data=" + formattaData(now), "Prog"); progressivoDifferito = Double.valueOf(progDI); aggiornaLabelInfo(); if (cercaTestoModoPagamento().equalsIgnoreCase("A scalare") && jTxtTessera.getText().length() > 0) { verificaSaldo(jTxtTessera.getText()); } } private void aggiornaLabelInfo() { Long prog = progressivo;// - 1; Long progGG = progressivoGiorno;// - 1; Long progTurno = progressivoTurno;// - 1; if (progressivo <= 0) { prog = 0L; } if (progressivoGiorno <= 0) { progGG = 0L; } if (progressivoTurno <= 0) { progTurno = 0L; } lblInfo.setText("Passaggi: Tot. [" + prog + "], giorno [" + progGG + "], turno [" + progTurno + "]"); DecimalFormat df2 = new DecimalFormat("#,###,###,##0.00"); lblInfo2.setText("Incassi [" + nomeTurno + "]: Tot. [" + df2.format(progressivoScalare + progressivoContanti + progressivoTicket + progressivoDifferito) + "] SC [" + df2.format(progressivoScalare) + "], CO [" + df2.format(progressivoContanti) + "], TI [" + df2.format(progressivoTicket) + "], DI [" + df2.format(progressivoDifferito) + "]"); } public void addRemoveKeyDispatcher(Boolean aggiungi) { if (aggiungi) { if (keyDespatcherAttivo == false) { KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyDispatcher); keyDespatcherAttivo = true; } } else { KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(keyDispatcher); keyDespatcherAttivo = false; } } private void meteo() { String spia = mySelect("select controlla_meteo(" + idPuntoCassa + ") as res from dual", "res"); if (Integer.parseInt(spia) == 1) { if (myMeteoForm == null) { myMeteoForm = new FrmMeteo(this, idPuntoCassa, true); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(300, largControlli); Integer h = calcolaLarghezzaAltezza(70, altControlli); myMeteoForm.setSize(w, h); myMeteoForm.setLocationRelativeTo(null); myMeteoForm.setVisible(true); } } } private void resizeRules(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_resizeRules resize(); }//GEN-LAST:event_resizeRules private void jbtnSuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnSuActionPerformed // TODO add your handling code here: if (tblLista.getSelectedRow() > 0) { tblLista.setRowSelectionInterval(tblLista.getSelectedRow() - 1, tblLista.getSelectedRow() - 1); tblLista.scrollRectToVisible(new Rectangle(tblLista.getCellRect(tblLista.getSelectedRow(), 0, true))); } }//GEN-LAST:event_jbtnSuActionPerformed private void jbtnDuplicaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnDuplicaActionPerformed // TODO add your handling code here: if (tblLista.getSelectedRow() >= 0) { MyTableModel model = (MyTableModel) tblLista.getModel(); Object row[] = model.getRow(tblLista.getSelectedRow()); Boolean isComposizione = false; if (Long.parseLong(row[5].toString()) == 0L) { isComposizione = true; } if (isComposizione) { JOptionPane.showOptionDialog(this, "Composizione già presente!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); } else { model.addRow(row); tblLista.setRowSelectionInterval(model.getRowCount() - 1, model.getRowCount() - 1); tblLista.setModel(model); controllaCompleti(model); controllaExtra(model); sommaColonne(model); } } }//GEN-LAST:event_jbtnDuplicaActionPerformed private void jbtnGiuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnGiuActionPerformed // TODO add your handling code here: if (tblLista.getSelectedRow() < tblLista.getRowCount() - 1) { tblLista.setRowSelectionInterval(tblLista.getSelectedRow() + 1, tblLista.getSelectedRow() + 1); tblLista.scrollRectToVisible(new Rectangle(tblLista.getCellRect(tblLista.getSelectedRow(), 0, true))); } }//GEN-LAST:event_jbtnGiuActionPerformed private void jbtnStampaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnStampaActionPerformed Boolean ok = myInsert("UPDATE PARAMETRI set valore='NO' where chiave='FlagDownloadInCorso'"); if (ok) { JOptionPane.showOptionDialog(this, "Operazione correttamente eseguita.", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); } else { JOptionPane.showOptionDialog(this, "Errore nell'aggiornamento del parametro!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); } }//GEN-LAST:event_jbtnStampaActionPerformed private void cancellaComposizioni() { try { MyTableModel model1 = (MyTableModel) tblLista1.getModel(); clearTable(model1); } catch (Exception e) { } } private void jbtnEliminaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnEliminaActionPerformed cancellaComposizioni(); MyTableModel model = (MyTableModel) tblLista.getModel(); Integer riga = tblLista.getSelectedRow(); if (riga >= 0) { model.deleteRow(riga); //ripristino i prezzi for (Integer i = 0; i < model.getRowCount(); i++) { model.setValueAt(model.getValueAt(i, colImporto2), i, colImporto); } //doLayout(); if (tblLista.getRowCount() > 0) { if (riga > 0) { tblLista.setRowSelectionInterval(riga - 1, riga - 1); } else { tblLista.setRowSelectionInterval(0, 0); } } controllaCompleti(model); controllaExtra(model); sommaColonne(model); //spengo altri togglebutton for (Integer y = 0; y < this.pnlProdotti.getComponentCount(); y++) { JToggleButton bt = (JToggleButton) this.pnlProdotti.getComponent(y); bt.setSelected(false); } if (model.getRowCount() <= 0) { jbtnSu.setEnabled(false); jbtnGiu.setEnabled(false); jbtnElimina.setEnabled(false); jbtnAnnulla.setEnabled(false); jbtnDuplica.setEnabled(false); } doLayout(); } }//GEN-LAST:event_jbtnEliminaActionPerformed private void jbtnChiudiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnChiudiActionPerformed if (verificaPrenotazioni()) { chiudi(); } }//GEN-LAST:event_jbtnChiudiActionPerformed private boolean verificaPrenotazioni() { boolean ok = true; if (idTessera > 0L && idPrenotazione > 0L) { MyTableModel model = (MyTableModel) tblLista.getModel(); StringBuilder elencoIdProdotti = new StringBuilder(); for (int i = model.getRowCount() - 1; i >= 0; i--) { Long idCateg = Long.valueOf(model.getValueAt(i, colCategoria).toString()); if (idCateg != 0L) { elencoIdProdotti.append(model.getValueAt(i, colIDProdotto)); elencoIdProdotti.append(","); } } ok = controllaDiscrepanzePrenotazioni(elencoIdProdotti.toString()); aggiornaPrenotazioni(elencoIdProdotti.toString()); } return ok; } private String getNumeroTessera() { MyApplication myApp = new MyApplication(); String nTessera = ""; try { myApp.idTesseraA = ""; String[] listReader; listReader = myApp.smartCard.listReaders(); myApp.smartCard.setReader(listReader[0]); myApp.smartCard.connect("T=1"); myApp.smartCard.getCurrentCardATR(); String nTess = ""; myApp.sendAPDU(this, "d000", "00", "A4", "00", "00", "02", ""); myApp.sendAPDU(this, "d100", "00", "A4", "00", "00", "02", ""); myApp.sendAPDU(this, "d101", "00", "A4", "00", "00", "02", ""); String[] CF = myApp.sendAPDU(this, "", "00", "B0", "00", "00", "00", "140").split("\\|"); myApp.sendAPDU(this, "3f00", "00", "A4", "00", "00", "02", ""); myApp.sendAPDU(this, "1000", "00", "A4", "00", "00", "02", ""); myApp.sendAPDU(this, "1003", "00", "A4", "00", "00", "02", ""); nTess = myApp.sendAPDU(this, "", "00", "B0", "00", "00", "00", "14"); myApp.smartCard.disconnect(); if (CF.length > 1) { nTessera = nTess; } } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Card Reader non collegato o errore di lettura!", "jBtnReadCardActionPerformed", JOptionPane.ERROR_MESSAGE); } finally { return nTessera; } } private void formWindowDeiconified(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeiconified // TODO add your handling code here: resize(); }//GEN-LAST:event_formWindowDeiconified private void tastiera2(java.awt.event.MouseEvent evt) { MyApplication myApp = new MyApplication(); if (jChLogin.isSelected() == false) { if (myApp.tastieraVideo) { if (myApp.ultimoTxt.equalsIgnoreCase(evt.getComponent().toString())) { myApp.ultimoTxt = " "; } else { myApp.ultimoTxt = evt.getComponent().toString(); Rectangle pnl = pnlLogin.getBounds(); tastiera((JTextField) evt.getComponent(), pnl.x, pnl.y); } } } } private void tastiera2(java.awt.event.FocusEvent evt) { MyApplication myApp = new MyApplication(); if (jChLogin.isSelected() == false) { if (myApp.tastieraVideo) { if (myApp.ultimoTxt.equalsIgnoreCase(evt.getComponent().toString())) { myApp.ultimoTxt = " "; } else { myApp.ultimoTxt = evt.getComponent().toString(); Rectangle pnl = pnlLogin.getBounds(); tastiera((JTextField) evt.getComponent(), pnl.x, pnl.y); } } } } private void jbtnEsciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnEsciActionPerformed Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Confermi chiusura sessione?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (Integer.parseInt(selectedValue.toString()) == 0) { pnlErrore.setVisible(false); pnlLogin.setVisible(true); pnlTop.setVisible(false); pnlProdotti.setVisible(false); utenteLoggato = ""; idAccount = 0L; lblUtenteLoggato.setText("[Nessun Utente Connesso]"); lblInfo.setText("[Info Turno]"); lblInfo2.setText("[Info Incassi]"); txtPassword.setEnabled(true); txtUsername.setEnabled(true); btnLogin.setEnabled(true); pnlCategorie.removeAll(); pnlProdotti.removeAll(); addRemoveKeyDispatcher(false); jChLoginActionPerformed(null); azzera(); statoAttivoNonLoggato(); } }//GEN-LAST:event_jbtnEsciActionPerformed private void jBtnStornoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnStornoActionPerformed apriStorno(false); }//GEN-LAST:event_jBtnStornoActionPerformed private void apriStorno(Boolean daPassaggi) { FrmStorno jFrameStorno = new FrmStorno(this, idTessera, idPuntoCassa, imgPath, daPassaggi); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(550, largControlli); Integer h = calcolaLarghezzaAltezza(250, altControlli); jFrameStorno.setSize(w, h); jFrameStorno.setLocationRelativeTo(null); jFrameStorno.setVisible(true); } private void jBtnprodottiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnprodottiActionPerformed FrmProdotti jFrameProdotti = new FrmProdotti(this, imgPath); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(550, largControlli); Integer h = calcolaLarghezzaAltezza(250, altControlli); jFrameProdotti.setSize(w, h); jFrameProdotti.setLocationRelativeTo(null); jFrameProdotti.setVisible(true); }//GEN-LAST:event_jBtnprodottiActionPerformed private void selezionaTipoPagamento(int idTipo) { String tipo = setModoPagamento(idTipo); lblTipoPagamento.setText(tipo); if (tipo.equalsIgnoreCase("A scalare") && jTxtTessera.getText().length() > 0) { verificaSaldo(jTxtTessera.getText()); } } public void clickModoPagamento(String ModoPagamento) { if (isCassaAperta == false) { isCassaAperta = true; idProfiloTariffario = 0L; idTessera = 0L; } lblResiduo.setText("[...]"); lblSaldo.setText("[...]"); lblTipoPagamento.setText(ModoPagamento); } public void clickCarta() { if (saldoAcquisti(0.0) == false && consentiCredito == false) { JOptionPane.showOptionDialog(this, "Saldo tessera insufficiente!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); return; } if (isCassaAperta == true) { lblResiduo.setText("[...]"); setModoPagamento("A scalare"); String tipo = cercaTestoModoPagamento(); lblTipoPagamento.setText(tipo); } } private void aggiornaDB(Boolean messaggio) { try { Boolean aggiorna = false; if (messaggio) { Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Confermi aggiornamento del database locale?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (Integer.parseInt(selectedValue.toString()) != 0) { return; } else { aggiorna = true; } } else { aggiorna = true; } if (aggiorna) { myProgressForm = new FrmProgress(this); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(300, largControlli); Integer h = calcolaLarghezzaAltezza(100, altControlli); myProgressForm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); myProgressForm.setResizable(false); myProgressForm.setTitle("Aggiornamento Database..."); myProgressForm.setSize(w, h); myProgressForm.setLocationRelativeTo(null); myProgressForm.setVisible(true); myProgressForm.repaint(); EventQueue.invokeLater(new Runnable() { @Override public void run() { try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); String plsql = "begin lancia_aggiorna_tabelle('S'); end;"; CallableStatement st = dbConnection.prepareCall(plsql); st.execute(); st.close(); dbConnection.close(); PuntoCassa.this.myProgressForm.dispose(); //12/09/2016 if (PuntoCassa.this.pnlLogin.isVisible() == false) { //23-12-15 PuntoCassa.this.impostaAmbiente(); PuntoCassa.this.setEnabled(true); } String esito = mySelect("SELECT esito FROM esiti where id = (select max(id) from esiti)", "esito"); JOptionPane.showOptionDialog(PuntoCassa.this, esito, "Aggiornamento Database", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); } catch (Exception e) { JOptionPane.showMessageDialog(PuntoCassa.this, "Errore " + e.getMessage()); } } }); } } catch (Exception e) { JOptionPane.showMessageDialog(this, "Errore " + e.getMessage()); } } private void txtTotaleCassaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtTotaleCassaActionPerformed // TODO add your handling code here: }//GEN-LAST:event_txtTotaleCassaActionPerformed private void jBtnReadCardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnReadCardActionPerformed // TODO add your handling code here: jTxtTessera.setText(""); String nTessera = getNumeroTessera(); jTxtTessera.setText(nTessera); }//GEN-LAST:event_jBtnReadCardActionPerformed private void jTxtTesseraFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTxtTesseraFocusGained MyApplication myApp = new MyApplication(); if (myApp.tastieraVideo) { if (myApp.ultimoTxt.equalsIgnoreCase(evt.getComponent().toString())) { myApp.ultimoTxt = " "; } else { myApp.ultimoTxt = evt.getComponent().toString(); Rectangle pnl = pnlLogin.getBounds(); tastiera((JTextField) evt.getComponent(), pnl.x, pnl.y); } } }//GEN-LAST:event_jTxtTesseraFocusGained private void btnImpostaClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImpostaClienteActionPerformed FrmCerca jFrameCerca = new FrmCerca(this, jTxtTessera, imgPath, "", flagMostraDataDiNascita); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(650, largControlli); Integer h = calcolaLarghezzaAltezza(250, altControlli); jFrameCerca.setSize(w, h); jFrameCerca.setLocationRelativeTo(null); jFrameCerca.setVisible(true); }//GEN-LAST:event_btnImpostaClienteActionPerformed private void jbtnAnnullaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnAnnullaActionPerformed MyTableModel model = (MyTableModel) tblLista.getModel(); if (model.getRowCount() > 0) { Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Desideri annullare tutte le righe?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (Integer.parseInt(selectedValue.toString()) == 0) { annulla(); doLayout(); } } }//GEN-LAST:event_jbtnAnnullaActionPerformed private void annulla() { try { MyTableModel model = (MyTableModel) tblLista.getModel(); MyTableModel model1 = (MyTableModel) tblLista1.getModel(); clearTable(model); clearTable(model1); jbtnSu.setEnabled(false); jbtnGiu.setEnabled(false); jbtnElimina.setEnabled(false); jbtnAnnulla.setEnabled(false); jbtnDuplica.setEnabled(false); sommaColonne(model); if (idTessera == 0L) { jbtnChiudi.setEnabled(false); } else { jbtnChiudi.setEnabled(true); } //spengo altri togglebutton for (Integer y = 0; y < this.pnlProdotti.getComponentCount(); y++) { JToggleButton bt = (JToggleButton) this.pnlProdotti.getComponent(y); bt.setSelected(false); } } catch (Exception e) { LogManager.getLogger(PuntoCassa.class).error(e); } } private void jBtnAsportoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnAsportoActionPerformed if (jBtnAsporto.isSelected()) { aggiungImmagini(jBtnAsporto, "da asporto.jpg", 50, 50); } else { aggiungImmagini(jBtnAsporto, "coltello e forchetta.jpg", 50, 50); } }//GEN-LAST:event_jBtnAsportoActionPerformed private void txtTotalePuntiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtTotalePuntiActionPerformed // TODO add your handling code here: }//GEN-LAST:event_txtTotalePuntiActionPerformed private void jBtnMovimentiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnMovimentiActionPerformed FrmMovimenti jFrameMovimenti = new FrmMovimenti(this, idTessera, idPuntoCassa, imgPath); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(680, largControlli); Integer h = calcolaLarghezzaAltezza(250, altControlli); jFrameMovimenti.setSize(w, h); jFrameMovimenti.setLocationRelativeTo(null); jFrameMovimenti.setVisible(true); }//GEN-LAST:event_jBtnMovimentiActionPerformed private void jBtnBuoniActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnBuoniActionPerformed FrmCerca jFrameCerca = new FrmCerca(this, jTxtTessera, imgPath, "BP", flagMostraDataDiNascita); this.setEnabled(false); Integer w = calcolaLarghezzaAltezza(650, largControlli); Integer h = calcolaLarghezzaAltezza(250, altControlli); jFrameCerca.setSize(w, h); jFrameCerca.setLocationRelativeTo(null); jFrameCerca.setVisible(true); }//GEN-LAST:event_jBtnBuoniActionPerformed private void jBtnDB1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnDB1ActionPerformed // TODO add your handling code here: aggiornaDB(true); }//GEN-LAST:event_jBtnDB1ActionPerformed private void jChLoginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jChLoginActionPerformed // TODO add your handling code here: txtUsername.setEnabled(!jChLogin.isSelected()); txtPassword.setEnabled(!jChLogin.isSelected()); btnLogin.setEnabled(!jChLogin.isSelected()); addRemoveKeyDispatcher(jChLogin.isSelected()); }//GEN-LAST:event_jChLoginActionPerformed private void btnTerminaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTerminaActionPerformed // TODO add your handling code here: exitForm(null); }//GEN-LAST:event_btnTerminaActionPerformed private void txtPasswordMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txtPasswordMouseClicked tastiera2(evt); }//GEN-LAST:event_txtPasswordMouseClicked private void txtPasswordFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPasswordFocusGained tastiera2(evt); }//GEN-LAST:event_txtPasswordFocusGained private void txtUsernameMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txtUsernameMouseClicked tastiera2(evt); }//GEN-LAST:event_txtUsernameMouseClicked private void txtUsernameFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtUsernameFocusGained tastiera2(evt); }//GEN-LAST:event_txtUsernameFocusGained private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLoginActionPerformed if (turno()) { String sql, pwd; int counter; //int hash = 0; //Statement st; //ResultSet rs; //pwd = new String(); //sql = new String(); // ======================================================================= // *** Verifica la correttezza delle credenziali inserite - Account // ======================================================================= sql = "SELECT count(*) as counter FROM accounts WHERE username = '" + this.txtUsername.getText() + "'"; MyApplication myApp = new MyApplication(); counter = Integer.parseInt(myApp.mySelect(this, sql, "Counter")); // ==================================================================== // ** Verifica la password // ==================================================================== if (counter == 1) { //Encoding en = new Encoding(); pwd = new String(txtPassword.getPassword()); sql = "SELECT id || '|' || id_Stato as res FROM accounts WHERE username = '" + this.txtUsername.getText() + "' " + "and password = '" + Encoding.encodeString(pwd) + "'"; String[] el = myApp.mySelect(this, sql, "res").split("\\|"); if (myApp.isNumeric(el[0])) { idAccount = Long.valueOf(el[0]); if (Integer.parseInt(el[1]) == 2) { String messaggio = myApp.mySelect(this, "Select Descrizione from Stati_Accounts where id=" + el[1], "descrizione"); JOptionPane.showMessageDialog(this, messaggio + "."); return; } } else { idAccount = 0L; } if (idAccount > 0L) { sql = "SELECT count(*) as Counter FROM profili p WHERE p.id_account = " + idAccount + " AND p.id_ruolo IN (3, 10000000004)"; counter = Integer.parseInt(myApp.mySelect(this, sql, "Counter")); if (counter > 0) { impostaAmbiente(); txtUsername.setText(""); txtPassword.setText(""); statoAttivoLoggato(); verificaAggiornamentoDB(); } else { JOptionPane.showMessageDialog(this, "L'utente non dispone dei privilegi per l'utilizzo del modulo cassa."); } } else { JOptionPane.showMessageDialog(this, "Password errata."); } // -------------------------------------------------------------- // *** Errore SQL in verifica password // -------------------------------------------------------------- // ================================================================= // ** Caso account sconosciuto // ================================================================= } else { JOptionPane.showMessageDialog(this, "Account sconosciuto."); } } else { JOptionPane.showMessageDialog(this, "Impossibile eseguire il Login al sistema:\nNessun Turno Attivo!"); } }//GEN-LAST:event_btnLoginActionPerformed //a scalare private void jTBP0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTBP0ActionPerformed if (jTBP0.isSelected()) { try { jTBP0.setEnabled(false); jTBP1.setSelected(false); jTBP1.setEnabled(true); jTBP2.setSelected(false); jTBP2.setEnabled(true); jTBP3.setSelected(false); jTBP3.setEnabled(true); selezionaTipoPagamento(0); MyTableModel modelX = (MyTableModel) tblLista.getModel(); sommaColonne(modelX); } catch (Exception ex) { LogManager.getLogger(PuntoCassa.class).error(ex); } } }//GEN-LAST:event_jTBP0ActionPerformed //contanti private void jTBP1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTBP1ActionPerformed if (jTBP1.isSelected()) { jTBP1.setEnabled(false); jTBP0.setSelected(false); jTBP0.setEnabled(true); jTBP2.setSelected(false); jTBP2.setEnabled(true); jTBP3.setSelected(false); jTBP3.setEnabled(true); selezionaTipoPagamento(1); } }//GEN-LAST:event_jTBP1ActionPerformed //ticket private void jTBP2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTBP2ActionPerformed if (jTBP2.isSelected()) { jTBP2.setEnabled(false); jTBP1.setSelected(false); jTBP1.setEnabled(true); jTBP0.setSelected(false); jTBP0.setEnabled(true); jTBP3.setSelected(false); jTBP3.setEnabled(true); selezionaTipoPagamento(2); } }//GEN-LAST:event_jTBP2ActionPerformed //differito private void jTBP3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTBP3ActionPerformed if (jTBP3.isSelected()) { jTBP3.setEnabled(false); jTBP1.setSelected(false); jTBP1.setEnabled(true); jTBP2.setSelected(false); jTBP2.setEnabled(true); jTBP0.setSelected(false); jTBP0.setEnabled(true); selezionaTipoPagamento(3); } }//GEN-LAST:event_jTBP3ActionPerformed private void tastiera(JTextField jTxt, Integer MyX, Integer MyY) { MyKeyBoard keyboard = new MyKeyBoard(this, false); keyboard.txt = jTxt; keyboard.parent = this; Rectangle s = this.getBounds(); Rectangle s2 = jTxt.getBounds(); Integer l = s.x + s2.x + MyX; if (l + 800 > s.x + s.width) { l = s.x + s.width - 800; } keyboard.setBounds(l, s.y + s2.y + 60 + MyY, 800, 300); keyboard.setVisible(true); } private Boolean verificaSaldo(String numeroTessera) { Boolean OK = false; //andare su viewtessere String querySaldo = "select t.saldo || '|' || cf.saldo_minimo_alert || '|' || cf.saldo_minimo_stop || '|' || t.punti || '|' as saldi " + " from tessere t, utenti u, categorie_utenti c, categorie_utenti_fasce cf" + " where t.numero = '" + numeroTessera + "' and t.id_utente = u.id" + " and u.id_categoria = c.id and cf.id_categoria_utenti = c.id"; String[] saldoMinimo = mySelect(querySaldo, "saldi").split("\\|"); Double saldo = 0.0; if (saldoMinimo.length > 0 && saldoMinimo[0].length() > 0) { saldo = Double.valueOf(saldoMinimo[0].replace(",", ".")); } Double saldoAlert = 0.0; if (saldoMinimo.length > 1 && saldoMinimo[1].length() > 0) { saldoAlert = Double.valueOf(saldoMinimo[1].replace(",", ".")); } Double saldoStop = 0.0; if (saldoMinimo.length > 2 && saldoMinimo[2].length() > 0) { saldoStop = Double.valueOf(saldoMinimo[2].replace(",", ".")); } saldoMinimoStop = saldoStop; String punti = ""; if (saldoMinimo.length >= 4) { punti = saldoMinimo[3]; } DecimalFormat df2 = new DecimalFormat("#,###,###,##0.00"); lblSaldo.setText("? " + df2.format(saldo)); //24-01-2020-------------------------- MyTableModel model = (MyTableModel) tblLista.getModel(); Double t = model.somma(colImporto); MyTableModel model2 = (MyTableModel) tblLista1.getModel(); if (model2.getRowCount() > 0) { t = t + model2.somma(1); } //--------------------------- lblResiduo.setText("? " + df2.format(saldo - t)); lblPunti.setText(punti); String tipo = cercaTestoModoPagamento(); lblTipoPagamento.setText(tipo); //21/12/2016 if (gratuitaResidue <= 0) {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< if (gratuitaResidue <= 0 && (flagBonus == 0 || bonusResidui <= 0)) { if ((saldo - calcolaTotale()) <= saldoStop) { //31-10-2019 se lista precaricata e saldo <0 devo chudere if (stoCalcolando == false) { if (cercaTestoModoPagamento().equalsIgnoreCase("A scalare")) { if ((saldo - calcolaTotale()) < 0) { JOptionPane.showMessageDialog(this, "Saldo insufficiente!", "Saldo", JOptionPane.OK_OPTION); logTessera(); azzera(); return true; } } } OK = true; } else if (saldo <= saldoAlert) { JOptionPane.showMessageDialog(this, "Saldo ridotto, potrebbero non essere disponibili tutti i prodotti!", "Saldo Alert", JOptionPane.ERROR_MESSAGE); OK = true; } else { OK = true; } } return OK; } private String cercaTestoModoPagamento() { String testo = ""; String[] el = modiPagamento.toString().split("\\|"); for (String el1 : el) { String[] t = el1.split(";"); if (t[0].equalsIgnoreCase(idModoPagamento.toString())) { testo = t[1]; break; } } return testo; } private void setModoPagamento(String Modo) { String[] el = modiPagamento.toString().split("\\|"); for (String el1 : el) { String[] t = el1.split(";"); if (t[1].equalsIgnoreCase(Modo)) { idModoPagamento = Long.valueOf(t[0]); break; } } } private String setModoPagamento(Integer Tipo) { String testo = ""; if (modiPagamento.toString().length() > 5) { String[] el = modiPagamento.toString().split("\\|"); int i = Tipo; String[] t = el[i].split(";"); testo = t[1]; idModoPagamento = Long.valueOf(Tipo.toString()); lblResiduo.setText("[...]"); lblSaldo.setText("[...]"); } return testo; } private void pulsantiModoPagamento() { switch (Integer.parseInt(idModoPagamento.toString())) { case 0 -> { jTBP0.setEnabled(true); jTBP0.setSelected(true); jTBP0ActionPerformed(null); if (unSoloTipoPagamento) { jTBP1.setEnabled(false); jTBP2.setEnabled(false); jTBP3.setEnabled(false); } } case 1 -> { jTBP1.setEnabled(true); jTBP1.setSelected(true); jTBP1ActionPerformed(null); if (unSoloTipoPagamento) { jTBP0.setEnabled(false); jTBP2.setEnabled(false); jTBP3.setEnabled(false); } } case 2 -> { jTBP2.setEnabled(true); jTBP2.setSelected(true); jTBP2ActionPerformed(null); if (unSoloTipoPagamento) { jTBP1.setEnabled(false); jTBP0.setEnabled(false); jTBP3.setEnabled(false); } } case 3 -> { jTBP3.setEnabled(true); jTBP3.setSelected(true); jTBP3ActionPerformed(null); if (unSoloTipoPagamento) { jTBP1.setEnabled(false); jTBP2.setEnabled(false); jTBP0.setEnabled(false); } } } } private void chiudi() { //04-02-2019--------------------------------------------- MyTableModel model = (MyTableModel) tblLista.getModel(); if (model.getRowCount() > 0) { String numTessera = jTxtTessera.getText(); if (cercaTestoModoPagamento().equalsIgnoreCase("A scalare")) { String querySaldo = "select t.saldo || '|' || cf.saldo_minimo_alert || '|' || cf.saldo_minimo_stop || '|' || t.punti || '|' as saldi " + " from tessere t, utenti u, categorie_utenti c, categorie_utenti_fasce cf" + " where t.numero = '" + numTessera + "' and t.id_utente = u.id" + " and u.id_categoria = c.id and cf.id_categoria_utenti = c.id"; String[] saldoMinimo = mySelect(querySaldo, "saldi").split("\\|"); Double saldo = 0.0; String residuo = lblResiduo.getText().trim().replace("?", ""); if (residuo.equalsIgnoreCase("[...]")) { residuo = "0"; } residuo = residuo.replace(".", ""); residuo = residuo.replace(",", "."); saldo = Double.valueOf(residuo); Double saldoAlert = 0.0; if (saldoMinimo.length > 1 && saldoMinimo[1].length() > 0) { saldoAlert = Double.valueOf(saldoMinimo[1].replace(",", ".")); } if (gratuitaResidue <= 0 && (flagBonus == 0 || bonusResidui <= 0)) { if (saldo <= saldoAlert) { if (consentiCredito == true) { if (messaggioSaldoUnaVolta == false) { if (JOptionPane.showConfirmDialog(null, "Saldo insufficiente. Vuoi autorizzare comunque la transazione?", "Saldo", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { messaggioSaldoUnaVolta = true; } else { return; } } } } } //-------------------------------------------------------- } else { //Pagamento non a Scalare String querySaldo = "select t.saldo " + " from tessere t, utenti u, categorie_utenti c, categorie_utenti_fasce cf" + " where t.numero = '" + numTessera + "' and t.id_utente = u.id" + " and u.id_categoria = c.id and cf.id_categoria_utenti = c.id"; Double saldo = Double.valueOf(mySelect(querySaldo, "saldo")); Double costoPasto = Double.valueOf(txtTotaleCassa.getText().replace("?", "").trim().replace(",", ".")); if (saldo > costoPasto) { Object[] options = {"A Scalare", "Contanti"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Attenzione, c'è saldo sufficiente sulla tessera,\nscegli la modalità di pagamento da utilizzare", "Modalità Pagamento", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, null); if (Integer.parseInt(selectedValue.toString()) == 0) { jTBP0.setSelected(true); jTBP0ActionPerformed(null); } else { jTBP1.setSelected(true); jTBP1ActionPerformed(null); } } } } Boolean spiaProgressivo = false; //Date adesso = new Date(); LocalDateTime adesso = LocalDateTime.now(); String flagPassaggioTessera = "0"; if (passaggioTessera) { flagPassaggioTessera = "1"; } String tessera = idTessera.toString(); String flagAsporto = "0"; if (jBtnAsporto.isSelected()) { flagAsporto = "1"; } //09-05-2019 String composizione = spaziBianchi("", 20, false); MyTableModel model2 = (MyTableModel) tblLista1.getModel(); for (int i = 0; i < model2.getRowCount(); i++) { String completo = model2.getValueAt(i, 0).toString(); String pasto = ""; if (completo.length() > 0) { String TT[] = completo.split("]", -1); if (TT.length > 0) { pasto = "Pasto:" + TT[0].replace("[", ""); } } composizione = spaziBianchi(pasto, 10, true); break; } //controllo passaggi if (model.getRowCount() > 0) { String controlloPassaggi = "SELECT count(*) as passaggi FROM st_acquisti st " + "INNER JOIN prodotti pr ON st.id_prodotto = pr.id " + "WHERE pr.id_categoria = 0 " + "AND trunc(st.data) = trunc(sysdate) " + "AND st.id_tessera = " + idTessera + " AND st.id_turno=" + idTurno; Long abilitatoPassaggi = mySelectInteger(controlloPassaggi, "passaggi"); if (abilitatoPassaggi > 0) { abilitatoPassaggi = abilitatoPassaggi + 1; if (JOptionPane.showConfirmDialog(null, "Sei sicuro di voler registrare il passaggio n° " + abilitatoPassaggi + " sulla tessera " + jTxtTessera.getText() + "?", "Secondo Passaggio", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { azzera(); aggiornaLabelInfo(); return; } } } if (idTessera > 0L) { StringBuilder elencoIdProdotti = new StringBuilder(); for (int i = model.getRowCount() - 1; i >= 0; i--) { Long idCateg = Long.valueOf(model.getValueAt(i, colCategoria).toString()); if (idCateg != 0L) { //04/03/2022 non e possibile acquistare prodotti che non siano partedi una composizione String vassoio = "1"; myInsert("Insert into Acquisti " + "(id,id_Tessera,id_Prodotto,id_Punto_Cassa,Data,Importo,Punti," + "Num_Progressivo,id_Tipo_Pagamento,flag_in_vassoio,id_Turno,flag_asporto,flag_passaggio_tessera)" + "values(-1," + tessera + "," + model.getValueAt(i, colIDProdotto) + "," //+ idPuntoCassa + "," + formattaDataOra(adesso) + "," + idPuntoCassa + "," + formatLocalDateTime(adesso) + "," + model.getValueAt(i, colImporto) + "," + model.getValueAt(i, colPunti) + "," + progressivo + "," + idModoPagamento + "," + vassoio + "," + idTurno + "," + flagAsporto + "," + flagPassaggioTessera + ")"); aggiornaProgressivoPagamentiTurno(Double.valueOf(model.getValueAt(i, colImporto).toString())); elencoIdProdotti.append(model.getValueAt(i, colIDProdotto)); elencoIdProdotti.append(","); } model.deleteRow(i); spiaProgressivo = true; } for (int i = model2.getRowCount() - 1; i >= 0; i--) { String flagGratuita = "0"; String flagBonus = "0"; if (gratuitaResidue > 0) {// && gratuitaResidue>Gratuita_ResidueProg){ flagGratuita = "1"; } else if (bonusResidui > 0) { flagBonus = "1"; } myInsert("Insert into Acquisti " + "(id,id_Tessera,id_Prodotto,id_Punto_Cassa,Data,Importo,Punti,Num_Progressivo,id_Tipo_Pagamento," + "id_Turno,flag_gratuita,flag_bonus,flag_asporto,flag_passaggio_tessera)" + "values(-1," + tessera + "," + model2.getValueAt(i, 2) + "," + idPuntoCassa + "," + //formattaDataOra(adesso) + "," + model2.getValueAt(i, 1) + ",0," + progressivo + "," + formatLocalDateTime(adesso) + "," + model2.getValueAt(i, 1) + ",0," + progressivo + "," + idModoPagamento + "," + idTurno + "," + flagGratuita + "," + flagBonus + "," + flagAsporto + "," + flagPassaggioTessera + ")"); aggiornaProgressivoPagamentiTurno(Double.valueOf(model2.getValueAt(i, 1).toString())); model2.deleteRow(i); spiaProgressivo = true; } } else { StringBuilder elencoIdProdotti = new StringBuilder(); for (int i = model.getRowCount() - 1; i >= 0; i--) { Long idCateg = Long.valueOf(model.getValueAt(i, colCategoria).toString()); if (idCateg != 0L) { //04/03/2022 non e possibile acquistare prodotti che non siano partedi una composizione String vassoio = "1"; myInsert("Insert into Acquisti (id,id_Prodotto,id_Punto_Cassa,Data,Importo,Punti,Num_Progressivo,id_Tipo_Pagamento," + "flag_in_vassoio,id_Turno,flag_asporto,flag_passaggio_tessera)values(-1," //+ model.getValueAt(i, colIDProdotto) + "," + idPuntoCassa + "," + formattaDataOra(adesso) + "," + model.getValueAt(i, colIDProdotto) + "," + idPuntoCassa + "," + formatLocalDateTime(adesso) + "," + model.getValueAt(i, colImporto) + "," + model.getValueAt(i, colPunti) + "," + progressivo + "," + idModoPagamento + "," + vassoio + "," + idTurno + "," + flagAsporto + "," + flagPassaggioTessera + ")"); aggiornaProgressivoPagamentiTurno(Double.valueOf(model.getValueAt(i, colImporto).toString())); elencoIdProdotti.append(model.getValueAt(i, colIDProdotto)); elencoIdProdotti.append(","); } model.deleteRow(i); spiaProgressivo = true; } for (int i = model2.getRowCount() - 1; i >= 0; i--) { String flagGratuita = "0"; String flagBonusPerInsert = "0"; if (gratuitaResidue > 0) {// && gratuitaResidue>Gratuita_ResidueProg){ flagGratuita = "1"; } else if (flagBonus == 1 && bonusResidui > 0) { flagBonusPerInsert = "1"; } myInsert("Insert into Acquisti (id,id_Prodotto,id_Punto_Cassa,Data,Importo,Punti,Num_Progressivo,id_Tipo_Pagamento," + "id_Turno,flag_gratuita,flag_bonus,flag_asporto,flag_passaggio_tessera)values(-1," //+ model2.getValueAt(i, 2) + "," + idPuntoCassa + "," + formattaDataOra(adesso) + "," + model2.getValueAt(i, 2) + "," + idPuntoCassa + "," + formatLocalDateTime(adesso) + "," + model2.getValueAt(i, 1) + ",0," + progressivo + "," + idModoPagamento + "," + idTurno + "," + flagGratuita + "," + flagBonusPerInsert + "," + flagAsporto + "," + flagPassaggioTessera + ")"); aggiornaProgressivoPagamentiTurno(Double.valueOf(model2.getValueAt(i, 1).toString())); model2.deleteRow(i); spiaProgressivo = true; } } //aggiorno progressivi------------- if (spiaProgressivo) { progressivo++; progressivoGiorno++; progressivoTurno++; myInsert("Update Progressivi set Prog_assoluto=" + progressivo + ",prog_giorno=" + progressivoGiorno + ",prog_Turno=" + progressivoTurno + ",incasso_turno_contanti=" + progressivoContanti + ",incasso_turno_ticket=" + progressivoTicket + ",incasso_turno_scalare=" + progressivoScalare + ",incasso_turno_differito=" + progressivoDifferito //+ " where id_Punto_cassa=" + idPuntoCassa + " and id_turno=" + idTurno + " and data=" + formattaData(adesso)); + " where id_Punto_cassa=" + idPuntoCassa + " and id_turno=" + idTurno + " and data=" + formatLocalDateTime(adesso)); } String residuo = lblResiduo.getText().replace("?", "").trim(); if (residuo.equalsIgnoreCase("[...]")) { residuo = "0"; } if (residuo.length() > 6) { residuo = residuo.substring(0, 5); } else { residuo = spaziBianchi(residuo, 6, false); } //Aggiornamento 12-04-2019 Integer bonus = 0; if (flagBonus == 1 && bonusResidui > 0) { bonus = bonusResidui--; } composizione = spaziBianchi(composizione + "Bonus:" + bonus, 20, true); String Riga2 = "Saldo " + residuo; display(composizione + Riga2, null); timerDisplay.schedule(new TimerTask() { @Override public void run() { statoAttivoLoggato(); } }, 8000); azzera(); aggiornaLabelInfo(); } private boolean controllaDiscrepanzePrenotazioni(String elencoIdProdotto) { boolean ok = true; if (elencoIdProdotto.length() > 0) { elencoIdProdotto = elencoIdProdotto.substring(0, elencoIdProdotto.length() - 1); String[] el = elencoIdProdotto.split(","); String query = "SELECT count(*) as nr FROM VIEW_PRENOTAZIONI_TURNO " + "WHERE id_Modalita in (2,3) " + "and id_stato in (0,1) " + "AND id_turno =" + idTurnoAttuale + " AND id_tessera = " + idTessera + " and id_Prenotazione=" + idPrenotazione; int rowCount = Integer.parseInt(mySelect(query, "nr")); if (rowCount > 0) { if (rowCount == el.length) { query = "SELECT count(*) as nr FROM VIEW_PRENOTAZIONI_TURNO " + "WHERE id_Modalita in (2,3) " + "and id_stato in (0,1) " + "AND id_turno =" + idTurnoAttuale + " AND id_tessera = " + idTessera + " AND id_Prodotto in (" + elencoIdProdotto + ") " + "and id_Prenotazione=" + idPrenotazione; rowCount = Integer.parseInt(mySelect(query, "nr")); if (rowCount == el.length) { return true; } } Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "I prodotti selezionati sono diversi dai prenotati!\nVuoi proseguire?", "Prenotazione", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, null); if (Integer.parseInt(selectedValue.toString()) == 1) { azzeraDopoStorno(); return false; } } } return ok; } private void aggiornaPrenotazioni(String elencoIdProdotto) { try { if (elencoIdProdotto.length() > 0) { String query = "SELECT id FROM VIEW_PRENOTAZIONI_TURNO " + "WHERE id_Modalita in (2,3) " + "and id_stato in (0,1) " + "AND id_turno =" + idTurnoAttuale + " AND id_tessera = " + idTessera + " and id_Prenotazione=" + idPrenotazione; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(query); while (rs.next()) { myInsert("Update PRENOTAZIONI_PASTI set id_Stato=2 where id=" + rs.getString("id")); } rs.close(); st.close(); dbConnection.close(); } } catch (SQLException | NumberFormatException e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } } private void aggiornaProgressivoPagamentiTurno(Double importo) { if (cercaTestoModoPagamento().equalsIgnoreCase("A scalare")) { progressivoScalare = progressivoScalare + importo; } if (cercaTestoModoPagamento().equalsIgnoreCase("Contanti")) { progressivoContanti = progressivoContanti + importo; } if (cercaTestoModoPagamento().equalsIgnoreCase("Ticket")) { progressivoTicket = progressivoTicket + importo; } if (cercaTestoModoPagamento().equalsIgnoreCase("Differito")) { progressivoDifferito = progressivoDifferito + importo; } } private void azzera() { try { MyTableModel model = (MyTableModel) tblLista.getModel(); MyTableModel model1 = (MyTableModel) tblLista1.getModel(); clearTable(model); clearTable(model1); } catch (Exception e) { } messaggioSaldoUnaVolta = false; idTessera = 0L; idPrenotazione = 0L; idProfiloTariffario = 0L; setModoPagamento(modoPagamentoDefault); isCassaAperta = false; txtTotaleCassa.setText("? 0,00"); txtTotalePunti.setText("Punti 0"); pnlCategorie.setVisible(false); pnlProdotti.setVisible(false); if (flagPrecaricaLista == false) { abilitaPulsanti(pnlCategorie, false, false); abilitaPulsanti(pnlProdotti, false, false); } pnlCategorie.setVisible(true); pnlProdotti.setVisible(true); bonusResidui = 0; jTxtTessera.setText(""); pnlProdotti.removeAll(); pnlProdotti.repaint(); lblCategoria.setText(""); lblCognome.setText(""); lblNome.setText(""); lblNascita.setText(""); lblScadTessera.setText(""); lblAzienda.setText(""); lblConvenzione.setText(""); lblFascia.setText(""); jBtnStorno.setEnabled(false); jBtnAsporto.setEnabled(false); jbtnSu.setEnabled(false); jbtnGiu.setEnabled(false); jbtnElimina.setEnabled(false); jbtnAnnulla.setEnabled(false); jbtnDuplica.setEnabled(false); lblSaldo.setText("[...]"); lblPunti.setText("[...]"); lblTipoPagamento.setText("[...]"); testoRFIDCard = new StringBuilder(); testoSwipCard = new StringBuilder(); statoCardLettore = false; if (btnImpostaCliente.isVisible()) { btnImpostaCliente.setEnabled(bottoneImposta); } jBtnBuoni.setEnabled(true); lblResiduo.setText("[...]"); lblGratuita.setText("[...]"); jBtnAsporto.setSelected(false); jBtnAsportoActionPerformed(null); passaggioTessera = false; passaggiEsauritiNoComposizione = false; saldoMinimoStop = 0.0; MyApplication myApp = new MyApplication(); myApp.unaVolta = false; gratuitaResidue = 0; //9-5-18<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< if (flagPrecaricaLista) { apriCassaDefault(); } } public void apriCassaDefault() { lblCategoria.setText(""); lblCognome.setText(""); lblNome.setText(""); lblNascita.setText(""); lblScadTessera.setText(""); lblAzienda.setText(""); lblConvenzione.setText(""); lblFascia.setText(""); if (isCassaAperta == false) { turnoAttuale(); if ((idTurnoAttuale - idTurno) != 0) { progressivoTurno = 1L; progressivoContanti = 0.00; progressivoScalare = 0.00; progressivoTicket = 0.00; progressivoDifferito = 0.00; if (nomeTurnoAttuale.equalsIgnoreCase("Pranzo")) { progressivoGiorno = 1L; } idTurno = idTurnoAttuale; nomeTurno = nomeTurnoAttuale; Date adesso = new Date(); String controlloTurno = mySelect("select count(*) as Prog from Progressivi " + "where id_Punto_cassa=" + idPuntoCassa + " and data=" + formattaData(adesso) + " and id_Turno=" + idTurno, "Prog"); if (Long.parseLong(controlloTurno) <= 0) { myInsert("Insert into Progressivi (data,id_Punto_cassa,id_Turno,prog_assoluto,prog_giorno,prog_turno) " + " values (" + formattaData(adesso) + "," + idPuntoCassa + "," + idTurno + "," + progressivo + "," + progressivoGiorno + ",0)"); } aggiornaLabelInfo(); } isCassaAperta = true; idProfiloTariffario = idProfiloTariffarioDefault;//0L setModoPagamento(modoPagamentoDefault); this.caricaPannello(); abilitaPulsanti(pnlCategorie, true, true); jbtnChiudi.setEnabled(false); } } public void cercaTessera() {//String QueryCF) { MyApplication myApp = new MyApplication(); myApp.unaVolta = false; setModoPagamento(modoPagamentoDefault); String numeroTessera = jTxtTessera.getText(); String query = "SELECT DISTINCT c.nome || '|' || u.cognome || '|' || u.nome || '|' || " + "TO_CHAR (u.data_di_nascita, 'dd/mm/yyyy') || '|' || u.matricola || '|' || a.nome || '|' " + "|| c.nome || '|' || f.nome || '|' || t.ID || '|' || " + "TO_CHAR (t.data_scadenza, 'dd/mm/yyyy') || '|' || t.id_stato || '|' || u.ID || '|' || f.ID || '|' " + "|| t.gratuita_residue || '|' || t.bonus_residui AS ris " + " FROM categorie_utenti c, tessere t, utenti u, categorie_utenti_fasce cf, fasce f, aziende a " + "WHERE t.id_utente = u.ID " + "AND u.id_categoria = c.ID " + "AND c.id_azienda = a.ID " + "AND cf.id_categoria_utenti = c.ID " + "AND cf.id_fascia = f.ID " + "AND t.numero = '" + numeroTessera + "'"; String res = mySelect(query, "ris"); if (res.length() > 0) { String dati[] = res.split("\\|", -1); Date now = new Date(); Date scadenza = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); idProfiloTariffario = Long.valueOf(dati[12]); if (idProfiloTariffario.equals(idProfiloTariffarioDefault)) { JOptionPane.showOptionDialog(this, "Impostato Profilo Tariffario di default!", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); } Integer idStato = Integer.valueOf(dati[10]); idTessera = Long.valueOf(dati[8]); logIDTessera = idTessera.toString(); logTessera(); try { // controllo abilitazione tessera String controlloPunto = "Select controlla_abilitazione('" + numeroTessera + "'," + idPuntoCassa + ") as T from dual"; Long abilitato = mySelectInteger(controlloPunto, "T"); if (abilitato == 0) { Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "Tessera non abilitata per questo punto di distribuzione!\nConsenti passaggio?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (Integer.parseInt(selectedValue.toString()) != 0) { return; } else { myInsert("Insert into Forzature (id,id_account,id_Punto_Cassa,id_Tessera,id_Tipo_Forzatura) values (-1," + idAccount + "," + idPuntoCassa + "," + idTessera + ",1)"); } } //controllo passaggi String controlloPassaggi = "Select controlla_passaggi('" + numeroTessera + "'," + idPuntoCassa + ") as T from dual"; Long abilitatoPassaggi = mySelectInteger(controlloPassaggi, "T"); if (abilitatoPassaggi == 0L) { //05/09/2022 String queryPassaggi = "select count(*) as NRec from st_acquisti a inner join prodotti p on a.id_prodotto=p.id inner join Tipi_Pagamenti tp on a.id_tipo_pagamento=tp.id where TRUNC(data) = TRUNC(SYSDATE) and id_tessera=" + idTessera + " and flag_in_vassoio=0 and id_punto_cassa=" + idPuntoCassa; Long numeroPassaggi = mySelectInteger(queryPassaggi, "NRec"); //fine---- if (flagEsegueStorni && numeroPassaggi > 0) { Object[] options = {"Si", "No"}; Object selectedValue = JOptionPane.showOptionDialog(this, "N° passaggi giornalieri esauriti. Non è possibile usufruire del pasto!\nSi desidera effettuare uno storno per un pasto erroneamente addebitato?", "Attenzione", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]); if (Integer.parseInt(selectedValue.toString()) == 0) { apriStorno(true); } else { azzeraDopoStorno(); return; } } else { JOptionPane.showMessageDialog(this, "N° passaggi giornalieri esauriti. Non è possibile usufruire del pasto!"); azzeraDopoStorno(); return; } } //aggiungo un giorno altrimenti in caso di scadenza nello stesso giorno //considera le ore scadenza = formatter.parse(dati[9]); Calendar c = Calendar.getInstance(); c.setTime(scadenza); c.add(Calendar.DATE, 1); scadenza = c.getTime(); if (scadenza.after(now) && idStato != 2) { String modoPagamento = cercaTestoModoPagamento(); lblCategoria.setText(dati[0]); lblCognome.setText(dati[1]); lblNome.setText(dati[2]); if (flagMostraDataDiNascita) { lblNascita.setText(dati[3]); } lblAzienda.setText(dati[5]); lblConvenzione.setText(dati[6]); lblFascia.setText(dati[7]); jBtnStorno.setEnabled(flagEsegueStorni); jBtnAsporto.setEnabled(true); jbtnChiudi.setEnabled(true); if (btnImpostaCliente.isVisible()) { btnImpostaCliente.setEnabled(false); jBtnBuoni.setEnabled(false); } if (flagPrecaricaLista == false) { isCassaAperta = true; abilitaPulsanti(pnlCategorie, true, true); abilitaPulsanti(pnlProdotti, true, true); } if (dati.length > 13) { if (dati[13].length() > 0) { gratuitaResidue = Integer.parseInt(dati[13]); } lblGratuita.setText(dati[13]); } bonusResidui = 0; if (dati.length > 14) { if (dati[14].length() > 0) { bonusResidui = Integer.parseInt(dati[14]); } } lblScadTessera.setText("" + bonusResidui); if (modoPagamento.equalsIgnoreCase("A scalare")) { //modifica 09-11-18 if (calcolaTotale() > 0.00 && flagPrecaricaLista == false) { verificaSaldo(numeroTessera); } //fine modifica } else { MyApplication MyA = new MyApplication(); String punti = MyA.mySelect(this, "Select Punti from Tessere where numero='" + numeroTessera + "'", "Punti"); lblPunti.setText(punti); String tipo = cercaTestoModoPagamento(); lblTipoPagamento.setText(tipo); } stoCalcolando = true; pulsantiModoPagamento(); stoCalcolando = false; this.caricaPannello(); abilitaPulsanti(pnlCategorie, true, true); statoTesseraLetta(gratuitaResidue, bonusResidui); //28-09-2016 quando c'è una sola categoria faccio click if (numeroCategorie == 1) { Component[] components = pnlCategorie.getComponents(); JToggleButton bt = (JToggleButton) components[0]; } //FlagDefaultAsporto if (asporto) { jBtnAsporto.setSelected(true); jBtnAsportoActionPerformed(null); } MyTableModel model = (MyTableModel) tblLista.getModel(); if (flagPrecaricaLista) { forzaPrezzi(model); } controllaCompleti(model); controllaExtra(model); sommaColonne(model); //modifica 09-11-18 if (modoPagamento.equalsIgnoreCase("A scalare")) { if (calcolaTotale() > 0.00 && flagPrecaricaLista) { verificaSaldo(numeroTessera); } } //fine modifica //05-06-2020 if (abilitatoPassaggi != 0L) { controllaPrenotazioni(); } } else { JOptionPane.showMessageDialog(this, "Tessera Scaduta o Disabilitata!"); logTessera(); azzera(); } } catch (ParseException e) { logTesseraErrore = e.getMessage(); logTessera(); azzera(); } } else { JOptionPane.showMessageDialog(this, "Errore in lettura della tessera!"); logTessera(); azzera(); } } private void controllaPrenotazioni() { try { String query = "SELECT * FROM (SELECT id_Prenotazione as nr FROM VIEW_PRENOTAZIONI_TURNO " + "WHERE id_modalita in (2,3) " + "AND id_stato IN (0,1) " + "AND id_turno = " + idTurnoAttuale + " " + "AND id_tessera = " + idTessera + " " + "order by id_prenotazione) " + "where rownum = 1"; String idP = mySelect(query, "nr"); if (idP.length() > 0) { Long rowCount = Long.valueOf(idP); idPrenotazione = rowCount; if (rowCount > 0L) { query = "SELECT Distinct Nome FROM VIEW_PRENOTAZIONI_TURNO v join prodotti p on v.ID_PRODOTTO=p.ID " + "WHERE id_Modalita in (2,3) " + "and id_stato in (0,1) " + "AND id_turno =" + idTurnoAttuale + " AND id_tessera = " + idTessera + " and id_prenotazione=" + idPrenotazione + " order by Nome"; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(query); StringBuilder s = new StringBuilder(""); while (rs.next()) { s.append(rs.getString("Nome")); s.append("\n"); } rs.close(); st.close(); dbConnection.close(); if (JOptionPane.showConfirmDialog(null, "Prenotazione presente:\n" + s.toString() + "Inserisco i prodotti?", "Prenotazione", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { inserisciPrenotazioni(); } } } } catch (SQLException | NumberFormatException e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } finally { } } private void inserisciPrenotazioni() { try { MyTableModel model = (MyTableModel) tblLista.getModel(); MyTableModel model1 = (MyTableModel) tblLista1.getModel(); clearTable(model); clearTable(model1); sommaColonne(model); String query = "SELECT * FROM VIEW_PRENOTAZIONI_TURNO " + "WHERE id_Modalita in (2,3) " + "and id_stato in (0,1) " + "AND id_turno =" + idTurnoAttuale + " AND id_tessera = " + idTessera + " and id_prenotazione=" + idPrenotazione; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(query); while (rs.next()) { java.awt.event.ActionEvent evt; evt = new java.awt.event.ActionEvent(new Object(), 0, "PRODOTTO[" + rs.getString("ID_PRODOTTO") + "]"); actionPerformed(evt); } rs.close(); st.close(); dbConnection.close(); } catch (SQLException | NumberFormatException e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } finally { } } public void azzeraDopoStorno() { annulla(); timerDisplay.schedule(new TimerTask() { @Override public void run() { azzera(); aggiornaProgressivi(); } }, 500); passaggiEsauritiNoComposizione = true; } private Double calcolaTotale() { Double totAcquisto = 0.00; if (txtTotaleCassa.getText().length() > 0) { String Saldo = txtTotaleCassa.getText().replace("? ", "").replace(".", ""); Saldo = Saldo.replace(",", "."); totAcquisto = Double.parseDouble(Saldo); } return totAcquisto; } private void forzaPrezzi(MyTableModel model) { for (int y = 0; y < model.getRowCount(); y++) { Object row[] = model.getRow(y); String idProdotto = row[3].toString(); String query = "SELECT Punti || '|' || prezzo as res FROM tariffe " + "where id_Prodotto = " + idProdotto + " and id_fascia=" + idProfiloTariffario; String res = mySelect(query, "res"); if (res.length() > 0) { String[] el = res.split("\\|", -1); Double prezzo; Integer punti; punti = Integer.valueOf(el[0]); prezzo = Double.valueOf(el[1].replace(",", ".")); model.setValueAt(prezzo, y, colImporto); model.setValueAt(prezzo, y, colImporto2); model.setValueAt(punti, y, colPunti); doLayout(); } } } private void abilitaPulsanti(JPanel aPanel, Boolean abilita, Boolean apertura) { Component c; Component[] components = aPanel.getComponents(); if (components != null) { int numComponents = components.length; for (int i = 0; i < numComponents; i++) { c = components[i]; if (c != null) { JToggleButton bt = (JToggleButton) c; if (bt == null) { c.setEnabled(abilita); } else { try { if (bt.getText().equalsIgnoreCase("Composizione") && passaggiEsauritiNoComposizione && aPanel.getName().equalsIgnoreCase("pnlCategorie")) { bt.setEnabled(false); } else { bt.setEnabled(abilita); } if (bt.getText().equalsIgnoreCase("Composizione") && menuGiornoPresente == false && apertura) { bt.setEnabled(true); bt.setSelected(true); pulsantiCategoria("0", "Categoria[0]"); } else { bt.setSelected(false); } } catch (Exception ex) { } } } } } } /*private void stampa() { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); JInternalReport P = new JInternalReport(); P.TitoloReport = "Scontrino"; String Query = "Select Prodotti.Nome as Prodotto,Importo,Acquisti.id from Acquisti inner join Prodotti on Acquisti.id_prodotto=prodotti.id where Num_Progressivo=" + (progressivo - 1) + " and id_Punto_cassa=" + idPuntoCassa; String[] ColReport = {"Prodotto", "Importo"}; String[] ColTypeReport = {"text", "float"}; String SelectRows = "Select count(*) as nr from Acquisti where Num_Progressivo=" + (progressivo - 1) + " and id_Punto_cassa=" + idPuntoCassa; int rowCount = Integer.parseInt(mySelect(SelectRows, "nr")); Object[][] dataReport = rowData(Query, ColReport, ColTypeReport, rowCount); P.CreaReport(ColReport, ColTypeReport, dataReport); P.setVisible(true); P.show(); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); }*/ public Object[][] rowData(String Query, String[] Cols, String[] ColType, int rowCount) { Object[][] rows = null; try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(Query); rows = new Object[rowCount][]; int r = 0; while (rs.next()) { Object[] row = new Object[Cols.length]; for (int i = 0; i < Cols.length; i++) { if (rs.getString(Cols[i].replace(" ", "_")) == null) { row[i] = ""; } else { row[i] = rs.getString(Cols[i].replace(" ", "_")); } switch (ColType[i]) { case "text" -> { if (rs.getString(Cols[i].replace(" ", "_")) == null) { row[i] = ""; } else { row[i] = rs.getString(Cols[i].replace(" ", "_")); } } case "integer" -> { if (rs.getString(Cols[i].replace(" ", "_")) == null) { row[i] = 0; } else { row[i] = rs.getInt(Cols[i].replace(" ", "_")); } } case "boolean" -> { if (rs.getString(Cols[i].replace(" ", "_")) == null) { row[i] = false; } else { row[i] = rs.getBoolean(Cols[i].replace(" ", "_")); } } case "float" -> { if (rs.getString(Cols[i].replace(" ", "_")) == null) { row[i] = 0.00; } else { String v = rs.getString(Cols[i].replace(" ", "_")); row[i] = Float.valueOf(v.replace(",", ".")); } } } } rows[r] = row; r++; } rs.close(); st.close(); dbConnection.close(); } catch (SQLException | NumberFormatException e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } finally { return rows; } } private String mySelect(String Query, String Campo) { String res = ""; try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(Query); while (rs.next()) { res = rs.getString(Campo); } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(this, "Errore MySelect ['" + e.getMessage() + " " + Query + "']"); } if (res == null) { res = ""; } return res; } private Boolean myInsert(String query) { System.out.println(query); Boolean res = false; try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(query); rs.close(); st.close(); dbConnection.close(); res = true; } catch (Exception e) { JOptionPane.showMessageDialog(this, "Errore MySelect ['" + e.getMessage() + " " + query + "']"); } return res; } private Long mySelectInteger(String query, String campo) { Long res = 0L; try { Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement st = dbConnection.createStatement(); ResultSet rs = st.executeQuery(query); while (rs.next()) { res = rs.getLong(campo); } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(this, "Errore MySelectInteger ['" + e.getMessage() + " " + query + "']"); } return res; } public void insertImage() { String filenamepath = new String("L:\\Lavoro\\Goffredo\\risorse\\Brioche.jpg"); try { File file = new File(filenamepath); Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement stat = dbConnection.createStatement(); PreparedStatement ps = dbConnection.prepareStatement("Update Prodotti set icona=?"); // bind the data...... System.out.println("Lenght:" + file.getAbsolutePath()); InputStream inputimage = new FileInputStream(file); ps.setBinaryStream(1, inputimage, (int) file.length()); ps.execute(); ps.close(); dbConnection.close(); } catch (Exception e) { System.out.println("Error at Image Insert:" + e); e.printStackTrace(); } } public void getImage(String idProdotto) { String FullName = null; InputStream gifdata = null; try { String Query = "select icona from Prodotti where id=" + idProdotto; // create prepare Statement pst Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); PreparedStatement pst = dbConnection.prepareStatement(Query); ResultSet result = pst.executeQuery(); if (result.next()) { FullName = imgPath + idProdotto + ".jpg"; //using Srteam Method''''' gifdata = result.getBinaryStream(1); //create file if (gifdata != null) { File giffile = new File(FullName); //write the byte array into a local file. FileOutputStream file = new FileOutputStream(giffile); int chunk = 0; while ((chunk = gifdata.read()) != -1) { file.write(chunk); } file.flush(); file.close(); } } result.close(); pst.close(); dbConnection.close(); } catch (Exception e) { e.printStackTrace(); } } private byte[] getPhoto(String Query) throws Exception, SQLException { String req = ""; Blob img; byte[] imgData = null; Connection dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); Statement stmt = dbConnection.createStatement(); // query req = Query; ResultSet rset = stmt.executeQuery(req); while (rset.next()) { img = rset.getBlob(1); imgData = img.getBytes(1, (int) img.length()); } rset.close(); stmt.close(); dbConnection.close(); return imgData; } private String formattaDataOra(Date data) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); return "to_date('" + formatter.format(data) + "','dd/mm/yyyy HH24:MI:SS')"; } private String formatLocalDateTime(LocalDateTime data){ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); return data.format(formatter); } private String formattaData(Date data) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); return "to_date('" + formatter.format(data) + "','dd/mm/yyyy')"; } private void aggiungiImmaginiPulsanti() { aggiungImmagini(jBtnStorno, "Storno.png", 70, 70); aggiungImmagini(jBtnAsporto, "coltello e forchetta.jpg", 50, 50); aggiungImmagini(jTBP0, "a scalare.png", 50, 50); aggiungImmagini(jTBP1, "Contanti.png", 50, 50); aggiungImmagini(jTBP2, "Ticket.png", 50, 50); aggiungImmagini(jTBP3, "differito.png", 50, 50); aggiungImmagini(jBtnprodotti, "Prodotti.png", 50, 50); SwingUtilities.updateComponentTreeUI(jTBP0); aggiungImmagini(jBtnMovimenti, "Movimenti.png", 50, 50); } private void aggiungImmagini(JButton btn, String Immagine, int width, int height) { ImageIcon icon = new ImageIcon(imgPath + Immagine); Image img = icon.getImage(); Image newimg = img.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH); icon = new ImageIcon(newimg); btn.setIcon(icon); } private void aggiungImmagini(JToggleButton btn, String Immagine, int width, int height) { ImageIcon icon = new ImageIcon(imgPath + Immagine); Image img = icon.getImage(); Image newimg = img.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH); icon = new ImageIcon(newimg); btn.setIcon(icon); btn.setDisabledIcon(null); btn.setDisabledIcon(icon); } // ========================================================================== // * Metodo main() // * // * @param args the command line arguments // * // ========================================================================== public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { // ================================================================= // *** Crea la form base // ================================================================= PuntoCassa p = new PuntoCassa(); p.aggiungImmagini(p.jBtnDB1, "DB.png", 50, 50); // ================================================================= // *** Esegue il resize a seconda delle impostazioni video per // *** occupare tutto lo schermo utile // ================================================================= Toolkit toolkit = Toolkit.getDefaultToolkit(); Dimension screenSize = toolkit.getScreenSize(); Rectangle winSize = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); p.setSize(1024, 768); p.setLocation((int) (screenSize.width - 1024) / 2, (int) (screenSize.height - 768) / 2); p.resize(); // ================================================================= // *** Mostra la form nello stato iniziale // ================================================================= p.pnlErrore.setVisible(false); p.pnlLogin.setVisible(true); p.lblUtenteLoggato.setVisible(true); p.lblInfo.setVisible(true); p.lblStatoConnessione.setVisible(true); p.pnlTop.setVisible(false); p.setVisible(true); } }); } public void controllaLogInCarta(String nTessera) { if (turno()) { String Query = "select a.username || '|' || a.id || '|' || a.id_stato as res" + " from accounts a, utenti u, tessere t, profili p, ruoli r where a.id_utente = u.id" + " and t.id_utente = u.id" + " and p.id_account = a.id" + " and p.id_ruolo = r.id" //+ " and r.id = 10000000004" + //*** Operatore di cassa ***/ + " and t.numero = '" + nTessera + "'"; //*** Numero della tessera letto su smartcard *** MyApplication MyA = new MyApplication(); String[] res = MyA.mySelect(this, Query, "res").split("\\|"); if (res.length >= 3) { utenteLoggato = res[0]; idAccount = Long.parseLong(res[1]); Integer Stato = Integer.parseInt(res[2]); if (utenteLoggato.length() > 0 && idAccount > 0L && Stato == 1) { String sql = "SELECT count(*) as Counter FROM profili p WHERE p.id_account = " + idAccount + " AND p.id_ruolo = 10000000004"; Integer counter = Integer.parseInt(MyA.mySelect(this, sql, "Counter")); if (counter == 1) { impostaAmbiente(); verificaAggiornamentoDB(); } else { idAccount = 0L; utenteLoggato = ""; JOptionPane.showMessageDialog(this, "L'utente non dispone dei privilegi per l'utilizzo del modulo cassa."); } } else { utenteLoggato = ""; idAccount = 0L; if (Stato == 2) { String Messaggio = MyA.mySelect(this, "Select Descrizione from Stati_Accounts where id=" + Stato, "descrizione"); JOptionPane.showMessageDialog(this, Messaggio + "."); } else { JOptionPane.showMessageDialog(this, "Tessera sconosciuta!"); } } } else { JOptionPane.showMessageDialog(this, "Tessera sconosciuta!"); } cartaLetta = true; } else { JOptionPane.showMessageDialog(this, "Impossibile eseguire il Login al sistema:\nNessun Turno Attivo!"); } } private void display(String Titolo, String Prezzo) { System.out.println("Display: " + Titolo); if (visualizzaMessaggiDisplay) { try { SerialPort serialPort = new SerialPort("COM3"); try { serialPort.openPort();//Open serial port serialPort.setParams(SerialPort.BAUDRATE_9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);//Set params. Also you can set params by this string: serialPort.setParams(9600, 8, 1, 0); String Testo = Titolo; if (Prezzo != null) { Testo = Titolo + spaziBianchi(Prezzo, 40 - Titolo.length(), false); } serialPort.writeBytes(Testo.getBytes());//Write data to port serialPort.closePort();//Close serial port } catch (SerialPortException ex) { if (serialPort.isOpened()) { serialPort.closePort(); } JOptionPane.showMessageDialog(this, ex.getMessage()); } } catch (SerialPortException | HeadlessException ex) { JOptionPane.showMessageDialog(this, ex.getMessage()); } } } String spaziBianchi(String Testo, Integer Num, Boolean Suffisso) { String res = Testo; StringBuilder Suff = new StringBuilder(); if (Testo.length() < Num) { Integer Delta = Num - Testo.length(); for (Integer i = 0; i < Delta; i++) { Suff.append(" "); } if (Suffisso == false) { res = Suff.toString() + Testo; } else { res = Testo + Suff.toString(); } } return res; } private void statoAttivoNonLoggato() { String PC = idPuntoCassa.toString(); if (PC.length() >= 5) { PC = PC.substring(PC.length() - 5, PC.length()); } else { PC = spaziBianchi(PC, 5, false); } String Riga = spaziBianchi(messageDisplay, 20, true) + "POS " + PC + " CHIUSO"; display(Riga, null); } private void statoAttivoLoggato() { //per evitare che inserendo la tessera successiva mi cancelli il num tessera if (jTxtTessera.getText().trim().length() <= 0) { String PC = idPuntoCassa.toString(); if (PC.length() >= 5) { PC = PC.substring(PC.length() - 5, PC.length()); } else { PC = spaziBianchi(PC, 5, false); } String Riga = spaziBianchi(messageDisplay, 20, true) + "POS " + PC + " APERTO"; display(Riga, null); } } private void statoTesseraLetta(int Gratuita, int Bonus) { String tess = jTxtTessera.getText(); if (tess.length() >= 12) { tess = tess.substring(tess.length() - 12, tess.length()); } else { tess = spaziBianchi(tess, 12, false); } String fa = ""; fa = spaziBianchi(fa, 13, true); if (Gratuita > 0) { } else if (Bonus > 0) { fa = "BONUS "; } } class MyCanvas extends JComponent { private String texto = ""; public MyCanvas(String Testo) { texto = Testo; } @Override public void paintComponent(Graphics g) { if (g instanceof Graphics2D) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.drawString(texto, 70, 20); } } } class CardTask extends TimerTask { PuntoCassa frmA; public CardTask(PuntoCassa frmx) { frmA = frmx; } public void run() { MyApplication myApp = new MyApplication(); try { myApp.smartCard.setReader(jcmbSC.getSelectedItem()); myApp.smartCard.connect("T=1"); statoCarta = StatiCarta.INSERITA; if (pnlLogin.isVisible() == false && cartaLetta == false) { jBtnReadCardActionPerformed(null); passaggioTessera = true; frmA.cercaTessera(); cartaLetta = true; } else if (pnlLogin.isVisible() == true && cartaLetta == false) { frmA.controllaLogInCarta(getNumeroTessera()); } } catch (Exception e) { if (statoCarta == StatiCarta.INSERITA) { statoCarta = StatiCarta.RIMOSSA; } else { statoCarta = StatiCarta.ASSENTE; } cartaLetta = false; } } } // ========================================================================== // *** Sottoclasse per la gestione degli eventi a timer // ========================================================================== public class timerDBConn extends java.util.TimerTask { // ======================================================================= // ** Implementazione del riferimento alla classe contenitore // ======================================================================= private PuntoCassa pc; Connection dbConnection; timerDBConn(PuntoCassa pc) { this.pc = pc; } PuntoCassa getPuntoCassa() { return pc; } // ======================================================================= // ** Contiene il processo da eseguire in background // ======================================================================= public void run() { String sql; Statement st = null; ResultSet rs; // ==================================================================== // * Se non c'è connessione al DB prova a connettersi // ==================================================================== try { Class.forName(dbDriver); dbConnection = DriverManager.getConnection(dbStringa, dbUsername, dbPassword); } catch (Exception ex) { this.pc.utenteLoggato = ""; this.pc.lblStatoConnessione.setText("Errore di connessione al db"); } //} // ==================================================================== // * Se c'e connessione // ==================================================================== // ----------------------------------------------------------------- // *** Verifica lo stato di attivita della connessione // ----------------------------------------------------------------- if (dbTipo.equals("Oracle")) { sql = "Select Valore as now from Parametri where chiave='UltimoAggTabelle'"; } else { sql = "SELECT now() AS now FROM dual"; } try { st = dbConnection.createStatement(); rs = st.executeQuery(sql); while (rs.next()) { String strRiga = rs.getString("now"); this.pc.lblStatoConnessione.setText(strRiga + " Vers. " + versione); } // -------------------------------------------------------------- // ** Verifica se c'e un utente loggato // -------------------------------------------------------------- this.pc.pnlErrore.setVisible(false); // -------------------------------------------------------------- // ** Verifica se c'e un utente loggato // -------------------------------------------------------------- if (this.pc.utenteLoggato == "") { this.pc.pnlLogin.setVisible(true); } else { this.pc.pnlLogin.setVisible(false); } rs.close(); st.close(); dbConnection.close(); } catch (SQLException e) { this.pc.pnlErrore.setVisible(true); this.pc.lblMessaggioErrore.setText("Errore di connessione al database!");//Errore query " + sql); } } } // ========================================================================== // *** Sottoclasse per i button categoria // ========================================================================== public class buttonCategoria extends javax.swing.JButton { } // ========================================================================== // *** Sottoclasse per i button prodotto // ========================================================================== public class buttonProdotto extends javax.swing.JButton { } // Variables declaration - do not modify//GEN-BEGIN:variables public javax.swing.JButton btnImpostaCliente; private javax.swing.JButton btnLogin; private javax.swing.JButton btnTermina; private javax.swing.JToggleButton jBtnAsporto; private javax.swing.JButton jBtnBuoni; private javax.swing.JButton jBtnDB1; private javax.swing.JButton jBtnMovimenti; private javax.swing.JButton jBtnReadCard; private javax.swing.JButton jBtnStorno; private javax.swing.JButton jBtnprodotti; private javax.swing.JCheckBox jChLogin; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JToggleButton jTBP0; private javax.swing.JToggleButton jTBP1; private javax.swing.JToggleButton jTBP2; private javax.swing.JToggleButton jTBP3; private javax.swing.JTextField jTxtTessera; private javax.swing.JButton jbtnAnnulla; private javax.swing.JButton jbtnChiudi; private javax.swing.JButton jbtnDuplica; private javax.swing.JButton jbtnElimina; private javax.swing.JButton jbtnEsci; private javax.swing.JButton jbtnGiu; private javax.swing.JButton jbtnStampa; private javax.swing.JButton jbtnSu; private javax.swing.JComboBox jcmbSC; private javax.swing.JLabel lblAzienda; private javax.swing.JLabel lblCategoria; private javax.swing.JLabel lblCodice; private javax.swing.JLabel lblCodice1; private javax.swing.JLabel lblCodice2; private javax.swing.JLabel lblCodice3; private javax.swing.JLabel lblCodice4; private javax.swing.JLabel lblCodice5; private javax.swing.JLabel lblCognome; private javax.swing.JLabel lblConvenzione; private javax.swing.JLabel lblDB; private javax.swing.JLabel lblDenominazione; private javax.swing.JLabel lblFascia; private javax.swing.JLabel lblGratuita; private javax.swing.JLabel lblInfo; private javax.swing.JLabel lblInfo2; private javax.swing.JLabel lblMessaggioErrore; private javax.swing.JLabel lblNascita; private javax.swing.JLabel lblNome; private javax.swing.JLabel lblOrganizzazione; private javax.swing.JLabel lblOrganizzazione1; private javax.swing.JLabel lblOrganizzazione2; private javax.swing.JLabel lblOrganizzazione3; private javax.swing.JLabel lblOrganizzazione4; private javax.swing.JLabel lblOrganizzazione5; private javax.swing.JLabel lblPassword; private javax.swing.JLabel lblPunti; private javax.swing.JLabel lblResiduo; private javax.swing.JLabel lblSaldo; private javax.swing.JLabel lblScadTessera; private javax.swing.JLabel lblStatoConnessione; private javax.swing.JLabel lblTipoPagamento; private javax.swing.JLabel lblUsername; private javax.swing.JLabel lblUtenteLoggato; private javax.swing.JPanel pnlAzioni; private javax.swing.JPanel pnlCategorie; private javax.swing.JPanel pnlCliente; private javax.swing.JPanel pnlConto; private javax.swing.JPanel pnlErrore; private javax.swing.JPanel pnlLista; private javax.swing.JPanel pnlLista1; private javax.swing.JPanel pnlLogin; private javax.swing.JPanel pnlProdotti; protected javax.swing.JPanel pnlTop; private javax.swing.JScrollPane scpLista; private javax.swing.JScrollPane scpLista1; private javax.swing.JTable tblLista; private javax.swing.JTable tblLista1; private javax.swing.JPasswordField txtPassword; private javax.swing.JTextField txtTotaleCassa; private javax.swing.JTextField txtTotalePunti; private javax.swing.JTextField txtUsername; // End of variables declaration//GEN-END:variables }