Esempio n. 1
0
        public void CalculoCst90ICMSST()
        {
            var produto = new Produto
            {
                PercentualIcms      = 18.00m,
                PercentualIcmsSt    = 18.00m,
                PercentualReducao   = 10.00m,
                ValorProduto        = 100.00m,
                QuantidadeProduto   = 1.000m,
                PercentualMva       = 100.00m,
                PercentualReducaoSt = 10m
            };


            var cst = new Cst90();

            cst.Calcula(produto);

            Assert.Equal(ModalidadeDeterminacaoBcIcmsSt.MargemValorAgregado, cst.ModalidadeDeterminacaoBcIcmsSt);
            Assert.Equal(100.00m, cst.PercentualMva);
            Assert.Equal(162.00m, cst.ValorBcIcmsSt);
            Assert.Equal(10.00m, cst.PercentualReducaoSt);
            Assert.Equal(162.00m, cst.ValorBcIcmsSt);
            Assert.Equal(18.00m, cst.PercentualIcmsSt);
            Assert.Equal(12.96m, cst.ValorIcmsSt);
        }
Esempio n. 2
0
        public void CalculaCST90_CTe()
        {
            var produtoFrete = new Produto
            {
                Documento         = Documento.CTe,
                QuantidadeProduto = 1.000m,
                ValorProduto      = 1000.00m,
                PercentualIcms    = 18.00m,
                PercentualCredito = 20.00m
            };

            var cst = new Cst90();

            cst.Calcula(produtoFrete);

            Assert.Equal(18.00m, cst.PercentualIcms);
            Assert.Equal(1000.00m, cst.ValorBcIcms);
            Assert.Equal(36.00m, cst.ValorCredito);
        }
Esempio n. 3
0
        public void CalculoCst90ICMSProprio()
        {
            var produto = new Produto
            {
                QuantidadeProduto = 1.000m,
                ValorProduto      = 100.00m,
                PercentualIcms    = 18.00m,
                PercentualReducao = 10.00m
            };


            var cst = new Cst90();

            cst.Calcula(produto);

            Assert.Equal(ModalidadeDeterminacaoBcIcms.ValorOperacao, cst.ModalidadeDeterminacaoBcIcms);
            Assert.Equal(90.00m, cst.ValorBcIcms);
            Assert.Equal(18.00m, cst.PercentualIcms);
            Assert.Equal(16.20m, cst.ValorIcms);
        }
Esempio n. 4
0
        public ResultadoTributacao Calcular()
        {
            #region Calcular ICMS

            switch (_produtoTributavel.Cst)
            {
            case Cst.Cst00:
                Icms = new Cst00();
                Icms.Calcula(_produtoTributavel);
                ValorBcIcms    = ((Cst00)Icms).ValorBcIcms;
                PercentualIcms = ((Cst00)Icms).PercentualIcms;
                ValorIcms      = ((Cst00)Icms).ValorIcms;
                break;

            case Cst.Cst10:
                Icms = new Cst10();
                Icms.Calcula(_produtoTributavel);
                ValorBcIcms         = ((Cst10)Icms).ValorBcIcms;
                PercentualIcms      = ((Cst10)Icms).PercentualIcms;
                ValorIcms           = ((Cst10)Icms).ValorIcms;
                PercentualMva       = ((Cst10)Icms).PercentualMva;
                PercentualReducaoSt = ((Cst10)Icms).PercentualReducaoSt;
                ValorBcIcmsSt       = ((Cst10)Icms).ValorBcIcmsSt;
                PercentualIcmsSt    = ((Cst10)Icms).PercentualIcmsSt;
                ValorIcmsSt         = ((Cst10)Icms).ValorIcmsSt;
                break;

            case Cst.Cst20:
                Icms = new Cst20();
                Icms.Calcula(_produtoTributavel);
                ValorBcIcms       = ((Cst20)Icms).ValorBcIcms;
                PercentualIcms    = ((Cst20)Icms).PercentualIcms;
                ValorIcms         = ((Cst20)Icms).ValorIcms;
                PercentualReducao = ((Cst20)Icms).PercentualReducao;
                break;

            case Cst.Cst30:
                Icms = new Cst30();
                Icms.Calcula(_produtoTributavel);
                PercentualMva       = ((Cst30)Icms).PercentualMva;
                PercentualReducaoSt = ((Cst30)Icms).PercentualReducaoSt;
                ValorBcIcmsSt       = ((Cst30)Icms).ValorBcIcmsSt;
                PercentualIcmsSt    = ((Cst30)Icms).PercentualIcmsSt;
                ValorIcmsSt         = ((Cst30)Icms).ValorIcmsSt;
                break;

            case Cst.Cst40:
                Icms = new Cst40();
                Icms.Calcula(_produtoTributavel);
                ValorIcmsDesonerado = ((Cst40)Icms).ValorIcmsDesonerado;
                break;

            case Cst.Cst41:
                Icms = new Cst41();
                Icms.Calcula(_produtoTributavel);
                break;

            case Cst.Cst50:
                Icms = new Cst50();
                Icms.Calcula(_produtoTributavel);
                break;

            case Cst.Cst51:
                Icms = new Cst51();
                Icms.Calcula(_produtoTributavel);
                ValorBcIcms           = ((Cst51)Icms).ValorBcIcms;
                PercentualIcms        = ((Cst51)Icms).PercentualIcms;
                ValorIcms             = ((Cst51)Icms).ValorIcms;
                PercentualReducao     = ((Cst51)Icms).PercentualReducao;
                PercentualDiferimento = ((Cst51)Icms).PercentualDiferimento;
                ValorIcmsDiferido     = ((Cst51)Icms).ValorIcmsDiferido;
                ValorIcmsOperacao     = ((Cst51)Icms).ValorIcmsOperacao;
                PercentualReducao     = ((Cst51)Icms).PercentualReducao;
                break;

            case Cst.Cst60:
                Icms = new Cst60();
                Icms.Calcula(_produtoTributavel);
                PercentualBcStRetido = ((Cst60)Icms).PercentualBcStRetido;
                ValorBcStRetido      = ((Cst60)Icms).ValorBcStRetido;
                break;

            case Cst.Cst70:
                Icms = new Cst70();
                Icms.Calcula(_produtoTributavel);
                PercentualReducao = ((Cst70)Icms).PercentualReducao;
                break;

            case Cst.Cst90:
                Icms = new Cst90();
                Icms.Calcula(_produtoTributavel);
                ValorBcIcms             = ((Cst90)Icms).ValorBcIcms;
                PercentualIcms          = ((Cst90)Icms).PercentualIcms;
                ValorIcms               = ((Cst90)Icms).ValorIcms;
                PercentualMva           = ((Cst90)Icms).PercentualMva;
                PercentualReducaoSt     = ((Cst90)Icms).PercentualReducaoSt;
                ValorBcIcmsSt           = ((Cst90)Icms).ValorBcIcmsSt;
                PercentualIcmsSt        = ((Cst90)Icms).PercentualIcmsSt;
                ValorIcmsSt             = ((Cst90)Icms).ValorIcmsSt;
                PercentualReducaoIcmsBc = ((Cst90)Icms).PercentualReducaoIcmsBc;
                PercentualCredito       = ((Cst90)Icms).PercentualCredito;
                ValorCredito            = ((Cst90)Icms).ValorCredito;
                break;

            default:
                break;
            }

            #endregion

            #region Calcular Pis/Cofins

            Pis         = new TributacaoPis(_produtoTributavel, TipoDesconto.Condincional);
            ValorPis    = Pis.Calcula().Valor;
            Cofins      = new TributacaoCofins(_produtoTributavel, TipoDesconto.Condincional);
            ValorCofins = Cofins.Calcula().Valor;

            #endregion

            #region Calcular Ipi

            Ipi      = new TributacaoIpi(_produtoTributavel, TipoDesconto.Condincional);
            ValorIpi = Ipi.Calcula().Valor;

            #endregion

            return(this);
        }
Esempio n. 5
0
        private void CalcularIcms()
        {
            if (CrtEmpresa == Crt.SimplesNacionalExecesso || CrtEmpresa == Crt.RegimeNormal)
            {
                switch (_produto.Cst)
                {
                case Cst.Cst00:
                    Icms = new Cst00();
                    Icms.Calcula(_produto);
                    ValorBcIcms    = ((Cst00)Icms).ValorBcIcms;
                    PercentualIcms = ((Cst00)Icms).PercentualIcms;
                    ValorIcms      = ((Cst00)Icms).ValorIcms;
                    break;

                case Cst.Cst10:
                    Icms = new Cst10();
                    Icms.Calcula(_produto);
                    ValorBcIcms         = ((Cst10)Icms).ValorBcIcms;
                    PercentualIcms      = ((Cst10)Icms).PercentualIcms;
                    ValorIcms           = ((Cst10)Icms).ValorIcms;
                    PercentualMva       = ((Cst10)Icms).PercentualMva;
                    PercentualReducaoSt = ((Cst10)Icms).PercentualReducaoSt;
                    ValorBcIcmsSt       = ((Cst10)Icms).ValorBcIcmsSt;
                    PercentualIcmsSt    = ((Cst10)Icms).PercentualIcmsSt;
                    ValorIcmsSt         = ((Cst10)Icms).ValorIcmsSt;
                    break;

                case Cst.Cst20:
                    Icms = new Cst20();
                    Icms.Calcula(_produto);
                    ValorBcIcms       = ((Cst20)Icms).ValorBcIcms;
                    PercentualIcms    = ((Cst20)Icms).PercentualIcms;
                    ValorIcms         = ((Cst20)Icms).ValorIcms;
                    PercentualReducao = ((Cst20)Icms).PercentualReducao;
                    break;

                case Cst.Cst30:
                    Icms = new Cst30();
                    Icms.Calcula(_produto);
                    PercentualMva       = ((Cst30)Icms).PercentualMva;
                    PercentualReducaoSt = ((Cst30)Icms).PercentualReducaoSt;
                    ValorBcIcmsSt       = ((Cst30)Icms).ValorBcIcmsSt;
                    PercentualIcmsSt    = ((Cst30)Icms).PercentualIcmsSt;
                    ValorIcmsSt         = ((Cst30)Icms).ValorIcmsSt;
                    break;

                case Cst.Cst40:
                    Icms = new Cst40();
                    Icms.Calcula(_produto);
                    ValorIcmsDesonerado = ((Cst40)Icms).ValorIcmsDesonerado;
                    break;

                case Cst.Cst41:
                    Icms = new Cst41();
                    Icms.Calcula(_produto);
                    break;

                case Cst.Cst50:
                    Icms = new Cst50();
                    Icms.Calcula(_produto);
                    break;

                case Cst.Cst51:
                    Icms = new Cst51();
                    Icms.Calcula(_produto);
                    ValorBcIcms           = ((Cst51)Icms).ValorBcIcms;
                    PercentualIcms        = ((Cst51)Icms).PercentualIcms;
                    ValorIcms             = ((Cst51)Icms).ValorIcms;
                    PercentualReducao     = ((Cst51)Icms).PercentualReducao;
                    PercentualDiferimento = ((Cst51)Icms).PercentualDiferimento;
                    ValorIcmsDiferido     = ((Cst51)Icms).ValorIcmsDiferido;
                    ValorIcmsOperacao     = ((Cst51)Icms).ValorIcmsOperacao;
                    PercentualReducao     = ((Cst51)Icms).PercentualReducao;
                    break;

                case Cst.Cst60:
                    Icms = new Cst60();
                    Icms.Calcula(_produto);
                    PercentualBcStRetido = ((Cst60)Icms).PercentualBcStRetido;
                    ValorBcStRetido      = ((Cst60)Icms).ValorBcStRetido;
                    break;

                case Cst.Cst70:
                    Icms = new Cst70();
                    Icms.Calcula(_produto);
                    PercentualReducao = ((Cst70)Icms).PercentualReducao;
                    break;

                case Cst.Cst90:
                    Icms = new Cst90();
                    Icms.Calcula(_produto);
                    ValorBcIcms             = ((Cst90)Icms).ValorBcIcms;
                    PercentualIcms          = ((Cst90)Icms).PercentualIcms;
                    ValorIcms               = ((Cst90)Icms).ValorIcms;
                    PercentualMva           = ((Cst90)Icms).PercentualMva;
                    PercentualReducaoSt     = ((Cst90)Icms).PercentualReducaoSt;
                    ValorBcIcmsSt           = ((Cst90)Icms).ValorBcIcmsSt;
                    PercentualIcmsSt        = ((Cst90)Icms).PercentualIcmsSt;
                    ValorIcmsSt             = ((Cst90)Icms).ValorIcmsSt;
                    PercentualReducaoIcmsBc = ((Cst90)Icms).PercentualReducaoIcmsBc;
                    PercentualCredito       = ((Cst90)Icms).PercentualCredito;
                    ValorCredito            = ((Cst90)Icms).ValorCredito;
                    break;

                default:
                    break;
                }
            }
            else
            {
                switch (_produto.Csosn)
                {
                //101 Tributada pelo Simples Nacional com permissão de crédito
                case Csosn.Csosn101:
                    CsosnBase = new Csosn101();
                    CsosnBase.Calcula(_produto);
                    ValorCredito      = ((Csosn101)CsosnBase).ValorCredito;
                    PercentualCredito = ((Csosn101)CsosnBase).PercentualCredito;
                    break;

                case Csosn.Csosn102:
                    //102 Tributada pelo Simples Nacional sem permissão de crédito
                    //nao tem calculo
                    break;

                case Csosn.Csosn103:
                    //103 Isenção do ICMS no Simples Nacional para faixa de receita bruta
                    //nao tem calculo
                    break;

                //201 Tributada pelo Simples Nacional com permissão de crédito e com cobrança do ICMS por substituição tributária
                case Csosn.Csosn201:
                    CsosnBase = new Csosn201();
                    CsosnBase.Calcula(_produto);
                    ValorCredito      = ((Csosn201)CsosnBase).ValorCredito;
                    PercentualCredito = ((Csosn201)CsosnBase).PercentualCredito;

                    switch (((Csosn201)CsosnBase).ModalidadeDeterminacaoBcIcmsSt)
                    {
                    case ModalidadeDeterminacaoBcIcmsSt.ListaNegativa:
                        //lista Negativa(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaPositiva:
                        //Lista Positiva(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaNeutra:
                        //Lista Neutra(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.MargemValorAgregado:
                        PercentualMva       = ((Csosn201)CsosnBase).PercentualMva;
                        PercentualIcmsSt    = ((Csosn201)CsosnBase).PercentualIcmsSt;
                        PercentualReducaoSt = ((Csosn201)CsosnBase).PercentualReducaoSt;
                        ValorIcmsSt         = ((Csosn201)CsosnBase).ValorIcmsSt;
                        ValorBcIcmsSt       = ((Csosn201)CsosnBase).ValorBcIcmsSt;

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.Pauta:

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.PrecoTabeladoOuMaximoSugerido:
                        //Preço Tabelado ou Máximo Sugerido
                        break;
                    }
                    break;
                //202 Tributada pelo Simples Nacional sem permissão de crédito e com cobrança do ICMS por substituição tributária

                case Csosn.Csosn202:
                    CsosnBase = new Csosn202();
                    CsosnBase.Calcula(_produto);

                    switch (((Csosn202)CsosnBase).ModalidadeDeterminacaoBcIcmsSt)
                    {
                    case ModalidadeDeterminacaoBcIcmsSt.ListaNegativa:
                        //lista Negativa(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaPositiva:
                        //Lista Positiva(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaNeutra:
                        //Lista Neutra(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.MargemValorAgregado:
                        //Margem valor Agregado(%)
                        PercentualMva       = ((Csosn202)CsosnBase).PercentualMvaSt;
                        PercentualIcmsSt    = ((Csosn202)CsosnBase).PercentualIcmsSt;
                        PercentualReducaoSt = ((Csosn202)CsosnBase).PercentualReducaoSt;
                        ValorIcmsSt         = ((Csosn202)CsosnBase).ValorIcmsSt;
                        ValorBcIcmsSt       = ((Csosn202)CsosnBase).ValorBcIcmsSt;

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.Pauta:

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.PrecoTabeladoOuMaximoSugerido:
                        //Preço Tabelado ou Máximo Sugerido
                        break;
                    }
                    break;

                case Csosn.Csosn203:
                    CsosnBase = new Csosn203();
                    CsosnBase.Calcula(_produto);

                    switch (((Csosn203)CsosnBase).ModalidadeDeterminacaoBcIcmsSt)
                    {
                    case ModalidadeDeterminacaoBcIcmsSt.ListaNegativa:
                        //lista Negativa(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaPositiva:
                        //Lista Positiva(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.ListaNeutra:
                        //Lista Neutra(valor)
                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.MargemValorAgregado:
                        //Margem valor Agregado(%)
                        PercentualMva       = ((Csosn203)CsosnBase).PercentualMvaSt;
                        PercentualIcmsSt    = ((Csosn203)CsosnBase).PercentualIcmsSt;
                        PercentualReducaoSt = ((Csosn203)CsosnBase).PercentualReducaoSt;
                        ValorIcmsSt         = ((Csosn203)CsosnBase).ValorIcmsSt;
                        ValorBcIcmsSt       = ((Csosn203)CsosnBase).ValorBcIcmsSt;

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.Pauta:

                        break;

                    case ModalidadeDeterminacaoBcIcmsSt.PrecoTabeladoOuMaximoSugerido:
                        //Preço Tabelado ou Máximo Sugerido
                        break;
                    }
                    break;

                case Csosn.Csosn300:
                    //300 Imune - Classificam-se neste código as operações praticadas por optantes pelo Simples Nacional contempladas com imunidade do ICMS
                    //nao tem calculo
                    break;

                case Csosn.Csosn400:
                    //400 Não tributada pelo Simples Nacional - Classificam-se neste código as operações praticadas por optantes pelo Simples Nacional não sujeitas à tributação pelo ICMS dentro do Simples Nacional
                    //nao tem calculo
                    break;

                case Csosn.Csosn500:
                    //500 ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação - Classificam-se neste código as operações sujeitas exclusivamente ao regime de substituição tributária na condição de substituído tributário ou no caso de antecipações
                    //nao tem calculo
                    break;

                case Csosn.Csosn900:
                    CsosnBase = new Csosn900();
                    CsosnBase.Calcula(_produto);
                    PercentualCredito   = ((Csosn900)CsosnBase).PercentualCredito;
                    ValorCredito        = ((Csosn900)CsosnBase).ValorCredito;
                    ValorIcms           = ((Csosn900)CsosnBase).ValorIcms;
                    ValorBcIcms         = ((Csosn900)CsosnBase).ValorBcIcms;
                    PercentualMva       = ((Csosn900)CsosnBase).PercentualMva;
                    PercentualIcmsSt    = ((Csosn900)CsosnBase).PercentualIcmsSt;
                    PercentualReducaoSt = ((Csosn900)CsosnBase).PercentualReducaoSt;
                    ValorIcmsSt         = ((Csosn900)CsosnBase).ValorIcmsSt;
                    ValorBcIcmsSt       = ((Csosn900)CsosnBase).ValorBcIcmsSt;
                    break;

                default:
                    break;
                }
            }
        }