diff --git a/.gitignore b/.gitignore index a33ed9d..71b25b6 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ docker.sock .factorypath .settings/ .project +AGENTS.md diff --git a/pom.xml b/pom.xml index 18698e6..a152445 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.unicenta unicentaopos 5.4.0 @@ -116,7 +115,6 @@ poi 3.17 - org.apache.poi poi-ooxml @@ -181,7 +179,6 @@ slf4j-api - org.swinglabs.swingx @@ -255,11 +252,11 @@ derbytools ${derby.version} - - - - - + + + + + xml-apis xml-apis @@ -293,7 +290,6 @@ DynamicJasper-core-fonts 2.0 - org.eclipse.jdt.core.compiler ecj @@ -361,7 +357,7 @@ com.unicenta unicenta-plugins - 1.3.1 + 1.3.2-SNAPSHOT com.gluonhq @@ -450,7 +446,6 @@ 4.2.0 test - diff --git a/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java b/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java index dfd6084..ea12ec6 100644 --- a/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java +++ b/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java @@ -53,6 +53,7 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf initPayments("external", new ConfigPaymentPanelEmpty()); initPayments("PaymentSense", new ConfigPaymentPanelEmpty()); initPayments("Teya", new ConfigPaymentPanelEmpty()); + initPayments("MediaPayments", new ConfigPaymentPanelEmpty()); // Lector de tarjetas. jcboCardReader.addItem("Not defined"); @@ -91,9 +92,17 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf jcboCardReader.setSelectedItem(config.getProperty("payment.magcardreader")); jcboPaymentGateway.setSelectedItem(config.getProperty("payment.gateway")); - urlValue.setText(config.getProperty("payment.URL")); - deviceIdValue.setText(config.getProperty("payment.device-id")); - securityKeyValue.setText(config.getProperty("payment.security-key")); + + String gateway = comboValue(jcboPaymentGateway.getSelectedItem()); + if ("MediaPayments".equals(gateway)) { + urlValue.setText(config.getProperty("media-payments.pdq")); + deviceIdValue.setText(config.getProperty("media-payments.api-key")); + securityKeyValue.setText(config.getProperty("media-payments.secret")); + } else { + urlValue.setText(config.getProperty("payment.URL")); + deviceIdValue.setText(config.getProperty("payment.device-id")); + securityKeyValue.setText(config.getProperty("payment.security-key")); + } paymentConfiguration.loadProperties(config); dirty.setDirty(false); } @@ -107,9 +116,17 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf config.setProperty("payment.magcardreader", comboValue(jcboCardReader.getSelectedItem())); config.setProperty("payment.gateway", comboValue(jcboPaymentGateway.getSelectedItem())); - config.setProperty("payment.URL", urlValue.getText()); - config.setProperty("payment.device-id", deviceIdValue.getText()); - config.setProperty("payment.security-key", securityKeyValue.getText()); + + String gateway = comboValue(jcboPaymentGateway.getSelectedItem()); + if ("MediaPayments".equals(gateway)) { + config.setProperty("media-payments.pdq", urlValue.getText()); + config.setProperty("media-payments.api-key", deviceIdValue.getText()); + config.setProperty("media-payments.secret", securityKeyValue.getText()); + } else { + config.setProperty("payment.URL", urlValue.getText()); + config.setProperty("payment.device-id", deviceIdValue.getText()); + config.setProperty("payment.security-key", securityKeyValue.getText()); + } paymentConfiguration.saveProperties(config); dirty.setDirty(false); } @@ -275,6 +292,9 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf paymentConfiguration = paymentsName.get(comboValue(jcboPaymentGateway.getSelectedItem())); if (comboValue(jcboPaymentGateway.getSelectedItem()).equals("PaymentSense")) { + urlLabel.setText("URL"); + deviceIdLabel.setText("Device ID"); + securityKeyLabel.setText("Security Key"); emvConfigPanel.setVisible(Boolean.TRUE); jcboCardReader.setSelectedItem("EMV"); jcboCardReader.setEnabled(Boolean.FALSE); @@ -285,7 +305,18 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf jcboCardReader.setSelectedItem("EMV"); jcboCardReader.setEnabled(Boolean.FALSE); } + else if (comboValue(jcboPaymentGateway.getSelectedItem()).equals("MediaPayments")) { + urlLabel.setText("Terminal ID"); + deviceIdLabel.setText("API Key"); + securityKeyLabel.setText("Security Key"); + emvConfigPanel.setVisible(Boolean.TRUE); + jcboCardReader.setSelectedItem("EMV"); + jcboCardReader.setEnabled(Boolean.FALSE); + } else { + urlLabel.setText("URL"); + deviceIdLabel.setText("Device ID"); + securityKeyLabel.setText("Security Key"); emvConfigPanel.setVisible(Boolean.FALSE); jcboCardReader.setEnabled(Boolean.TRUE); } diff --git a/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.form b/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.form index 5188710..6b4807a 100644 --- a/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.form +++ b/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.form @@ -40,10 +40,6 @@ - - - - @@ -87,9 +83,7 @@ - - - + @@ -166,43 +160,43 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - @@ -224,14 +218,6 @@ - - - - - - - - diff --git a/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.java b/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.java index ff1895e..4b03ae0 100644 --- a/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.java +++ b/src/main/java/com/unicenta/pos/payment/JPaymentVoucher.java @@ -183,154 +183,141 @@ public class JPaymentVoucher extends javax.swing.JPanel implements JPaymentInter * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ - // //GEN-BEGIN:initComponents - private void initComponents() { + // //GEN-BEGIN:initComponents + private void initComponents() { - jPanel4 = new javax.swing.JPanel(); - jLabel5 = new javax.swing.JLabel(); - m_jVoucher = new javax.swing.JComboBox(); - jLabel1 = new javax.swing.JLabel(); - m_jMoneyEuros = new javax.swing.JLabel(); - webLblCustomer = new com.alee.laf.label.WebLabel(); - webLblcustomerName = new com.alee.laf.label.WebLabel(); - voucherStatus = new com.alee.laf.label.WebLabel(); - jLabel6 = new javax.swing.JLabel(); - jButton1 = new javax.swing.JButton(); - jPanel11 = new javax.swing.JPanel(); - jPanel12 = new javax.swing.JPanel(); - m_jKeys = new com.unicenta.editor.JEditorKeys(); - jPanel1 = new javax.swing.JPanel(); - m_jTendered = new com.unicenta.editor.JEditorCurrencyPositive(); + jPanel4 = new javax.swing.JPanel(); + jLabel5 = new javax.swing.JLabel(); + m_jVoucher = new javax.swing.JComboBox(); + jLabel1 = new javax.swing.JLabel(); + m_jMoneyEuros = new javax.swing.JLabel(); + webLblCustomer = new javax.swing.JLabel(); + webLblcustomerName = new javax.swing.JLabel(); + voucherStatus = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jPanel11 = new javax.swing.JPanel(); + jPanel12 = new javax.swing.JPanel(); + m_jKeys = new com.unicenta.editor.JEditorKeys(); + jPanel1 = new javax.swing.JPanel(); + m_jTendered = new com.unicenta.editor.JEditorCurrencyPositive(); - setLayout(new java.awt.BorderLayout()); + setLayout(new java.awt.BorderLayout()); - jLabel5.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N - jLabel5.setLabelFor(m_jVoucher); - jLabel5.setText(AppLocal.getIntString("label.voucher")); // NOI18N - jLabel5.setPreferredSize(new java.awt.Dimension(100, 30)); + jLabel5.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N + jLabel5.setLabelFor(m_jVoucher); + jLabel5.setText(AppLocal.getIntString("label.voucher")); // NOI18N + jLabel5.setPreferredSize(new java.awt.Dimension(100, 30)); - m_jVoucher.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N - m_jVoucher.setPreferredSize(new java.awt.Dimension(180, 30)); - m_jVoucher.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - m_jVoucherActionPerformed(evt); - } - }); + m_jVoucher.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N + m_jVoucher.setPreferredSize(new java.awt.Dimension(180, 30)); + m_jVoucher.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + m_jVoucherActionPerformed(evt); + } + }); - jLabel1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N - jLabel1.setText(AppLocal.getIntString("label.voucherValue")); // NOI18N - jLabel1.setPreferredSize(new java.awt.Dimension(100, 30)); + jLabel1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N + jLabel1.setText(AppLocal.getIntString("label.voucherValue")); // NOI18N + jLabel1.setPreferredSize(new java.awt.Dimension(100, 30)); - m_jMoneyEuros.setBackground(new java.awt.Color(204, 255, 51)); - m_jMoneyEuros.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N - m_jMoneyEuros.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - m_jMoneyEuros.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("Button.darkShadow")), javax.swing.BorderFactory.createEmptyBorder(1, 4, 1, 4))); - m_jMoneyEuros.setOpaque(true); - m_jMoneyEuros.setPreferredSize(new java.awt.Dimension(180, 30)); + m_jMoneyEuros.setBackground(new java.awt.Color(204, 255, 51)); + m_jMoneyEuros.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N + m_jMoneyEuros.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + m_jMoneyEuros.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("Button.darkShadow")), javax.swing.BorderFactory.createEmptyBorder(1, 4, 1, 4))); + m_jMoneyEuros.setOpaque(true); + m_jMoneyEuros.setPreferredSize(new java.awt.Dimension(180, 30)); - webLblCustomer.setText(AppLocal.getIntString("label.customer")); // NOI18N - webLblCustomer.setToolTipText(""); - webLblCustomer.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N - webLblCustomer.setPreferredSize(new java.awt.Dimension(100, 30)); + webLblCustomer.setText(AppLocal.getIntString("label.customer")); // NOI18N + webLblCustomer.setToolTipText(""); + webLblCustomer.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N + webLblCustomer.setPreferredSize(new java.awt.Dimension(100, 30)); - webLblcustomerName.setText(AppLocal.getIntString("label.customer")); // NOI18N - webLblcustomerName.setToolTipText(""); - webLblcustomerName.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N - webLblcustomerName.setPreferredSize(new java.awt.Dimension(100, 30)); + webLblcustomerName.setText(AppLocal.getIntString("label.customer")); // NOI18N + webLblcustomerName.setToolTipText(""); + webLblcustomerName.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N + webLblcustomerName.setPreferredSize(new java.awt.Dimension(100, 30)); - voucherStatus.setText(AppLocal.getIntString("label.voucherStatus")); // NOI18N - voucherStatus.setToolTipText(""); - voucherStatus.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N - voucherStatus.setPreferredSize(new java.awt.Dimension(100, 30)); + voucherStatus.setText(AppLocal.getIntString("label.voucherStatus")); // NOI18N + voucherStatus.setToolTipText(""); + voucherStatus.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N + voucherStatus.setPreferredSize(new java.awt.Dimension(100, 30)); - jLabel6.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N - jLabel6.setLabelFor(m_jVoucher); - jLabel6.setText(AppLocal.getIntString("label.voucherStatus")); // NOI18N - jLabel6.setPreferredSize(new java.awt.Dimension(100, 30)); + jLabel6.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N + jLabel6.setLabelFor(m_jVoucher); + jLabel6.setText(AppLocal.getIntString("label.voucherStatus")); // NOI18N + jLabel6.setPreferredSize(new java.awt.Dimension(100, 30)); - jButton1.setText("jButton1"); - jButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButton1ActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); - jPanel4.setLayout(jPanel4Layout); - jPanel4Layout.setHorizontalGroup( + javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); + jPanel4.setLayout(jPanel4Layout); + jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addGap(10, 10, 10) - .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(m_jMoneyEuros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(m_jVoucher, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jButton1))) - .addGap(0, 0, Short.MAX_VALUE)) + .addGap(10, 10, 10) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(m_jMoneyEuros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(webLblCustomer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(webLblcustomerName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(voucherStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - ); - jPanel4Layout.setVerticalGroup( + .addContainerGap() + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(m_jVoucher, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(webLblCustomer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(webLblcustomerName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(voucherStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + ); + jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(m_jVoucher, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(voucherStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(m_jMoneyEuros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(webLblCustomer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(webLblcustomerName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(33, 33, 33) - .addComponent(jButton1) - .addContainerGap()) - ); + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(m_jVoucher, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(voucherStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(m_jMoneyEuros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(webLblCustomer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(webLblcustomerName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(241, 241, 241)) + ); - add(jPanel4, java.awt.BorderLayout.CENTER); + add(jPanel4, java.awt.BorderLayout.CENTER); - jPanel11.setLayout(new java.awt.BorderLayout()); + jPanel11.setLayout(new java.awt.BorderLayout()); - jPanel12.setLayout(new javax.swing.BoxLayout(jPanel12, javax.swing.BoxLayout.Y_AXIS)); - jPanel12.add(m_jKeys); + jPanel12.setLayout(new javax.swing.BoxLayout(jPanel12, javax.swing.BoxLayout.Y_AXIS)); + jPanel12.add(m_jKeys); - jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); - jPanel1.setLayout(new java.awt.BorderLayout()); + jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); + jPanel1.setLayout(new java.awt.BorderLayout()); - m_jTendered.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N - m_jTendered.setPreferredSize(new java.awt.Dimension(130, 30)); - jPanel1.add(m_jTendered, java.awt.BorderLayout.CENTER); + m_jTendered.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N + m_jTendered.setPreferredSize(new java.awt.Dimension(130, 30)); + jPanel1.add(m_jTendered, java.awt.BorderLayout.CENTER); - jPanel12.add(jPanel1); + jPanel12.add(jPanel1); - jPanel11.add(jPanel12, java.awt.BorderLayout.NORTH); + jPanel11.add(jPanel12, java.awt.BorderLayout.NORTH); - add(jPanel11, java.awt.BorderLayout.EAST); - }// //GEN-END:initComponents + add(jPanel11, java.awt.BorderLayout.EAST); + }// //GEN-END:initComponents private void m_jVoucherActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jVoucherActionPerformed @@ -365,27 +352,22 @@ public class JPaymentVoucher extends javax.swing.JPanel implements JPaymentInter } }//GEN-LAST:event_m_jVoucherActionPerformed - private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed - }//GEN-LAST:event_jButton1ActionPerformed - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButton1; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; - private javax.swing.JPanel jPanel1; - private javax.swing.JPanel jPanel11; - private javax.swing.JPanel jPanel12; - private javax.swing.JPanel jPanel4; - private com.unicenta.editor.JEditorKeys m_jKeys; - private javax.swing.JLabel m_jMoneyEuros; - private com.unicenta.editor.JEditorCurrencyPositive m_jTendered; - private javax.swing.JComboBox m_jVoucher; - private com.alee.laf.label.WebLabel voucherStatus; - private com.alee.laf.label.WebLabel webLblCustomer; - private com.alee.laf.label.WebLabel webLblcustomerName; - // End of variables declaration//GEN-END:variables + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel11; + private javax.swing.JPanel jPanel12; + private javax.swing.JPanel jPanel4; + private com.unicenta.editor.JEditorKeys m_jKeys; + private javax.swing.JLabel m_jMoneyEuros; + private com.unicenta.editor.JEditorCurrencyPositive m_jTendered; + private javax.swing.JComboBox m_jVoucher; + private javax.swing.JLabel voucherStatus; + private javax.swing.JLabel webLblCustomer; + private javax.swing.JLabel webLblcustomerName; + // End of variables declaration//GEN-END:variables } diff --git a/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java b/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java index c0a8f55..2c27bf7 100644 --- a/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java +++ b/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java @@ -41,6 +41,8 @@ public class PaymentGatewayFac { return new PaymentGatewayPaymentSense(); case "Teya": return new PaymentGatewayTeya(); + case "MediaPayments": + return new PaymentGatewayMediaPayments(); default: return null; } diff --git a/src/main/java/com/unicenta/pos/payment/PaymentGatewayMediaPayments.java b/src/main/java/com/unicenta/pos/payment/PaymentGatewayMediaPayments.java new file mode 100644 index 0000000..80fd497 --- /dev/null +++ b/src/main/java/com/unicenta/pos/payment/PaymentGatewayMediaPayments.java @@ -0,0 +1,97 @@ +// uniCenta oPOS - Touch Friendly Point Of Sale +// Copyright (c) 2009-2018 uniCenta & previous Openbravo POS works +// https://unicenta.com +// +// This file is part of uniCenta oPOS +// +// uniCenta oPOS is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// uniCenta oPOS is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with uniCenta oPOS. If not, see . + +package com.unicenta.pos.payment; + +import com.unicenta.plugins.Application; +import com.unicenta.plugins.common.AppContext; +import com.unicenta.pos.util.RoundUtils; +import lombok.extern.slf4j.Slf4j; + +import java.awt.*; +import java.util.ArrayList; + +@Slf4j +public class PaymentGatewayMediaPayments implements PaymentGateway { + + public PaymentGatewayMediaPayments() { + } + + Window getPaymentWindow(double amount) { + if (amount > 0) { + ArrayList paymentWindows = new ArrayList<>(); + for (Window window : Window.getWindows()) { + if (window instanceof JPaymentSelectReceipt) { + paymentWindows.add((JPaymentSelectReceipt) window); + } + } + return paymentWindows.get(paymentWindows.size() - 1); + } else { + ArrayList paymentWindows = new ArrayList<>(); + for (Window window : Window.getWindows()) { + if (window instanceof JPaymentSelectRefund) { + paymentWindows.add((JPaymentSelectRefund) window); + } + } + return paymentWindows.get(paymentWindows.size() - 1); + } + } + + @Override + public void execute(PaymentInfoMagcard payinfo) { + + int timer = 0; + int timeout = 180; + + double roundedValue = RoundUtils.round(payinfo.getTotal()); + new Application().mediaPaymentsTransaction(roundedValue, getPaymentWindow(roundedValue), + payinfo.getTransactionID().length() > 12 ? payinfo.getTransactionID() : null); + + while (AppContext.getIsProcessing() == null || AppContext.getIsProcessing()) { + try { + log.info("uniCenta-oPos: waiting for payment to complete ...."); + Thread.sleep(1000); + timer += 1; + if (timer > timeout) + break; + } catch (InterruptedException e) { + log.error(e.getMessage()); + } + } + + if (AppContext.getMediaPaymentsPaymentResult() == null) { + payinfo.paymentError("Transaction Error! Please try again", "No Response"); + } else if ("APPROVED".equals(AppContext.getMediaPaymentsPaymentResult().getProcessingDetails().getStatus())) { + payinfo.setCardName(AppContext.getMediaPaymentsPaymentResult().getProcessingDetails().getCard().getType()); + payinfo + .setVerification(AppContext.getMediaPaymentsPaymentResult().getProcessingDetails().getVerificationMethod()); + payinfo.setChipAndPin(true); + payinfo.paymentOK( + AppContext.getMediaPaymentsPaymentResult().getAdditionalInformation().getRequestId(), + AppContext.getMediaPaymentsPaymentResult().getTransactionDetails().getId(), + AppContext.getMediaPaymentsPaymentResult().getProcessingDetails().getStatus()); + } else { + String errorMsg = AppContext.getMediaPaymentsPaymentResult().getErrorMessage(); + if (errorMsg == null) { + errorMsg = AppContext.getMediaPaymentsPaymentResult().getMessage(); + } + payinfo.paymentError("Transaction Error! Please try again", errorMsg); + } + } +} diff --git a/src/main/java/com/unicenta/pos/voucher/VoucherInfo.java b/src/main/java/com/unicenta/pos/voucher/VoucherInfo.java index b5deec0..136e380 100644 --- a/src/main/java/com/unicenta/pos/voucher/VoucherInfo.java +++ b/src/main/java/com/unicenta/pos/voucher/VoucherInfo.java @@ -24,124 +24,132 @@ import com.unicenta.data.loader.DataRead; import com.unicenta.data.loader.IKeyed; import com.unicenta.data.loader.SerializerRead; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class VoucherInfo implements IKeyed { - private String id; - private String voucherNumber; - private String customerName; - private double amount; - private String status; + private String id; + private String voucherNumber; + private String customerName; + private double amount; + private String status; - public VoucherInfo() { - } + public VoucherInfo() { + } - public VoucherInfo( - String id, - String voucherNumber, - String customerName, - double amount, - String status) - { - this.id = id; - this.voucherNumber = voucherNumber; - this.customerName = customerName; - this.amount = amount; - this.status = status; - } - + public VoucherInfo( + String id, + String voucherNumber, + String customerName, + double amount, + String status) { + this.id = id; + this.voucherNumber = voucherNumber; + this.customerName = customerName; + this.amount = amount; + this.status = status; + } - @Override - public Object getKey() { - return getId(); - } + @Override + public Object getKey() { + return getId(); + } - /** - * @return the id - */ - public String getId() { - return id; - } + /** + * @return the id + */ + public String getId() { + return id; + } - /** - * @param id the id to set - */ - public void setId(String id) { - this.id = id; - } + /** + * @param id the id to set + */ + public void setId(String id) { + this.id = id; + } - /** - * @return the voucherNumber - */ - public String getVoucherNumber() { - return voucherNumber; - } + /** + * @return the voucherNumber + */ + public String getVoucherNumber() { + return voucherNumber; + } - /** - * @param voucherNumber the voucherNumber to set - */ - public void setVoucherNumber(String voucherNumber) { - this.voucherNumber = voucherNumber; - } - - /** - * @return the customerName - */ - public String getCustomerName() { - return customerName; - } + /** + * @param voucherNumber the voucherNumber to set + */ + public void setVoucherNumber(String voucherNumber) { + this.voucherNumber = voucherNumber; + } - /** - * @param customerName the customerName to set - */ - public void setCustomerName(String customerName) { - this.customerName = customerName; - } + /** + * @return the customerName + */ + public String getCustomerName() { + return customerName; + } - /** - * @return the amount - */ - public double getAmount() { - return amount; - } + /** + * @param customerName the customerName to set + */ + public void setCustomerName(String customerName) { + this.customerName = customerName; + } - /** - * @param amount the amount to set - */ - public void setAmount(double amount) { - this.amount = amount; - } - - - @Override - public String toString() { - return voucherNumber; - } - - /** - * @return the status - */ - public String getStatus() { - return status; - } + /** + * @return the amount + */ + public double getAmount() { + return amount; + } - /** - * @param status the status to set - */ - public void setStatus(String status) { - this.status = status; - } + /** + * @param amount the amount to set + */ + public void setAmount(double amount) { + this.amount = amount; + } - public static SerializerRead getSerializerRead() { - return new SerializerRead() - { - @Override - public Object readValues(DataRead dr) throws BasicException { - return new VoucherInfo( - dr.getString(1), - dr.getString(2), - dr.getString(3), - dr.getDouble(4), - dr.getString(5)); - }}; - } + @Override + public String toString() { + return voucherNumber; + } + + /** + * @return the status + */ + public String getStatus() { + return status; + } + + /** + * @param status the status to set + */ + public void setStatus(String status) { + this.status = status; + } + + public static SerializerRead getSerializerRead() { + return new SerializerRead() { + @Override + public Object readValues(DataRead dr) throws BasicException { + VoucherInfo voucherInfo = null; + + try { + voucherInfo = new VoucherInfo( + dr.getString(1), + dr.getString(2), + dr.getString(3), + dr.getDouble(4), + dr.getString(5)); + } catch (Exception e) { + log.error("Error reading voucher info: {}", e.getMessage()); + log.error(dr.getString(2)); + } + + return voucherInfo; + } + }; + } } diff --git a/test.jpg b/test.jpg new file mode 100644 index 0000000..13f3618 Binary files /dev/null and b/test.jpg differ