Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
633 blopes 1
package br.com.ec.domain.dto;
2
 
3
import javax.persistence.Transient;
4
 
5
import br.com.ec.core.util.StringUtil;
6
import br.com.ec.core.util.VerificadorUtil;
7
import br.com.ec.domain.shared.ConstantesSEC;
8
 
9
public class ProdutoCustosDTO {
10
 
11
        private Double valorVarejo;
12
        private Double valorSimulacao;
13
        private Double valorCompra;
14
        private Double custoTributosCompras;
15
        private String descricaoFormaPagamento;
16
        private Double aliquotaSimples = new Double(ConstantesSEC.NotaFiscal.Imposto.ALIQUOTA_MEDIA_SIMPLES_NACIONAL_9_5);
17
        private Double aliquotaMediaComissoes = new Double(ConstantesSEC.NotaFiscal.Imposto.ALIQUOTA_MEDIA_COMISSOES_2);
18
        private Double aliquotaFormaPagamento = new Double(0.0);
19
        private Double aliquotaMargemMinima = new Double(15.0);
20
 
21
        public ProdutoCustosDTO() {}
22
 
23
        public Double getValorVarejo() {
24
                return valorVarejo;
25
        }
26
        public void setValorVarejo(Double valorVarejo) {
27
                this.valorVarejo = valorVarejo;
28
        }
29
 
30
        public Double getValorSimulacao() {
31
                return valorSimulacao;
32
        }
33
        public void setValorSimulacao(Double valorSimulacao) {
34
                this.valorSimulacao = valorSimulacao;
35
        }
36
 
37
        public Double getValorCompra() {
38
                return valorCompra;
39
        }
40
        public void setValorCompra(Double valorCompra) {
41
                this.valorCompra = valorCompra;
42
        }
43
 
44
        public Double getCustoTributosCompras() {
45
                return custoTributosCompras;
46
        }
47
        public void setCustoTributosCompras(Double custoTributosCompras) {
48
                this.custoTributosCompras = custoTributosCompras;
49
        }
50
 
51
        public String getDescricaoFormaPagamento() {
52
                return descricaoFormaPagamento;
53
        }
54
        public void setDescricaoFormaPagamento(String descricaoFormaPagamento) {
55
                this.descricaoFormaPagamento = descricaoFormaPagamento;
56
        }
57
 
58
        public Double getAliquotaSimples() {
59
                return aliquotaSimples;
60
        }
61
        public void setAliquotaSimples(Double aliquotaSimples) {
62
                this.aliquotaSimples = aliquotaSimples;
63
        }
64
 
65
        public Double getAliquotaMediaComissoes() {
66
                return aliquotaMediaComissoes;
67
        }
68
        public void setAliquotaMediaComissoes(Double aliquotaMediaComissoes) {
69
                this.aliquotaMediaComissoes = aliquotaMediaComissoes;
70
        }
71
 
72
        public Double getAliquotaFormaPagamento() {
73
                return aliquotaFormaPagamento;
74
        }
75
        public void setAliquotaFormaPagamento(Double aliquotaFormaPagamento) {
76
                this.aliquotaFormaPagamento = aliquotaFormaPagamento;
77
        }
78
 
79
        public Double getAliquotaMargemMinima() {
80
                return aliquotaMargemMinima;
81
        }
82
        public void setAliquotaMargemMinima(Double aliquotaMargemMinima) {
83
                this.aliquotaMargemMinima = aliquotaMargemMinima;
84
        }
85
 
86
        @Transient
87
        public Double calculoOperacao() {
88
                Double aliquota = getAliquotaSimples() + getAliquotaMediaComissoes() + getAliquotaFormaPagamento();
89
                return VerificadorUtil.naoEstaNulo(getValorSimulacao())? getCustoTributosCompras() + (getValorSimulacao()*aliquota/100) : 0.0;
90
        }
91
 
92
        @Transient
93
        public String valorCalculoOperacao() {
94
                return StringUtil.formatarValor(calculoOperacao());
95
        }
96
 
97
        @Transient
98
        public Double calculoValorAposCustos() {
99
                return VerificadorUtil.naoEstaNulo(getValorSimulacao())? getValorSimulacao() - calculoOperacao() : 0.0;
100
        }
101
 
102
        @Transient
103
        public Double calculoMargemAposCustos() {
104
                return VerificadorUtil.naoEstaNulo(getValorSimulacao())? calculoValorAposCustos() * 100 / calculoOperacao() : 0.0;
105
        }
106
 
107
        @Transient
108
        public String retornarLucroBrutoFormatado() {
109
                return StringUtil.formatarPercentual(calculoValorAposCustos());
110
        }
111
 
112
        @Transient
113
        public String retornarMargemBrutaFormatada() {
114
                try {
115
                        return StringUtil.formatarValorComDigitos(calculoMargemAposCustos().toString(), 2);
116
                } catch (Exception e) {
117
                        e.printStackTrace();
118
                }
119
                return "";
120
        }
121
 
122
        @Transient
123
        public String retornarCorMargem() {
124
                Double margemBruta = calculoMargemAposCustos();
125
                if (margemBruta > 0.50) return "green";
126
                if (margemBruta > 0.34) return "orange";
127
                if (margemBruta < 0.35) return "red";
128
                return "black";
129
        }
130
 
131
        @Transient
132
        public String retornarCorMargemLucro() {
133
                Double margemBruta = calculoMargemAposCustos();
134
                if (margemBruta > 29.99) return "green";
135
                if (margemBruta > 14.99) return "orange";
136
                if (margemBruta < 15.0) return "red";
137
                return "black";
138
        }
139
 
140
        @Transient
141
        public Double calculoPrecoMinimo() {
142
                Double valorVarejoSimulacao = getValorSimulacao();
143
                setValorSimulacao(getValorCompra());
144
                Double valorMinimo = this.calculoOperacao();
145
                Double margem = 0.0;
146
                valorMinimo = valorMinimo + (valorMinimo / 100);
147
                if (valorMinimo > 0.0) {
148
                        while (margem < getAliquotaMargemMinima()) {
149
                                valorMinimo = valorMinimo + (valorMinimo / 100);
150
                                setValorSimulacao(valorMinimo);
151
                                margem = calculoMargemAposCustos();
152
                        }
153
                }
154
                setValorSimulacao(valorVarejoSimulacao);
155
                return valorMinimo;
156
        }
157
 
158
        @Transient
159
        public Double descontoPermitido() {
160
                Double valorComDesconto = new Double(0.0);
161
                Double descontoPermitido = 0.0;
162
                if (VerificadorUtil.naoEstaNulo(getValorVarejo())) {
163
                        if (getValorVarejo() < 50.0) {
164
                                descontoPermitido = 5.0;
165
                        } else {
166
                                descontoPermitido = (getValorVarejo()*10/100);
167
                        }
168
                }
169
                valorComDesconto = getValorVarejo() - descontoPermitido;
170
                Double precoMinimo = calculoPrecoMinimo();
171
                if (valorComDesconto < precoMinimo) {
172
                        valorComDesconto = precoMinimo;
173
                }
174
                if (getValorVarejo() < valorComDesconto) {
175
                        return getValorVarejo();
176
                }
177
                return valorComDesconto;
178
        }
179
 
180
}