public void TestaCsosn203()
        {
            var produto = new Produto
            {
                PercentualIcms    = 18.00m,
                PercentualIcmsSt  = 18.00m,
                PercentualIpi     = 15.00m,
                ValorProduto      = 2000.00m,
                QuantidadeProduto = 1.000m,
                PercentualMva     = 40.00m,
            };

            var csosn203 = new Csosn203();

            csosn203.Calcula(produto);

            Assert.AreEqual(18.00m, csosn203.PercentualIcmsSt);
            Assert.AreEqual(40.00m, csosn203.PercentualMvaSt);
            Assert.AreEqual(0.00m, csosn203.PercentualReducaoSt);
            Assert.AreEqual(3220.00m, csosn203.ValorBcIcmsSt);
            Assert.AreEqual(219.60m, csosn203.ValorIcmsSt);
        }
        public void TestaCsosn203ComDescontoCondiconal()
        {
            var produto = new Produto
            {
                PercentualIcms    = 18.00m,
                PercentualIcmsSt  = 18.00m,
                PercentualIpi     = 15.00m,
                ValorProduto      = 1900.00m,
                Desconto          = 100m,
                QuantidadeProduto = 1.000m,
                PercentualMva     = 40.00m,
            };

            var csosn203 = new Csosn203(tipoDesconto: TipoDesconto.Condincional);

            csosn203.Calcula(produto);

            Assert.AreEqual(18.00m, csosn203.PercentualIcmsSt);
            Assert.AreEqual(40.00m, csosn203.PercentualMvaSt);
            Assert.AreEqual(0.00m, csosn203.PercentualReducaoSt);
            Assert.AreEqual(3220.00m, csosn203.ValorBcIcmsSt);
            Assert.AreEqual(219.60m, csosn203.ValorIcmsSt);
        }
Exemple #3
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;
                }
            }
        }