/** * <p>Title: T2Ti ERP</p> * <p>Description: PAF-ECF + TEF - Janela dos DAV emitidos.</p> * * <p>The MIT License</p> * * <p>Copyright: Copyright (C) 2010 T2Ti.COM</p> * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * The author may be contacted at: * t2ti.com@gmail.com</p> * * @author Albert Eije (T2Ti.COM) * @version 1.0 */ package com.t2tierp.pafecf.view; import com.t2tierp.pafecf.controller.DAVController; import com.t2tierp.pafecf.controller.RegistroRController; import com.t2tierp.pafecf.infra.Biblioteca; import com.t2tierp.pafecf.vo.DAVCabecalhoVO; import com.t2tierp.pafecf.vo.R06VO; import java.awt.AWTKeyStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.List; import javax.swing.AbstractAction; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.KeyStroke; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.MaskFormatter; public class DAVEmitidos extends javax.swing.JDialog { public DAVEmitidos(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); defineFormatoData(); int r = Integer.valueOf(Caixa.configuracao.getCorJanelasInternas().substring(0, 3)); int g = Integer.valueOf(Caixa.configuracao.getCorJanelasInternas().substring(4, 7)); int b = Integer.valueOf(Caixa.configuracao.getCorJanelasInternas().substring(8, 11)); //TODO : É necessário configurar a cor de cada Panel? panelPrincipal.setBackground(new Color(r, g, b)); panelComponentes.setBackground(new Color(r, g, b)); panelFiltro.setBackground(new Color(r, g, b)); panelPeriodo.setBackground(new Color(r, g, b)); panelBotoes.setBackground(new Color(r, g, b)); CancelaAction cancelaAction = new CancelaAction(); botaoCancela.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancelaAction"); botaoCancela.getActionMap().put("cancelaAction", cancelaAction); ConfirmaAction confirmaAction = new ConfirmaAction(); botaoConfirma.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0), "confirmaAction"); botaoConfirma.getActionMap().put("confirmaAction", confirmaAction); //troca TAB por ENTER HashSet conj = new HashSet(this.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0)); this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj); this.setPreferredSize(new Dimension(500, 170)); this.pack(); } private void defineFormatoData() { try { MaskFormatter mascara = new MaskFormatter("##/##/####"); DefaultFormatterFactory formatter = new DefaultFormatterFactory(mascara); dataFinal.setFormatterFactory(formatter); dataInicial.setFormatterFactory(formatter); } catch (Exception ex) { ex.printStackTrace(); } } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; buttonGroup1 = new javax.swing.ButtonGroup(); panelPrincipal = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); panelComponentes = new javax.swing.JPanel(); panelFiltro = new javax.swing.JPanel(); radioGerencial = new javax.swing.JRadioButton(); radioArquivo = new javax.swing.JRadioButton(); panelPeriodo = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); dataInicial = new javax.swing.JFormattedTextField(); dataFinal = new javax.swing.JFormattedTextField(); panelBotoes = new javax.swing.JPanel(); botaoConfirma = new javax.swing.JButton(); botaoCancela = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("DAV Emitidos"); setModal(true); setResizable(false); getContentPane().setLayout(new java.awt.CardLayout()); panelPrincipal.setLayout(new java.awt.GridBagLayout()); jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/telas/telaRegistradora01.png"))); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); panelPrincipal.add(jLabel1, gridBagConstraints); panelComponentes.setLayout(new java.awt.GridBagLayout()); panelFiltro.setBackground(new Color(255,255,255,0)); panelFiltro.setBorder(javax.swing.BorderFactory.createTitledBorder("Tipo de Filtro:")); panelFiltro.setLayout(new java.awt.GridBagLayout()); buttonGroup1.add(radioGerencial); radioGerencial.setSelected(true); radioGerencial.setText("Relatório Gerencial"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0); panelFiltro.add(radioGerencial, gridBagConstraints); buttonGroup1.add(radioArquivo); radioArquivo.setText("Geração de Arquivo"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0); panelFiltro.add(radioArquivo, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 5, 10); panelComponentes.add(panelFiltro, gridBagConstraints); panelPeriodo.setBackground(new Color(255,255,255,0)); panelPeriodo.setLayout(new java.awt.GridBagLayout()); jLabel2.setText("Data inicial:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0); panelPeriodo.add(jLabel2, gridBagConstraints); jLabel3.setText("Data final:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0); panelPeriodo.add(jLabel3, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.ipadx = 70; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0); panelPeriodo.add(dataInicial, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.ipadx = 70; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0); panelPeriodo.add(dataFinal, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10); panelComponentes.add(panelPeriodo, gridBagConstraints); panelBotoes.setBackground(new Color(255,255,255,0)); panelBotoes.setLayout(new java.awt.GridBagLayout()); botaoConfirma.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/imgBotoes/botaoConfirmar.png"))); // NOI18N botaoConfirma.setText("Confirma (F12)"); botaoConfirma.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoConfirmaActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); panelBotoes.add(botaoConfirma, gridBagConstraints); botaoCancela.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/imgBotoes/botaoCancelar.png"))); // NOI18N botaoCancela.setText("Cancela (ESC)"); botaoCancela.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoCancelaActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 5); panelBotoes.add(botaoCancela, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10); panelComponentes.add(panelBotoes, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; panelPrincipal.add(panelComponentes, gridBagConstraints); getContentPane().add(panelPrincipal, "card2"); pack(); }// </editor-fold>//GEN-END:initComponents private void botaoConfirmaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoConfirmaActionPerformed confirma(); }//GEN-LAST:event_botaoConfirmaActionPerformed private void botaoCancelaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoCancelaActionPerformed dispose(); }//GEN-LAST:event_botaoCancelaActionPerformed public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { DAVEmitidos dialog = new DAVEmitidos(new javax.swing.JFrame(), true); dialog.setLocationRelativeTo(null); dialog.setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton botaoCancela; private javax.swing.JButton botaoConfirma; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JFormattedTextField dataFinal; private javax.swing.JFormattedTextField dataInicial; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel panelBotoes; private javax.swing.JPanel panelComponentes; private javax.swing.JPanel panelFiltro; private javax.swing.JPanel panelPeriodo; private javax.swing.JPanel panelPrincipal; private javax.swing.JRadioButton radioArquivo; private javax.swing.JRadioButton radioGerencial; // End of variables declaration//GEN-END:variables private class ConfirmaAction extends AbstractAction { public ConfirmaAction() { } public void actionPerformed(ActionEvent e) { confirma(); } } private class CancelaAction extends AbstractAction { public CancelaAction() { } public void actionPerformed(ActionEvent e) { dispose(); } } private void confirma() { DAVController davControl = new DAVController(); String numero, dataEmissao, titulo, valor = ""; SimpleDateFormat formataData; Date dataIni = null; Date dataFim = null; try { dataInicial.commitEdit(); dataFinal.commitEdit(); formataData = new SimpleDateFormat("dd/MM/yyyy"); dataIni = formataData.parse((String) dataInicial.getValue()); dataFim = formataData.parse((String) dataFinal.getValue()); } catch (ParseException ex) { ex.printStackTrace(); } //formata a data para realizar o filtro formataData = new SimpleDateFormat("yyyy-MM-dd"); String strDataIni = formataData.format(dataIni); String strDataFim = formataData.format(dataFim); //relatorio gerencial if (radioGerencial.isSelected()) { String[] opcoes = {"Sim", "Não"}; int escolha = JOptionPane.showOptionDialog(null, "Deseja imprimir o relatório DAV EMITIDOS?", "Pergunta do Sistema", JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, null); if (escolha == 0) { List<DAVCabecalhoVO> listaDAV = davControl.listaDAVPeriodo(strDataIni, strDataFim); if (listaDAV != null) { try { Caixa.ACBrECF.abreRelatorioGerencial(Caixa.configuracao.getIndiceGerencialDAV()); Caixa.ACBrECF.linhaRelatorioGerencial(Biblioteca.repete("=", 48), 0); Caixa.ACBrECF.linhaRelatorioGerencial("DAV EMITIDOS", 0); Caixa.ACBrECF.linhaRelatorioGerencial("PERIODO: " + strDataIni + " A " + strDataFim, 0); //TODO : Devemos configurar o numero de colunas do ECF? Caixa.ACBrECF.linhaRelatorioGerencial(Biblioteca.repete("=", 48), 0); Caixa.ACBrECF.linhaRelatorioGerencial("NUMERO DATA EMISSAO TITULO VALOR ", 0); Caixa.ACBrECF.linhaRelatorioGerencial(Biblioteca.repete("=", 48), 0); for (int i = 0; i < listaDAV.size(); i++) { numero = Biblioteca.repete("0", 10 - listaDAV.get(i).getId().toString().length()) + listaDAV.get(i).getId() + " "; dataEmissao = listaDAV.get(i).getDataHoraEmissao().toString().substring(0, 10) + " "; //TODO : Devemos configurar o titulo de cada DAV? Ou pelo menos deixar em aberto a configuração do titulo dos DAV (orçamento/pedido/etc)? titulo = "ORCAMENTO "; NumberFormat formatter = new DecimalFormat("0.00"); valor = formatter.format(listaDAV.get(i).getValor()); valor = Biblioteca.repete(" ", 13 - valor.length()) + valor; Caixa.ACBrECF.linhaRelatorioGerencial(numero + dataEmissao + titulo + valor, 0); } Caixa.ACBrECF.linhaRelatorioGerencial(Biblioteca.repete("=", 48), 0); Caixa.ACBrECF.fechaRelatorio(); //TODO : Está correta essa implementação para gravação do registro R06? R06VO R06 = new R06VO(); R06.setIdCaixa(Caixa.movimento.getIdCaixa()); R06.setIdOperador(Caixa.movimento.getIdOperador()); R06.setIdImpressora(Caixa.movimento.getIdImpressora()); R06.setCOO(Integer.valueOf(Caixa.ACBrECF.getNumCOO())); R06.setGNF(Integer.valueOf(Caixa.ACBrECF.getNumGNF())); R06.setGRG(Integer.valueOf(Caixa.ACBrECF.getNumGRG())); R06.setCDC(Integer.valueOf(Caixa.ACBrECF.getNumCDC())); R06.setDenominacao("RG"); java.util.Date data = Caixa.ACBrECF.getDataHora(); java.sql.Date dataSQL = new java.sql.Date(data.getTime()); //TODO : O que está ocorrendo de esquisito nessa rotina? Qual a solução? R06.setDataEmissao(dataSQL); java.sql.Time horaSQL = new java.sql.Time(data.getTime()); R06.setHoraEmissao(horaSQL.toString()); RegistroRController registroRControl = new RegistroRController(); registroRControl.gravaR06(R06); //TODO : Precisamos fazer alguma coisa em relacao ao registro R07? } catch (Throwable t) { JOptionPane.showMessageDialog(rootPane, t.getMessage(), "Erro do Sistema", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(rootPane, "Não existem DAV para o período informado.", "Aviso do Sistema", JOptionPane.INFORMATION_MESSAGE); } } } //geração de arquivo if (radioArquivo.isSelected()) { String[] opcoes = {"Sim", "Não"}; int escolha = JOptionPane.showOptionDialog(null, "Deseja gerar o arquivo de DAV EMITIDOS?", "Pergunta do Sistema", JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, null); if (escolha == 0) { String comando = System.getProperty("user.dir") + "\\binario\\binario.exe " + "DAVEmitidos " + Caixa.configuracao.getIdEmpresa() + " " + Caixa.movimento.getIdCaixa() + " " + Caixa.movimento.getIdOperador() + " " + Caixa.movimento.getIdImpressora() + " " + Caixa.configuracao.getPortaECF() + " " + Caixa.configuracao.getTimeOutECF() + " " + Caixa.configuracao.getIntervaloECF() + " " + Caixa.configuracao.getImpressoraVO().getModeloACBr() + " " + strDataIni + " " + strDataFim; try { Caixa.ACBrECF.desativar(); Process p = Runtime.getRuntime().exec(comando); p.waitFor(); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Erro do Sistema", JOptionPane.ERROR_MESSAGE); } finally { try { Caixa.ACBrECF.ativar(); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Erro do Sistema", JOptionPane.ERROR_MESSAGE); } } } } } }