public List <CnaeListaServicoParametroMunicipioEntity> Listar(CnaeListaServicoParametroMunicipioEntity model) { var SQL = new StringBuilder(); SQL.AppendLine("SELECT vw_gov_cnae_lista_servico_parametro_municipio.CnaeListaServicoId AS CnaeListaServicoId"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CnaeId AS CnaeId"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.ListaServicoId AS ListaServicoId"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.MunicipioId AS MunicipioId"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.ParametroMunicipioId AS ParametroMunicipioId"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CnaeCodigo AS CnaeCodigo"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CnaeCodigoFormatado AS CnaeCodigoFormatado"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CnaeDescricao AS CnaeDescricao"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.ListaServico AS ListaServico"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.ListaServicoDescricao AS ListaServicoDescricao"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.AliquotaIss AS AliquotaIss"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.Uf AS Uf"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.Municipio AS Municipio"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CodigoMunicipioIbge AS CodigoMunicipioIbge"); SQL.AppendLine(" ,vw_gov_cnae_lista_servico_parametro_municipio.CodigoTributarioMunicipio AS CodigoTributarioMunicipio"); SQL.AppendLine(" FROM db_global.dbo.vw_gov_cnae_lista_servico_parametro_municipio"); SQL.AppendLine(" WHERE 1 = 1"); if (model.CnaeId > 0) { SQL.Append(" AND vw_gov_cnae_lista_servico_parametro_municipio.CnaeId = ").Append(model.CnaeId).AppendLine(); } if (model.ListaServicoId > 0) { SQL.Append(" AND vw_gov_cnae_lista_servico_parametro_municipio.ListaServicoId = ").Append(model.ListaServicoId).AppendLine(); } if (!string.IsNullOrWhiteSpace(model.CodigoMunicipioIbge)) { SQL.Append(" AND vw_gov_cnae_lista_servico_parametro_municipio.CodigoMunicipioIbge = '").Append(model.CodigoMunicipioIbge).AppendLine("'"); } using (var dataTable = DataBase.Select(SQL)) { return(dataTable == null ? null : DataTableUtil.DataTableToList <CnaeListaServicoParametroMunicipioEntity>(dataTable)); } }
private Servico Servico(GrvEntity grv, NfeViewFaturamentoComposicaoAgrupadoEntity composicao, Prestador prestador, ClienteDepositoEntity clienteDeposito, List <NfeRegraEntity> nfeRegras, string descricaoConfiguracaoNfe, bool isDev) { CnaeListaServicoParametroMunicipioEntity CnaeListaServicoParametroMunicipio = new CnaeListaServicoParametroMunicipioEntity { CnaeId = composicao.CnaeId, ListaServicoId = composicao.ListaServicoId, CodigoMunicipioIbge = prestador.codigo_municipio }; if ((CnaeListaServicoParametroMunicipio = new CnaeListaServicoParametroMunicipioController().Selecionar(CnaeListaServicoParametroMunicipio)) == null) { throw new Exception("Associação entre CNAE, Lista de Serviço e Município inexistente"); } decimal valorIss = 0; decimal AliquotaIss = 0; GravarLog(""); GravarLog($"GRV {grv.NumeroFormularioGrv} ({(isDev ? "DEV" : "PROD")})"); GravarLog(""); composicao.TotalComDesconto = Math.Round(composicao.TotalComDesconto, 2); if (PossuiRegraNfe(nfeRegras, "SEMALIQUOTA")) { GravarLog("R1: POSSUI REGRA 'SEMALIQUOTA'"); AliquotaIss = 0; } else if (PossuiRegraNfe(nfeRegras, "CODTRIBMUN_0000")) { GravarLog("R2: POSSUI REGRA 'CODTRIBMUN_0000'"); CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio = "0000"; } else if (clienteDeposito.AliquotaIss > 0) { GravarLog($"R3: CLIDEP POSSUI ALIQUOTA ISS > 0: {clienteDeposito.AliquotaIss}"); AliquotaIss = clienteDeposito.AliquotaIss; } else { GravarLog($"R4: CNAE LISTA SERVICO PARAMETRO MUNICIPIO ALIQUOTA ISS: {CnaeListaServicoParametroMunicipio.AliquotaIss.Value}"); AliquotaIss = CnaeListaServicoParametroMunicipio.AliquotaIss.Value; } if (composicao.FlagEnviarValorIss == 'S') { GravarLog("R5: POSSUI FLAG ENVIAR VALOR ISS"); if (clienteDeposito.FlagValorIssIgualProdutoBaseCalculoAliquota == 'S') { GravarLog("R5.1: POSSUI FLAG VALOR ISS IGUAL PRODUTO BASE CALCULO ALIQUOTA:"); GravarLog(" ValorIss: (Composição * AliquotaIss) / 100"); GravarLog($" ValorIss: {(composicao.TotalComDesconto * AliquotaIss) / 100}"); valorIss = (composicao.TotalComDesconto * AliquotaIss) / 100; } else { GravarLog($"R5.2: AliquotaIss / 100 = {AliquotaIss / 100}"); GravarLog(" ValorIss = AliquotaIss / 100:"); GravarLog($" ValorIss = {AliquotaIss / 100}"); valorIss = AliquotaIss / 100; } } if (PossuiRegraNfe(nfeRegras, "VALOR_ISS_TRUNCAR")) { GravarLog("R6: POSSUI REGRA 'VALOR_ISS_TRUNCAR'"); GravarLog($" ValorIss = {Math.Truncate(100 * valorIss) / 100}"); valorIss = Math.Truncate(100 * valorIss) / 100; } //else //{ // var regra = nfeRegras.Where(w => w.RegraCodigo.Equals("VLSERVICO=TOTAL+IMP") && w.Ativo == 1) // .FirstOrDefault(); // if (regra != null) // { // valorServicos = Math.Round(composicao.TotalComDesconto + valorIss, 2).ToString().Replace(",", "."); // } // else // { // valorServicos = Math.Round(composicao.TotalComDesconto, 2).ToString().Replace(",", "."); // } //} string valorServicos; if (isDev) { valorServicos = "1"; } else { valorServicos = composicao.TotalComDesconto.ToString().Replace(",", "."); } string baseCalculo = string.Empty; if (PossuiRegraNfe(nfeRegras, "BASE_CALCULO")) { GravarLog("R7: POSSUI REGRA 'BASE_CALCULO'"); GravarLog("R7.1: baseCalculo = valorServicos"); GravarLog($" baseCalculo = {valorServicos}"); baseCalculo = valorServicos; } GravarLog($"F1: COMPOSIÇÃO DO FATURAMENTO (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {composicao.TotalComDesconto} >>> {Math.Round(composicao.TotalComDesconto, 2)}"); GravarLog($"F2: ALÍQUOTA ISS (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {string.Format("{0:N2}", AliquotaIss).Replace(",", ".")}"); GravarLog($"F3: DISCRIMINAÇÃO: {descricaoConfiguracaoNfe + " CONFORME PROCESSO " + grv.NumeroFormularioGrv}"); GravarLog($"F4: CÓDIGO CNAE: {composicao.Cnae}"); GravarLog($"F5: ITEM DA LISTA SERVIÇO: {CnaeListaServicoParametroMunicipio.ListaServico}"); GravarLog($"F6: VALOR ISS (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {string.Format("{0:N2}", valorIss).Replace(",", ".")}"); GravarLog($"F7: CÓDIGO TRIBUTÁRIO MUNICÍPIO: {(!string.IsNullOrWhiteSpace(CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio) ? CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio : "CNAE + LISTASERVICO NÃO ASSOCIADO AO MUNICÍPIO")}"); GravarLog($"F8: VALOR DOS SERVIÇOS: {valorServicos}. 1 SE FOR AMBIENTE DE DESENVOLVIMENTO"); GravarLog($"F9: BASE DE CÁLCULO: {(!string.IsNullOrWhiteSpace(baseCalculo) ? baseCalculo : "CLIDEP NÃO POSSUI A REGRA 'BASE_CALCULO'")}"); return(new Servico { aliquota = string.Format("{0:N2}", AliquotaIss).Replace(",", "."), discriminacao = descricaoConfiguracaoNfe + " CONFORME PROCESSO " + grv.NumeroFormularioGrv, iss_retido = "false", codigo_cnae = composicao.Cnae, item_lista_servico = CnaeListaServicoParametroMunicipio.ListaServico, valor_iss = string.Format("{0:N2}", valorIss).Replace(",", "."), codigo_tributario_municipio = CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio, valor_servicos = valorServicos, base_calculo = !string.IsNullOrWhiteSpace(baseCalculo) ? baseCalculo : null, }); }
public CnaeListaServicoParametroMunicipioEntity Selecionar(CnaeListaServicoParametroMunicipioEntity model) { var list = Listar(model); return(list?.FirstOrDefault()); }