Subversion Repositories Integrator Subversion

Rev

Rev 468 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.io.Serializable;
import java.util.Date;

import br.com.ec.domain.model.NotaFiscal;
import br.com.ec.web.util.DataUtil;

public class NotaFiscalDTO implements Serializable {

        private static final long serialVersionUID = 1L;

        private Long sequencialNotaFiscal;
        private String chave;
        private Long numero;
        private Date dataHoraEmissao;
       
        /*
        private Venda venda;
       
        private Pessoa pessoaJuridica;
        private Endereco enderecoEmitente;
        private List<NfceItemDTO> itens = new ArrayList<NfceItemDTO>();
        private List<NfcePagamentoDTO> pagamentos = new ArrayList<NfcePagamentoDTO>();
       
        private String numero = "";
        private String serie = "";
        private String dataHoraEmissao = "";
        private String protocoloAutorizacao = "";
        private String cpfCnpjConsumidor = "";
        private String caminhoQrCode = "";
        */

       
        public NotaFiscalDTO() {
                setChave("");
        }
       
        public NotaFiscalDTO(NotaFiscal notaFiscal) {
                /*
                this.setVenda(notaFiscal.getVenda());
                this.setNumero("" + notaFiscal.getNumeroNotaFiscal());
                this.setSerie(notaFiscal.getSerie());
                this.setChave(notaFiscal.getChave());
                this.setCaminhoQrCode(notaFiscal.getCaminhoQrcode());
//              this.setCpfCnpjConsumidor("NÃO INFORMADO");
                if (VerificadorUtil.naoEstaNulo(notaFiscal.getVenda())) {
                        if (VerificadorUtil.naoEstaNulo(notaFiscal.getVenda().getCliente())) {
                                this.setCpfCnpjConsumidor(notaFiscal.getVenda().getCliente().getCpfCnpj());
                        }
                }
        this.setDataHoraEmissao(DataUtil.retornarDataFormatadaEmFormatoTexto("yyyy-MM-dd HH:mm:ss", notaFiscal.getDataHoraEmissao()));
        this.setProtocoloAutorizacao(notaFiscal.getProtocoloAutorizacao());
        */

        }
       
        public static String CONSULTA_DTO_SIMPLES = "e.sequencial, e.chave, e.numero, e.dataHoraEmissao";
        public NotaFiscalDTO(Long sequencial, String chave, Long numero, Date dataHoraEmissao) {
                this.sequencialNotaFiscal = sequencial;
                this.chave = chave;
                this.numero = numero;
                this.dataHoraEmissao = dataHoraEmissao;
        }
       
        public NotaFiscalDTO(Long sequencial, String chave, Date dataHoraEmissao) {
                this.sequencialNotaFiscal = sequencial;
                this.chave = chave;
                this.dataHoraEmissao = dataHoraEmissao;
        }
       
        public Long getSequencialNotaFiscal() {
                return sequencialNotaFiscal;
        }
        public void setSequencialNotaFiscal(Long sequencialNotaFiscal) {
                this.sequencialNotaFiscal = sequencialNotaFiscal;
        }
       
        public String getChave() {
                return chave;
        }
        public void setChave(String chave) {
                this.chave = chave;
        }
       
        public Long getNumero() {
                return numero;
        }
        public void setNumero(Long numero) {
                this.numero = numero;
        }
       
        public Date getDataHoraEmissao() {
                return dataHoraEmissao;
        }
        public void setDataHoraEmissao(Date dataHoraEmissao) {
                this.dataHoraEmissao = dataHoraEmissao;
        }

        public String getDataEmissaoFormatada() {
                return DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM/yyyy", dataHoraEmissao);
        }
       
        /*
        public NotaFiscalDTO(Venda venda) {
                this.venda = venda;
                if (VerificadorUtil.naoEstaNulo(venda.getCliente())) {
                        this.setCpfCnpjConsumidor(venda.getCliente().getCpfCnpj());
                } else {
                        this.setCpfCnpjConsumidor("NÃO INFORMADO");
                }
        }
       
        public NotaFiscalDTO(TNfeProc nfeProc, Venda vendaCompleta) {
                Pessoa pessoaJuridica = new Pessoa();
                pessoaJuridica.setCpfCnpj(nfeProc.getNFe().getInfNFe().getEmit().getCNPJ());
                this.setPessoaJuridica(pessoaJuridica);
               
                Endereco enderecoEmitente = new Endereco();
                enderecoEmitente.setLogradouro(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXLgr());
                enderecoEmitente.setNumero(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getNro());
                enderecoEmitente.setComplemento(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXCpl());
                enderecoEmitente.setBairro(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXBairro());
                enderecoEmitente.setMunicipio(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXMun());
                enderecoEmitente.setUnidadeFederativa(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getUF().name());
                this.setEnderecoEmitente(enderecoEmitente);
               
                List<NfceItemDTO> itens = new ArrayList<NfceItemDTO>();
                for (nfce.java.TNFe.InfNFe.Det detalhe : nfeProc.getNFe().getInfNFe().getDet()) {
                        NfceItemDTO item = new NfceItemDTO();
                        item.setSequencial(new Integer(detalhe.getNItem()));
                       
                        StringBuilder descricaoCompleta = new StringBuilder();
                        descricaoCompleta.append(detalhe.getProd().getCProd());
                        descricaoCompleta.append(" - ");
                        descricaoCompleta.append(detalhe.getProd().getXProd());
                        descricaoCompleta.append(" 1 UN X R$");
                        descricaoCompleta.append(formatarValor(new Double(detalhe.getProd().getVUnCom())));
                        descricaoCompleta.append(" R$");
                        descricaoCompleta.append(formatarValor(new Double(detalhe.getProd().getVProd())));
                        item.setDescricao(descricaoCompleta.toString());
                        item.setQuantidade(new Integer(detalhe.getProd().getQCom().substring(0, detalhe.getProd().getQCom().indexOf("."))));
                        item.setValorUnitario(new Double(detalhe.getProd().getVUnCom()));
                        itens.add(item);
                }
                this.setItens(itens);
               
                // TODO: AINDA PREENCHENDO COM PAGAMENTOS DA VENDA
                this.preencherPagamentos(vendaCompleta.getVendaFormaPagamentos());
               
                this.setNumero(nfeProc.getNFe().getInfNFe().getIde().getNNF());
                this.setSerie(nfeProc.getNFe().getInfNFe().getIde().getSerie());
                this.setChave(nfeProc.getProtNFe().getInfProt().getChNFe());
                this.setCaminhoQrCode(nfeProc.getNFe().getInfNFeSupl().getQrCode());
                this.setCpfCnpjConsumidor("NÃO INFORMADO");
               
                if (VerificadorUtil.naoEstaNulo(nfeProc.getNFe().getInfNFe().getDest())) {
                        String cpfCnpjFormatado = "";
                        if (VerificadorUtil.naoEstaNuloOuVazio(nfeProc.getNFe().getInfNFe().getDest().getCPF())) {
                                cpfCnpjFormatado = StringUtil.formatarCpf(nfeProc.getNFe().getInfNFe().getDest().getCPF());
                        } else if (VerificadorUtil.naoEstaNuloOuVazio(nfeProc.getNFe().getInfNFe().getDest().getCNPJ())) {
                                cpfCnpjFormatado = StringUtil.formatarCnpj(nfeProc.getNFe().getInfNFe().getDest().getCNPJ());
                        }
                        this.setCpfCnpjConsumidor(cpfCnpjFormatado);
                }
                Date data;
                try {
                        data = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'-03:00'").parse(nfeProc.getNFe().getInfNFe().getIde().getDhEmi());
                        this.setDataHoraEmissao(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(data));
                } catch (ParseException e) {
                        e.printStackTrace();
                }
        this.setProtocoloAutorizacao(nfeProc.getProtNFe().getInfProt().getNProt());
        }
       
        public Long getSequencialNotaFiscal() {
                return sequencialNotaFiscal;
        }
        public void setSequencialNotaFiscal(Long sequencialNotaFiscal) {
                this.sequencialNotaFiscal = sequencialNotaFiscal;
        }
       
        public Venda getVenda() {
                return venda;
        }
        public void setVenda(Venda venda) {
                this.venda = venda;
        }
        public Long getSequencialDaVenda() {
                return VerificadorUtil.naoEstaNulo(getVenda())? getVenda().getSequencial() : null;
        }
       
        public Pessoa getPessoaJuridica() {
                return pessoaJuridica;
        }
        public void setPessoaJuridica(Pessoa pessoaJuridica) {
                this.pessoaJuridica = pessoaJuridica;
        }
       
        public Endereco getEnderecoEmitente() {
                return enderecoEmitente;
        }
        public void setEnderecoEmitente(Endereco enderecoEmitente) {
                this.enderecoEmitente = enderecoEmitente;
        }
       
        public List<NfceItemDTO> getItens() {
                return itens;
        }
        public void setItens(List<NfceItemDTO> itens) {
                this.itens = itens;
        }
       
        public List<NfcePagamentoDTO> getPagamentos() {
                return pagamentos;
        }
        public void setPagamentos(List<NfcePagamentoDTO> pagamentos) {
                this.pagamentos = pagamentos;
        }
       
        public String getNumero() {
                return numero;
        }
        public void setNumero(String numero) {
                this.numero = numero;
        }
       
        public String getSerie() {
                return serie;
        }
        public void setSerie(String serie) {
                this.serie = serie;
        }
       
        public String getDataHoraEmissao() {
                return dataHoraEmissao;
        }
        public void setDataHoraEmissao(String dataHoraEmissao) {
                this.dataHoraEmissao = dataHoraEmissao;
        }
       
        public String getChave() {
                return chave;
        }
        public void setChave(String chave) {
                this.chave = formatarChave(chave);
        }
       
        public String getProtocoloAutorizacao() {
                return protocoloAutorizacao;
        }
        public void setProtocoloAutorizacao(String protocoloAutorizacao) {
                this.protocoloAutorizacao = protocoloAutorizacao;
        }
       
        public String getCpfCnpjConsumidor() {
                if (VerificadorUtil.estaNulo(cpfCnpjConsumidor)) {
                        return "NÃO INFORMADO";
                }
                return cpfCnpjConsumidor;
        }
        public void setCpfCnpjConsumidor(String cpfCnpjConsumidor) {
                this.cpfCnpjConsumidor = cpfCnpjConsumidor;
        }
       
        public String getCpfCnpjConsumidorFormatado() {
                if (VerificadorUtil.estaNulo(cpfCnpjConsumidor)) {
                        return "NÃO INFORMADO";
                }
                return FormatarUtil.retornarCpfCnpjFormatado(StringUtil.retornarApenasNumeros(cpfCnpjConsumidor));
        }
       
        public String getCaminhoQrCode() {
                return caminhoQrCode;
        }
        public void setCaminhoQrCode(String caminhoQrCode) {
                this.caminhoQrCode = caminhoQrCode;
        }
        */

        /*******************************************************************/
        /*
        public String getRazaoSocialDaLoja() {
                return VerificadorUtil.naoEstaNulo(getPessoaJuridica())? getPessoaJuridica().getRazaoSocial() : "";
        }
       
        public String getCnpjDaLoja() {
                return VerificadorUtil.naoEstaNulo(getPessoaJuridica())? StringUtil.formatarCnpj(getPessoaJuridica().getCpfCnpj()) : "";
        }
       
        public String getCnpjMatrizDaLojaSemAcentos() {
                String cnpjMatriz = VerificadorUtil.naoEstaNulo(getPessoaJuridica())? getPessoaJuridica().getCpfCnpj() : "";
                return VerificadorUtil.naoEstaNuloOuVazio(cnpjMatriz)? cnpjMatriz.substring(0, 8) : "";
        }
       
        //TODO: ALTERAÇÃO PROVISÓRIA
        public String getEnderecoDoEmitente() {
                String numero = getEnderecoEmitente().getNumero();
                if (numero.equals("2650")) {
                        numero = "2990";
                }
                return getEnderecoEmitente().getLogradouro() + ", " + numero + ", " + getEnderecoEmitente().getComplemento() + ", " +
                                getEnderecoEmitente().getBairro() + ", " + getEnderecoEmitente().getMunicipio() + ", " + getEnderecoEmitente().getUnidadeFederativa();
        }
       
        public void preencherItens(List<Lancamento> lancamentos) {
                Integer sequencial = 1;
                for (Lancamento lancamento : lancamentos) {
                        NfceItemDTO item = new NfceItemDTO();
                        item.setSequencial(sequencial);
                        item.setSequencialProduto(lancamento.getProduto().getSequencial());
                        item.setDescricao(montagemDescricaoDoItem(lancamento));
                        item.setQuantidade(1);
                        item.setValorUnitario(lancamento.getValorVenda());
                        getItens().add(item);
                        sequencial++;
                }
        }
       
        public String montagemDescricaoDoItem(Lancamento lancamento) {
                StringBuilder descricaoCompleta = new StringBuilder();
                descricaoCompleta.append(lancamento.getProduto().getCodigo());
                descricaoCompleta.append(" - ");
                descricaoCompleta.append(lancamento.getDescricaoNotaFiscal());
                descricaoCompleta.append("  1 UN X ");
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda()));
                descricaoCompleta.append("  R$");
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda() * 1));
                return descricaoCompleta.toString();
        }
       
        public void preencherItensComanda(List<Lancamento> lancamentos) {
                Integer sequencial = 1;
                for (Lancamento lancamento : lancamentos) {
                        NfceItemDTO item = new NfceItemDTO();
                        item.setSequencial(sequencial);
                        item.setSequencialProduto(lancamento.getProduto().getSequencial());
                        item.setDescricao(montagemDescricaoDoItemComanda(lancamento));
                        item.setQuantidade(1);
                        item.setValorUnitario(lancamento.getValorVenda());
                        getItens().add(item);
                        sequencial++;
                }
        }
       
        public String montagemDescricaoDoItemComanda(Lancamento lancamento) {
                StringBuilder descricaoCompleta = new StringBuilder();
                descricaoCompleta.append(lancamento.getDescricaoComanda());
                descricaoCompleta.append("  R$");
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda()));
                return descricaoCompleta.toString();
        }
       
        public void preencherPagamentos(List<VendaFormaPagamento> pagamentos) {
                for (VendaFormaPagamento vendaFormaPagamento : pagamentos) {
                        NfcePagamentoDTO pagamento = new NfcePagamentoDTO();
                        String formaDePagamento = vendaFormaPagamento.getFormaPagamento().getDescricao();
                        if (VerificadorUtil.naoEstaNulo(vendaFormaPagamento.getBandeiraCartao())) {
                                formaDePagamento = formaDePagamento + " (" + vendaFormaPagamento.getBandeiraCartao().getDescricao() + ") ";
                        }
                        pagamento.setFormaDePagamento(formaDePagamento);
                        pagamento.setValor(formatarValor(vendaFormaPagamento.getValorPagamento()));
                        getPagamentos().add(pagamento);
                }
        }
       
        public String getValorTotal() {
                Double total = 0.0;
                if (!VerificadorUtil.isListaNulaOuVazia(getItens())) {
                        for (NfceItemDTO item : getItens()) {
                                total = total + item.getValorTotal();
                        }
                }
                return formatarValor(total);
        }
       
        public String formatarChave(String chaveAcessoNF) {
                chaveAcessoNF = chaveAcessoNF.replace("NFe", "");
                return chaveAcessoNF.substring(0, 4) + " " +
                           chaveAcessoNF.substring(4, 8) + " " +
                           chaveAcessoNF.substring(8, 12) + " " +
                           chaveAcessoNF.substring(12, 16) + " " +
                           chaveAcessoNF.substring(16, 20) + " " +
                           chaveAcessoNF.substring(20, 24) + " " +
                           chaveAcessoNF.substring(24, 28) + " " +
                           chaveAcessoNF.substring(28, 32) + " " +
                           chaveAcessoNF.substring(32, 36) + " " +
                           chaveAcessoNF.substring(36, 40) + " " +
                           chaveAcessoNF.substring(40, 44);
        }
       
//      Número: 1 Série: 1 Emissão: 25/03/2018 16:28:40
//      Protocolo de Autorização: 327180000056573   25/03/2018 16:28:42
//      http://nfce.sefaz.al.gov.br/QRCode/consultarNFCe.jsp?chNFe=27180321494821000100650010000000011000000011&nVersao=100&tpAmb=2&cDest=06256954459&dhEmi=323031382d30332d32355431363a32383a34302d30333a3030&vNF=11.50&vICMS=0.00&digVal=4e35376b3876386a4d3931483269386843546f4a767443354d41453d&cIdToken=000002&cHashQRCode=A0FC7AB12F30E66649C3FFFB275323FCD2AA0AD7
        */

        /*
        public String getNumeroSerieEmissao() {
                StringBuilder numeroSerieEmissao = new StringBuilder();
                numeroSerieEmissao.append("NÚMERO: ");
                numeroSerieEmissao.append(getNumero());
                numeroSerieEmissao.append(" SÉRIE: ");
                numeroSerieEmissao.append(getSerie());
                numeroSerieEmissao.append(" EMISSÃO: ");
                numeroSerieEmissao.append(getDataHoraEmissao());
                return numeroSerieEmissao.toString();
        }
       
        public String getProtocoloAutorizacaoDataHoraEmissao() {
                return "PROTOCOLO DE AUTORIZAÇÃO: " + getProtocoloAutorizacao();
        }
        */

        /*
        private String formatarValor(Double valor) {
                return String.format("%.2f", valor);
        }
        */

        /*
        @Transient
        public Double getTotalLancamentos() {
                Double total = 0.0;
                if (!VerificadorUtil.isListaNulaOuVazia(getListaLancamento())) {
                        for (Lancamento lancamento : getListaLancamento()) {
                                total = total + lancamento.getValorVenda();
                        }
                }
                return total;  
        }
       
        @Transient
        public Double getTotalPago() {
                Double total = 0.0;
                if (!VerificadorUtil.isListaNulaOuVazia(getListaFormaPagamento())) {
                        for (VendaFormaPagamento vendaFormaPagamento : getListaFormaPagamento()) {
                                total = total + vendaFormaPagamento.getValorPagamento();
                        }
                }
                return total;  
        }
        */

       
}