Subversion Repositories Integrator Subversion

Rev

Rev 413 | Rev 425 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller;

import java.io.Serializable;

import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.StreamedContent;
import org.springframework.context.annotation.Scope;

import br.com.ec.controller.consultademanda.NotaFiscalConsultaPorDemanda;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.consulta.ParametrosConsultaNotaFiscal;
import br.com.ec.domain.model.NotaFiscal;
import br.com.ec.domain.model.Venda;
import br.com.ec.domain.model.nfe.TipoNotaFiscal;
import br.com.ec.domain.service.EmissorRelatorioService;
import br.com.ec.domain.service.NotaFiscalService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
import br.com.ec.web.util.TipoOperacao;

@Named
@Scope("view")
public class NotaFiscalBean extends AbstractBean<NotaFiscal> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private NotaFiscalService notaFiscalService;
        private EmissorRelatorioService emissorRelatorioService;
       
        private ParametrosConsultaNotaFiscal parametrosConsultaNotaFiscal;
        private NotaFiscalConsultaPorDemanda lazy;
       
        private Long sequencialVendaParaVinculo;
        private StreamedContent danfeNfe;

        @Inject
        public NotaFiscalBean(NotaFiscalConsultaPorDemanda lazy, NotaFiscalService notaFiscalService, EmissorRelatorioService emissorRelatorioService) {
                this.lazy = lazy;
                this.notaFiscalService = notaFiscalService;
                this.emissorRelatorioService = emissorRelatorioService;
        }
       
        @Override
        public void preCarregamento() {
                parametrosConsultaNotaFiscal = new ParametrosConsultaNotaFiscal();
                prepararConsultaDemanda();
                limparEntidade();
        }

        @Override
        public void limparEntidade() {
                setEntidade(new NotaFiscal());
        }

        @Override
        public GenericService<NotaFiscal> getService() {
                return notaFiscalService;
        }
       
        @Override
        public NotaFiscal getEntidade() {
                return entidade;
        }
       
        @Override
        public void preConsultar() {
                setTipoOperacao(TipoOperacao.CONSULTAR);
        }

        @Override
        public NotaFiscal getId() {
                return getEntidade();
        }
       
        public ParametrosConsultaNotaFiscal getParametrosConsultaNotaFiscal() {
                return parametrosConsultaNotaFiscal;
        }
        public void setParametrosConsultaNotaFiscal(ParametrosConsultaNotaFiscal parametrosConsultaNotaFiscal) {
                this.parametrosConsultaNotaFiscal = parametrosConsultaNotaFiscal;
        }
       
        public NotaFiscalConsultaPorDemanda getLazy() {
                return lazy;
        }
        public void setLazy(NotaFiscalConsultaPorDemanda lazy) {
                this.lazy = lazy;
        }
        public void prepararConsultaDemanda() {
                lazy.setarParametrosConsulta(getParametrosConsultaNotaFiscal());
        }
       
        public TipoNotaFiscal[] getTiposNotaFiscal() {
                return TipoNotaFiscal.values();
        }
       
        public Long getSequencialVendaParaVinculo() {
                return sequencialVendaParaVinculo;
        }
        public void setSequencialVendaParaVinculo(Long sequencialVendaParaVinculo) {
                this.sequencialVendaParaVinculo = sequencialVendaParaVinculo;
        }
       
        public StreamedContent getDanfeNfe() {
                return danfeNfe;
        }
        public void setDanfeNfe(StreamedContent danfeNfe) {
                this.danfeNfe = danfeNfe;
        }
       
        /**************************************************/
       
        public void desvincularVenda() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                notaFiscalService.desvincularVenda(getEntidade().getSequencial());
                                getEntidade().setVenda(null);
                                LancadorMensagem.lancarSucesso("VENDA DESVINCULADA COM SUCESSO");
                        }
                });
        }
       
        public void vincularVenda() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Venda vendaVinculada = notaFiscalService.vincularVenda(getEntidade().getSequencial(), getSequencialVendaParaVinculo());
                                getEntidade().setVenda(vendaVinculada);
                                LancadorMensagem.lancarSucesso("VENDA VINCULADA COM SUCESSO");
                        }
                });
        }
       
        public void emitirDanfeNfe(Long sequencialNotaFiscal) {
                setDanfeNfe(notaFiscalService.gerarDanfeNfe(sequencialNotaFiscal));
                /*
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return notaFiscalService.gerarDanfeNfe(getEntidade().getSequencial());
                        }
                });
                */

        }
       
        /*
         private StreamedContent chart;
         public StreamedContent getChart() {
                 return chart;
         }
         private PieDataset createDataset() {
                 DefaultPieDataset dataset = new DefaultPieDataset();
                 dataset.setValue("New York", new Double(45.0));
                 dataset.setValue("London", new Double(15.0));
                 dataset.setValue("Paris", new Double(25.2));
                 dataset.setValue("Berlin", new Double(14.8));
                 return dataset;
         }
       
         private StreamedContent escala;
         public StreamedContent getEscala() {
                 return escala;
         }
         
         private StreamedContent escalaPdf;
         public StreamedContent getEscalaPdf() {
                 return escalaPdf;
         }
         public String generateRandomIdForNotCaching() {
                 return java.util.UUID.randomUUID().toString();
         }
       
         private void criarImagens() {
                 try {
                         InputStream arquivoPdf = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/imagens/escala-202310.pdf");
                         byte[] bytePdf = ArquivoUtil.retornarBytesPassandoInputStream(arquivoPdf);
                         ByteArrayOutputStream osPdf = new ByteArrayOutputStream();
                         PdfReader reader = new PdfReader(bytePdf);
                         escalaPdf = DefaultStreamedContent.builder()
                            .contentType("application/pdf")
                            .name("escala-202310.pdf")
                            .stream(() -> {
                                                try {
                                                        return ArquivoUtil.gerarInputStreamDeArquivo(bytePdf);
                                                } catch (IOException e1) {
                                                        e1.printStackTrace();
                                                }
                                                return arquivoPdf;
                                        })
                            .build();
                         
                         
                         InputStream arquivo = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/imagens/escala-202310.png");
                         BufferedImage imagem = ImageIO.read(arquivo);
                         ByteArrayOutputStream os = new ByteArrayOutputStream();
             ImageIO.write(imagem, "png", os);
                         escala = DefaultStreamedContent.builder()
                            .contentType("image/png")
                            .stream(() -> new ByteArrayInputStream(os.toByteArray()))
                            .build();
                       
                         
                        chart = DefaultStreamedContent.builder()
                            .contentType("image/png")
                            .stream(() -> {
                                try {
                                    JFreeChart jfreechart = ChartFactory.createPieChart("Cities", createDataset(), true, true, false);
                                    File chartFile = new File("dynamichart");
                                    ChartUtilities.saveChartAsPNG(chartFile, jfreechart, 375, 300);
                                    return new FileInputStream(chartFile);
                                }
                                catch (Exception e) {
                                    e.printStackTrace();
                                    return null;
                                }
                            })
                            .build();
                 } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }
        }
        */

}