Subversion Repositories Integrator Subversion

Rev

Rev 487 | Rev 489 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
353 espaco 1
package br.com.ec.controller;
2
 
3
import java.io.Serializable;
468 blopes 4
import java.util.List;
353 espaco 5
 
6
import javax.inject.Inject;
7
import javax.inject.Named;
8
 
414 espaco 9
import org.primefaces.model.StreamedContent;
353 espaco 10
import org.springframework.context.annotation.Scope;
11
 
12
import br.com.ec.controller.consultademanda.NotaFiscalConsultaPorDemanda;
13
import br.com.ec.core.generic.GenericService;
474 blopes 14
import br.com.ec.core.util.VerificadorUtil;
468 blopes 15
import br.com.ec.domain.dto.CompraProdutoDTO;
462 blopes 16
import br.com.ec.domain.dto.NotaFiscalDTO;
17
import br.com.ec.domain.dto.NotaFiscalProdutoDTO;
18
import br.com.ec.domain.dto.ProdutoDTO;
353 espaco 19
import br.com.ec.domain.dto.consulta.ParametrosConsultaNotaFiscal;
20
import br.com.ec.domain.model.NotaFiscal;
449 blopes 21
import br.com.ec.domain.model.Pessoa;
477 blopes 22
import br.com.ec.domain.model.Transportadora;
474 blopes 23
import br.com.ec.domain.model.Transporte;
413 espaco 24
import br.com.ec.domain.model.Venda;
465 blopes 25
import br.com.ec.domain.model.nfe.TipoModeloNotaFiscal;
353 espaco 26
import br.com.ec.domain.model.nfe.TipoNotaFiscal;
474 blopes 27
import br.com.ec.domain.model.tipos.TipoModalidadeFrete;
468 blopes 28
import br.com.ec.domain.service.CompraProdutoService;
414 espaco 29
import br.com.ec.domain.service.EmissorRelatorioService;
462 blopes 30
import br.com.ec.domain.service.NotaFiscalProdutoService;
353 espaco 31
import br.com.ec.domain.service.NotaFiscalService;
462 blopes 32
import br.com.ec.domain.service.ProdutoService;
353 espaco 33
import br.com.ec.web.exception.VerificadorLancamentoException;
34
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
446 blopes 35
import br.com.ec.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
353 espaco 36
import br.com.ec.web.generic.AbstractBean;
37
import br.com.ec.web.message.LancadorMensagem;
38
import br.com.ec.web.util.TipoOperacao;
39
 
40
@Named
41
@Scope("view")
42
public class NotaFiscalBean extends AbstractBean<NotaFiscal> implements Serializable {
43
 
44
        private static final long serialVersionUID = 1L;
45
 
467 blopes 46
        private String statusSefaz = "";
353 espaco 47
 
48
        private ParametrosConsultaNotaFiscal parametrosConsultaNotaFiscal;
49
        private NotaFiscalConsultaPorDemanda lazy;
50
 
51
        private Long sequencialVendaParaVinculo;
446 blopes 52
        private StreamedContent danfeNfePreVisualizacao;
414 espaco 53
        private StreamedContent danfeNfe;
449 blopes 54
 
462 blopes 55
        private String codigoProdutoParaVinculoNotaFiscal = "";
56
        private ProdutoDTO produtoDTOParaVinculoNotaFiscal;
468 blopes 57
        private CompraProdutoDTO compraProdutoDTOParaVinculoNotaFiscal;
58
        private List<CompraProdutoDTO> listaCompraProdutoDTOParaVinculoNotaFiscal;
462 blopes 59
 
60
        private String chaveNotaFiscalParaReferenciaNotaFiscal = "";
61
        private NotaFiscalDTO notaFiscalDTOParaReferenciaNotaFiscal;
488 blopes 62
        private Transporte transporteSelecionado;
462 blopes 63
 
467 blopes 64
        private NotaFiscalService notaFiscalService;
65
        private NotaFiscalProdutoService notaFiscalProdutoService;
66
        private ProdutoService produtoService;
468 blopes 67
        private CompraProdutoService compraProdutoService;
467 blopes 68
        private EmissorRelatorioService emissorRelatorioService;
69
 
353 espaco 70
        @Inject
462 blopes 71
        public NotaFiscalBean(NotaFiscalConsultaPorDemanda lazy, NotaFiscalService notaFiscalService, NotaFiscalProdutoService notaFiscalProdutoService,
487 blopes 72
                        ProdutoService produtoService, CompraProdutoService compraProdutoService, EmissorRelatorioService emissorRelatorioService) {
353 espaco 73
                this.lazy = lazy;
74
                this.notaFiscalService = notaFiscalService;
462 blopes 75
                this.notaFiscalProdutoService = notaFiscalProdutoService;
76
                this.produtoService = produtoService;
468 blopes 77
                this.compraProdutoService = compraProdutoService;
414 espaco 78
                this.emissorRelatorioService = emissorRelatorioService;
353 espaco 79
        }
80
 
81
        @Override
82
        public void preCarregamento() {
83
                parametrosConsultaNotaFiscal = new ParametrosConsultaNotaFiscal();
84
                prepararConsultaDemanda();
85
                limparEntidade();
86
        }
87
 
88
        @Override
89
        public void limparEntidade() {
90
                setEntidade(new NotaFiscal());
91
        }
92
 
93
        @Override
94
        public GenericService<NotaFiscal> getService() {
95
                return notaFiscalService;
96
        }
97
 
98
        @Override
99
        public NotaFiscal getEntidade() {
100
                return entidade;
101
        }
102
 
103
        @Override
104
        public void preConsultar() {
105
                setTipoOperacao(TipoOperacao.CONSULTAR);
106
        }
449 blopes 107
 
474 blopes 108
        @Override
488 blopes 109
        public void preCadastrar() {
110
                setTransporteSelecionado(new Transporte());
111
                super.preCadastrar();
112
        }
113
 
114
        @Override
115
        public void cadastrar() {
116
                getEntidade().setTransporte(getTransporteSelecionado());
117
                super.cadastrar();
118
        }
119
 
120
        @Override
474 blopes 121
        public void preAlterar(NotaFiscal notaFiscal) {
122
                if (VerificadorUtil.estaNulo(notaFiscal.getTransporte())) {
488 blopes 123
                        setTransporteSelecionado(new Transporte());
124
                } else {
125
                        setTransporteSelecionado(notaFiscal.getTransporte());
474 blopes 126
                }
127
                super.preAlterar(notaFiscal);
128
        }
129
 
488 blopes 130
        @Override
131
        public void alterar() {
132
                getEntidade().setTransporte(getTransporteSelecionado());
133
                super.alterar();
134
        }
135
 
449 blopes 136
        /*
353 espaco 137
        @Override
449 blopes 138
        public void preAlterar(NotaFiscal notaFiscal) {
139
                NotaFiscal notaFiscalDetalhada = notaFiscalService.detalhar(notaFiscal.getSequencial());
140
                super.preAlterar(notaFiscalDetalhada);
141
        }
142
        */
143
 
144
        @Override
353 espaco 145
        public NotaFiscal getId() {
146
                return getEntidade();
147
        }
148
 
149
        public ParametrosConsultaNotaFiscal getParametrosConsultaNotaFiscal() {
150
                return parametrosConsultaNotaFiscal;
151
        }
152
        public void setParametrosConsultaNotaFiscal(ParametrosConsultaNotaFiscal parametrosConsultaNotaFiscal) {
153
                this.parametrosConsultaNotaFiscal = parametrosConsultaNotaFiscal;
154
        }
155
 
156
        public NotaFiscalConsultaPorDemanda getLazy() {
157
                return lazy;
158
        }
159
        public void setLazy(NotaFiscalConsultaPorDemanda lazy) {
160
                this.lazy = lazy;
161
        }
162
        public void prepararConsultaDemanda() {
163
                lazy.setarParametrosConsulta(getParametrosConsultaNotaFiscal());
164
        }
165
 
166
        public TipoNotaFiscal[] getTiposNotaFiscal() {
167
                return TipoNotaFiscal.values();
168
        }
169
 
474 blopes 170
        public TipoModalidadeFrete[] getTiposModalidadeFrete() {
171
                return TipoModalidadeFrete.values();
172
        }
173
 
353 espaco 174
        public Long getSequencialVendaParaVinculo() {
175
                return sequencialVendaParaVinculo;
176
        }
177
        public void setSequencialVendaParaVinculo(Long sequencialVendaParaVinculo) {
178
                this.sequencialVendaParaVinculo = sequencialVendaParaVinculo;
179
        }
180
 
446 blopes 181
        public StreamedContent getDanfeNfePreVisualizacao() {
182
                return danfeNfePreVisualizacao;
183
        }
184
        public void setDanfeNfePreVisualizacao(StreamedContent danfeNfePreVisualizacao) {
185
                this.danfeNfePreVisualizacao = danfeNfePreVisualizacao;
186
        }
187
 
414 espaco 188
        public StreamedContent getDanfeNfe() {
189
                return danfeNfe;
190
        }
191
        public void setDanfeNfe(StreamedContent danfeNfe) {
192
                this.danfeNfe = danfeNfe;
193
        }
194
 
462 blopes 195
        public String getCodigoProdutoParaVinculoNotaFiscal() {
196
                return codigoProdutoParaVinculoNotaFiscal;
197
        }
198
        public void setCodigoProdutoParaVinculoNotaFiscal(String codigoProdutoParaVinculoNotaFiscal) {
199
                this.codigoProdutoParaVinculoNotaFiscal = codigoProdutoParaVinculoNotaFiscal;
200
        }
201
 
202
        public ProdutoDTO getProdutoDTOParaVinculoNotaFiscal() {
203
                return produtoDTOParaVinculoNotaFiscal;
204
        }
205
        public void setProdutoDTOParaVinculoNotaFiscal(ProdutoDTO produtoDTOParaVinculoNotaFiscal) {
206
                this.produtoDTOParaVinculoNotaFiscal = produtoDTOParaVinculoNotaFiscal;
207
        }
208
 
468 blopes 209
        public CompraProdutoDTO getCompraProdutoDTOParaVinculoNotaFiscal() {
210
                return compraProdutoDTOParaVinculoNotaFiscal;
211
        }
212
        public void setCompraProdutoDTOParaVinculoNotaFiscal(CompraProdutoDTO compraProdutoDTOParaVinculoNotaFiscal) {
213
                this.compraProdutoDTOParaVinculoNotaFiscal = compraProdutoDTOParaVinculoNotaFiscal;
214
        }
215
 
216
        public List<CompraProdutoDTO> getListaCompraProdutoDTOParaVinculoNotaFiscal() {
217
                return listaCompraProdutoDTOParaVinculoNotaFiscal;
218
        }
219
        public void setListaCompraProdutoDTOParaVinculoNotaFiscal(List<CompraProdutoDTO> listaCompraProdutoDTOParaVinculoNotaFiscal) {
220
                this.listaCompraProdutoDTOParaVinculoNotaFiscal = listaCompraProdutoDTOParaVinculoNotaFiscal;
221
        }
222
 
462 blopes 223
        public String getChaveNotaFiscalParaReferenciaNotaFiscal() {
224
                return chaveNotaFiscalParaReferenciaNotaFiscal;
225
        }
226
        public void setChaveNotaFiscalParaReferenciaNotaFiscal(String chaveNotaFiscalParaReferenciaNotaFiscal) {
227
                this.chaveNotaFiscalParaReferenciaNotaFiscal = chaveNotaFiscalParaReferenciaNotaFiscal;
228
        }
229
 
230
        public NotaFiscalDTO getNotaFiscalDTOParaReferenciaNotaFiscal() {
231
                return notaFiscalDTOParaReferenciaNotaFiscal;
232
        }
233
        public void setNotaFiscalDTOParaReferenciaNotaFiscal(NotaFiscalDTO notaFiscalDTOParaReferenciaNotaFiscal) {
234
                this.notaFiscalDTOParaReferenciaNotaFiscal = notaFiscalDTOParaReferenciaNotaFiscal;
235
        }
236
 
488 blopes 237
        public Transporte getTransporteSelecionado() {
238
                return transporteSelecionado;
239
        }
240
        public void setTransporteSelecionado(Transporte transporteSelecionado) {
241
                this.transporteSelecionado = transporteSelecionado;
242
        }
243
 
467 blopes 244
        public String getStatusSefaz() {
245
                return statusSefaz;
246
        }
247
        public void setStatusSefaz(String statusSefaz) {
248
                this.statusSefaz = statusSefaz;
249
        }
250
 
353 espaco 251
        /**************************************************/
252
 
467 blopes 253
        public void atualizarStatusSefaz() {
254
                setStatusSefaz(notaFiscalService.retornarStatusSefaz());
255
        }
256
 
353 espaco 257
        public void desvincularVenda() {
258
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
259
                        public void execute() {
413 espaco 260
                                notaFiscalService.desvincularVenda(getEntidade().getSequencial());
261
                                getEntidade().setVenda(null);
353 espaco 262
                                LancadorMensagem.lancarSucesso("VENDA DESVINCULADA COM SUCESSO");
263
                        }
264
                });
265
        }
266
 
267
        public void vincularVenda() {
268
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
269
                        public void execute() {
413 espaco 270
                                Venda vendaVinculada = notaFiscalService.vincularVenda(getEntidade().getSequencial(), getSequencialVendaParaVinculo());
271
                                getEntidade().setVenda(vendaVinculada);
353 espaco 272
                                LancadorMensagem.lancarSucesso("VENDA VINCULADA COM SUCESSO");
273
                        }
274
                });
275
        }
276
 
414 espaco 277
        public void emitirDanfeNfe(Long sequencialNotaFiscal) {
447 blopes 278
                setDanfeNfePreVisualizacao(notaFiscalService.gerarDanfeNfePreVisualizacao(sequencialNotaFiscal));
414 espaco 279
                setDanfeNfe(notaFiscalService.gerarDanfeNfe(sequencialNotaFiscal));
446 blopes 280
        }
281
 
282
        public void emitirDanfeNfePreVisualizacao(Long sequencialNotaFiscal) {
283
                setDanfeNfePreVisualizacao(notaFiscalService.gerarDanfeNfePreVisualizacao(sequencialNotaFiscal));
284
                setDanfeNfe(notaFiscalService.gerarDanfeNfe(sequencialNotaFiscal));
414 espaco 285
                /*
286
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
287
                        @Override
288
                        public StreamedContent execute() {
289
                                return notaFiscalService.gerarDanfeNfe(getEntidade().getSequencial());
290
                        }
291
                });
292
                */
293
        }
294
 
446 blopes 295
        public StreamedContent downloadNotaFiscal() {
296
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
297
                        @Override
298
                        public StreamedContent execute() {
299
                                return getDanfeNfe();
300
                        }
301
                });
302
        }
303
 
425 espaco 304
        public void emitirDanfeNfeTeste() {
305
                Long sequencialNotaFiscal = new Long(168722);
446 blopes 306
                setDanfeNfePreVisualizacao(notaFiscalService.gerarDanfeNfePreVisualizacao(sequencialNotaFiscal));
425 espaco 307
                setDanfeNfe(notaFiscalService.gerarDanfeNfe(sequencialNotaFiscal));
308
        }
309
 
478 blopes 310
        public void visualizarDanfe() {
311
                Long sequencialNotaFiscal = getEntidade().getSequencial();
312
                setDanfeNfePreVisualizacao(notaFiscalService.gerarDanfeNfePreVisualizacao(sequencialNotaFiscal));
313
        }
314
 
315
        public StreamedContent downloadNotaFiscalPreVisualizada() {
316
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
317
                        @Override
318
                        public StreamedContent execute() {
319
                                return getDanfeNfePreVisualizacao();
320
                        }
321
                });
322
        }
323
 
449 blopes 324
        public void selecionarEmitente(final Pessoa pessoa) {
325
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
326
                        public void execute() {
327
                                getEntidade().setPessoaEmitente(pessoa);
328
                                adicionandoParametroArgsConfirmandoAcao(true);
329
                        }
330
                });
331
        }
332
 
333
        public void retirarEmitente() {
334
                getEntidade().setPessoaEmitente(null);
335
        }
336
 
337
        public void selecionarDestinatario(final Pessoa pessoa) {
338
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
339
                        public void execute() {
340
                                getEntidade().setPessoaDestinatario(pessoa);
341
                                adicionandoParametroArgsConfirmandoAcao(true);
342
                        }
343
                });
344
        }
345
 
346
        public void retirarDestinatario() {
347
                getEntidade().setPessoaDestinatario(null);
348
        }
349
 
465 blopes 350
        /************************************/
351
        /** REMESSA **/
352
        /************************************/
353
 
354
        public void prepararNotaFiscalRemessa() {
355
                preCadastrar();
356
                getEntidade().setTipoModeloNotaFiscal(TipoModeloNotaFiscal.MODELO_NFE_55.getValor());
357
                getEntidade().setTipoNotaFiscal(TipoNotaFiscal.NFE_REMESSA.getValor());
487 blopes 358
                getEntidade().setTransporte(new Transporte());
465 blopes 359
        }
360
 
361
        public void emitirNotaFiscalRemessa() {
362
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
363
                        public void execute() {
364
                                notaFiscalService.emitirNotaFiscalRemessa(getEntidade());
365
                                limparEntidade();
480 blopes 366
                                LancadorMensagem.lancarSucesso("NOTA FISCAL DE REMESSA EMITIDA COM SUCESSO");
465 blopes 367
                        }
368
                });
369
        }
370
 
449 blopes 371
        public void consultarProdutosVinculados() {
372
                getEntidade().setListaProdutosVinculadosDTO(notaFiscalService.consultarProdutosVinculados(getEntidade().getSequencial()));
373
        }
374
 
468 blopes 375
        public void selecionarCompraProdutoParaVinculoNotaFiscal(CompraProdutoDTO compraProdutoDTO) {
485 blopes 376
                compraProdutoDTO.setValorProdutoParaVinculoNotaFiscal(compraProdutoDTO.getValorCompra());
468 blopes 377
                setCompraProdutoDTOParaVinculoNotaFiscal(compraProdutoDTO);
378
        }
379
 
462 blopes 380
        public void excluirVinculoNotaFiscalProduto(NotaFiscalProdutoDTO notaFiscalProdutoDTO) {
381
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
382
                        public void execute() {
383
                                notaFiscalProdutoService.excluirNotaFiscalProduto(notaFiscalProdutoDTO);
384
                                consultarProdutosVinculados();
385
                                LancadorMensagem.lancarSucesso("VÍNCULO EXCLUÍDO COM SUCESSO");
386
                        }
387
                });
388
        }
389
 
390
        public void consultarProdutoParaVinculoNotaFiscal() {
391
                setProdutoDTOParaVinculoNotaFiscal(produtoService.consultarProdutoDTOPorCodigoOuCodigoEAN(getCodigoProdutoParaVinculoNotaFiscal()));
468 blopes 392
                setListaCompraProdutoDTOParaVinculoNotaFiscal(produtoService.consultarComprasDoProduto(getProdutoDTOParaVinculoNotaFiscal().getSequencial()));
462 blopes 393
        }
394
 
395
        public void vinculoProdutoNaNotaFiscal() {
396
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
397
                        public void execute() {
398
                                notaFiscalProdutoService.vinculoProdutoNaNotaFiscal(getEntidade().getSequencial(),
468 blopes 399
                                                getProdutoDTOParaVinculoNotaFiscal().getSequencial(),
485 blopes 400
                                                getCompraProdutoDTOParaVinculoNotaFiscal());
462 blopes 401
                                setCodigoProdutoParaVinculoNotaFiscal("");
402
                                setProdutoDTOParaVinculoNotaFiscal(null);
468 blopes 403
                                setCompraProdutoDTOParaVinculoNotaFiscal(null);
462 blopes 404
                                consultarProdutosVinculados();
405
                                LancadorMensagem.lancarSucesso("PRODUTO VINCULADO COM SUCESSO");
406
                        }
407
                });
408
        }
409
 
410
        public void consultarNotaFiscalParaReferenciarNotaFiscal() {
411
                setNotaFiscalDTOParaReferenciaNotaFiscal(notaFiscalService.consultarPorChave(getChaveNotaFiscalParaReferenciaNotaFiscal()));
412
        }
413
 
478 blopes 414
        public void gerarDadosAdicionais() {
415
                consultarProdutosVinculados();
416
 
417
                StringBuilder dadosAdicionais = new StringBuilder("");
418
 
419
                // SE FOR REMESSA, ADICIONAR NOTAS FISCAIS REFERENCIADAS
420
                if (getEntidade().ehNotaFiscalDeRemessa()) {
421
                        if (!VerificadorUtil.isListaNulaOuVazia(getEntidade().getListaProdutosVinculadosDTO())) {
422
                                dadosAdicionais.append("Devolução parcial das Notas Fiscais abaixo: <br />");
423
                                for (NotaFiscalProdutoDTO notaFiscalProdutoDTO : getEntidade().getListaProdutosVinculadosDTO()) {
424
//                                      "#{produtoVinculado.compraProdutoDTO.compraDTO.notaFiscalDTO.chave}"
425
                                        NotaFiscalDTO notaFiscalDTOCompra = notaFiscalProdutoDTO.getCompraProdutoDTO().getCompraDTO().getNotaFiscalDTO();
426
                                        if (!dadosAdicionais.toString().contains(notaFiscalDTOCompra.getChave())) {
427
                                                dadosAdicionais.append(notaFiscalDTOCompra.getNumero());
428
                                                dadosAdicionais.append(", Chave de acesso: ");
429
                                                dadosAdicionais.append(notaFiscalDTOCompra.getChave());
430
                                                dadosAdicionais.append(", emitida em ");
431
                                                dadosAdicionais.append(notaFiscalDTOCompra.getDataEmissaoFormatada());
432
                                                dadosAdicionais.append(" | ");
433
                                        }
434
                                }
435
        //                      dadosDevolucao.append("487, Chave de acesso: 35210126965899000170550030000004871684312433, emitida em 11/01/2021 | ");
436
        //                      dadosDevolucao.append("240, Chave de acesso: 35210126965899000170550030000004871684312433, emitida em 11/01/2022 | ");
437
        //                      dadosDevolucao.append("638, Chave de acesso: 35210126965899000170550030000004871684312433, emitida em 11/05/2021 | ");
438
                                dadosAdicionais.append("<br />");
439
                        }
440
                }
441
 
442
                // INFORMAÇÕES DOS TRIBUTOS
443
                dadosAdicionais.append("Total aproximado de tributos: R$ ");
444
                dadosAdicionais.append("X.XXX,XX");
445
                dadosAdicionais.append(" (");
446
                dadosAdicionais.append("XX,XX");
447
                dadosAdicionais.append("%), Federais R$ ");
480 blopes 448
                // VALOR TOTAL IPI
478 blopes 449
                dadosAdicionais.append("X.XXX,XX");
450
                dadosAdicionais.append(" (");
451
                dadosAdicionais.append("XX,XX");
452
                dadosAdicionais.append("%), Estaduais R$ ");
480 blopes 453
                // VALOR TOTAL ICMS
478 blopes 454
                dadosAdicionais.append("X.XXX,XX");
455
                dadosAdicionais.append(" (");
456
                dadosAdicionais.append("XX,XX");
457
                dadosAdicionais.append("%). Fonte IBPT.<br />");
458
 
459
                // EMAIL DO DESTINATÁRIO
460
                dadosAdicionais.append(getEntidade().getPessoaDestinatario().getEmail());
461
 
462
                getEntidade().setDescricaoComplementares(dadosAdicionais.toString());
463
        }
464
 
353 espaco 465
}