/// <summary> /// /// </summary> /// <param name="adecValorNF">Valor total da nota, ja somado o valor de mao de obra</param> /// <param name="adecBaseCalculoINSS"></param> /// <param name="aobjEmpresa"></param> /// <param name="aobjTomador"></param> /// <param name="ablnIncluirImpostoZerado"></param> /// <returns></returns> public static List <FaturamentoRetencoes> getRetencoes(decimal adecValorNF, decimal adecBaseCalculoINSS, Empresa aobjEmpresa, ref PessoaTomador aobjTomador, out string astrOutMotivos) { List <FaturamentoRetencoes> lobjRet = new List <FaturamentoRetencoes>(); if (String.IsNullOrEmpty(aobjEmpresa.CodigoServicoPMSP)) { throw new Exception("Não foi informado um código de serviço para esta empresa"); } List <TipoImposto> lobjTiposImpostos = TipoImposto.getTiposImpostos(3550308, aobjTomador.CodigoMunicipioIBGE, aobjEmpresa.CodigoServicoPMSP, aobjEmpresa.AliquotaIssForaMunicipio); //bool lblnAddPCC = false, lblnAddIR = false, lblnAddINSS = false, lblnAddISS = false; astrOutMotivos = string.Empty; if (aobjEmpresa.OptanteSimplesNacional != "N" && aobjEmpresa.OptanteSimplesNacional != "S") { throw new Exception("Para o cálculo da retenção, é necessário informar se o prestador é ou não optante do Simples Nacional"); } if (aobjTomador.TipoPessoa != "PJ" && aobjTomador.TipoPessoa != "PF") { throw new Exception("Para o cálculo da retenção, é necessário informar se o cliente é pessoa física ou jurídica"); } if (aobjEmpresa.OptanteSimplesNacional == "N" && aobjTomador.TomadorRetemImpostos()) { lobjRet.Add(new FaturamentoRetencoes(enmTipoImposto.ePisCofinsCSLL, adecValorNF, lobjTiposImpostos)); if (aobjTomador.RetemIR != "N") { lobjRet.Add(new FaturamentoRetencoes(enmTipoImposto.eImpostodeRenda, adecValorNF, lobjTiposImpostos)); } if (aobjTomador.TipoPessoa == "PJ" && adecBaseCalculoINSS > 0) { lobjRet.Add(new FaturamentoRetencoes(enmTipoImposto.eINSS, adecBaseCalculoINSS, lobjTiposImpostos)); } lobjRet.Add(new FaturamentoRetencoes(enmTipoImposto.eISS, adecValorNF, lobjTiposImpostos)); } if (aobjTomador.CodigoMunicipioIBGE != 3550308) { lobjRet.Add(new FaturamentoRetencoes(enmTipoImposto.eISSOutroMunicipio, adecValorNF, lobjTiposImpostos)); } if (lobjRet.Count == 0) { if (aobjEmpresa.OptanteSimplesNacional == "S") { astrOutMotivos = "Não foi calculada retenção porque empresas optantes do Simples não devem (confirmar com contabilidade)"; } else if (aobjTomador.TomadorRetemImpostos() == false) { astrOutMotivos = "Não foi calculada retenção porque o cliente não se enquadra nesta situação"; } } return(lobjRet); }
public FaturamentoRetencoes(enmTipoImposto aenmTipoImposto, decimal adecBaseCalculo, List <TipoImposto> aobjTiposImposto) { bool lblnRetemImposto = true; TipoImposto lobjTipoImposto = aobjTiposImposto.Find(delegate(TipoImposto t) { return(t.ID == Convert.ToInt32(aenmTipoImposto)); }); if (lobjTipoImposto == null) { throw new Exception("O sistema não está com o tipo de imposto " + aenmTipoImposto.ToString() + " devidamente parametrizado no sistema"); } this.TipoImpostoID = Convert.ToInt32(aenmTipoImposto); this.TipoImposto = lobjTipoImposto; mdecBaseCalculo = adecBaseCalculo; mdecPercentUsado = lobjTipoImposto.AliquotaRetencao; mdecValorRetencao = Math.Round((adecBaseCalculo * mdecPercentUsado) / 100, 2); if (aenmTipoImposto == enmTipoImposto.eINSS && mdecValorRetencao > lobjTipoImposto.TetoINSS) { mdecValorRetencao = lobjTipoImposto.TetoINSS; } if (mdecValorRetencao < lobjTipoImposto.ValorMinimo || mdecValorRetencao == 0) { lblnRetemImposto = false; } mstrRetemImposto = lblnRetemImposto ? "S" : "N"; TipoImposto = lobjTipoImposto; }
public FaturamentoRetencoes(enmTipoImposto aenmTipoImposto, decimal adecBaseCalculo, decimal adecPercentual, bool ablnRetemImposto, decimal adecValorMinimo, string astrGovDestinatario) { this.ID = Convert.ToInt32(aenmTipoImposto); mdecBaseCalculo = adecBaseCalculo; mdecPercentUsado = adecPercentual; mdecValorRetencao = Math.Round((adecBaseCalculo * adecPercentual) / 100, 2); mstrRetemImposto = ablnRetemImposto ? "S" : "N"; TipoImposto = new TipoImposto(aenmTipoImposto, adecPercentual, 0, adecValorMinimo, astrGovDestinatario); }
public void InsertOrUpdate(TipoImposto entity) { if (entity.ID == default(int)) { // New entity context.TiposImposto.Add(entity); } else { // Existing entity context.Entry(entity).State = System.Data.Entity.EntityState.Modified; } }