Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
495 blopes 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
 
5
import javax.persistence.Column;
6
import javax.persistence.EmbeddedId;
7
import javax.persistence.Entity;
8
import javax.persistence.JoinColumn;
9
import javax.persistence.ManyToOne;
10
import javax.persistence.MapsId;
11
import javax.persistence.Table;
12
import javax.persistence.Transient;
497 blopes 13
import javax.xml.bind.annotation.XmlElement;
495 blopes 14
 
15
import org.hibernate.annotations.ForeignKey;
16
 
497 blopes 17
import com.mchange.lang.DoubleUtils;
18
 
19
import br.com.ec.core.exception.NegocioException;
495 blopes 20
import br.com.ec.core.generic.identidade.Identidade;
499 blopes 21
import br.com.ec.core.util.StringUtil;
497 blopes 22
import br.com.ec.core.util.VerificadorUtil;
23
import br.com.ec.domain.model.nfe.TipoNotaFiscalImpostoIcms;
24
import br.com.swconsultoria.nfe.schema_4.enviNFe.TNFe;
25
import br.com.swconsultoria.nfe.schema_4.enviNFe.TNFe.InfNFe.Det.Imposto.ICMS;
495 blopes 26
 
27
@Entity
28
@Table(name="sec_imposto_icms", schema="sc_sec")
29
public class ImpostoIcms implements Serializable, Identidade {
30
 
31
        private static final long serialVersionUID = 1L;
32
 
33
        private ImpostoIcmsId impostoIcmsId;
34
        private CompraProduto compraProduto;
35
        private String tipoImposto;
36
 
497 blopes 37
        private String codigoOrigem; //orig
38
 
39
        private String codigoSituacaoTributaria; //CST
40
        private Double baseCalculo; //vBC
41
        private Double aliquotaFCP; //pFCP
42
        private Double valorFCP; //vfcp
43
        private Double aliquotaIcms; //picms
44
        private Double valorIcms; //icms
45
 
46
        private String codigoSituacaoOperacaoSimplesNacional; //CSOSN
47
        private String modalidadeDeterminacaoBC; //modBC
495 blopes 48
        private Double percentualReducaoBC; //predBC
497 blopes 49
        private String modalidadeDeterminacaoBCST; //modBCST
495 blopes 50
        private Double percentualMagemValorAdicionadoST; //pmvast
497 blopes 51
        private Double baseCalculoST; //vBCST
495 blopes 52
        private Double aliquotaIcmsST; //picmsst
53
        private Double valorIcmsST; //icmsst
497 blopes 54
 
499 blopes 55
        private Double baseCalculoFCPST; //vBCFCPST
497 blopes 56
        private Double aliquotaFCPST; //pFCPST
57
        private Double valorFCPST; //vFCPST
58
        private Double aliquotaCreditoSimplesNacional; //pCredSN
59
        private Double valorCreditoIcmsSimplesNacional; //vCredICMSSN
499 blopes 60
        private Double percentualReducaoBCST; //predBCST
497 blopes 61
 
62
        private String xmlImposto;
495 blopes 63
 
64
        public ImpostoIcms() {
65
                this.impostoIcmsId = new ImpostoIcmsId();
66
        }
67
 
68
        public ImpostoIcms(ImpostoIcmsId impostoIcmsId) {
69
                this.impostoIcmsId = impostoIcmsId;
70
        }
71
 
72
        public ImpostoIcms(CompraProduto compraProduto, String tipoImposto) {
73
                impostoIcmsId = new ImpostoIcmsId();
74
                setCompraProduto(compraProduto);
75
                setTipoImposto(tipoImposto);
76
        }
77
 
78
        @Override
79
        @Transient
80
        public Object getId() {
81
                return getImpostoIcmsId();
82
        }
83
        @Override
84
        public void setId(Object id) {
85
                this.impostoIcmsId = (ImpostoIcmsId) id;
86
        }
87
 
88
        @EmbeddedId
89
        public ImpostoIcmsId getImpostoIcmsId() {
90
                return impostoIcmsId;
91
        }
92
        public void setImpostoIcmsId(ImpostoIcmsId impostoIcmsId) {
93
                this.impostoIcmsId = impostoIcmsId;
94
        }
95
 
96
        @ManyToOne
97
        @ForeignKey(name="fk_impostoicms_compraprodutoimposto")
98
        @MapsId(value="sequencialCompraProduto")
99
        @JoinColumn(name = "seq_compraproduto", nullable = false)
100
        public CompraProduto getCompraProduto() {
101
                return compraProduto;
102
        }
103
        public void setCompraProduto(CompraProduto compraProduto) {
104
                this.compraProduto = compraProduto;
105
        }
106
 
107
        @Column(name="tip_imposto", nullable = false, insertable = false, updatable = false)
108
        public String getTipoImposto() {
109
                return tipoImposto;
110
        }
111
        public void setTipoImposto(String tipoImposto) {
112
                this.tipoImposto = tipoImposto;
113
        }
114
 
115
        @Column(name="cod_origem")
497 blopes 116
        public String getCodigoOrigem() {
495 blopes 117
                return codigoOrigem;
118
        }
497 blopes 119
        public void setCodigoOrigem(String codigoOrigem) {
495 blopes 120
                this.codigoOrigem = codigoOrigem;
121
        }
122
 
497 blopes 123
        @Column(name="cod_st")
124
        public String getCodigoSituacaoTributaria() {
125
                return codigoSituacaoTributaria;
126
        }
127
        public void setCodigoSituacaoTributaria(String codigoSituacaoTributaria) {
128
                this.codigoSituacaoTributaria = codigoSituacaoTributaria;
129
        }
130
 
131
        @Column(name="val_bc")
132
        public Double getBaseCalculo() {
133
                return baseCalculo;
134
        }
135
        public void setBaseCalculo(Double baseCalculo) {
136
                this.baseCalculo = baseCalculo;
137
        }
138
 
139
        @Column(name="val_pfcp")
140
        public Double getAliquotaFCP() {
141
                return aliquotaFCP;
142
        }
143
        public void setAliquotaFCP(Double aliquotaFCP) {
144
                this.aliquotaFCP = aliquotaFCP;
145
        }
146
 
147
        @Column(name="val_vfcp")
148
        public Double getValorFCP() {
149
                return valorFCP;
150
        }
151
        public void setValorFCP(Double valorFCP) {
152
                this.valorFCP = valorFCP;
153
        }
154
 
155
        @Column(name="val_picms")
156
        public Double getAliquotaIcms() {
157
                return aliquotaIcms;
158
        }
159
        public void setAliquotaIcms(Double aliquotaIcms) {
160
                this.aliquotaIcms = aliquotaIcms;
161
        }
162
 
163
        @Column(name="val_icms")
164
        public Double getValorIcms() {
165
                return valorIcms;
166
        }
167
        public void setValorIcms(Double valorIcms) {
168
                this.valorIcms = valorIcms;
169
        }
170
 
171
        @Column(name="cod_sosn")
172
        public String getCodigoSituacaoOperacaoSimplesNacional() {
173
                return codigoSituacaoOperacaoSimplesNacional;
174
        }
175
        public void setCodigoSituacaoOperacaoSimplesNacional(String codigoSituacaoOperacaoSimplesNacional) {
176
                this.codigoSituacaoOperacaoSimplesNacional = codigoSituacaoOperacaoSimplesNacional;
177
        }
178
 
495 blopes 179
        @Column(name="cod_modbc")
497 blopes 180
        public String getModalidadeDeterminacaoBC() {
495 blopes 181
                return modalidadeDeterminacaoBC;
182
        }
497 blopes 183
        public void setModalidadeDeterminacaoBC(String modalidadeDeterminacaoBC) {
495 blopes 184
                this.modalidadeDeterminacaoBC = modalidadeDeterminacaoBC;
185
        }
186
 
187
        @Column(name="val_predbc")
188
        public Double getPercentualReducaoBC() {
189
                return percentualReducaoBC;
190
        }
191
        public void setPercentualReducaoBC(Double percentualReducaoBC) {
192
                this.percentualReducaoBC = percentualReducaoBC;
193
        }
194
 
499 blopes 195
        @Column(name="val_predbcst")
196
        public Double getPercentualReducaoBCST() {
197
                return percentualReducaoBCST;
198
        }
199
        public void setPercentualReducaoBCST(Double percentualReducaoBCST) {
200
                this.percentualReducaoBCST = percentualReducaoBCST;
201
        }
202
 
495 blopes 203
        @Column(name="cod_modbcst")
497 blopes 204
        public String getModalidadeDeterminacaoBCST() {
495 blopes 205
                return modalidadeDeterminacaoBCST;
206
        }
497 blopes 207
        public void setModalidadeDeterminacaoBCST(String modalidadeDeterminacaoBCST) {
495 blopes 208
                this.modalidadeDeterminacaoBCST = modalidadeDeterminacaoBCST;
209
        }
210
 
211
        @Column(name="val_pmvast")
212
        public Double getPercentualMagemValorAdicionadoST() {
213
                return percentualMagemValorAdicionadoST;
214
        }
215
        public void setPercentualMagemValorAdicionadoST(Double percentualMagemValorAdicionadoST) {
216
                this.percentualMagemValorAdicionadoST = percentualMagemValorAdicionadoST;
217
        }
218
 
219
        @Column(name="val_bcst")
220
        public Double getBaseCalculoST() {
221
                return baseCalculoST;
222
        }
223
        public void setBaseCalculoST(Double baseCalculoST) {
224
                this.baseCalculoST = baseCalculoST;
225
        }
226
 
227
        @Column(name="val_picmsst")
228
        public Double getAliquotaIcmsST() {
229
                return aliquotaIcmsST;
230
        }
231
        public void setAliquotaIcmsST(Double aliquotaIcmsST) {
232
                this.aliquotaIcmsST = aliquotaIcmsST;
233
        }
234
 
235
        @Column(name="val_icmsst")
236
        public Double getValorIcmsST() {
237
                return valorIcmsST;
238
        }
239
        public void setValorIcmsST(Double valorIcmsST) {
240
                this.valorIcmsST = valorIcmsST;
241
        }
242
 
497 blopes 243
        @Column(name="val_bcfcpst")
499 blopes 244
        public Double getBaseCalculoFCPST() {
245
                return baseCalculoFCPST;
497 blopes 246
        }
499 blopes 247
        public void setBaseCalculoFCPST(Double baseCalculoFCPST) {
248
                this.baseCalculoFCPST = baseCalculoFCPST;
497 blopes 249
        }
250
 
251
        @Column(name="val_pfcpst")
252
        public Double getAliquotaFCPST() {
253
                return aliquotaFCPST;
254
        }
255
        public void setAliquotaFCPST(Double aliquotaFCPST) {
256
                this.aliquotaFCPST = aliquotaFCPST;
257
        }
258
 
259
        @Column(name="val_fcpst")
260
        public Double getValorFCPST() {
261
                return valorFCPST;
262
        }
263
        public void setValorFCPST(Double valorFCPST) {
264
                this.valorFCPST = valorFCPST;
265
        }
266
 
267
        @Column(name="val_pcredsn")
268
        public Double getAliquotaCreditoSimplesNacional() {
269
                return aliquotaCreditoSimplesNacional;
270
        }
271
        public void setAliquotaCreditoSimplesNacional(Double aliquotaCreditoSimplesNacional) {
272
                this.aliquotaCreditoSimplesNacional = aliquotaCreditoSimplesNacional;
273
        }
274
 
275
        @Column(name="val_credsn")
276
        public Double getValorCreditoIcmsSimplesNacional() {
277
                return valorCreditoIcmsSimplesNacional;
278
        }
279
        public void setValorCreditoIcmsSimplesNacional(Double valorCreditoIcmsSimplesNacional) {
280
                this.valorCreditoIcmsSimplesNacional = valorCreditoIcmsSimplesNacional;
281
        }
282
 
283
        @Column(name="xml_imposto")
284
        public String getXmlImposto() {
285
                return xmlImposto;
499 blopes 286
        }              
497 blopes 287
        public void setXmlImposto(String xmlImposto) {
288
                this.xmlImposto = xmlImposto;
289
        }
290
 
291
        // TODO: ALTERAR OS VALORES, BASEANDO-SE NA QUANTIDADE INFORMADA
499 blopes 292
        public void preencherDados(ICMS icms, Double diferencaQuantitativa) {
497 blopes 293
                if (VerificadorUtil.naoEstaNulo(icms.getICMS00())) {
294
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMS00_CST00.getValor());
295
                        this.setCodigoOrigem(icms.getICMS00().getOrig());
296
                        this.setModalidadeDeterminacaoBC(icms.getICMS00().getModBC());
297
                        this.setCodigoSituacaoTributaria(icms.getICMS00().getCST());
499 blopes 298
                        this.setAliquotaFCP(retornarValoresSeExistir(icms.getICMS00().getPFCP()));
299
 
300
                        icms.getICMS00().setVFCP(retornarValoresCorrigidosSeExistir(icms.getICMS00().getVFCP(), diferencaQuantitativa));
301
                        this.setValorFCP(retornarValoresSeExistir(icms.getICMS00().getVFCP()));
302
 
303
                        this.setAliquotaIcms(retornarValoresSeExistir(icms.getICMS00().getPICMS()));
304
 
305
                        icms.getICMS00().setVBC(retornarValoresCorrigidosSeExistir(icms.getICMS00().getVBC(), diferencaQuantitativa));
306
                        this.setBaseCalculo(retornarValoresSeExistir(icms.getICMS00().getVBC()));
307
 
308
                        icms.getICMS00().setVICMS(retornarValoresCorrigidosSeExistir(icms.getICMS00().getVICMS(), diferencaQuantitativa));
309
                        this.setValorIcms(retornarValoresSeExistir(icms.getICMS00().getVICMS()));
497 blopes 310
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN101())) {
311
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMSSN101_CSOSN101.getValor());
312
                        this.setCodigoSituacaoOperacaoSimplesNacional(icms.getICMSSN101().getCSOSN());
313
                        this.setCodigoOrigem(icms.getICMSSN101().getOrig());
499 blopes 314
                        this.setAliquotaCreditoSimplesNacional(retornarValoresSeExistir(icms.getICMSSN101().getPCredSN()));
315
 
316
                        icms.getICMSSN101().setVCredICMSSN(retornarValoresCorrigidosSeExistir(icms.getICMSSN101().getVCredICMSSN(), diferencaQuantitativa));
317
                        this.setValorCreditoIcmsSimplesNacional(retornarValoresSeExistir(icms.getICMSSN101().getVCredICMSSN()));
497 blopes 318
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN201())) {
319
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMSSN201_CSOSN201.getValor());
499 blopes 320
                        this.setCodigoSituacaoOperacaoSimplesNacional(icms.getICMSSN201().getCSOSN());
321
                        this.setCodigoOrigem(icms.getICMSSN201().getOrig());
322
                        this.setModalidadeDeterminacaoBCST(icms.getICMSSN201().getModBCST());
323
                        this.setPercentualMagemValorAdicionadoST(retornarValoresSeExistir(icms.getICMSSN201().getPMVAST()));
324
                        this.setAliquotaCreditoSimplesNacional(retornarValoresSeExistir(icms.getICMSSN201().getPCredSN()));
325
 
326
                        icms.getICMSSN201().setVCredICMSSN(retornarValoresCorrigidosSeExistir(icms.getICMSSN201().getVCredICMSSN(), diferencaQuantitativa));
327
                        this.setValorCreditoIcmsSimplesNacional(retornarValoresSeExistir(icms.getICMSSN201().getVCredICMSSN()));
328
 
329
                        this.setAliquotaFCPST(retornarValoresSeExistir(icms.getICMSSN201().getPFCPST()));
330
 
331
                        icms.getICMSSN201().setVBCFCPST(retornarValoresCorrigidosSeExistir(icms.getICMSSN201().getVBCFCPST(), diferencaQuantitativa));
332
                        this.setBaseCalculoFCPST(retornarValoresSeExistir(icms.getICMSSN201().getVBCFCPST()));
333
 
334
                        icms.getICMSSN201().setVFCPST(retornarValoresCorrigidosSeExistir(icms.getICMSSN201().getVFCPST(), diferencaQuantitativa));
335
                        this.setValorFCPST(retornarValoresSeExistir(icms.getICMSSN201().getVFCPST()));
336
 
337
                        this.setAliquotaIcmsST(retornarValoresSeExistir(icms.getICMSSN201().getPICMSST()));
338
 
339
                        icms.getICMSSN201().setVICMSST(retornarValoresCorrigidosSeExistir(icms.getICMSSN201().getVICMSST(), diferencaQuantitativa));
340
                        this.setValorIcmsST(retornarValoresSeExistir(icms.getICMSSN201().getVICMSST()));
341
 
342
                        this.setPercentualReducaoBCST(retornarValoresSeExistir(icms.getICMSSN201().getPRedBCST()));
343
 
344
                        icms.getICMSSN201().setVBCST(retornarValoresCorrigidosSeExistir(icms.getICMSSN201().getVBCST(), diferencaQuantitativa));
345
                        this.setBaseCalculoST(retornarValoresSeExistir(icms.getICMSSN201().getVBCST()));
497 blopes 346
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN500())) {
499 blopes 347
                        throw new NegocioException("TIPO 500 DE ICMS NÃO IMPLEMENTADO: " + icms.toString());
497 blopes 348
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN900())) {
499 blopes 349
                        throw new NegocioException("TIPO 900 DE ICMS NÃO IMPLEMENTADO: " + icms.toString());
497 blopes 350
                } else {
351
                        throw new NegocioException("TIPO DE ICMS NÃO IMPLEMENTADO: " + icms.toString());
352
                }
353
        }
354
 
499 blopes 355
        private String formatarValor(String valor) {
356
                try {
357
                        return StringUtil.formatarValor(new Double(valor));
358
                } catch (Exception e) {
359
                        return "";
360
                }
361
        }
362
 
363
        private Double retornarValoresSeExistir(String valor) {
364
                try {
365
                        return VerificadorUtil.naoEstaNuloOuVazio(valor)? new Double(StringUtil.formatarValorComDoisDigitos(valor)) : null;
366
                } catch (Exception e) {
367
                        e.printStackTrace();
368
                }
369
                return null;
370
        }
371
 
372
        private String retornarValoresCorrigidosSeExistir(String valor, Double diferencaQuantitativa) {
373
                if (VerificadorUtil.naoEstaNulo(valor)) {
374
                        Double valorCorrigido = new Double(valor);
375
                        valorCorrigido = valorCorrigido/diferencaQuantitativa;
376
                        try {
377
                                return StringUtil.formatarValorComDoisDigitos(valorCorrigido.toString());
378
                        } catch (Exception e) {
379
                                e.printStackTrace();
380
                        }
381
//                      return valorCorrigido.toString();
382
                }
383
                return null;
384
        }
385
 
386
        private Double retornarValoresDoubleCorrigidosSeExistir(String valor, Double diferencaQuantitativa) {
387
                if (VerificadorUtil.naoEstaNulo(valor)) {
388
                        Double valorCorrigido = new Double(valor);
389
                        valorCorrigido = valorCorrigido/diferencaQuantitativa;
390
                        return valorCorrigido;
391
                }
392
                return null;
393
        }
394
 
395
 
495 blopes 396
}