public void GravarServicos(ImpostosExcecaoDTO model) { using (OracleConnection con = new OracleConnection(Config.StringConexao())) { con.Open(); var parametros = new DynamicParameters(); using (var transaction = con.BeginTransaction()) { foreach (var servicoId in model.ServicosSelecionados) { parametros = new DynamicParameters(); parametros.Add(name: "ModeloId", value: model.ModeloId, direction: ParameterDirection.Input); parametros.Add(name: "OportunidadeId", value: model.OportunidadeId, direction: ParameterDirection.Input); parametros.Add(name: "ServicoId", value: servicoId, direction: ParameterDirection.Input); parametros.Add(name: "PIS", value: model.PIS.ToInt(), direction: ParameterDirection.Input); parametros.Add(name: "ISS", value: model.ISS.ToInt(), direction: ParameterDirection.Input); parametros.Add(name: "COFINS", value: model.COFINS.ToInt(), direction: ParameterDirection.Input); parametros.Add(name: "ValorPIS", value: model.ValorPIS, direction: ParameterDirection.Input); parametros.Add(name: "ValorISS", value: model.ValorISS, direction: ParameterDirection.Input); parametros.Add(name: "ValorCOFINS", value: model.ValorCOFINS, direction: ParameterDirection.Input); parametros.Add(name: "Tipo", value: model.Tipo, direction: ParameterDirection.Input); con.Execute(@"DELETE FROM CRM.TB_CRM_OPORTUNIDADES_IMPOSTOS WHERE ModeloId = :ModeloId AND OportunidadeId = :OportunidadeId AND ServicoId = :ServicoId", parametros, transaction); con.Execute(@"INSERT INTO CRM.TB_CRM_OPORTUNIDADES_IMPOSTOS (ID, MODELOID, OPORTUNIDADEID, SERVICOID, PIS, ISS, COFINS, VALORPIS, VALORISS, VALORCOFINS, TIPO) VALUES (CRM.SEQ_CRM_OPORTUNIDADES_IMPOSTOS.NEXTVAL, :ModeloId, :OportunidadeId, :ServicoId, :PIS, :ISS, :COFINS, :ValorPIS, :ValorISS, :ValorCOFINS, :Tipo)", parametros, transaction); } parametros = new DynamicParameters(); parametros.Add(name: "OportunidadeId", value: model.OportunidadeId, direction: ParameterDirection.Input); con.Execute(@"UPDATE CRM.TB_CRM_OPORTUNIDADES SET IMPOSTOID = 3 WHERE Id = :OportunidadeId", parametros, transaction); transaction.Commit(); } } }
public ActionResult Index([Bind(Include = "Tipo, ServicosSelecionados, ISS, PIS, COFINS, ValorISS, ValorPIS, ValorCOFINS, ModeloId, OportunidadeId")] ImpostosExcecaoViewModel viewModel) { var servicosSelecionados = (viewModel?.ServicosSelecionados is int[] servicosArr && servicosArr.Length > 0); if (!servicosSelecionados) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Nenhum serviço foi selecionado"); ObterServicos(viewModel); return(View(viewModel)); } if (viewModel.Tipo == TiposExcecoesImpostos.ImpostoDiferenciado) { if (viewModel.ValorISS.ToDecimal() == 0 && viewModel.ValorPIS.ToDecimal() == 0 && viewModel.ValorCOFINS.ToDecimal() == 0) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Pelo menos um valor de imposto deverá ser informado"); ObterServicos(viewModel); foreach (var servico in viewModel.Servicos) { servico.Selecionado = viewModel.ServicosSelecionados.Any(c => c == servico.ServicoId); } return(View(viewModel)); } } else { if (viewModel.ISS == false && viewModel.PIS == false && viewModel.COFINS == false) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Pelo menos um valor de imposto deverá ser marcado"); ObterServicos(viewModel); foreach (var servico in viewModel.Servicos) { servico.Selecionado = viewModel.ServicosSelecionados.Any(c => c == servico.ServicoId); } return(View(viewModel)); } } if (ModelState.IsValid) { var model = new ImpostosExcecaoDTO { ModeloId = viewModel.ModeloId, OportunidadeId = viewModel.OportunidadeId, Tipo = viewModel.Tipo, ISS = viewModel.ISS, PIS = viewModel.PIS, COFINS = viewModel.COFINS, ValorISS = viewModel.ValorISS.ToDecimal(), ValorPIS = viewModel.ValorPIS.ToDecimal(), ValorCOFINS = viewModel.ValorCOFINS.ToDecimal(), ServicosSelecionados = viewModel.ServicosSelecionados }; _impostosExcecaoRepositorio.GravarServicos(model); return(RedirectToAction(nameof(Index), new { viewModel.ModeloId, viewModel.OportunidadeId })); } ObterServicos(viewModel); return(View(viewModel)); }