Esempio n. 1
0
        public ActionResult CriarSolicitacao(FornecedoresVM model, int?CategoriaSelecionada, string CategoriaSelecionadaNome, int?SolicitacaoID, int Empresa, string Acao)
        {
            if (string.IsNullOrEmpty(Acao))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            int  contratanteId          = (int)Geral.PegaAuthTicket("ContratanteId");
            int  usuarioId              = (int)Geral.PegaAuthTicket("UsuarioId");
            bool solicitaDocumentos     = (bool)Geral.PegaAuthTicket("SolicitaDocumentos");
            bool solicitaFichaCadastral = (bool)Geral.PegaAuthTicket("SolicitaFichaCadastral");
            int? grupoId = (int?)Geral.PegaAuthTicket("Grupo");

            ViewBag.Categoria                = Mapper.Map <List <CategoriaVM> >(_fornecedorCategoriaService.BuscarCategorias(contratanteId).OrderBy(x => x.DESCRICAO).ToList(), opt => opt.Items["Url"] = Url);
            ViewBag.CategoriaSelecionada     = CategoriaSelecionada;
            ViewBag.CategoriaSelecionadaNome = CategoriaSelecionadaNome;
            if (CategoriaSelecionada != null)
            {
                model.Categoria = (int)CategoriaSelecionada;
            }

            if (grupoId != null)
            {
                ViewBag.Empresa = new SelectList(_contratanteService.ListarTodosPorUsuario(usuarioId), "ID", "RAZAO_SOCIAL", Empresa);
            }
            ViewBag.SolicitaDocumentos     = solicitaDocumentos;
            ViewBag.solicitaFichaCadastral = solicitaFichaCadastral;
            ViewBag.Compras = new SelectList(_organizacaoComprasService.ListarTodosPorIdContratante(contratanteId), "ID", "ORG_COMPRAS_DSC");
            ViewBag.Robo    = false;

            ValidarFormularioCriacaoSolicitacao(model, Acao);
            ModelState.Remove("Email");
            if (ModelState.IsValid)
            {
                SOLICITACAO solicitacao;
                var         papelAtual = _papelService.BuscarPorContratanteETipoPapel(contratanteId, (int)EnumTiposPapel.Solicitante).ID;

                //INCLUSÃO DO FORNECEDOR
                switch (Acao)
                {
                case "Incluir":
                    string cnpj = string.Empty;
                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)
                    {
                        cnpj = model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");
                    }

                    CadastrarSolicitacaoDTO modeloCadastro = new CadastrarSolicitacaoDTO()
                    {
                        TipoCadastro   = model.TipoCadastro,
                        TipoFornecedor = model.TipoFornecedor,
                        ContratanteId  = contratanteId,
                        UsuarioId      = usuarioId,
                        CategoriaId    = model.Categoria,
                        ComprasId      = model.Compras,
                        CNPJ           = cnpj,
                        ContatoNome    = model.NomeContato,
                        ContatoEmail   = model.Email,
                        Telefone       = model.Telefone,
                        Assunto        = System.Web.HttpContext.Current.Application["NomeSistema"].ToString(),
                        RazaoSocial    = model.RazaoSocial,
                        CPF            = cnpj,
                        DataNascimento = model.DataNascimento
                    };
                    solicitacao = _solicitacaoService.CadastrarSolicitacaoPreCadastro(model.ID, modeloCadastro);

                    ViewBag.SolicitacaoId = solicitacao.ID;

                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)     // SE NACIONAL
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aguardando, usuarioId);
                        ViewBag.Robo = true;

                        return(View(model));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;

                case "Continuar":
                    solicitacao = _solicitacaoService.BuscarPorIdComSolicitacaoCadastroFornecedor((int)SolicitacaoID);
                    var robo = solicitacao.ROBO.FirstOrDefault();

                    if (robo != null)
                    {
                        if (robo.RF_CONSULTA_DTHR != null && robo.SINT_CONSULTA_DTHR != null && robo.SN_CONSULTA_DTHR != null)
                        {
                            solicitacao.ROBO_EXECUTADO = true;
                            _solicitacaoService.Alterar(solicitacao);
                        }
                    }

                    if (model.TipoCadastro == (int)EnumTiposPreenchimento.Fornecedor)
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, usuarioId);
                        return(RedirectToAction("EnviarSolicitacao", "PreCadastroFornecedor", new
                        {
                            chaveUrl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key),
                            nomeContato = model.NomeContato,
                            emailContato = model.Email,
                            contratanteId = Empresa,
                            documentoPfPj = model.CNPJ
                        }));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;
                case "Cancelar":
                    solicitacao = _solicitacaoService.BuscarPorIdIncluindoFluxo((int)SolicitacaoID);

                    _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, 6, usuarioId);

                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "Solicitação Cancelada!" }));
                    //break;
                }
            }
            if (model == null)
            {
                return(HttpNotFound());
            }

            return(View(model));
        }
        public JsonResult ReceitaFederalCNPJ(string cnpj, int contratante, int tipoFornecedor, int solicitacaoId)
        {
            string          path     = Server.MapPath("~/");
            RoboReceitaCNPJ roboCNPJ = new RoboReceitaCNPJ();

            roboCNPJ = roboCNPJ.CarregaRoboCNPJ(cnpj, path);

            try
            {
                SOLICITACAO solicitacao = _solicitacaoService.BuscarPorId(solicitacaoId);

                SolicitacaoCadastroFornecedor solForn = solicitacao.SolicitacaoCadastroFornecedor.First();
                ROBO robo = solicitacao.ROBO.FirstOrDefault();

                roboCNPJ.GravaRoboReceita(roboCNPJ, ref robo);
                //_solicitacaoService.Alterar(solicitacao);
                //Db.Entry(robo).State = EntityState.Modified;
                //_repositorios.roboBP.Alterar(robo);

                if (roboCNPJ.Code < 100)
                {
                    if (roboCNPJ.Code == 1)
                    {
                        solForn.PJPF_TIPO     = tipoFornecedor;
                        solForn.RAZAO_SOCIAL  = roboCNPJ.Data.RazaoSocial;
                        solForn.NOME_FANTASIA = roboCNPJ.Data.NomeFantasia;
                        if (roboCNPJ.Data.AtividadeEconomicaPrincipal.Length > 10 && !roboCNPJ.Data.AtividadeEconomicaPrincipal.Contains("*"))
                        {
                            solForn.CNAE = roboCNPJ.Data.AtividadeEconomicaPrincipal.Substring(0, 10).Replace(".", "").Replace("-", "");
                        }
                        solForn.CNPJ        = cnpj.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");;
                        solForn.ENDERECO    = roboCNPJ.Data.Logradouro;
                        solForn.NUMERO      = roboCNPJ.Data.Numero;
                        solForn.COMPLEMENTO = roboCNPJ.Data.Complemento;
                        solForn.CEP         = roboCNPJ.Data.CEP;
                        solForn.BAIRRO      = roboCNPJ.Data.Bairro;
                        solForn.CIDADE      = roboCNPJ.Data.Municipio;
                        solForn.UF          = roboCNPJ.Data.UF;
                        //Db.Entry(solForn).State = EntityState.Modified;
                        //_repositorios.solicitacaoCadastroPJPFBP.Alterar(solForn);
                    }
                }

                ROBO_LOG entityLog = new ROBO_LOG()
                {
                    COD_RETORNO    = roboCNPJ.Code,
                    DATA           = DateTime.Now,
                    MENSAGEM       = roboCNPJ.Data.Message,
                    ROBO           = EnumRobo.ReceitaFederal.ToString(),
                    CONTRATANTE_ID = contratante
                };
                solicitacao.WFD_PJPF_ROBO_LOG.Add(entityLog);
                _solicitacaoService.Alterar(solicitacao);
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                ViewBag.MensagemErro = "Erro ao tentar Incluir o Novo Fornecedor!";
                throw;
            }
            catch (Exception ex)
            {
                ViewBag.MensagemErro = "Erro ao tentar Incluir o Novo Fornecedor!";
                Log.Error(string.Format("Error ao executar o método ReceitaFederalCNPJ: {0}", ex));
            }

            return(Json(roboCNPJ));
        }