Beispiel #1
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));
        }
Beispiel #2
0
 private void ObterServicos(ImpostosExcecaoViewModel viewModel)
 {
     viewModel.Servicos = _impostosExcecaoRepositorio.ObterServicos(viewModel.ModeloId, viewModel.OportunidadeId);
 }