Subversion Repositories Integrator Subversion

Rev

Rev 136 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.dto.nfce;
2
 
3
import java.io.Serializable;
4
import java.text.ParseException;
5
import java.text.SimpleDateFormat;
6
import java.util.ArrayList;
7
import java.util.Date;
8
import java.util.List;
9
 
195 espaco 10
import br.com.ec.core.util.StringUtil;
11
import br.com.ec.core.util.VerificadorUtil;
106 espaco 12
import br.com.ec.domain.dto.NfceItemDTO;
13
import br.com.ec.domain.dto.NfcePagamentoDTO;
14
import br.com.ec.domain.model.Endereco;
15
import br.com.ec.domain.model.Lancamento;
16
import br.com.ec.domain.model.NotaFiscal;
17
import br.com.ec.domain.model.Pessoa;
18
import br.com.ec.domain.model.Venda;
19
import br.com.ec.domain.model.VendaFormaPagamento;
195 espaco 20
import br.com.ec.web.converters.FormatarUtil;
21
import br.com.ec.web.util.DataUtil;
106 espaco 22
import nfce.java.TNfeProc;
23
 
24
public class NotaFiscalDTO implements Serializable {
25
 
26
        private static final long serialVersionUID = 1L;
27
 
28
        private Long sequencialNotaFiscal;
29
        private Venda venda;
30
 
31
        private Pessoa pessoaJuridica;
32
        private Endereco enderecoEmitente;
33
        private List<NfceItemDTO> itens = new ArrayList<NfceItemDTO>();
34
        private List<NfcePagamentoDTO> pagamentos = new ArrayList<NfcePagamentoDTO>();
35
 
36
        private String numero = "";
37
        private String serie = "";
38
        private String dataHoraEmissao = "";
39
        private String chave = "";
40
        private String protocoloAutorizacao = "";
41
        private String cpfCnpjConsumidor = "";
42
        private String caminhoQrCode = "";
43
 
44
        public NotaFiscalDTO() {}
45
 
46
        public NotaFiscalDTO(Venda venda) {
47
                this.venda = venda;
48
                if (VerificadorUtil.naoEstaNulo(venda.getCliente())) {
49
                        this.setCpfCnpjConsumidor(venda.getCliente().getCpfCnpj());
50
                } else {
51
                        this.setCpfCnpjConsumidor("NÃO INFORMADO");
52
                }
53
        }
54
 
55
        public NotaFiscalDTO(NotaFiscal notaFiscal) {
56
                this.setVenda(notaFiscal.getVenda());
57
                this.setNumero("" + notaFiscal.getNumeroNotaFiscal());
58
                this.setSerie(notaFiscal.getSerie());
59
                this.setChave(notaFiscal.getChave());
60
                this.setCaminhoQrCode(notaFiscal.getCaminhoQrcode());
61
                this.setCpfCnpjConsumidor("NÃO INFORMADO");
62
                if (VerificadorUtil.naoEstaNulo(notaFiscal.getVenda())) {
63
                        if (VerificadorUtil.naoEstaNulo(notaFiscal.getVenda().getCliente())) {
64
                                this.setCpfCnpjConsumidor(notaFiscal.getVenda().getCliente().getCpfCnpj());
65
                        }
66
                }
67
        this.setDataHoraEmissao(DataUtil.retornarDataFormatadaEmFormatoTexto("yyyy-MM-dd HH:mm:ss", notaFiscal.getDataHoraEmissao()));
68
        this.setProtocoloAutorizacao(notaFiscal.getProtocoloAutorizacao());
69
        }
70
 
71
        public NotaFiscalDTO(TNfeProc nfeProc, Venda vendaCompleta) {
72
                Pessoa pessoaJuridica = new Pessoa();
73
                pessoaJuridica.setCpfCnpj(nfeProc.getNFe().getInfNFe().getEmit().getCNPJ());
74
                this.setPessoaJuridica(pessoaJuridica);
75
 
76
                Endereco enderecoEmitente = new Endereco();
77
                enderecoEmitente.setLogradouro(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXLgr());
78
                enderecoEmitente.setNumero(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getNro());
79
                enderecoEmitente.setComplemento(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXCpl());
80
                enderecoEmitente.setBairro(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXBairro());
81
                enderecoEmitente.setMunicipio(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getXMun());
82
                enderecoEmitente.setUnidadeFederativa(nfeProc.getNFe().getInfNFe().getEmit().getEnderEmit().getUF().name());
83
                this.setEnderecoEmitente(enderecoEmitente);
84
 
85
                List<NfceItemDTO> itens = new ArrayList<NfceItemDTO>();
86
                for (nfce.java.TNFe.InfNFe.Det detalhe : nfeProc.getNFe().getInfNFe().getDet()) {
87
                        NfceItemDTO item = new NfceItemDTO();
88
                        item.setSequencial(new Integer(detalhe.getNItem()));
89
 
90
                        StringBuilder descricaoCompleta = new StringBuilder();
91
                        descricaoCompleta.append(detalhe.getProd().getCProd());
92
                        descricaoCompleta.append(" - ");
93
                        descricaoCompleta.append(detalhe.getProd().getXProd());
94
                        descricaoCompleta.append(" 1 UN X R$");
95
                        descricaoCompleta.append(formatarValor(new Double(detalhe.getProd().getVUnCom())));
96
                        descricaoCompleta.append(" R$");
97
                        descricaoCompleta.append(formatarValor(new Double(detalhe.getProd().getVProd())));
98
                        item.setDescricao(descricaoCompleta.toString());
99
                        item.setQuantidade(new Integer(detalhe.getProd().getQCom().substring(0, detalhe.getProd().getQCom().indexOf("."))));
100
                        item.setValorUnitario(new Double(detalhe.getProd().getVUnCom()));
101
                        itens.add(item);
102
                }
103
                this.setItens(itens);
104
 
105
                // TODO: AINDA PREENCHENDO COM PAGAMENTOS DA VENDA
106
                this.preencherPagamentos(vendaCompleta.getVendaFormaPagamentos());
107
 
108
                this.setNumero(nfeProc.getNFe().getInfNFe().getIde().getNNF());
109
                this.setSerie(nfeProc.getNFe().getInfNFe().getIde().getSerie());
110
                this.setChave(nfeProc.getProtNFe().getInfProt().getChNFe());
111
                this.setCaminhoQrCode(nfeProc.getNFe().getInfNFeSupl().getQrCode());
112
                this.setCpfCnpjConsumidor("NÃO INFORMADO");
113
 
114
                if (VerificadorUtil.naoEstaNulo(nfeProc.getNFe().getInfNFe().getDest())) {
115
                        String cpfCnpjFormatado = "";
116
                        if (VerificadorUtil.naoEstaNuloOuVazio(nfeProc.getNFe().getInfNFe().getDest().getCPF())) {
117
                                cpfCnpjFormatado = StringUtil.formatarCpf(nfeProc.getNFe().getInfNFe().getDest().getCPF());
118
                        } else if (VerificadorUtil.naoEstaNuloOuVazio(nfeProc.getNFe().getInfNFe().getDest().getCNPJ())) {
119
                                cpfCnpjFormatado = StringUtil.formatarCnpj(nfeProc.getNFe().getInfNFe().getDest().getCNPJ());
120
                        }
121
                        this.setCpfCnpjConsumidor(cpfCnpjFormatado);
122
                }
123
                Date data;
124
                try {
125
                        data = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'-03:00'").parse(nfeProc.getNFe().getInfNFe().getIde().getDhEmi());
126
                        this.setDataHoraEmissao(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(data));
127
                } catch (ParseException e) {
128
                        e.printStackTrace();
129
                }
130
        this.setProtocoloAutorizacao(nfeProc.getProtNFe().getInfProt().getNProt());
131
        }
132
 
133
        public Long getSequencialNotaFiscal() {
134
                return sequencialNotaFiscal;
135
        }
136
        public void setSequencialNotaFiscal(Long sequencialNotaFiscal) {
137
                this.sequencialNotaFiscal = sequencialNotaFiscal;
138
        }
139
 
140
        public Venda getVenda() {
141
                return venda;
142
        }
143
        public void setVenda(Venda venda) {
144
                this.venda = venda;
145
        }
146
        public Long getSequencialDaVenda() {
147
                return VerificadorUtil.naoEstaNulo(getVenda())? getVenda().getSequencial() : null;
148
        }
149
 
150
        public Pessoa getPessoaJuridica() {
151
                return pessoaJuridica;
152
        }
153
        public void setPessoaJuridica(Pessoa pessoaJuridica) {
154
                this.pessoaJuridica = pessoaJuridica;
155
        }
156
 
157
        public Endereco getEnderecoEmitente() {
158
                return enderecoEmitente;
159
        }
160
        public void setEnderecoEmitente(Endereco enderecoEmitente) {
161
                this.enderecoEmitente = enderecoEmitente;
162
        }
163
 
164
        public List<NfceItemDTO> getItens() {
165
                return itens;
166
        }
167
        public void setItens(List<NfceItemDTO> itens) {
168
                this.itens = itens;
169
        }
170
 
171
        public List<NfcePagamentoDTO> getPagamentos() {
172
                return pagamentos;
173
        }
174
        public void setPagamentos(List<NfcePagamentoDTO> pagamentos) {
175
                this.pagamentos = pagamentos;
176
        }
177
 
178
        public String getNumero() {
179
                return numero;
180
        }
181
        public void setNumero(String numero) {
182
                this.numero = numero;
183
        }
184
 
185
        public String getSerie() {
186
                return serie;
187
        }
188
        public void setSerie(String serie) {
189
                this.serie = serie;
190
        }
191
 
192
        public String getDataHoraEmissao() {
193
                return dataHoraEmissao;
194
        }
195
        public void setDataHoraEmissao(String dataHoraEmissao) {
196
                this.dataHoraEmissao = dataHoraEmissao;
197
        }
198
 
199
        public String getChave() {
200
                return chave;
201
        }
202
        public void setChave(String chave) {
203
                this.chave = formatarChave(chave);
204
        }
205
 
206
        public String getProtocoloAutorizacao() {
207
                return protocoloAutorizacao;
208
        }
209
        public void setProtocoloAutorizacao(String protocoloAutorizacao) {
210
                this.protocoloAutorizacao = protocoloAutorizacao;
211
        }
212
 
213
        public String getCpfCnpjConsumidor() {
214
                if (VerificadorUtil.estaNulo(cpfCnpjConsumidor)) {
215
                        return "NÃO INFORMADO";
216
                }
217
                return cpfCnpjConsumidor;
218
        }
219
        public void setCpfCnpjConsumidor(String cpfCnpjConsumidor) {
220
                this.cpfCnpjConsumidor = cpfCnpjConsumidor;
221
        }
222
 
223
        public String getCpfCnpjConsumidorFormatado() {
224
                if (VerificadorUtil.estaNulo(cpfCnpjConsumidor)) {
225
                        return "NÃO INFORMADO";
226
                }
227
                return FormatarUtil.retornarCpfCnpjFormatado(StringUtil.retornarApenasNumeros(cpfCnpjConsumidor));
228
        }
229
 
230
        public String getCaminhoQrCode() {
231
                return caminhoQrCode;
232
        }
233
        public void setCaminhoQrCode(String caminhoQrCode) {
234
                this.caminhoQrCode = caminhoQrCode;
235
        }
236
 
237
        /*******************************************************************/
238
 
239
        public String getRazaoSocialDaLoja() {
240
                return VerificadorUtil.naoEstaNulo(getPessoaJuridica())? getPessoaJuridica().getRazaoSocial() : "";
241
        }
242
 
243
        public String getCnpjDaLoja() {
244
                return VerificadorUtil.naoEstaNulo(getPessoaJuridica())? StringUtil.formatarCnpj(getPessoaJuridica().getCpfCnpj()) : "";
245
        }
246
 
136 espaco 247
        public String getCnpjMatrizDaLojaSemAcentos() {
248
                String cnpjMatriz = VerificadorUtil.naoEstaNulo(getPessoaJuridica())? getPessoaJuridica().getCpfCnpj() : "";
249
                return VerificadorUtil.naoEstaNuloOuVazio(cnpjMatriz)? cnpjMatriz.substring(0, 8) : "";
133 espaco 250
        }
251
 
106 espaco 252
        //TODO: ALTERAÇÃO PROVISÓRIA
253
        public String getEnderecoDoEmitente() {
254
                String numero = getEnderecoEmitente().getNumero();
255
                if (numero.equals("2650")) {
256
                        numero = "2990";
257
                }
258
                return getEnderecoEmitente().getLogradouro() + ", " + numero + ", " + getEnderecoEmitente().getComplemento() + ", " +
259
                                getEnderecoEmitente().getBairro() + ", " + getEnderecoEmitente().getMunicipio() + ", " + getEnderecoEmitente().getUnidadeFederativa();
260
        }
261
 
262
        public void preencherItens(List<Lancamento> lancamentos) {
263
                Integer sequencial = 1;
264
                for (Lancamento lancamento : lancamentos) {
265
                        NfceItemDTO item = new NfceItemDTO();
266
                        item.setSequencial(sequencial);
267
                        item.setSequencialProduto(lancamento.getProduto().getSequencial());
268
                        item.setDescricao(montagemDescricaoDoItem(lancamento));
269
                        item.setQuantidade(1);
270
                        item.setValorUnitario(lancamento.getValorVenda());
271
                        getItens().add(item);
272
                        sequencial++;
273
                }
274
        }
275
 
276
        public String montagemDescricaoDoItem(Lancamento lancamento) {
277
                StringBuilder descricaoCompleta = new StringBuilder();
278
                descricaoCompleta.append(lancamento.getProduto().getCodigo());
279
                descricaoCompleta.append(" - ");
280
                descricaoCompleta.append(lancamento.getDescricaoNotaFiscal());
281
                descricaoCompleta.append("  1 UN X ");
282
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda()));
283
                descricaoCompleta.append("  R$");
284
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda() * 1));
285
                return descricaoCompleta.toString();
286
        }
287
 
288
        public void preencherItensComanda(List<Lancamento> lancamentos) {
289
                Integer sequencial = 1;
290
                for (Lancamento lancamento : lancamentos) {
291
                        NfceItemDTO item = new NfceItemDTO();
292
                        item.setSequencial(sequencial);
293
                        item.setSequencialProduto(lancamento.getProduto().getSequencial());
294
                        item.setDescricao(montagemDescricaoDoItemComanda(lancamento));
295
                        item.setQuantidade(1);
296
                        item.setValorUnitario(lancamento.getValorVenda());
297
                        getItens().add(item);
298
                        sequencial++;
299
                }
300
        }
301
 
302
        public String montagemDescricaoDoItemComanda(Lancamento lancamento) {
303
                StringBuilder descricaoCompleta = new StringBuilder();
304
                descricaoCompleta.append(lancamento.getDescricaoComanda());
305
                descricaoCompleta.append("  R$");
306
                descricaoCompleta.append(formatarValor(lancamento.getValorVenda()));
307
                return descricaoCompleta.toString();
308
        }
309
 
310
        public void preencherPagamentos(List<VendaFormaPagamento> pagamentos) {
311
                for (VendaFormaPagamento vendaFormaPagamento : pagamentos) {
312
                        NfcePagamentoDTO pagamento = new NfcePagamentoDTO();
313
                        String formaDePagamento = vendaFormaPagamento.getFormaPagamento().getDescricao();
314
                        if (VerificadorUtil.naoEstaNulo(vendaFormaPagamento.getBandeiraCartao())) {
315
                                formaDePagamento = formaDePagamento + " (" + vendaFormaPagamento.getBandeiraCartao().getDescricao() + ") ";
316
                        }
317
                        pagamento.setFormaDePagamento(formaDePagamento);
318
                        pagamento.setValor(formatarValor(vendaFormaPagamento.getValorPagamento()));
319
                        getPagamentos().add(pagamento);
320
                }
321
        }
322
 
323
        public String getValorTotal() {
324
                Double total = 0.0;
325
                if (!VerificadorUtil.isListaNulaOuVazia(getItens())) {
326
                        for (NfceItemDTO item : getItens()) {
327
                                total = total + item.getValorTotal();
328
                        }
329
                }
330
                return formatarValor(total);
331
        }
332
 
333
        public String formatarChave(String chaveAcessoNF) {
334
                chaveAcessoNF = chaveAcessoNF.replace("NFe", "");
335
                return chaveAcessoNF.substring(0, 4) + " " +
336
                           chaveAcessoNF.substring(4, 8) + " " +
337
                           chaveAcessoNF.substring(8, 12) + " " +
338
                           chaveAcessoNF.substring(12, 16) + " " +
339
                           chaveAcessoNF.substring(16, 20) + " " +
340
                           chaveAcessoNF.substring(20, 24) + " " +
341
                           chaveAcessoNF.substring(24, 28) + " " +
342
                           chaveAcessoNF.substring(28, 32) + " " +
343
                           chaveAcessoNF.substring(32, 36) + " " +
344
                           chaveAcessoNF.substring(36, 40) + " " +
345
                           chaveAcessoNF.substring(40, 44);
346
        }
347
 
348
//      Número: 1 Série: 1 Emissão: 25/03/2018 16:28:40
349
//      Protocolo de Autorização: 327180000056573   25/03/2018 16:28:42
350
//      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
351
 
352
        /*
353
        public String getNumeroSerieEmissao() {
354
                StringBuilder numeroSerieEmissao = new StringBuilder();
355
                numeroSerieEmissao.append("NÚMERO: ");
356
                numeroSerieEmissao.append(getNumero());
357
                numeroSerieEmissao.append(" SÉRIE: ");
358
                numeroSerieEmissao.append(getSerie());
359
                numeroSerieEmissao.append(" EMISSÃO: ");
360
                numeroSerieEmissao.append(getDataHoraEmissao());
361
                return numeroSerieEmissao.toString();
362
        }
363
 
364
        public String getProtocoloAutorizacaoDataHoraEmissao() {
365
                return "PROTOCOLO DE AUTORIZAÇÃO: " + getProtocoloAutorizacao();
366
        }
367
        */
368
        private String formatarValor(Double valor) {
369
                return String.format("%.2f", valor);
370
        }
371
 
372
        /*
373
        @Transient
374
        public Double getTotalLancamentos() {
375
                Double total = 0.0;
376
                if (!VerificadorUtil.isListaNulaOuVazia(getListaLancamento())) {
377
                        for (Lancamento lancamento : getListaLancamento()) {
378
                                total = total + lancamento.getValorVenda();
379
                        }
380
                }
381
                return total;  
382
        }
383
 
384
        @Transient
385
        public Double getTotalPago() {
386
                Double total = 0.0;
387
                if (!VerificadorUtil.isListaNulaOuVazia(getListaFormaPagamento())) {
388
                        for (VendaFormaPagamento vendaFormaPagamento : getListaFormaPagamento()) {
389
                                total = total + vendaFormaPagamento.getValorPagamento();
390
                        }
391
                }
392
                return total;  
393
        }
394
        */
395
 
396
}