Exemplo n.º 1
0
        public ActionResult ReenviarFicha(string TipoFuncionalidade, int idSolicitacao, string CNPJ, string EmailContato, FichaCadastralWebForLinkVM ficha)
        {
            try
            {
                CNPJ = CNPJ.Replace(".", "").Replace("-", "").Replace("/", "");

                int usuarioId = (int)Geral.PegaAuthTicket("UsuarioId");

                SOLICITACAO solicitacao = _solicitacaoService.BuscarPorIdControleSolicitacoes(idSolicitacao);
                ficha.ContratanteID        = solicitacao.CONTRATANTE_ID;
                ficha.Solicitacao.Fluxo.ID = solicitacao.FLUXO_ID;


                var papelFornecedor = _papelService.BuscarPorContratanteETipoPapel(ficha.ContratanteID, (int)EnumTiposPapel.Fornecedor).ID;
                var tramites        = _solicitacaoTramite.BuscarTramitePorSolicitacaoIdPapelId(idSolicitacao, papelFornecedor);

                if (tramites == null)
                {
                    var papelSolicitante = _papelService.BuscarPorContratanteETipoPapel(ficha.ContratanteID, (int)EnumTiposPapel.Solicitante).ID;
                    _tramite.AtualizarTramite(ficha.ContratanteID, idSolicitacao, ficha.Solicitacao.Fluxo.ID, papelSolicitante, (int)EnumStatusTramite.Aprovado, usuarioId);
                }

                //se não for primeiro acesso enviar para tela de acesso
                string url = Url.Action("Index", "Home", new
                {
                    chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}&Login={1}&TravaLogin=1", idSolicitacao, CNPJ), Key)
                }, Request.Url.Scheme);

                //se for primeiro acesso enviar para criação de usuário
                #region BuscarPorEmail
                //validar se o e-mail já existe na tabela de Usuarios
                if (!_usuarioBP.ValidarPorCnpj(CNPJ))
                {
                    url = Url.Action("CadastrarUsuarioFornecedor", "Home", new
                    {
                        chaveurl = Cripto.Criptografar(string.Format("Login={0}&SolicitacaoID={1}&Email={2}",
                                                                     CNPJ,
                                                                     idSolicitacao,
                                                                     EmailContato), Key)
                    }, Request.Url.Scheme);
                }

                #endregion

                string mensagemLink           = string.Concat(ficha.Mensagem, "<p><a href='", url, "'>Link</a>:", url, "</p>");
                bool   emailEnviadoComSucesso = _metodosGerais.EnviarEmail(EmailContato, ficha.Assunto, mensagemLink);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }

            return(RedirectToAction("FornecedoresControleSolicitacoesLst", "ControleSolicitacao"));
        }
        /// <summary>
        /// Criar o arquivo na pasta indicada, conforme as solicitações daquele contratante
        /// </summary>
        private void CriarArquivo(int contratanteId)
        {
            try
            {
                //Serializador xml
                XmlSerializer serializer = new XmlSerializer(typeof(SolicitacaoCarga));

                //Leitura de todos as solicitações
                List <SOLICITACAO> solicitacoes = solicitacaoBP.ListarSolicitacaoCarga(contratanteId);
                //Mapeamento com a classe xml
                SolicitacaoCarga solicitacao = new SolicitacaoCarga
                {
                    Solicitacoes = Mapper.Map <List <SOLICITACAO>, List <SolicitacoesCarga> >(solicitacoes)
                };
                //Escrita XML
                var diretorioCarga = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings.Get("DiretorioCarga");
                using (TextWriter writer = new StreamWriter(NomearDocumento(contratanteId, diretorioCarga)))
                {
                    serializer.Serialize(writer, solicitacao);
                }
                var diretorioCargaBackup = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings.Get("DiretorioCargaBackup");
                using (TextWriter writer = new StreamWriter(NomearDocumento(contratanteId, diretorioCargaBackup)))
                {
                    serializer.Serialize(writer, solicitacao);
                }

                // ATUALIZA O TRAMITE DE CADA SOLICITAÇÃO INCLUIDA NO ARQUIVO
                int papelAtual = papelBP.BuscarPorContratanteETipoPapel(contratanteId, (int)EnumTiposPapel.CargaSAP).ID;
                solicitacoes.ForEach(x => _tramite.AtualizarTramite(x.CONTRATANTE_ID, x.ID, x.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, null));
            }
            catch (Exception ex)
            {
                throw new WebForLinkException("Erro ao tentar criar o arquivo", ex);
            }
        }
        public ActionResult EditarQuestionarioDinamico(int contratanteFornecedorID, int contratanteID, int fornecedorID, int?tipoFluxoID, int categoriaID, int TpPapel)
        {
            var papelAtual = _papelService.BuscarPorContratanteETipoPapel(contratanteID, TpPapel).ID;

            return(PartialView("_FichaCadastral_QuestionarioDinamico_Editavel", new RetornoQuestionario <QuestionarioVM>()
            {
                QuestionarioDinamicoList =
                    Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >(
                        _cadastroUnicoService.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO()
                {
                    ContratanteId = contratanteID,
                    PapelId = papelAtual,
                    CategoriaId = categoriaID,
                    Alteracao = true,
                    SolicitacaoId = 0,
                    FornecedorId = fornecedorID,
                    ContratantePJPFId = contratanteFornecedorID
                })
                        ),
            }));
        }
Exemplo n.º 4
0
        public ActionResult Salvar(FichaCadastralWebForLinkVM model)
        {
            try
            {
                SOLICITACAO solicitacao = new SOLICITACAO();
                solicitacao.FLUXO_ID              = _fluxoService.BuscarPorTipoEContratante((int)EnumTiposFluxo.ModificacaoEndereco, model.ContratanteID).ID;
                solicitacao.SOLICITACAO_DT_CRIA   = DateTime.Now;
                solicitacao.SOLICITACAO_STATUS_ID = (int)EnumStatusTramite.EmAprovacao; // EM APROVACAO
                solicitacao.USUARIO_ID            = (int)Geral.PegaAuthTicket("UsuarioId");
                solicitacao.PJPF_ID = model.ID;

                if (model.ContratanteID != 0)
                {
                    solicitacao.CONTRATANTE_ID = model.ContratanteID;
                }

                var solicitacoesModEndereco = Mapper.Map <List <DadosEnderecosVM>, List <SOLICITACAO_MODIFICACAO_ENDERECO> >(model.DadosEnderecos.ToList());

                if (solicitacoesModEndereco.Any())
                {
                    _solicitacaoModificacaoEnderecoService.InserirSolicitacoes(solicitacoesModEndereco, solicitacao);
                }

                var papelAtual = _papelService.BuscarPorContratanteETipoPapel(solicitacao.CONTRATANTE_ID, (int)EnumTiposPapel.Solicitante).ID;

                int usuarioId = (int)Geral.PegaAuthTicket("UsuarioId");
                _tramiteService.AtualizarTramite(solicitacao.CONTRATANTE_ID, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, usuarioId);

                PersistirDadosEnderecoEmMemoria();

                string chaveUrl = "";

                if (model.ControllerOrigem == "Fornecedores")
                {
                    chaveUrl = Cripto.Criptografar(String.Format("FornecedorID={0}&ContratanteID={1}&RetSucessoEnderecos=1", model.PJPFID, model.ContratanteID), Key);
                }

                return(RedirectToAction(model.ActionOrigem, model.ControllerOrigem, new { chaveurl = chaveUrl }));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                string chaveUrl = "";

                if (model.ControllerOrigem == "Fornecedores")
                {
                    chaveUrl = Cripto.Criptografar(String.Format("FornecedorID={0}&ContratanteID={1}&RetSucessoEnderecos=-1", model.PJPFID, model.ContratanteID), Key);
                }

                return(RedirectToAction(model.ActionOrigem, model.ControllerOrigem, new { chaveurl = chaveUrl }));
            }
        }
        private void AtualizarSolicitacaoDocumentos(FichaCadastralWebForLinkVM model, int tipoFluxoId, int solicitacaoId)
        {
            int usuarioId = (int)Geral.PegaAuthTicket("UsuarioId");
            List <SolicitacaoDeDocumentos> documentosList = new List <SolicitacaoDeDocumentos>();

            model.SolicitacaoFornecedor.Documentos
            .ForEach(x =>
            {
                SolicitacaoDeDocumentos solicitacaoDeDocumentosSolicitada = _solicitacaoDocumentoService.BuscarPorIdSolicitacaoIdDescricaoDocumento((int)x.SolicitacaoID, x.DescricaoDocumentoId);
                if (!string.IsNullOrEmpty(x.ArquivoSubido) && solicitacaoDeDocumentosSolicitada != null)
                {
                    int idSolicitacaoDocumento = solicitacaoDeDocumentosSolicitada.ID;
                    var arquivoId = _fornecedorArquivoService.GravarArquivoSolicitacao(model.ContratanteID, x.ArquivoSubido, x.TipoArquivoSubido);

                    SolicitacaoDeDocumentos solicitacaoDeDocumentos = new SolicitacaoDeDocumentos()
                    {
                        ID                     = idSolicitacaoDocumento,
                        ARQUIVO_ID             = arquivoId,
                        DATA_VENCIMENTO        = x.PorValidade != null ? ((bool)x.PorValidade ? x.DataValidade : null) : null,
                        SOLICITACAO_ID         = x.SolicitacaoID,
                        DESCRICAO_DOCUMENTO_ID = solicitacaoDeDocumentosSolicitada.DESCRICAO_DOCUMENTO_ID,
                        LISTA_DOCUMENTO_ID     = solicitacaoDeDocumentosSolicitada.LISTA_DOCUMENTO_ID
                    };
                    documentosList.Add(solicitacaoDeDocumentos);
                }
            });
            documentosList.ForEach(x =>
            {
                _solicitacaoDocumentoService.Update(x);
            });

            var papelAtual = _papelService.BuscarPorContratanteETipoPapel(model.ContratanteID, (int)EnumTiposPapel.Fornecedor).ID;

            var solDocumentos = _solicitacaoService.BuscarPorId(solicitacaoId);

            _tramiteService.AtualizarTramite(model.ContratanteID, solicitacaoId, solDocumentos.FLUXO_ID, papelAtual, 2, solDocumentos.USUARIO_ID);
        }
        public bool FinalizarFichaCadastral(FichaCadastralWebForLinkVM model)
        {
            var preenchimentoValido = false;

            #region Validar Dados do Questionario Dinâmico
            List <WFD_INFORM_COMPL> informacoesComplementar = new List <WFD_INFORM_COMPL>();
            if (model.Questionarios != null)
            {
                if (model.Questionarios.QuestionarioDinamicoList != null)
                {
                    foreach (var questionario in model.Questionarios.QuestionarioDinamicoList)
                    {
                        foreach (var aba in questionario.AbaList)
                        {
                            foreach (var pergunta in aba.PerguntaList)
                            {
                                #region Validar se os campos obrigatórios estão preenchidos
                                //if (pergunta.Obrigatorio)
                                //{
                                //    if (string.IsNullOrEmpty(pergunta.Resposta))
                                //    {
                                //        ModelState.AddModelError("QuestionarioDinamicoValidation", string.Format("Campo {0} obrigatório!", pergunta.Titulo));
                                //    }
                                //}
                                #endregion

                                //if (ModelState.IsValid)
                                //{
                                WFD_INFORM_COMPL infoCompleRespondida = new WFD_INFORM_COMPL()
                                {
                                    SOLICITACAO_ID = model.Solicitacao.ID,
                                    PERG_ID        = pergunta.Id,
                                    RESPOSTA       = pergunta.Resposta
                                };

                                switch (pergunta.TipoDado)
                                {
                                case "RadioButton":
                                {
                                    if (pergunta.DominioListId != 0)
                                    {
                                        infoCompleRespondida.RESPOSTA = pergunta.DominioListId.ToString();
                                    }
                                }
                                break;

                                case "Checkbox":
                                {
                                    string respostaIdentada = string.Empty;
                                    foreach (string resposta in pergunta.RespostaCheckbox)
                                    {
                                        if (!resposta.Equals("false"))
                                        {
                                            respostaIdentada = string.Concat(respostaIdentada, "^", resposta);
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(respostaIdentada))
                                    {
                                        infoCompleRespondida.RESPOSTA = respostaIdentada.Remove(0, 1);
                                    }
                                }
                                break;
                                }
                                informacoesComplementar.Add(infoCompleRespondida);
                                //}
                            }
                        }
                    }
                }
            }
            #endregion

            FORNECEDOR_CATEGORIA categoria = _fornecedorCategoriaService.BuscarPorId((int)model.CategoriaId);

            if (model.TipoFornecedor != 1)
            {
                if (model.DadosEnderecos == null || !model.DadosEnderecos.Any())
                {
                    ModelState.AddModelError("DadosEnderecoValidation", "Informar ao menos um Endereço!");
                }
                else if (model.DadosEnderecos.Any(x => x.TipoEnderecoId == 0 || String.IsNullOrEmpty(x.Endereco) || String.IsNullOrEmpty(x.Numero) || String.IsNullOrEmpty(x.CEP)))
                {
                    ModelState.AddModelError("DadosEnderecoValidation", "Dados incompletos no Endereço!");
                }
            }

            if (!categoria.ISENTO_DADOSBANCARIOS && !model.ApenasSalvar)
            {
                if (!model.DadosBancarios.Any())
                {
                    ModelState.AddModelError("DadosBancariosValidation", "Informar ao menos um Dado Bancário!");
                    model.DadosBancarios.Add(new DadosBancariosVM());
                }
            }
            else
            {
                //REMOVE AS CRITICAS DOS DADOS BANCARIOS CASO A CATEGORIA SEJA ISENTA
                while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Banco")).Value != null)
                {
                    ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Banco")));
                }

                while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Agencia")).Value != null)
                {
                    ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Agencia")));
                }

                while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrente")).Value != null)
                {
                    ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrente")));
                }

                while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrenteDigito")).Value != null)
                {
                    ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrenteDigito")));
                }
            }

            if (!categoria.ISENTO_CONTATOS && !model.ApenasSalvar)
            {
                if (model.DadosContatos == null || !model.DadosContatos.Any())
                {
                    ModelState.AddModelError("DadosContatosValidation", "Informar os Dados do Contato!");
                    model.DadosContatos = new List <DadosContatoVM>();
                    model.DadosContatos.Add(new DadosContatoVM());
                }
            }
            else
            {
                //REMOVE AS CRITICAS DOS DADOS DE CONTATOS CASO A CATEGORIA SEJA ISENTA
                while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosContatos") && ms.Key.Contains("EmailContato")).Value != null)
                {
                    ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosContatos") && ms.Key.Contains("EmailContato")));
                }
            }

            if (!categoria.ISENTO_DOCUMENTOS && !model.ApenasSalvar && model.TipoFornecedor != 2)
            {
                List <SolicitacaoDocumentosVM> docsObrigatorios = model.SolicitacaoFornecedor.Documentos.Where(x => x.Obrigatorio == true && x.ArquivoSubido == null).ToList();
                if (docsObrigatorios.Any())
                {
                    ModelState.AddModelError("AnexosValidation", "Favor subir os arquivos dos documentos Exigíveis!");
                }
            }

            ModelState.Remove("SolicitacaoFornecedor.Assunto");
            ModelState.Remove("SolicitacaoFornecedor.DescricaoSolicitacao");
            ModelState.Remove("SolicitacaoFornecedor.Mensagem");
            ModelState.Remove("SolicitacaoFornecedor.DadosEnderecos.T_UF.UF_NM");

            int tipoPapel  = model.TipoPreenchimento.Equals((int)EnumTiposPreenchimento.Fornecedor) ? (int)EnumTiposPapel.Fornecedor : (int)EnumTiposPapel.Solicitante;
            int papelAtual = _papelService.BuscarPorContratanteETipoPapel(model.ContratanteID, tipoPapel).ID;
            foreach (var modeloErrado in ModelState.Values)
            {
                if (modeloErrado.Errors.Count != 0)
                {
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor = _solicitacaoCadastroFornecedorService.BuscarPorSolicitacaoId(model.Solicitacao.ID);
                    CompletarSolicitacaoCadastroPJPF(ref solicitacaoCadastroFornecedor, model);
                    _solicitacaoCadastroFornecedorService.AtualizarSolicitacao(solicitacaoCadastroFornecedor);

                    ManterDadosBancarios(model.DadosBancarios.Where(w => w.Banco != null && w.Agencia != null && w.ContaCorrente != null).ToList(), model.Solicitacao.ID, model.ContratanteID);
                    ManterDadosContatos(model.DadosContatos.Where(w => w.EmailContato != null).ToList(), solicitacaoCadastroFornecedor.SOLICITACAO_ID);
                    ManterDadosEnderecos(model.DadosEnderecos.Where(x => x.TipoEnderecoId > 0).ToList(), solicitacaoCadastroFornecedor.SOLICITACAO_ID);

                    ManterUnspsc(model.FornecedoresUnspsc.ToList(), model.Solicitacao.ID);

                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)
                    {
                        ManterDocumentos(model.SolicitacaoFornecedor.Documentos, model.Solicitacao.ID, model.ContratanteID);
                    }

                    _informacaoComplementarService.InsertAll(informacoesComplementar);

                    model.ProrrogacaoPrazo = new ProrrogacaoPrazoVM();
                    if (solicitacaoCadastroFornecedor.WFD_SOLICITACAO.WFD_SOLICITACAO_PRORROGACAO.Any())
                    {
                        //Busca a ultima solicitacao de prorrogação, ou seja a ativa.
                        model.ProrrogacaoPrazo = ProrrogacaoPrazoVM.ToViewModel(solicitacaoCadastroFornecedor.WFD_SOLICITACAO.WFD_SOLICITACAO_PRORROGACAO.OrderBy(o => o.ID).LastOrDefault());
                    }
                    model.ProrrogacaoPrazo.PrazoPreenchimento = _contratanteConfiguracaoService.BuscarPrazo(solicitacaoCadastroFornecedor.WFD_SOLICITACAO);
                    if (model.ProrrogacaoPrazo.Aprovado != null)
                    {
                        if ((bool)model.ProrrogacaoPrazo.Aprovado)
                        {
                            model.ProrrogacaoPrazo.Status = "Aprovado";
                        }
                        else
                        {
                            model.ProrrogacaoPrazo.Status = "Reprovado";
                        }
                    }
                    else
                    {
                        model.ProrrogacaoPrazo.Status = "Aguardando Aprovação...";
                    }


                    if (!model.ApenasSalvar)
                    {
                        _tramite.AtualizarTramite(model.ContratanteID, model.Solicitacao.ID, model.Solicitacao.Fluxo.ID, papelAtual, (int)EnumStatusTramite.Aprovado, null);

                        ViewBag.MensagemSucesso = "Dados Enviados com Sucesso!";
                        ViewBag.StatusTramite   = (int)EnumStatusTramite.Aprovado;
                    }
                    else
                    {
                        ViewBag.MensagemSucesso = "Dados Salvos com Sucesso!";
                        ViewBag.StatusTramite   = (int)EnumStatusTramite.Aguardando;
                    }
                    preenchimentoValido = true;
                }
                catch (Exception e)
                {
                    ViewBag.MensagemErro  = "Erro ao tentar Salvar a ficha cadastral!";
                    ViewBag.StatusTramite = (int)EnumStatusTramite.Aguardando;
                    Log.Error(e);
                }
            }
            else
            {
                ViewBag.MensagemErro  = "Não foi possível enviar a Ficha Cadastral! Existem dados incompletos abaixo.";
                ViewBag.StatusTramite = (int)EnumStatusTramite.Aguardando;
            }

            model.Questionarios = new RetornoQuestionario <QuestionarioVM>
            {
                QuestionarioDinamicoList =
                    Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >(
                        _cadastroUnicoBP.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO()
                {
                    //PapelId = papelAtual,
                    UF            = "RJ",
                    ContratanteId = model.ContratanteID,
                    PapelId       = papelAtual,
                    CategoriaId   = categoria.ID,
                    Alteracao     = true,
                    SolicitacaoId = model.Solicitacao.ID
                })
                        )
            };
            PersistirDadosEnderecoEmMemoria();

            return(preenchimentoValido);
        }
Exemplo n.º 7
0
        public void PreencherFichaCadastral(SOLICITACAO solicitacao, FichaCadastralWebForLinkVM ficha, int tpPapel)
        {
            var contratante             = solicitacao.Contratante;
            var solicitacaoCadastroPJPF = solicitacao.SolicitacaoCadastroFornecedor.First();
            var solicitacaoFornecedorVM = new SolicitacaoFornecedorVM();

            ficha.TipoFornecedor          = solicitacaoCadastroPJPF.PJPF_TIPO;
            ficha.ContratanteID           = contratante.ID;
            ficha.CategoriaId             = solicitacaoCadastroPJPF.CATEGORIA_ID;
            ficha.ContratanteFornecedorID = solicitacao.CONTRATANTE_ID;
            ficha.SolicitacaoID           = solicitacao.ID;

            ficha.Categoria = new CategoriaFichaVM
            {
                Id   = solicitacaoCadastroPJPF.CATEGORIA_ID,
                Nome = solicitacaoCadastroPJPF.WFD_PJPF_CATEGORIA.CODIGO
            };

            ficha.Solicitacao = new SolicitacaoVM
            {
                ID    = solicitacao.ID,
                Fluxo = new FluxoVM
                {
                    ID = solicitacao.FLUXO_ID
                }
            };

            switch ((EnumTiposFornecedor)solicitacaoCadastroPJPF.PJPF_TIPO)
            {
            case EnumTiposFornecedor.EmpresaNacional:
                ficha.CNPJ_CPF    = Convert.ToUInt64(solicitacaoCadastroPJPF.CNPJ).ToString(@"00\.000\.000\/0000\-00");
                ficha.RazaoSocial = solicitacaoCadastroPJPF.RAZAO_SOCIAL;
                break;

            case EnumTiposFornecedor.EmpresaEstrangeira:
                ficha.RazaoSocial = solicitacaoCadastroPJPF.RAZAO_SOCIAL;
                break;

            case EnumTiposFornecedor.PessoaFisica:
                ficha.CNPJ_CPF    = Convert.ToUInt64(solicitacaoCadastroPJPF.CPF).ToString(@"000\.000\.000\-00");
                ficha.RazaoSocial = solicitacaoCadastroPJPF.NOME;
                break;
            }

            ficha.NomeFantasia = solicitacaoCadastroPJPF.NOME_FANTASIA;
            //ficha.CNAE = solicitacaoCadastroPJPF.CNAE;
            ficha.InscricaoEstadual  = solicitacaoCadastroPJPF.INSCR_ESTADUAL;
            ficha.InscricaoMunicipal = solicitacaoCadastroPJPF.INSCR_MUNICIPAL;
            ficha.TipoLogradouro     = solicitacaoCadastroPJPF.TP_LOGRADOURO;
            ficha.Endereco           = solicitacaoCadastroPJPF.ENDERECO;
            ficha.Numero             = solicitacaoCadastroPJPF.NUMERO;
            ficha.Complemento        = solicitacaoCadastroPJPF.COMPLEMENTO;
            ficha.Cep        = solicitacaoCadastroPJPF.CEP;
            ficha.Bairro     = solicitacaoCadastroPJPF.BAIRRO;
            ficha.Cidade     = solicitacaoCadastroPJPF.CIDADE;
            ficha.Estado     = solicitacaoCadastroPJPF.UF;
            ficha.Pais       = solicitacaoCadastroPJPF.PAIS;
            ficha.Observacao = solicitacaoCadastroPJPF.OBSERVACAO;

            //Mapear Dados Bancários
            var solicitacoesModBanco = solicitacao.SolicitacaoModificacaoDadosBancario.ToList();

            ficha.DadosBancarios = solicitacoesModBanco.Any()
                ? Mapper.Map <List <SolicitacaoModificacaoDadosBancario>, List <DadosBancariosVM> >(solicitacoesModBanco)
                : new List <DadosBancariosVM>();

            //Mapear Dados de Endereço
            var solicitacoesModEndereco = solicitacao.WFD_SOL_MOD_ENDERECO.ToList();

            if (solicitacaoCadastroPJPF.PJPF_TIPO == 1)
            {
                ficha.DadosEnderecos = solicitacoesModEndereco.Any()
                    ? Mapper.Map <List <SOLICITACAO_MODIFICACAO_ENDERECO>, List <DadosEnderecosVM> >(solicitacoesModEndereco)
                    : new List <DadosEnderecosVM>();
            }
            else
            {
                ficha.DadosEnderecos = solicitacoesModEndereco.Any()
                    ? Mapper.Map <List <SOLICITACAO_MODIFICACAO_ENDERECO>, List <DadosEnderecosVM> >(solicitacoesModEndereco)
                    : new List <DadosEnderecosVM> {
                    new DadosEnderecosVM()
                };
            }

            //Mapear Dados Contatos
            var solicitacoesModContato = solicitacao.SolicitacaoModificacaoDadosContato.ToList();

            ficha.DadosContatos = solicitacoesModContato.Any()
                ? Mapper.Map <List <SolicitacaoModificacaoDadosContato>, List <DadosContatoVM> >(solicitacoesModContato)
                : new List <DadosContatoVM> {
                new DadosContatoVM()
            };

            if (solicitacao.WFD_SOL_MENSAGEM.Any())
            {
                solicitacaoFornecedorVM.Assunto  = solicitacao.WFD_SOL_MENSAGEM.First().ASSUNTO;
                solicitacaoFornecedorVM.Mensagem = solicitacao.WFD_SOL_MENSAGEM.First().MENSAGEM;
            }

            solicitacaoFornecedorVM.Fornecedores         = new List <SolicitacaoFornecedoresVM>();
            solicitacaoFornecedorVM.SolicitacaoCriacaoID = solicitacao.ID;

            solicitacaoFornecedorVM.Fornecedores =
                solicitacao.SolicitacaoCadastroFornecedor.Select(x => new SolicitacaoFornecedoresVM
            {
                NomeFornecedor = x.RAZAO_SOCIAL,
                CNPJ           = x.CNPJ
            }).ToList();

            ficha.SolicitacaoFornecedor = solicitacaoFornecedorVM;

            //Mapear os Documentos
            solicitacaoFornecedorVM.Documentos =
                Mapper.Map <List <SolicitacaoDeDocumentos>, List <SolicitacaoDocumentosVM> >(
                    solicitacao.SolicitacaoDeDocumentos.ToList());

            //Mapear UNSPSC
            ficha.FornecedoresUnspsc =
                Mapper.Map <List <SOLICITACAO_UNSPSC>, List <FornecedorUnspscVM> >(solicitacao.WFD_SOL_UNSPSC.ToList());

            var papel = _papelService.BuscarPorContratanteETipoPapel(contratante.ID, tpPapel).ID;

            //Mapear Questionários
            ficha.Questionarios = new RetornoQuestionario <QuestionarioVM>
            {
                QuestionarioDinamicoList =
                    Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >(
                        _cadastroUnicoService.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO
                {
                    //PapelId = papelAtual,
                    UF            = "RJ",
                    ContratanteId = contratante.ID,
                    PapelId       = papel,
                    CategoriaId   = solicitacaoCadastroPJPF.CATEGORIA_ID,
                    Alteracao     = true,
                    SolicitacaoId = solicitacao.ID
                })
                        )
            };

            ficha.ProrrogacaoPrazo = new ProrrogacaoPrazoVM();
            if (solicitacao.WFD_SOLICITACAO_PRORROGACAO.Count > 0)
            {
                //Busca a ultima solicitacao de prorrogação, ou seja a ativa.
                ficha.ProrrogacaoPrazo =
                    Mapper.Map <SOLICITACAO_PRORROGACAO, ProrrogacaoPrazoVM>(
                        solicitacao.WFD_SOLICITACAO_PRORROGACAO.OrderBy(o => o.ID).LastOrDefault());
            }
            ficha.ProrrogacaoPrazo.PrazoPreenchimento = _configuracaoDoContratanteService.BuscarPrazo(solicitacao);
            if (ficha.ProrrogacaoPrazo.Aprovado != null)
            {
                if ((bool)ficha.ProrrogacaoPrazo.Aprovado)
                {
                    ficha.ProrrogacaoPrazo.Status = "Aprovado";
                }
                else
                {
                    ficha.ProrrogacaoPrazo.Status = "Reprovado";
                }
            }
            else
            {
                ficha.ProrrogacaoPrazo.Status = "Aguardando Aprovação...";
            }
        }
Exemplo n.º 8
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 ActionResult FornecedoresControleSolicitacoesFrm(string chaveurl)
        {
            int idSolicitacao = 0;
            int idSolicitacaoTipo;
            int idPapel;

            if (!string.IsNullOrEmpty(chaveurl))
            {
                List <ParametroCriptografia> param = Cripto.DescriptografarUrl(chaveurl, Key);
                Int32.TryParse(param.First(p => p.Name == "idS").Value, out idSolicitacao);
                Int32.TryParse(param.First(p => p.Name == "idST").Value, out idSolicitacaoTipo);
                Int32.TryParse(param.First(p => p.Name == "idP").Value, out idPapel);
            }

            int tipoFluxoId = _solicitacaoService.BuscarTipoFluxoId(idSolicitacao);

            ViewBag.Fluxo = tipoFluxoId;

            SOLICITACAO solicitacao = _solicitacaoService.BuscarPorIdControleSolicitacoes(idSolicitacao);
            int         tpFluxoId   = solicitacao.Fluxo.FLUXO_TP_ID;

            ViewBag.QtdGrupoEmpresa = _grupoService.QuantidadeEmpresa(solicitacao.CONTRATANTE_ID);
            FichaCadastralWebForLinkVM ficha = new FichaCadastralWebForLinkVM(
                idSolicitacao,
                new AprovacaoVM
            {
                Solicitacao_Tramite = new SOLICITACAO_TRAMITE()
            });

            switch (tipoFluxoId)
            {
            case 10:     // Cadastro Fornecedor Nacional
            case 20:     // Cadastro Fornecedor Nacional Direto
            case 30:     // Cadastro de Fonecedor Pessoa Física
            case 40:     // Cadastro Fornecedor Pessoa Fisica Direto
                this.PopularAcompanhamentoNovoFornecedor(ficha, solicitacao);
                break;

            case 50:     // Cadastro Fornecedor Estrangeiro
                this.PopularAcompanhamentoNovoFornecedorEstrangeiro(ficha, solicitacao);
                break;

            case 60:     // Ampliação de Fornecedor
                this.PopularAcompanhamentoAmpliacao(ficha, solicitacao);
                break;

            case 70:     // Modificações gerais
                this.PopularAcompanhamentoModificacaoGerais(ficha, solicitacao);
                ViewBag.OutrosDadosVisao     = new SelectList(_visaoService.ListarTodos(), "ID", "VISAO_NM", ficha.OutrosDadosVisao);
                ViewBag.OutrosDadosGrupo     = new SelectList(_tipoGrupoService.ListarGruposPorVisao(ficha.OutrosDadosVisao), "ID", "GRUPO_NM", ficha.OutrosDadosGrupo);
                ViewBag.OutrosDadosDescricao = new SelectList(_descricaoService.ListarPorGrupoId(ficha.OutrosDadosGrupo), "ID", "DESCRICAO_NM", ficha.OutrosDadosDescricao);
                break;

            case 90:     // Modificações de dados Bancários
                this.PopularAcompanhamentoModificacaoDadosBancarios(ficha, solicitacao);
                break;

            case 100:     // Modificações de dados Contatos
                this.PopularAcompanhamentoModificacaoDadosContatos(ficha, solicitacao);
                break;

            case 110:     // Bloqueio do Fornecedor
                this.PopularAcompanhamentoBloqueio(ficha, solicitacao);
                ViewBag.BloqueioMotivoQualidade = _funcaoBloqueioService.ListarTodosPorCodigoFuncaoBloqueio();
                break;

            case 120:     // Desbloqueio do Fornecedor
                this.PopularAcompanhamentoDesbloqueio(ficha, solicitacao);
                break;

            case 130:     // Atualizar Documentos
                this.PopularAcompanhamentoAtualizacaoDocumento(ficha, solicitacao);
                break;

            case 140:     //Questionário Dinâmico
                this.PopularAcompanhamentoQuestionarioDinamico(ficha, solicitacao);
                break;

            case 150:     //Mudança de Endereco
                this.PopularAcompanhamentoModificacaoEndereco(ficha, solicitacao);
                break;

            case 160:     //Unspsc
                this.PopularAcompanhamentoModificacaoUnspsc(ficha, solicitacao);
                break;
            }

            //Mapear UNSPSC
            ficha.FornecedoresUnspsc =
                Mapper.Map <List <SOLICITACAO_UNSPSC>, List <FornecedorUnspscVM> >(solicitacao.WFD_SOL_UNSPSC.ToList());

            // Solicitação
            Mapper.Map(solicitacao, ficha.Aprovacao);

            this.PopularAcompanhamentoPreencheStatusRobo(ficha, solicitacao, tpFluxoId);

            int papelSolicitante = _papelService.BuscarPorContratanteETipoPapel(solicitacao.Contratante.ID, (int)EnumTiposPapel.Solicitante).ID;

            ficha.Questionarios = new RetornoQuestionario <QuestionarioVM>
            {
                QuestionarioDinamicoList =
                    Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >(
                        _cadastroUnicoService.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO()
                {
                    ContratanteId = solicitacao.Contratante.ID,
                    PapelId       = papelSolicitante,
                    CategoriaId   = ficha.CategoriaId,
                    Alteracao     = false,
                    SolicitacaoId = solicitacao.ID
                })
                        )
            };

            var prorrogacao = solicitacao.WFD_SOLICITACAO_PRORROGACAO.Where(o => o.APROVADO == null).LastOrDefault();

            if (prorrogacao != null)
            {
                //Busca a ultima solicitacao de prorrogação, ou seja a ativa.
                ficha.ProrrogacaoPrazo =
                    Mapper.Map <SOLICITACAO_PRORROGACAO, ProrrogacaoPrazoVM>(prorrogacao);
            }
            ficha.ProrrogacaoPrazo.PrazoPreenchimento = _contratanteConfiguracaoService.BuscarPrazo(solicitacao);

            PreparaModal(ficha);

            return(View(ficha));
        }
Exemplo n.º 10
0
        public ActionResult FornecedoresDesBloqueioFrm(FichaCadastralWebForLinkVM model, string rdLancamento, string rdCompras, string txtAreaMotivoDesbloqueio, int ContratanteID, int ContratanteFornecedorID, int?ID, int?bloqueioMotivoQualidade)
        {
            if (rdLancamento == null)
            {
                ModelState.AddModelError("FornecedoresBloqueioValidation", "Informe ao menos um desbloqueio de lançamento!");
            }

            if (ContratanteID == 0)
            {
                ModelState.AddModelError("FornecedoresBloqueioValidation", "Ocorreu um error ao tentar salvar o desbloqueio. Por favor, tente mais tarde.");
            }

            if (ContratanteFornecedorID == 0)
            {
                ModelState.AddModelError("FornecedoresBloqueioValidation", "Ocorreu um error ao tentar salvar o desbloqueio. Por favor, tente mais tarde.");
            }

            if (ID == 0 || ID == null)
            {
                ModelState.AddModelError("FornecedoresBloqueioValidation", "Ocorreu um error ao tentar salvar o desbloqueio. Por favor, tente mais tarde.");
            }

            if (ModelState.IsValid)
            {
                int UsuarioId     = (int)Geral.PegaAuthTicket("UsuarioId");
                var solicitacaoId = 0;

                try
                {
                    SOLICITACAO_DESBLOQUEIO desbloqueio = _solicitacaoDesbloqueio.criarSolicitacaoDesbloqueio(ContratanteID, UsuarioId, model.ID, rdLancamento, rdCompras, bloqueioMotivoQualidade, txtAreaMotivoDesbloqueio);
                    solicitacaoId = desbloqueio.WFD_SOLICITACAO.ID;
                    var papelAtual = _papelBP.BuscarPorContratanteETipoPapel(ContratanteID, (int)EnumTiposPapel.Solicitante).ID;
                    _tramite.AtualizarTramite(model.ContratanteID, solicitacaoId, desbloqueio.WFD_SOLICITACAO.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, UsuarioId);
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Log.Error(
                            string.Format(
                                "A entidade do Tipo \"{0}\" no estado \"{1}\" has the following validation errors:",
                                eve.Entry.Entity.GetType().Name, eve.Entry.State));
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Log.Error(string.Format("- Propriedade : \"{0}\", Erro: \"{1}\"",
                                                    ve.PropertyName, ve.ErrorMessage));
                        }
                    }
                    ViewBag.MensagemErro = "Erro ao tentar incluir um novo Papel!";
                    throw new WebForLinkException("Erro ao tentar incluir um novo Papel!");
                }
                catch (Exception ex)
                {
                    Log.Error(ex.Message, ex);
                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "Ocorreu um error para realizar o desbloqueio solicitado. Por favor, tente mais tarde." }));
                }

                return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = string.Format("Solicitação {0} de Desbloqueio realizado com Sucesso!", solicitacaoId) }));
            }

            return(View());
        }