public void TestaCsosn201() { var produto = new Produto { PercentualIcms = 18.00m, PercentualIcmsSt = 18.00m, PercentualIpi = 15.00m, ValorProduto = 2000.00m, QuantidadeProduto = 1.000m, PercentualMva = 40.00m, PercentualCredito = 5.00m }; var csosn201 = new Csosn201(); csosn201.Calcula(produto); Assert.AreEqual(18.00m, csosn201.PercentualIcmsSt); Assert.AreEqual(5.00m, csosn201.PercentualCredito); Assert.AreEqual(40.00m, csosn201.PercentualMva); Assert.AreEqual(0.00m, csosn201.PercentualReducaoSt); Assert.AreEqual(3220.00m, csosn201.ValorBcIcmsSt); Assert.AreEqual(219.60m, csosn201.ValorIcmsSt); Assert.AreEqual(100.00m, csosn201.ValorCredito); }
public void TestaCsosn201ComDescontoCondicional() { var produto = new Produto { PercentualIcms = 18.00m, PercentualIcmsSt = 18.00m, PercentualIpi = 15.00m, ValorProduto = 1900.00m, Desconto = 100m, QuantidadeProduto = 1.000m, PercentualMva = 40.00m, PercentualCredito = 5.00m }; var csosn201 = new Csosn201(tipoDesconto: TipoDesconto.Condincional); csosn201.Calcula(produto); Assert.Equal(18.00m, csosn201.PercentualIcmsSt); Assert.Equal(5.00m, csosn201.PercentualCredito); Assert.Equal(40.00m, csosn201.PercentualMva); Assert.Equal(0.00m, csosn201.PercentualReducaoSt); Assert.Equal(3220.00m, csosn201.ValorBcIcmsSt); Assert.Equal(219.60m, csosn201.ValorIcmsSt); Assert.Equal(100.00m, csosn201.ValorCredito); }
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; } } }