Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
import java.util.Date;
5
 
6
import javax.persistence.Column;
7
import javax.persistence.Entity;
8
import javax.persistence.GeneratedValue;
9
import javax.persistence.GenerationType;
10
import javax.persistence.Id;
11
import javax.persistence.JoinColumn;
12
import javax.persistence.ManyToOne;
13
import javax.persistence.SequenceGenerator;
14
import javax.persistence.Table;
15
import javax.persistence.Transient;
16
import javax.validation.constraints.Size;
17
 
18
import org.hibernate.annotations.ForeignKey;
19
 
195 espaco 20
import br.com.ec.core.util.VerificadorUtil;
21
import br.com.ec.web.util.DataUtil;
106 espaco 22
 
23
@Entity
24
@Table(name="sec_compra_produto", schema="sc_sec")
25
public class CompraProduto implements Serializable {
26
 
27
        private static final long serialVersionUID = 1L;
28
 
29
        private Long sequencial;
30
        private Compra compra;
31
        private Produto produto;
32
        private Double valorCompra;
33
        private Integer quantidade;
34
        private String unidadeComercial;
35
        private Integer quantidadeUnidadeComercial;
36
        private Double valorUnidadeComercial;
37
        private String unidadeTributaria;
38
        private Integer quantidadeUnidadeTributaria;
39
        private Double valorUnidadeTributaria;
40
        private Double valorDesconto;
41
        private Boolean indicadorValorTotalNota;
42
        private String informacoesAdicionais;
43
 
44
        private String codigoProdutoNotaFiscal;
45
        private String descricaoProdutoNotaFiscal;
470 blopes 46
 
106 espaco 47
        private String codigoNCM;
48
        private Boolean indicadorSolicitarContagem = false;
49
        private Integer estoqueAtualProduto;
50
 
51
        // MEDICAMENTO
52
        private String lote;
53
        private Integer quantidadeLote;
54
        private Date dataFabricacao;
55
        private Date dataValidade;
56
        private Double valorPrecoMaximo;
57
 
58
        public CompraProduto() {
59
                setUnidadeComercial("UN");
60
                setUnidadeTributaria("UN");
61
        }
62
 
63
        @Id
64
        @SequenceGenerator(name = "sq_compraproduto")
65
        @GeneratedValue(strategy = GenerationType.IDENTITY)
66
        @Column(name="seq_compraproduto", nullable=false)
67
        public Long getSequencial() {
68
                return sequencial;
69
        }
70
        public void setSequencial(Long sequencial) {
71
                this.sequencial = sequencial;
72
        }
73
 
74
        @ManyToOne
75
        @ForeignKey(name = "fk_compra_compraproduto")
76
        @JoinColumn(name="seq_compra", referencedColumnName="seq_compra", insertable=true, updatable=false)
77
        public Compra getCompra() {
78
                return compra;
79
        }
80
        public void setCompra(Compra compra) {
81
                this.compra = compra;
82
        }
83
 
84
        @ManyToOne
85
        @ForeignKey(name = "fk_prooduto_compraproduto")
86
        @JoinColumn(name="seq_produto", referencedColumnName="seq_produto", insertable=true, updatable=false)
87
        public Produto getProduto() {
88
                return produto;
89
        }
90
        public void setProduto(Produto produto) {
91
                this.produto = produto;
92
        }
93
 
94
        @Column(name="val_compra")
95
        public Double getValorCompra() {
96
                return valorCompra;
97
        }
98
        public void setValorCompra(Double valorCompra) {
99
                this.valorCompra = valorCompra;
100
        }
101
 
102
        @Column(name="qtd_compra", nullable=false)
103
        public Integer getQuantidade() {
104
                return quantidade;
105
        }
106
        public void setQuantidade(Integer quantidade) {
107
                this.quantidade = quantidade;
108
        }
109
 
110
        @Column(name="dsc_unidade_comercial")
111
        public String getUnidadeComercial() {
112
                return unidadeComercial;
113
        }
114
        public void setUnidadeComercial(String unidadeComercial) {
115
                this.unidadeComercial = unidadeComercial;
116
        }
117
 
118
        @Column(name="qtd_unidade_comercial")
119
        public Integer getQuantidadeUnidadeComercial() {
120
                return quantidadeUnidadeComercial;
121
        }
122
        public void setQuantidadeUnidadeComercial(Integer quantidadeUnidadeComercial) {
123
                this.quantidadeUnidadeComercial = quantidadeUnidadeComercial;
124
        }
125
 
126
        @Column(name="val_unidade_comercial")
127
        public Double getValorUnidadeComercial() {
128
                return valorUnidadeComercial;
129
        }
130
        public void setValorUnidadeComercial(Double valorUnidadeComercial) {
131
                this.valorUnidadeComercial = valorUnidadeComercial;
132
        }
133
 
134
        @Column(name="dsc_unidade_tributaria")
135
        public String getUnidadeTributaria() {
136
                return unidadeTributaria;
137
        }
138
        public void setUnidadeTributaria(String unidadeTributaria) {
139
                this.unidadeTributaria = unidadeTributaria;
140
        }
141
 
142
        @Column(name="qtd_unidade_tributaria")
143
        public Integer getQuantidadeUnidadeTributaria() {
144
                return quantidadeUnidadeTributaria;
145
        }
146
        public void setQuantidadeUnidadeTributaria(Integer quantidadeUnidadeTributaria) {
147
                this.quantidadeUnidadeTributaria = quantidadeUnidadeTributaria;
148
        }
149
 
150
        @Column(name="val_unidade_tributaria")
151
        public Double getValorUnidadeTributaria() {
152
                return valorUnidadeTributaria;
153
        }
154
        public void setValorUnidadeTributaria(Double valorUnidadeTributaria) {
155
                this.valorUnidadeTributaria = valorUnidadeTributaria;
156
        }
157
 
158
        @Column(name="val_desconto")
159
        public Double getValorDesconto() {
160
                return valorDesconto;
161
        }
162
        public void setValorDesconto(Double valorDesconto) {
163
                this.valorDesconto = valorDesconto;
164
        }
165
 
166
        @Column(name="ind_valor_total_nota")
167
        public Boolean getIndicadorValorTotalNota() {
168
                return indicadorValorTotalNota;
169
        }
170
        public void setIndicadorValorTotalNota(Boolean indicadorValorTotalNota) {
171
                this.indicadorValorTotalNota = indicadorValorTotalNota;
172
        }
173
 
174
        @Column(name="dsc_informacoes_adicionais")
175
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Informações Adicionais")
176
        public String getInformacoesAdicionais() {
177
                return informacoesAdicionais;
178
        }
179
        public void setInformacoesAdicionais(String informacoesAdicionais) {
180
                this.informacoesAdicionais = informacoesAdicionais;
181
        }
182
 
183
        @Column(name="dsc_lote")
184
        @Size(max = 20, message = "Limite de caracteres ultrapassado: Lote")
185
        public String getLote() {
186
                return lote;
187
        }
188
        public void setLote(String lote) {
189
                this.lote = lote;
190
        }
191
 
192
        @Column(name="qtd_lote")
193
        public Integer getQuantidadeLote() {
194
                return quantidadeLote;
195
        }
196
        public void setQuantidadeLote(Integer quantidadeLote) {
197
                this.quantidadeLote = quantidadeLote;
198
        }
199
 
200
        @Column(name="dat_fabricacao")
201
        public Date getDataFabricacao() {
202
                return dataFabricacao;
203
        }
204
        public void setDataFabricacao(Date dataFabricacao) {
205
                this.dataFabricacao = dataFabricacao;
206
        }
207
 
208
        @Column(name="dat_validade")
209
        public Date getDataValidade() {
210
                return dataValidade;
211
        }
212
        public void setDataValidade(Date dataValidade) {
213
                this.dataValidade = dataValidade;
214
        }
215
 
216
        @Column(name="val_preco_maximo")
217
        public Double getValorPrecoMaximo() {
218
                return valorPrecoMaximo;
219
        }
220
        public void setValorPrecoMaximo(Double valorPrecoMaximo) {
221
                this.valorPrecoMaximo = valorPrecoMaximo;
222
        }
223
 
470 blopes 224
        @Column(name="dsc_codigoproduto_notafiscal")
225
        @Size(max = 100, message = "Limite de caracteres ultrapassado: Código do Fornecedor")
106 espaco 226
        public String getCodigoProdutoNotaFiscal() {
227
                return codigoProdutoNotaFiscal;
228
        }
229
        public void setCodigoProdutoNotaFiscal(String codigoProdutoNotaFiscal) {
230
                this.codigoProdutoNotaFiscal = codigoProdutoNotaFiscal;
231
        }
232
 
470 blopes 233
        @Column(name="dsc_produto_notafiscal")
234
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Descrição do Fornecedor")
106 espaco 235
        public String getDescricaoProdutoNotaFiscal() {
236
                return descricaoProdutoNotaFiscal;
237
        }
238
        public void setDescricaoProdutoNotaFiscal(String descricaoProdutoNotaFiscal) {
239
                this.descricaoProdutoNotaFiscal = descricaoProdutoNotaFiscal;
240
        }
241
 
470 blopes 242
 
243
        /*********************************************/
244
 
106 espaco 245
        @Transient
246
        public String getCodigoNCM() {
247
                return codigoNCM;
248
        }
249
        public void setCodigoNCM(String codigoNCM) {
250
                this.codigoNCM = codigoNCM;
251
        }
252
 
253
        @Transient
254
        public Boolean getIndicadorSolicitarContagem() {
255
                return indicadorSolicitarContagem;
256
        }
257
        public void setIndicadorSolicitarContagem(Boolean indicadorSolicitarContagem) {
258
                this.indicadorSolicitarContagem = indicadorSolicitarContagem;
259
        }
260
 
261
        @Transient
262
        public Integer getEstoqueAtualProduto() {
263
                return estoqueAtualProduto;
264
        }
265
        public void setEstoqueAtualProduto(Integer estoqueAtualProduto) {
266
                this.estoqueAtualProduto = estoqueAtualProduto;
267
        }
268
 
269
        @Transient
270
        public Loja getLojaDaCompra() {
271
                return VerificadorUtil.naoEstaNulo(getCompra())? getCompra().getLoja() : null;
272
        }
273
 
274
        @Override
275
        public int hashCode() {
276
                final int prime = 31;
277
                int result = 1;
278
                result = prime * result
279
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
280
                return result;
281
        }
282
 
283
        @Override
284
        public boolean equals(Object obj) {
285
                if (this == obj)
286
                        return true;
287
                if (obj == null)
288
                        return false;
289
                if (getClass() != obj.getClass())
290
                        return false;
291
                CompraProduto other = (CompraProduto) obj;
292
                if (sequencial == null) {
293
                        if (other.sequencial != null) {
294
                                return false;
295
                        } else {return false;}
296
                } else if (!sequencial.equals(other.sequencial))
297
                        return false;
298
                return true;
299
        }
300
 
301
        @Transient
302
        public Tributacao getTributacaoDoProduto() {
303
                return VerificadorUtil.naoEstaNulo(getProduto())? getProduto().getTributacao() : null;
304
        }
305
 
145 espaco 306
        @Transient
106 espaco 307
        public Double retornarPercentualLucroBrutoUnidadeComercial() {
145 espaco 308
                try {
309
                        Produto produtoClone = produto.clone();
310
                        if (VerificadorUtil.naoEstaNulo(getValorUnidadeComercial()) && VerificadorUtil.naoEstaNulo(getProduto().getValorVarejo())) {
311
                                getProduto().setValorCompra(getValorUnidadeComercial());
312
                                produtoClone.setValorCompra(getValorUnidadeComercial());
313
                                produtoClone.setValorVarejoSimulacao(produtoClone.getValorVarejo());
314
                        }
315
                        return produtoClone.calculoMargemAposCustos();
316
                } catch (CloneNotSupportedException e) {
317
                        e.printStackTrace();
106 espaco 318
                }
319
                return 0.0;
320
        }
145 espaco 321
 
106 espaco 322
        @Transient
145 espaco 323
        public String retornarCorPercentualLucroBrutoUnidadeComercial() {
324
                try {
325
                        Produto produtoClone = produto.clone();
326
                        if (VerificadorUtil.naoEstaNulo(getValorUnidadeComercial()) && VerificadorUtil.naoEstaNulo(getProduto().getValorVarejo())) {
327
                                getProduto().setValorCompra(getValorUnidadeComercial());
328
                                produtoClone.setValorCompra(getValorUnidadeComercial());
329
                                produtoClone.setValorVarejoSimulacao(produtoClone.getValorVarejo());
330
                        }
331
                        return produtoClone.retornarCorMargemLucro();
332
                } catch (CloneNotSupportedException e) {
333
                        e.printStackTrace();
334
                }
335
                return "black";
336
        }
337
 
338
        @Transient
106 espaco 339
        public void atualizarDadosNfe(nfce.java.TNFe.InfNFe.Det produtoNota) {
340
                this.setUnidadeComercial(produtoNota.getProd().getUCom());
341
                if (VerificadorUtil.naoEstaNulo(produtoNota.getProd().getQCom())) {
342
                        this.setQuantidade(new Double(produtoNota.getProd().getQCom()).intValue());
343
                }
344
                this.setUnidadeTributaria(produtoNota.getProd().getUTrib());
345
                if (VerificadorUtil.naoEstaNulo(produtoNota.getProd().getQTrib())) {
346
                        this.setQuantidadeUnidadeTributaria(new Double(produtoNota.getProd().getQTrib()).intValue());
347
                }
348
                if (VerificadorUtil.naoEstaNulo(produtoNota.getProd().getVUnTrib())) {
349
                        this.setValorUnidadeTributaria(new Double(produtoNota.getProd().getVUnTrib()));
350
                }
351
                if (VerificadorUtil.naoEstaNulo(produtoNota.getProd().getVDesc())) {
352
                        this.setValorDesconto(new Double(produtoNota.getProd().getVDesc()));
353
                }
354
                this.setIndicadorValorTotalNota(produtoNota.getProd().getIndTot().equals("1"));
355
                this.setInformacoesAdicionais(produtoNota.getInfAdProd());
356
                this.setCodigoProdutoNotaFiscal(produtoNota.getProd().getCProd());
357
                this.setDescricaoProdutoNotaFiscal(produtoNota.getProd().getXProd());
358
 
359
                this.setCodigoNCM(produtoNota.getProd().getNCM());
360
 
280 espaco 361
                /*
106 espaco 362
                if (VerificadorUtil.naoEstaNuloOuVazio(produtoNota.getProd().getMed())) {
363
                        for (nfce.java.TNFe.InfNFe.Det.Prod.Med medicamento : produtoNota.getProd().getMed()) {
364
                                if (VerificadorUtil.naoEstaNuloOuVazio(medicamento.getNLote())) {
365
                                        this.setLote(medicamento.getNLote());
366
                                }
367
                                if (VerificadorUtil.naoEstaNuloOuVazio(medicamento.getQLote())) {
368
                                        this.setQuantidadeLote(new Double(medicamento.getQLote()).intValue());
369
                                }
370
                                if (VerificadorUtil.naoEstaNuloOuVazio(medicamento.getDFab())) {
371
                                        this.setDataFabricacao(DataUtil.retornarDataApartirString("yyyy-MM-dd", medicamento.getDFab()));
372
                                }
373
                                if (VerificadorUtil.naoEstaNuloOuVazio(medicamento.getDVal())) {
374
                                        this.setDataValidade(DataUtil.retornarDataApartirString("yyyy-MM-dd", medicamento.getDVal()));
375
                                }
376
                                if (VerificadorUtil.naoEstaNuloOuVazio(medicamento.getVPMC())) {
377
                                        this.setValorPrecoMaximo(new Double(medicamento.getVPMC()));
378
                                }
379
                        }
380
                }
280 espaco 381
                */
106 espaco 382
        }
144 espaco 383
 
384
        @Transient
385
        public void atualizarAliquotas(Fornecedor fornecedor) {
386
                if (VerificadorUtil.naoEstaNulo(getProduto())) {
387
                        getProduto().atualizarAliquotas(fornecedor);
388
                }
389
        }
106 espaco 390
 
391
}