Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
200 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.IOException;
4
import java.io.Serializable;
5
import java.util.ArrayList;
6
import java.util.Arrays;
7
import java.util.List;
8
 
9
import javax.faces.context.FacesContext;
10
import javax.inject.Inject;
11
import javax.inject.Named;
12
 
13
import org.primefaces.context.RequestContext;
14
import org.springframework.context.annotation.Scope;
15
 
16
import br.com.ec.controller.managedbean.consultademanda.NotaFiscalConsultaPorDemanda;
17
import br.com.ec.core.generic.GenericService;
18
import br.com.ec.core.util.DataUtils;
19
import br.com.ec.core.util.VerificadorUtil;
20
import br.com.ec.domain.dto.ParametrosConsultaNotaFiscalDTO;
21
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
22
import br.com.ec.domain.dto.nfce.NotaFiscalRemessaDTO;
23
import br.com.ec.domain.model.Fornecedor;
24
import br.com.ec.domain.model.Loja;
25
import br.com.ec.domain.model.NotaFiscal;
26
import br.com.ec.domain.model.NotaFiscalProduto;
27
import br.com.ec.domain.model.Pessoa;
28
import br.com.ec.domain.model.Produto;
29
import br.com.ec.domain.model.ProdutoLoja;
30
import br.com.ec.domain.model.tipos.TipoRelatorio;
31
import br.com.ec.domain.model.tipos.nfe.TipoModeloNotaFiscal;
32
import br.com.ec.domain.model.tipos.nfe.TipoNotaFiscal;
33
import br.com.ec.domain.service.emissor.notafiscal.EmissorNotaFiscalEletronicaService;
34
import br.com.ec.domain.service.notafiscal.NotaFiscalProdutoService;
35
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
36
import br.com.ec.domain.service.pessoa.PessoaService;
37
import br.com.ec.domain.service.produto.ProdutoService;
38
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
39
import br.com.ec.web.exception.VerificadorLancamentoException;
40
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
41
import br.com.ec.web.generic.AbstractBean;
42
import br.com.ec.web.message.LancadorMensagem;
43
 
44
@Named
45
@Scope("view")
46
public class NotaFiscalBean extends AbstractBean<NotaFiscal> implements Serializable {
47
 
48
        private static final long serialVersionUID = 1L;
49
 
50
        private NotaFiscalService notaFiscalService;
51
        private ProdutoService produtoService;
52
        private NotaFiscalProdutoService notaFiscalProdutoService;
53
        private EmissorNotaFiscalEletronicaService emissorNotaFiscalEletronicaService;
54
        private PessoaService pessoaService;
55
        private ProdutoLojaService produtoLojaService;
56
 
57
        private String codigoProdutoRemessa;
58
        private Produto produtoSelecionado;
59
        private Integer quantidadeProdutoSelecionado;
60
        private NotaFiscalRemessaDTO notaFiscalRemessa;
61
 
62
        private Fornecedor fornecedorParaRemessa;
63
        private Loja lojaParaRemessa;
64
 
65
        private NotaFiscalConsultaPorDemanda lazy;
66
 
67
        @Inject
68
        public NotaFiscalBean(NotaFiscalService notaFiscalService, ProdutoService produtoService, NotaFiscalProdutoService notaFiscalProdutoService,
69
                        EmissorNotaFiscalEletronicaService emissorNotaFiscalEletronicaService, PessoaService pessoaService, NotaFiscalConsultaPorDemanda lazy,
70
                        ProdutoLojaService produtoLojaService) {
71
                this.notaFiscalService = notaFiscalService;
72
                this.produtoService = produtoService;
73
                this.notaFiscalProdutoService = notaFiscalProdutoService;
74
                this.emissorNotaFiscalEletronicaService = emissorNotaFiscalEletronicaService;
75
                this.pessoaService = pessoaService;
76
                this.lazy = lazy;
77
                this.produtoLojaService = produtoLojaService;
78
        }      
79
 
80
        @Override
81
        public void preCarregamento() {
82
                entidade = new NotaFiscal();
83
                parametrosConsulta = new ParametrosConsultaNotaFiscalDTO();
84
                parametrosConsulta.setEntidade(entidade);
85
        }
86
 
87
        @Override
88
        public void limparEntidade() {
89
                setEntidade(new NotaFiscal());
90
        }
91
 
92
        @Override
93
        public GenericService<NotaFiscal> getService() {
94
                return notaFiscalService;
95
        }
96
 
97
        @Override
98
        public NotaFiscal getEntidade() {
99
                return entidade;
100
        }
101
 
102
        @Override
103
        public NotaFiscal getId() {
104
                return getEntidade();
105
        }
106
 
107
        public String getCodigoProdutoRemessa() {
108
                return codigoProdutoRemessa;
109
        }
110
        public void setCodigoProdutoRemessa(String codigoProdutoRemessa) {
111
                this.codigoProdutoRemessa = codigoProdutoRemessa;
112
        }
113
 
114
        public Produto getProdutoSelecionado() {
115
                return produtoSelecionado;
116
        }
117
        public void setProdutoSelecionado(Produto produtoSelecionado) {
118
                this.produtoSelecionado = produtoSelecionado;
119
        }
120
 
121
        public Integer getQuantidadeProdutoSelecionado() {
122
                return quantidadeProdutoSelecionado;
123
        }
124
        public void setQuantidadeProdutoSelecionado(Integer quantidadeProdutoSelecionado) {
125
                this.quantidadeProdutoSelecionado = quantidadeProdutoSelecionado;
126
        }
127
 
128
        public NotaFiscalRemessaDTO getNotaFiscalRemessa() {
129
                return notaFiscalRemessa;
130
        }
131
        public void setNotaFiscalRemessa(NotaFiscalRemessaDTO notaFiscalRemessa) {
132
                this.notaFiscalRemessa = notaFiscalRemessa;
133
        }
134
 
135
        public Fornecedor getFornecedorParaRemessa() {
136
                return fornecedorParaRemessa;
137
        }
138
        public void setFornecedorParaRemessa(Fornecedor fornecedorParaRemessa) {
139
                this.fornecedorParaRemessa = fornecedorParaRemessa;
140
        }
141
 
142
        public Loja getLojaParaRemessa() {
143
                return lojaParaRemessa;
144
        }
145
        public void setLojaParaRemessa(Loja lojaParaRemessa) {
146
                this.lojaParaRemessa = lojaParaRemessa;
147
        }
148
 
149
        public NotaFiscalConsultaPorDemanda getLazy() {
150
                prepararConsultaDemanda();
151
                return lazy;
152
        }
153
        public void setLazy(NotaFiscalConsultaPorDemanda lazy) {
154
                this.lazy = lazy;
155
        }
156
        public void prepararConsultaDemanda() {
157
                lazy.setarParametrosConsulta(getParametrosConsulta());
158
        }
159
 
160
        public TipoNotaFiscal[] getTiposNotaFiscal() {
161
                return TipoNotaFiscal.values();
162
        }
163
 
164
        public void prepararParaCadastrarNFeRemessa() {
165
                setNotaFiscalRemessa(new NotaFiscalRemessaDTO());
166
                preRealizar();
167
        }
168
 
169
        /***************************************************************/
170
 
171
        @Override
172
        public void cadastrar(final NotaFiscal notaFiscal) {
173
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
174
                        public void execute() {
175
                                notaFiscal.setDataHoraEmissao(DataUtils.getDataAtual());
176
                                notaFiscal.setTipoNotaFiscal(TipoNotaFiscal.NFCE_SAIDA.getValor());
177
                                notaFiscal.setTipoModeloNotaFiscal(TipoModeloNotaFiscal.MODELO_NFCE_65.getValor());
178
                                getService().cadastrar(notaFiscal);
179
                                limparEntidade();
180
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO));
181
                        }
182
                });
183
        }
184
 
185
        @Override
186
        public void excluir(final NotaFiscal notaFiscal) {
187
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
188
                        public void execute() {
189
                                getService().excluir(notaFiscal);
190
                                limparEntidade();
191
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_EXCLUIDO_COM_SUCESSO));
192
                        }
193
                });
194
        }
195
 
196
        public void cancelarNotaFiscal(final NotaFiscal notaFiscal) {
197
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
198
                        public void execute() {
199
                                LancadorMensagem.lancarSucesso("OPERAÇÃO NÃO IMPLEMENTADA");
200
//                              notaFiscalService.cancelarNFCe(notaFiscal);
201
//                              LancadorMensagem.lancarSucesso("NOTA FISCAL CANCELADA COM SUCESSO");
202
                        }
203
                });
204
        }
205
 
206
        public void detalharNotaFiscal(NotaFiscal notaFiscal) {
207
                setEntidade(notaFiscalService.detalhar(notaFiscal));
208
                getEntidade().setListaNFRemessaProdutos(notaFiscalProdutoService.consultarProdutosDaNotaFiscal(getEntidade()));
209
        }
210
 
211
        public void iniciarNfeRemessa() {
212
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
213
                        public void execute() {
214
                                NotaFiscal notaFiscal = new NotaFiscal();
215
                                notaFiscal.setTipoModeloNotaFiscal(TipoModeloNotaFiscal.MODELO_NFE_55.getValor());
216
                                notaFiscal.setTipoNotaFiscal(TipoNotaFiscal.NFE_REMESSA.getValor());
217
                                notaFiscal.setSerie(TipoNotaFiscal.NFE_REMESSA.getSerie());
218
                                notaFiscal.setDataHoraEmissao(DataUtils.getDataAtual());
219
                                notaFiscal.setPessoaEmitente(getNotaFiscalRemessa().getLojaEmitente().getPessoaJuridica());
220
                                notaFiscal.setPessoaDestinatario(getNotaFiscalRemessa().getLojaDestino().getPessoaJuridica());
221
                                notaFiscalService.alterar(notaFiscal);
222
                                getNotaFiscalRemessa().preencherDadosNotaFiscal(notaFiscal);
223
                                getNotaFiscalRemessa().setPessoaEmitente(getNotaFiscalRemessa().getLojaEmitente().getPessoaJuridica());
224
                                getNotaFiscalRemessa().setPessoaDestinatario(getNotaFiscalRemessa().getLojaDestino().getPessoaJuridica());
225
                                setCodigoProdutoRemessa(null);
226
                                LancadorMensagem.lancarSucesso("REMESSA INICIADA COM SUCESSO");
227
                        }
228
                });
229
        }
230
 
231
        public void consultarNfeRemessa(final NotaFiscal nf) {
232
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
233
                        public void execute() {
234
                                preRealizar();
235
                                setEntidade(notaFiscalService.detalhar(nf));
236
                                getEntidade().setListaNFRemessaProdutos(notaFiscalProdutoService.consultarProdutosDaNotaFiscal(getEntidade()));
237
                                setNotaFiscalRemessa(new NotaFiscalRemessaDTO());
238
                                getNotaFiscalRemessa().preencherDadosNotaFiscal(getEntidade());
239
                        }
240
                });
241
        }
242
 
243
        public void escolherProduto() {
244
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
245
                        public void execute() {
246
                                Produto produtoConsultado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProdutoRemessa());
247
                                if (VerificadorUtil.estaNulo(produtoConsultado)) {
248
                                        LancadorMensagem.lancarErro("Produto não encontrado!");
249
                                } else {
250
                                        setProdutoSelecionado(produtoConsultado);
251
                                        setQuantidadeProdutoSelecionado(1);
252
                                        RequestContext.getCurrentInstance().addCallbackParam("confirmado", true);
253
                                }
254
                        }
255
                });
256
        }
257
 
258
        public void escolherProduto(Produto produto) {
259
                setProdutoSelecionado(produto);
260
                setQuantidadeProdutoSelecionado(1);
261
        }
262
 
263
        public void adicionarProduto() {
264
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
265
                        public void execute() {
266
                                NotaFiscalProduto notaFiscalRemessaProduto = new NotaFiscalProduto();
267
                                notaFiscalRemessaProduto.setProduto(getProdutoSelecionado());
268
                                notaFiscalRemessaProduto.setQuantidade(getQuantidadeProdutoSelecionado());
269
                                notaFiscalRemessaProduto.setNotaFiscal(notaFiscalService.consultarPorId(getNotaFiscalRemessa().getNotaFiscal()));
270
                                notaFiscalProdutoService.cadastrar(notaFiscalRemessaProduto);
271
//                              verificarParametros(notaFiscalRemessaProduto);
272
                                consultarNfeRemessa(getNotaFiscalRemessa().getNotaFiscal());
273
                                setCodigoProdutoRemessa(null);
274
                                LancadorMensagem.lancarSucesso("Produto adicionado, código: " + getProdutoSelecionado().getCodigoProdutoPadrao());
275
                        }
276
                });
277
        }
278
 
279
        public void removerProduto(final NotaFiscalProduto notaFiscalProduto) {
280
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
281
                        public void execute() {
282
                                notaFiscalProdutoService.excluir(notaFiscalProduto);
283
                                consultarNfeRemessa(notaFiscalProduto.getNotaFiscal());
284
                                LancadorMensagem.lancarSucesso("Produto removido com sucesso");
285
                        }
286
                });
287
        }
288
 
289
        public void emitirNfeRemessa() {
290
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
291
                        public void execute() {
292
                                NotaFiscal notaFiscal = notaFiscalService.detalhar(getEntidade());
293
                                notaFiscal.setPessoaEmitente(pessoaService.detalharPessoa(notaFiscal.getPessoaEmitente()));
294
                                notaFiscal.setPessoaDestinatario(pessoaService.detalharPessoa(notaFiscal.getPessoaDestinatario()));
295
                                notaFiscal.setListaNFRemessaProdutos(notaFiscalProdutoService.consultarProdutosDaNotaFiscal(getEntidade()));
296
                                emissorNotaFiscalEletronicaService.enviarNotaFiscalEletronicaRemessa(notaFiscal);
297
                                LancadorMensagem.lancarSucesso("NOTA FISCAL DE REMESSA: EMITIDA COM SUCESSO");
298
                        }
299
                });
300
        }
301
 
302
        // TODO: MÉTODO PROVISÓRIO
303
        public void emitirNfeDevolucao() {
304
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
305
                        public void execute() {
306
                                emissorNotaFiscalEletronicaService.emitirNotaFiscalEletronicaDireta();
307
                                LancadorMensagem.lancarSucesso("NOTA FISCAL: EMITIDA COM SUCESSO");
308
                        }
309
                });
310
        }
311
 
312
        public void selecionarEmitente(final Pessoa pessoa) {
313
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
314
                        public void execute() {
315
                                getEntidade().setPessoaEmitente(pessoa);
316
                                adicionandoParametroArgsConfirmandoAcao(true);
317
                        }
318
                });
319
        }
320
 
321
        public void retirarEmitente() {
322
                getEntidade().setPessoaEmitente(null);
323
        }
324
 
325
        public void selecionarDestinatario(final Pessoa pessoa) {
326
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
327
                        public void execute() {
328
                                getEntidade().setPessoaDestinatario(pessoa);
329
                                adicionandoParametroArgsConfirmandoAcao(true);
330
                        }
331
                });
332
        }
333
 
334
        public void retirarDestinatario() {
335
                getEntidade().setPessoaDestinatario(null);
336
        }
337
 
338
        /*
339
        private void verificarParametros(TransferenciaProduto transferenciaProduto) {
340
                if (VerificadorUtil.estaNulo(transferenciaProduto.getQuantidadeTransferir()) || transferenciaProduto.getQuantidadeTransferir().equals(0)) {
341
                        throw new NegocioException("Obrigatório informar a quantidade para transferência.");
342
                }
343
                verificarSeProdutoJaFoiAdicionado(transferenciaProduto.getSequencialDoProduto());
344
        }
345
 
346
        protected void verificarSeProdutoJaFoiAdicionado(Long sequencialProduto) {
347
                if (getEntidade().verificarSeProdutoJaConstaNaLista(sequencialProduto)) {
348
                        throw new NegocioException("Produto já foi adicionando anteriormente!");
349
                }
350
        }
351
        */
352
 
353
        // MÉTODO PARCIAL
354
        public void adicionarEstoqueProdutos() {
355
                // FORNECEDORES: "MULTILASER" 29, "VIVONA25" 25, "JBL HARMAN" 38, "HUSKY" 40, "BHX ENERGY" 37, "KINGO" 30, "GBMAX" 70, 
356
                // "GIFFY" 32, "RCELL" 34, "TTNT" 60, "YASIN" 68, "DL COMERCIO" 71
357
                /*1;"LOJA POÇO"
358
                2;"QUIOSQUE EXTRA"
359
                3;"QUIOSQUE HIPER"
360
                4;"LOJA VIVO"
361
                5;"QUIOSQUE PÁTIO"
362
                6;"LOJA MATRIZ"
363
                7;"FARMÁCIA"
364
                8;"LOJA MACEIÓ"
365
                9;"ESTOQUE"
366
                13;"QUIOSQUE ANTARES"*/
367
 
368
                // FORNECEDORES APTOS
369
//              List<Integer> sequenciaisFornecedor = new ArrayList<>(Arrays.asList(29, 25, 38, 40, 37, 30, 70, 32, 34, 60, 68, 71));
370
//              List<Integer> sequenciaisFornecedor = new ArrayList<>(Arrays.asList(38));
371
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
372
                        public void execute() {
373
                                ParametrosConsultaProdutoDTO parametrosConsultaProduto = new ParametrosConsultaProdutoDTO();
374
                                parametrosConsultaProduto.setTipoRelatorioProduto(TipoRelatorio.PRODUTOS_COM_ESTOQUE.getValor());
375
                                if (VerificadorUtil.naoEstaNulo(getLojaParaRemessa())) {
376
                                        parametrosConsultaProduto.setLojaSelecionada(getLojaParaRemessa().getSequencial());
377
                                } else {
378
                                        LancadorMensagem.lancarErro("Selecione a loja do estoque");
379
                                }
380
                                if (VerificadorUtil.naoEstaNulo(getFornecedorParaRemessa())) {
381
                                        parametrosConsultaProduto.setFornecedor(getFornecedorParaRemessa());
382
                                } else {
383
                                        LancadorMensagem.lancarErro("Selecione o fornecedor");
384
                                }
385
 
386
                                List<Produto> produtosAptos = produtoService.consultarProdutoPorParametros(parametrosConsultaProduto);
387
                                for (Produto produto : produtosAptos) {
388
                                        ProdutoLoja produtoLoja = null;
389
                                        if (VerificadorUtil.naoEstaNulo(getLojaParaRemessa())) {
390
                                                produtoLoja = produtoLojaService.consultarProdutoLoja(produto, getLojaParaRemessa());
391
                                        }
392
                                        NotaFiscalProduto notaFiscalProduto = new NotaFiscalProduto();
393
                                        notaFiscalProduto.setProduto(produto);
394
                                        notaFiscalProduto.setQuantidade(produtoLoja.getQuantidadeEstoque());
395
                                        notaFiscalProduto.setNotaFiscal(getEntidade());
396
                                        notaFiscalProdutoService.cadastrar(notaFiscalProduto);
397
                                }
398
                                consultarNfeRemessa(getEntidade());
399
                        }
400
                });
401
        }
402
 
403
        public void retirarEstoqueProdutos() {
404
                for (NotaFiscalProduto notaFiscalProduto : getEntidade().getListaNFRemessaProdutos()) {
405
                        notaFiscalProdutoService.excluir(notaFiscalProduto);
406
                }
407
                consultarNfeRemessa(getEntidade());
408
        }
409
 
410
        public void abrirLinkCaminhoQrcode() {
411
                try {
412
                        FacesContext.getCurrentInstance().getExternalContext().redirect(getEntidade().getCaminhoQrcode());
413
                } catch (IOException e) {
414
                        e.printStackTrace();
415
                }
416
        }
417
 
418
        public static void main(String[] args) {
419
                List<Integer> sequenciaisFornecedor = new ArrayList<>(Arrays.asList(29, 25, 38, 40, 37, 30, 70, 32, 34, 60, 68, 71));
420
                for (Integer sequencialFornecedor : sequenciaisFornecedor) {
421
                        System.out.println(sequencialFornecedor);
422
                }
423
        }
424
 
425
}