Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.List;
6
 
7
import javax.inject.Inject;
8
import javax.inject.Named;
9
 
10
import org.springframework.context.annotation.Scope;
11
 
195 espaco 12
import br.com.ec.core.generic.GenericService;
13
import br.com.ec.core.util.VerificadorUtil;
106 espaco 14
import br.com.ec.domain.dto.ProdutoHistoricoDTO;
15
import br.com.ec.domain.dto.ProdutoHistoricoDetalhesDTO;
16
import br.com.ec.domain.model.FornecedorProduto;
17
import br.com.ec.domain.model.Loja;
18
import br.com.ec.domain.model.Produto;
19
import br.com.ec.domain.model.ProdutoLoja;
20
import br.com.ec.domain.model.tipos.TipoGenero;
21
import br.com.ec.domain.model.tipos.TipoGeneroProduto;
22
import br.com.ec.domain.model.tipos.TipoLancamentoHistorico;
23
import br.com.ec.domain.model.tipos.TipoProduto;
24
import br.com.ec.domain.service.fornecedorproduto.FornecedorProdutoService;
25
import br.com.ec.domain.service.loja.LojaService;
26
import br.com.ec.domain.service.produto.ProdutoService;
27
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
28
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
195 espaco 29
import br.com.ec.web.exception.VerificadorLancamentoException;
30
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
31
import br.com.ec.web.generic.AbstractBean;
32
import br.com.ec.web.message.LancadorMensagem;
106 espaco 33
 
34
@Named
35
@Scope("view")
36
public class ProdutoDetalheBean extends AbstractBean<Produto> implements Serializable {
37
 
38
        private static final long serialVersionUID = 1L;
39
 
40
        private ProdutoService produtoService;
41
        private ProdutoLojaService produtoLojaService;
42
        private FornecedorProdutoService fornecedorProdutoService;
43
        private LojaService lojaService;
44
 
45
        private Produto produtoSelecionado;
46
        private List<ProdutoHistoricoDTO> produtosHistorico;
47
        private List<ProdutoHistoricoDetalhesDTO> produtosHistoricoDetalhes;
48
        private List<ProdutoHistoricoDetalhesDTO> resumoProdutosHistoricoDetalhes;
49
 
50
        private String descricaoDetalhamento;
147 espaco 51
        private Integer mesesConsultaHistorico;
106 espaco 52
 
53
        @Inject
54
        public ProdutoDetalheBean(ProdutoService produtoService, ProdutoLojaService produtoLojaService,
55
                        FornecedorProdutoService fornecedorProdutoService, LojaService lojaService, ContextoSeguranca contextoSeguranca) {
56
                this.produtoService = produtoService;
57
                this.produtoLojaService = produtoLojaService;
58
                this.fornecedorProdutoService = fornecedorProdutoService;
59
                this.lojaService = lojaService;
60
        }
61
 
62
        @Override
63
        public void preCarregamento() {
64
                entidade = new Produto();
65
        }
66
 
67
        @Override
68
        public void limparEntidade() {
69
                setEntidade(new Produto());
70
        }
71
 
72
        @Override
73
        public GenericService<Produto> getService() {
74
                return produtoService;
75
        }
76
 
77
        @Override
78
        public Produto getEntidade() {
79
                return entidade;
80
        }
81
 
82
        @Override
83
        public Produto getId() {
84
                return getEntidade();
85
        }
86
 
87
        public Produto getProdutoSelecionado() {
88
                return produtoSelecionado;
89
        }
90
        public void setProdutoSelecionado(Produto produtoSelecionado) {
91
                this.produtoSelecionado = produtoSelecionado;
92
        }
93
 
94
        public List<ProdutoHistoricoDTO> getProdutosHistorico() {
95
                return produtosHistorico;
96
        }
97
        public void setProdutosHistorico(List<ProdutoHistoricoDTO> produtosHistorico) {
98
                this.produtosHistorico = produtosHistorico;
99
        }
100
 
101
        public List<ProdutoHistoricoDetalhesDTO> getProdutosHistoricoDetalhes() {
102
                return produtosHistoricoDetalhes;
103
        }
104
        public void setProdutosHistoricoDetalhes(List<ProdutoHistoricoDetalhesDTO> produtosHistoricoDetalhes) {
105
                this.produtosHistoricoDetalhes = produtosHistoricoDetalhes;
106
        }
107
 
108
        public List<ProdutoHistoricoDetalhesDTO> getResumoProdutosHistoricoDetalhes() {
109
                return resumoProdutosHistoricoDetalhes;
110
        }
111
        public void setResumoProdutosHistoricoDetalhes(List<ProdutoHistoricoDetalhesDTO> resumoProdutosHistoricoDetalhes) {
112
                this.resumoProdutosHistoricoDetalhes = resumoProdutosHistoricoDetalhes;
113
        }
114
 
161 espaco 115
        public Integer subtotalResumoDetalhado() {
116
                Integer subtotal = 0;
117
                for (ProdutoHistoricoDetalhesDTO detalhado : getProdutosHistoricoDetalhes()) {
118
                        if (VerificadorUtil.naoEstaNulo(detalhado.getTipoLancamento()) &&
119
                                        VerificadorUtil.naoEstaNulo(detalhado.getQuantidadeLancamentos())) {
120
                                if (detalhado.ehTipoLancamentoHistoricoAvarias()) {
121
                                        subtotal = subtotal - detalhado.getQuantidadeLancamentos();
122
                                }
123
                                if (detalhado.ehTipoLancamentoHistoricoCompras()) {
124
                                        subtotal = subtotal + detalhado.getQuantidadeLancamentos();
125
                                }
126
                                if (detalhado.ehTipoLancamentoHistoricoContagensEntrada()) {
127
                                        subtotal = subtotal + detalhado.getQuantidadeLancamentos();
128
                                }
129
                                if (detalhado.ehTipoLancamentoHistoricoContagensSaida()) {
130
                                        subtotal = subtotal - detalhado.getQuantidadeLancamentos();
131
                                }
539 blopes 132
                                if (detalhado.ehTipoLancamentoHistoricoProducaoEntrada()) {
133
                                        subtotal = subtotal + detalhado.getQuantidadeLancamentos();
134
                                }
135
                                if (detalhado.ehTipoLancamentoHistoricoProducaoSaida()) {
136
                                        subtotal = subtotal - detalhado.getQuantidadeLancamentos();
137
                                }
161 espaco 138
                                if (detalhado.ehTipoLancamentoHistoricoTrocas()) {
139
                                        subtotal = subtotal - detalhado.getQuantidadeLancamentos();
140
                                }
141
                                if (detalhado.ehTipoLancamentoHistoricoVendas()) {
142
                                        subtotal = subtotal - detalhado.getQuantidadeLancamentos();
143
                                }
144
                        } else {
145
                                subtotal++;
146
                        }
147
                }
148
                return subtotal;
149
        }
150
 
106 espaco 151
        public String getDescricaoDetalhamento() {
152
                return descricaoDetalhamento;
153
        }
154
        public void setDescricaoDetalhamento(String descricaoDetalhamento) {
155
                this.descricaoDetalhamento = descricaoDetalhamento;
156
        }
157
 
147 espaco 158
        public Integer getMesesConsultaHistorico() {
159
                return mesesConsultaHistorico;
160
        }
161
        public void setMesesConsultaHistorico(Integer mesesConsultaHistorico) {
162
                this.mesesConsultaHistorico = mesesConsultaHistorico;
163
        }
164
 
106 espaco 165
        /***************************************************************/
166
 
167
        public Integer consultarEstoque(Produto produto) {
168
                return produtoLojaService.consultarEstoqueProduto(produto);
169
        }
170
 
171
        public Integer consultarEstoque(Produto produto, Long sequencialLoja) {
172
                return produtoLojaService.consultarEstoqueProdutoEeLoja(produto, new Loja(sequencialLoja));
173
        }
174
 
175
        public ProdutoLoja consultarProdutoLoja(Produto produto, Long sequencialLoja) {
176
                return produtoLojaService.consultarProdutoLoja(produto, new Loja(sequencialLoja));
177
        }
178
 
179
        public TipoProduto[] getTiposProduto() {
180
                return TipoProduto.values();
181
        }
182
 
183
        public TipoGenero[] getTiposGenero() {
184
                return TipoGenero.values();
185
        }
186
 
187
        public TipoGeneroProduto[] getTiposGeneroProduto() {
188
                return TipoGeneroProduto.values();
189
        }
190
 
147 espaco 191
        public void consultarHistorico(final Produto produto) {
192
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
193
                        public void execute() {
194
                                setProdutoSelecionado(produto);
195
                                setMesesConsultaHistorico(12);
196
                                setProdutosHistorico(produtoService.consultarHistorico(produto, getMesesConsultaHistorico()));
197
                        }
198
                });
106 espaco 199
        }
200
 
201
        public void detalharHistorico(ProdutoHistoricoDTO produtoHistorico) {
202
                setDescricaoDetalhamento(TipoLancamentoHistorico.parse(produtoHistorico.getTipoLancamento()).getDescricao());
203
                setProdutosHistoricoDetalhes(produtoService.detalharHistorico(produtoHistorico));
204
                montarResumoHistorico();
205
        }
206
 
207
        private void montarResumoHistorico() {
208
                List<ProdutoHistoricoDetalhesDTO> resumos = new ArrayList<ProdutoHistoricoDetalhesDTO>();
209
                List<Loja> lojasAtivas = lojaService.listarLojasAtivasEspacoCase();
210
                for (Loja loja : lojasAtivas) {
211
                        ProdutoHistoricoDetalhesDTO resumoLoja = new ProdutoHistoricoDetalhesDTO();
212
                        resumoLoja.setLoja(loja);
213
                        resumoLoja.setQuantidadeLancamentos(0);
214
                        resumos.add(resumoLoja);
215
                }
216
 
217
                for (ProdutoHistoricoDetalhesDTO produtoHistoricoDetalhes : getProdutosHistoricoDetalhes()) {
218
                        for (ProdutoHistoricoDetalhesDTO resumo : resumos) {
219
                                if (resumo.getLoja().equals(produtoHistoricoDetalhes.getLoja())) {
220
                                        resumo.setQuantidadeLancamentos(resumo.getQuantidadeLancamentos()+1);
221
                                }
222
                        }
223
                }
224
                setResumoProdutosHistoricoDetalhes(resumos);
225
        }
226
 
227
        public void excluirVinculo(final FornecedorProduto fornecedorProduto) {
228
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
229
                        public void execute() {
230
                                fornecedorProdutoService.excluirPorFornecedorEeProduto(fornecedorProduto);
231
                                setEntidade(produtoService.detalharProduto(fornecedorProduto.getProduto()));
232
                                LancadorMensagem.lancarSucesso("VÍNCULO EXCLUÍDO COM SUCESSO");
233
                        }
234
                });
235
        }
236
 
147 espaco 237
        public void consultarMaisHistorico() {
238
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
239
                        public void execute() {
240
                                setMesesConsultaHistorico(getMesesConsultaHistorico() + 12);
241
                                setProdutosHistorico(produtoService.consultarHistorico(getProdutoSelecionado(), getMesesConsultaHistorico()));
242
                        }
243
                });
244
        }
245
 
106 espaco 246
}