コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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));
        }