Subversion Repositories Integrator Subversion

Rev

Rev 495 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlElement;

import org.hibernate.annotations.ForeignKey;

import com.mchange.lang.DoubleUtils;

import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.identidade.Identidade;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.nfe.TipoNotaFiscalImpostoIcms;
import br.com.swconsultoria.nfe.schema_4.enviNFe.TNFe;
import br.com.swconsultoria.nfe.schema_4.enviNFe.TNFe.InfNFe.Det.Imposto.ICMS;

@Entity
@Table(name="sec_imposto_icms", schema="sc_sec")
public class ImpostoIcms implements Serializable, Identidade {
         
        private static final long serialVersionUID = 1L;

        private ImpostoIcmsId impostoIcmsId;
        private CompraProduto compraProduto;
        private String tipoImposto;
       
        private String codigoOrigem; //orig
       
        private String codigoSituacaoTributaria; //CST
        private Double baseCalculo; //vBC
        private Double aliquotaFCP; //pFCP
        private Double valorFCP; //vfcp
        private Double aliquotaIcms; //picms
        private Double valorIcms; //icms
       
        private String codigoSituacaoOperacaoSimplesNacional; //CSOSN
        private String modalidadeDeterminacaoBC; //modBC
        private Double percentualReducaoBC; //predBC
        private String modalidadeDeterminacaoBCST; //modBCST
        private Double percentualMagemValorAdicionadoST; //pmvast
        private Double baseCalculoST; //vBCST
        private Double aliquotaIcmsST; //picmsst
        private Double valorIcmsST; //icmsst
       
        private Double baseCalculoFCP; //vBCFCPST
        private Double aliquotaFCPST; //pFCPST
        private Double valorFCPST; //vFCPST
        private Double aliquotaCreditoSimplesNacional; //pCredSN
        private Double valorCreditoIcmsSimplesNacional; //vCredICMSSN
       
        private String xmlImposto;

        public ImpostoIcms() {
                this.impostoIcmsId = new ImpostoIcmsId();
        }
       
        public ImpostoIcms(ImpostoIcmsId impostoIcmsId) {
                this.impostoIcmsId = impostoIcmsId;
        }
       
        public ImpostoIcms(CompraProduto compraProduto, String tipoImposto) {
                impostoIcmsId = new ImpostoIcmsId();
                setCompraProduto(compraProduto);
                setTipoImposto(tipoImposto);
        }
       
        @Override
        @Transient
        public Object getId() {
                return getImpostoIcmsId();
        }
        @Override
        public void setId(Object id) {
                this.impostoIcmsId = (ImpostoIcmsId) id;
        }
       
        @EmbeddedId
        public ImpostoIcmsId getImpostoIcmsId() {
                return impostoIcmsId;
        }
        public void setImpostoIcmsId(ImpostoIcmsId impostoIcmsId) {
                this.impostoIcmsId = impostoIcmsId;
        }
       
        @ManyToOne
        @ForeignKey(name="fk_impostoicms_compraprodutoimposto")
        @MapsId(value="sequencialCompraProduto")
        @JoinColumn(name = "seq_compraproduto", nullable = false)
        public CompraProduto getCompraProduto() {
                return compraProduto;
        }
        public void setCompraProduto(CompraProduto compraProduto) {
                this.compraProduto = compraProduto;
        }
       
        @Column(name="tip_imposto", nullable = false, insertable = false, updatable = false)
        public String getTipoImposto() {
                return tipoImposto;
        }
        public void setTipoImposto(String tipoImposto) {
                this.tipoImposto = tipoImposto;
        }
       
        @Column(name="cod_origem")
        public String getCodigoOrigem() {
                return codigoOrigem;
        }
        public void setCodigoOrigem(String codigoOrigem) {
                this.codigoOrigem = codigoOrigem;
        }
       
        @Column(name="cod_st")
        public String getCodigoSituacaoTributaria() {
                return codigoSituacaoTributaria;
        }
        public void setCodigoSituacaoTributaria(String codigoSituacaoTributaria) {
                this.codigoSituacaoTributaria = codigoSituacaoTributaria;
        }
       
        @Column(name="val_bc")
        public Double getBaseCalculo() {
                return baseCalculo;
        }
        public void setBaseCalculo(Double baseCalculo) {
                this.baseCalculo = baseCalculo;
        }
       
        @Column(name="val_pfcp")
        public Double getAliquotaFCP() {
                return aliquotaFCP;
        }
        public void setAliquotaFCP(Double aliquotaFCP) {
                this.aliquotaFCP = aliquotaFCP;
        }
       
        @Column(name="val_vfcp")
        public Double getValorFCP() {
                return valorFCP;
        }
        public void setValorFCP(Double valorFCP) {
                this.valorFCP = valorFCP;
        }
       
        @Column(name="val_picms")
        public Double getAliquotaIcms() {
                return aliquotaIcms;
        }
        public void setAliquotaIcms(Double aliquotaIcms) {
                this.aliquotaIcms = aliquotaIcms;
        }
       
        @Column(name="val_icms")
        public Double getValorIcms() {
                return valorIcms;
        }
        public void setValorIcms(Double valorIcms) {
                this.valorIcms = valorIcms;
        }
       
        @Column(name="cod_sosn")
        public String getCodigoSituacaoOperacaoSimplesNacional() {
                return codigoSituacaoOperacaoSimplesNacional;
        }
        public void setCodigoSituacaoOperacaoSimplesNacional(String codigoSituacaoOperacaoSimplesNacional) {
                this.codigoSituacaoOperacaoSimplesNacional = codigoSituacaoOperacaoSimplesNacional;
        }
       
        @Column(name="cod_modbc")
        public String getModalidadeDeterminacaoBC() {
                return modalidadeDeterminacaoBC;
        }
        public void setModalidadeDeterminacaoBC(String modalidadeDeterminacaoBC) {
                this.modalidadeDeterminacaoBC = modalidadeDeterminacaoBC;
        }
       
        @Column(name="val_predbc")
        public Double getPercentualReducaoBC() {
                return percentualReducaoBC;
        }
        public void setPercentualReducaoBC(Double percentualReducaoBC) {
                this.percentualReducaoBC = percentualReducaoBC;
        }
       
        @Column(name="cod_modbcst")
        public String getModalidadeDeterminacaoBCST() {
                return modalidadeDeterminacaoBCST;
        }
        public void setModalidadeDeterminacaoBCST(String modalidadeDeterminacaoBCST) {
                this.modalidadeDeterminacaoBCST = modalidadeDeterminacaoBCST;
        }
       
        @Column(name="val_pmvast")
        public Double getPercentualMagemValorAdicionadoST() {
                return percentualMagemValorAdicionadoST;
        }
        public void setPercentualMagemValorAdicionadoST(Double percentualMagemValorAdicionadoST) {
                this.percentualMagemValorAdicionadoST = percentualMagemValorAdicionadoST;
        }
       
        @Column(name="val_bcst")
        public Double getBaseCalculoST() {
                return baseCalculoST;
        }
        public void setBaseCalculoST(Double baseCalculoST) {
                this.baseCalculoST = baseCalculoST;
        }
       
        @Column(name="val_picmsst")
        public Double getAliquotaIcmsST() {
                return aliquotaIcmsST;
        }
        public void setAliquotaIcmsST(Double aliquotaIcmsST) {
                this.aliquotaIcmsST = aliquotaIcmsST;
        }
       
        @Column(name="val_icmsst")
        public Double getValorIcmsST() {
                return valorIcmsST;
        }
        public void setValorIcmsST(Double valorIcmsST) {
                this.valorIcmsST = valorIcmsST;
        }
       
        @Column(name="val_bcfcpst")
        public Double getBaseCalculoFCP() {
                return baseCalculoFCP;
        }
        public void setBaseCalculoFCP(Double baseCalculoFCP) {
                this.baseCalculoFCP = baseCalculoFCP;
        }
       
        @Column(name="val_pfcpst")
        public Double getAliquotaFCPST() {
                return aliquotaFCPST;
        }
        public void setAliquotaFCPST(Double aliquotaFCPST) {
                this.aliquotaFCPST = aliquotaFCPST;
        }
       
        @Column(name="val_fcpst")
        public Double getValorFCPST() {
                return valorFCPST;
        }
        public void setValorFCPST(Double valorFCPST) {
                this.valorFCPST = valorFCPST;
        }
       
        @Column(name="val_pcredsn")
        public Double getAliquotaCreditoSimplesNacional() {
                return aliquotaCreditoSimplesNacional;
        }
        public void setAliquotaCreditoSimplesNacional(Double aliquotaCreditoSimplesNacional) {
                this.aliquotaCreditoSimplesNacional = aliquotaCreditoSimplesNacional;
        }
       
        @Column(name="val_credsn")
        public Double getValorCreditoIcmsSimplesNacional() {
                return valorCreditoIcmsSimplesNacional;
        }
        public void setValorCreditoIcmsSimplesNacional(Double valorCreditoIcmsSimplesNacional) {
                this.valorCreditoIcmsSimplesNacional = valorCreditoIcmsSimplesNacional;
        }
       
        @Column(name="xml_imposto")
        public String getXmlImposto() {
                return xmlImposto;
        }
        public void setXmlImposto(String xmlImposto) {
                this.xmlImposto = xmlImposto;
        }

        // TODO: ALTERAR OS VALORES, BASEANDO-SE NA QUANTIDADE INFORMADA
        public void preencherDados(ICMS icms, Integer quantidade) {
                if (VerificadorUtil.naoEstaNulo(icms.getICMS00())) {
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMS00_CST00.getValor());
                        this.setCodigoOrigem(icms.getICMS00().getOrig());
                        this.setModalidadeDeterminacaoBC(icms.getICMS00().getModBC());
                        this.setCodigoSituacaoTributaria(icms.getICMS00().getCST());
                        if (VerificadorUtil.naoEstaNulo(icms.getICMS00().getPFCP())) {
                                this.setAliquotaFCP(new Double(icms.getICMS00().getPFCP()));
                                this.setValorFCP(new Double(icms.getICMS00().getVFCP()));
                        }
                        this.setAliquotaIcms(new Double(icms.getICMS00().getPICMS()));
                        this.setBaseCalculo(new Double(icms.getICMS00().getVBC()));
                        this.setValorIcms(new Double(icms.getICMS00().getVICMS()));
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN101())) {
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMSSN101_CSOSN101.getValor());
                        this.setCodigoSituacaoOperacaoSimplesNacional(icms.getICMSSN101().getCSOSN());
                        this.setCodigoOrigem(icms.getICMSSN101().getOrig());
                        this.setAliquotaCreditoSimplesNacional(new Double(icms.getICMSSN101().getPCredSN()));
                        this.setValorCreditoIcmsSimplesNacional(new Double(icms.getICMSSN101().getVCredICMSSN()));
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN201())) {
                        this.setTipoImposto(TipoNotaFiscalImpostoIcms.ICMSSN201_CSOSN201.getValor());
                        icms.getICMSSN201().getCSOSN();
                        icms.getICMSSN201().getModBCST();
                        icms.getICMSSN201().getOrig();
                        icms.getICMSSN201().getPCredSN();
                        icms.getICMSSN201().getPFCPST();
                        icms.getICMSSN201().getPICMSST();
                        icms.getICMSSN201().getPMVAST();
                        icms.getICMSSN201().getPRedBCST();
                        icms.getICMSSN201().getVBCFCPST();
                        icms.getICMSSN201().getVBCST();
                        icms.getICMSSN201().getVCredICMSSN();
                        icms.getICMSSN201().getVFCPST();
                        icms.getICMSSN201().getVICMSST();
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN500())) {
                       
                } else if (VerificadorUtil.naoEstaNulo(icms.getICMSSN900())) {
                       
                } else {
                        throw new NegocioException("TIPO DE ICMS NÃO IMPLEMENTADO: " + icms.toString());
                }
        }
       
}