Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
583 blopes 1
package br.com.ec.domain.dto;
2
 
3
import java.util.Date;
4
 
5
import br.com.ec.core.util.DataUtils;
6
import br.com.ec.core.util.VerificadorUtil;
7
import br.com.ec.domain.model.tipos.TipoStatusPedidoCompra;
8
 
9
public class AlertasComprasProdutoDTO {
10
 
11
        private ProdutoDTO produto;
12
        private Long quantidadeVendas;
13
        private Integer quantidadeDiasVendas;
14
        private Long quantidadeEstoque;
15
 
16
        private String statusPedidoCompra;
17
        private Integer quantidadeParaComprarPedidoCompra;
18
        private Double consumoMedioDiario;
19
        private Integer tempoEstoque;
20
        private Date dataUltimaVenda;
21
 
22
        public AlertasComprasProdutoDTO() {}
23
 
24
        public AlertasComprasProdutoDTO(ProdutoDTO produto, Long quantidadeVendas, Integer quantidadeDiasVendas, Date dataUltimaVenda, Long quantidadeEstoque, String statusPedidoCompra,
25
                        Integer quantidadeParaComprarPedidoCompra) {
26
                this.produto = produto;
27
                this.quantidadeVendas = quantidadeVendas;
28
                this.quantidadeDiasVendas = quantidadeDiasVendas;
29
                this.dataUltimaVenda = dataUltimaVenda;
30
                this.quantidadeEstoque = quantidadeEstoque;
31
                this.statusPedidoCompra = statusPedidoCompra;
32
                this.quantidadeParaComprarPedidoCompra = quantidadeParaComprarPedidoCompra;
33
        }
34
 
35
        public ProdutoDTO getProduto() {
36
                return produto;
37
        }
38
        public void setProduto(ProdutoDTO produto) {
39
                this.produto = produto;
40
        }
41
 
42
        public Long getQuantidadeVendas() {
43
                return quantidadeVendas;
44
        }
45
        public void setQuantidadeVendas(Long quantidadeVendas) {
46
                this.quantidadeVendas = quantidadeVendas;
47
        }
48
 
49
        public Integer getQuantidadeDiasVendas() {
50
                return quantidadeDiasVendas;
51
        }
52
        public void setQuantidadeDiasVendas(Integer quantidadeDiasVendas) {
53
                this.quantidadeDiasVendas = quantidadeDiasVendas;
54
        }
55
 
56
        public Long getQuantidadeEstoque() {
57
                return quantidadeEstoque;
58
        }
59
        public void setQuantidadeEstoque(Long quantidadeEstoque) {
60
                this.quantidadeEstoque = quantidadeEstoque;
61
        }
62
 
63
        public String getStatusPedidoCompra() {
64
                return statusPedidoCompra;
65
        }
66
        public void setStatusPedidoCompra(String statusPedidoCompra) {
67
                this.statusPedidoCompra = statusPedidoCompra;
68
        }
69
 
70
        public Integer getQuantidadeParaComprarPedidoCompra() {
71
                return quantidadeParaComprarPedidoCompra;
72
        }
73
        public void setQuantidadeParaComprarPedidoCompra(Integer quantidadeParaComprarPedidoCompra) {
74
                this.quantidadeParaComprarPedidoCompra = quantidadeParaComprarPedidoCompra;
75
        }
76
 
77
        public Double getConsumoMedioDiario() {
78
                return consumoMedioDiario;
79
        }
80
        public void setConsumoMedioDiario(Double consumoMedioDiario) {
81
                this.consumoMedioDiario = consumoMedioDiario;
82
        }
83
 
84
        public Integer getTempoEstoque() {
85
                return tempoEstoque;
86
        }
87
        public void setTempoEstoque(Integer tempoEstoque) {
88
                this.tempoEstoque = tempoEstoque;
89
        }
90
 
91
        public Date getDataUltimaVenda() {
92
                return dataUltimaVenda;
93
        }
94
        public void setDataUltimaVenda(Date dataUltimaVenda) {
95
                this.dataUltimaVenda = dataUltimaVenda;
96
        }
97
 
98
        public Integer getQuantidadeDiasUltimaVenda() {
99
                if (VerificadorUtil.naoEstaNulo(getDataUltimaVenda())) {
100
                        return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), getDataUltimaVenda());
101
                }
102
                return null;
103
        }
104
 
105
        public Integer quantidadeParaComprar(Integer quantidadeParaComprar, Integer quantidadeVendas, Integer quantidadeEstoque) {
106
                return (quantidadeParaComprar * quantidadeVendas) - quantidadeEstoque;
107
        }
108
 
109
        public String getCorTipoStatusSimplificado() {
110
                if (VerificadorUtil.naoEstaNulo(getStatusPedidoCompra())) {
111
                        if (getStatusPedidoCompra().equals(TipoStatusPedidoCompra.NAO_COMPRAR.getValor())) {
112
                                return "pink-btn";
113
                        }
114
                        if (getStatusPedidoCompra().equals(TipoStatusPedidoCompra.PENDENTE.getValor())) {
115
                                return "orange-btn";
116
                        }
117
                        if (getStatusPedidoCompra().equals(TipoStatusPedidoCompra.SOLICITADO.getValor())) {
118
                                return "blue-btn";
119
                        }
120
                        return "green-btn";
121
                }
122
                return "black-btn";
123
        }
124
 
125
        public String getCorTipoStatus() {
126
                if (VerificadorUtil.naoEstaNulo(getStatusPedidoCompra())) {
127
                        return TipoStatusPedidoCompra.parse(getStatusPedidoCompra()).getStyleBotao();
128
                }
129
                return "black-btn";
130
        }
131
 
132
        public String getQuantidadeParaComprarDoPedido() {
133
                if (VerificadorUtil.naoEstaNulo(getStatusPedidoCompra())) {
134
                        if (VerificadorUtil.naoEstaNulo(getQuantidadeParaComprarPedidoCompra())) {
135
                                StringBuilder statusPedido = new StringBuilder();
136
                                statusPedido.append(getQuantidadeParaComprarPedidoCompra());
137
                                return statusPedido.toString();
138
                        }
139
                }
140
                return "?";
141
        }
142
 
143
        public String getDescricaoDoTipoStatus() {
144
                if (VerificadorUtil.naoEstaNulo(getStatusPedidoCompra())) {
145
                        StringBuilder statusPedido = new StringBuilder();
146
                        statusPedido.append(TipoStatusPedidoCompra.parse(getStatusPedidoCompra()).getDescricao());
147
                        if (VerificadorUtil.naoEstaNulo(getQuantidadeParaComprarPedidoCompra())) {
148
                                statusPedido.append(" [").append(getQuantidadeParaComprarPedidoCompra()).append("]");
149
                        }
150
                        return statusPedido.toString();
151
                }
152
                return null;
153
        }
154
 
155
        public Double getQuantidadeConsumoMedioDiario(Date dataInicial, Date dataFinal) {
156
                setQuantidadeDiasVendas(DataUtils.calcularDiferenceEmDiasEntreDuasDatas(dataFinal, dataInicial));
157
                if (VerificadorUtil.naoEstaNulo(getQuantidadeVendas())) {
158
                        return new Double(getQuantidadeVendas().floatValue()/getQuantidadeDiasVendas().floatValue());
159
                }
160
                return null;
161
        }
162
 
163
        public void atualizarTempoEstoque(Date dataInicial, Date dataFinal) {
164
                setConsumoMedioDiario(getQuantidadeConsumoMedioDiario(dataInicial, dataFinal));
165
                if (VerificadorUtil.naoEstaNulo(getConsumoMedioDiario())
166
                                && VerificadorUtil.naoEstaNulo(getQuantidadeEstoque())) {
167
                        if (getConsumoMedioDiario() > 0 || getQuantidadeEstoque() > 0) {
168
                                Integer tempoDeEstoque = new Integer((int) (getQuantidadeEstoque().floatValue()/getConsumoMedioDiario().floatValue()));
169
                                setTempoEstoque(tempoDeEstoque > 0 ? tempoDeEstoque : 0);
170
                        } else {
171
                                setTempoEstoque(0);
172
                        }
173
                } else {
174
                        setTempoEstoque(0);
175
                }
176
        }
177
 
178
        public Integer quantidadeParaComprar(Date dataInicial, Date dataFinal) {
179
                setConsumoMedioDiario(getQuantidadeConsumoMedioDiario(dataInicial, dataFinal));
180
                if (VerificadorUtil.naoEstaNulo(getConsumoMedioDiario())
181
                                && VerificadorUtil.naoEstaNulo(getQuantidadeEstoque())) {
182
                        if (getConsumoMedioDiario() == 0 || getQuantidadeEstoque() == 0) {
183
                                return 0;
184
                        }
185
                        Integer quantidadeParaComprar = new Integer((int) ((getConsumoMedioDiario().floatValue()*getQuantidadeDiasVendas()) - getQuantidadeEstoque()));
186
                        return quantidadeParaComprar > 0 ? quantidadeParaComprar : 0;
187
                }
188
                return 0;
189
//              return VerificadorUtil.naoEstaNulo(quantidadeParaComprar)? 
190
//                              (quantidadeParaComprar * quantidadeVendas) - quantidadeEstoque : quantidadeParaComprar(quantidadeVendas, quantidadeEstoque);
191
        }
192
 
193
        public String corDoTempoEstoque(Integer quantidadeEmDias) {
194
                if (getTempoEstoque() <= quantidadeEmDias/2) {
195
                        return "red";
196
                }
197
                if (getTempoEstoque() <= quantidadeEmDias) {
198
                        return "orange";
199
                }
200
                return "black";
201
        }
202
 
203
        public String getCorDoTempoEstoque() {
204
                if (getTempoEstoque() <= 10) {
205
                        return "red";
206
                }
207
                if (getTempoEstoque() <= 15) {
208
                        return "orange";
209
                }
210
                return "black";
211
        }
212
 
213
}