Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

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

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

import br.com.ec.domain.dto.ConsolidadoDTO;
import br.com.ec.domain.dto.ConsolidadoPessoaJuridicaDTO;
import br.com.ec.domain.dto.ParametrosConsultaNotaFiscalDTO;
import br.com.ec.domain.model.NotaFiscal;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.domain.model.tipos.TipoNotaFiscal;
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
import br.edu.cesmac.core.consulta.ParametrosConsulta;
import br.edu.cesmac.core.generic.GenericService;
import br.edu.cesmac.core.util.VerificadorUtil;
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
import br.edu.cesmac.web.generic.AbstractBean;

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

        private static final long serialVersionUID = 1L;
       
        private NotaFiscalService notaFiscalService;
       
        @Inject
        public ConsolidadoBean(NotaFiscalService notaFiscalService) {
                this.notaFiscalService = notaFiscalService;
        }
       
        @Override
        public void preCarregamento() {
                entidade = new ConsolidadoDTO();
                parametrosConsulta = new ParametrosConsulta<ConsolidadoDTO>();
                parametrosConsulta.setEntidade(entidade);
        }
       
        @Override
        public void limparEntidade() {
                ConsolidadoDTO ConsolidadoVigencia = new ConsolidadoDTO();
                setEntidade(ConsolidadoVigencia);
        }

        @Override
        public GenericService<ConsolidadoDTO> getService() {
                return null;
        }
       
        @Override
        public ConsolidadoDTO getEntidade() {
                return entidade;
        }

        @Override
        public ConsolidadoDTO getId() {
                return getEntidade();
        }
       
        /*******************************************************/
       
        public void consultarValoresNotasFiscais() {
                ParametrosConsultaNotaFiscalDTO parametros = new ParametrosConsultaNotaFiscalDTO();
                parametros.setEntidade(new NotaFiscal());
                if (VerificadorUtil.naoEstaNulo(getEntidade().getVigencia())) {
                        parametros.setDataInicial(getEntidade().getVigencia().getDataInicio());
                        parametros.setDataFinal(getEntidade().getVigencia().getDataFim());
                }
                List<NotaFiscal> notasFiscais = notaFiscalService.consultarNotasFiscais(parametros);
               
                Integer notasRecebidas = 0;
                Double valorTotalRecebido = 0.0;
                for (NotaFiscal nf : notasFiscais) {
                        if (VerificadorUtil.naoEstaNulo(nf.getValorNotaFiscal())) {
                                if (nf.getTipoNotaFiscal().equals(TipoNotaFiscal.NFE_RECEBIDA.getValor())) {
                                        notasRecebidas++;
                                        valorTotalRecebido = valorTotalRecebido + nf.getValorNotaFiscal();
                                }
                        }
                }
                getEntidade().setValorTotalNotasFiscaisRecebidas(valorTotalRecebido);
                getEntidade().setNotasFiscaisRecebidas(notasRecebidas);
               
                Integer notasRemessas = 0;
                Double valorTotalRemessas = 0.0;
                for (NotaFiscal nf : notasFiscais) {
                        if (VerificadorUtil.naoEstaNulo(nf.getValorNotaFiscal())) {
                                if (nf.getTipoNotaFiscal().equals(TipoNotaFiscal.NFE_REMESSA.getValor())) {
                                        notasRemessas++;
                                        valorTotalRemessas = valorTotalRemessas + nf.getValorNotaFiscal();
                                }
                        }
                }
                getEntidade().setValorTotalNotasFiscaisRemessas(valorTotalRemessas);
                getEntidade().setNotasFiscaisRemessas(notasRemessas);
               
                List<ConsolidadoPessoaJuridicaDTO> pessoasJuridicasEmitidas = preencherNotasPorPessoaJuridica(notasFiscais);
                for (ConsolidadoPessoaJuridicaDTO consolidadoPessoaJuridica : pessoasJuridicasEmitidas) {
                        Integer notasEmitidas = 0;
                        Double valorTotalEmitido = 0.0;
                       
                        for (NotaFiscal nf : notasFiscais) {
                                if (VerificadorUtil.naoEstaNulo(nf.getPessoaJuridicaEmitente())) {
                                        if (nf.getPessoaJuridicaEmitente().equals(consolidadoPessoaJuridica.getPessoaJuridica())) {
                                                if (nf.getTipoNotaFiscal().equals(TipoNotaFiscal.NFCE_EMITIDA.getValor())) {
                                                        notasEmitidas++;
                                                        valorTotalEmitido = valorTotalEmitido + nf.getValorNotaFiscal();
                                                }
                                        }
                                }
                        }
                       
                        consolidadoPessoaJuridica.setNotasFiscaisEmitidas(notasEmitidas);
                        consolidadoPessoaJuridica.setValorTotalNotasFiscaisEmitidas(valorTotalEmitido);
                }
                getEntidade().setConsolidadosPessoaJuridica(pessoasJuridicasEmitidas);
        }
       
        private List<ConsolidadoPessoaJuridicaDTO> preencherNotasPorPessoaJuridica(List<NotaFiscal> notasFiscais) {
                List<Pessoa> pessoas = new ArrayList<Pessoa>();
                for (NotaFiscal notaFiscal : notasFiscais) {
                        if (VerificadorUtil.naoEstaNulo(notaFiscal.getPessoaJuridicaEmitente())) {
                                if (!pessoas.contains(notaFiscal.getPessoaJuridicaEmitente())) {
                                        pessoas.add(notaFiscal.getPessoaJuridicaEmitente());
                                }
                        }
                }
                List<ConsolidadoPessoaJuridicaDTO> consolidadosPJ = new ArrayList<ConsolidadoPessoaJuridicaDTO>();
                for (Pessoa pessoa : pessoas) {
                        ConsolidadoPessoaJuridicaDTO consolidadoPessoaJuridica = new ConsolidadoPessoaJuridicaDTO();
                        consolidadoPessoaJuridica.setPessoaJuridica(pessoa);
                        consolidadosPJ.add(consolidadoPessoaJuridica);
                }
                return consolidadosPJ;
        }

        public StreamedContent downloadXmlsNotasFiscaisEmitidas() {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return notaFiscalService.downloadXmls(getEntidade().getVigencia().getDataInicio(), getEntidade().getVigencia().getDataFim(), TipoNotaFiscal.NFCE_EMITIDA.getValor(), null);
                        }
                });
        }
       
        public StreamedContent downloadXmlsNotasFiscaisEmitidas(final Pessoa pessoaEmissor) {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return notaFiscalService.downloadXmls(getEntidade().getVigencia().getDataInicio(), getEntidade().getVigencia().getDataFim(), TipoNotaFiscal.NFCE_EMITIDA.getValor(), pessoaEmissor);
                        }
                });
        }
       
        public StreamedContent downloadXmlsNotasFiscaisRecebidas() {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return notaFiscalService.downloadXmls(getEntidade().getVigencia().getDataInicio(), getEntidade().getVigencia().getDataFim(), TipoNotaFiscal.NFE_RECEBIDA.getValor(), null);
                        }
                });
        }
       
        public StreamedContent downloadXmlsNotasFiscaisRemessa() {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return notaFiscalService.downloadXmls(getEntidade().getVigencia().getDataInicio(), getEntidade().getVigencia().getDataFim(), TipoNotaFiscal.NFE_REMESSA.getValor(), null);
                        }
                });
        }
       
}