private void CompletarSolicitacaoCadastroPJPF(ref SolicitacaoCadastroFornecedor cadPJPF, FichaCadastralWebForLinkVM ficha)
        {
            if (ficha.TipoFornecedor != 1)
            {
                cadPJPF.NOME          = ficha.RazaoSocial;
                cadPJPF.NOME_FANTASIA = ficha.NomeFantasia;
                //cadPJPF.CNAE = ficha.CNAE;

                //Transformar em Enum
                if (ficha.TipoFornecedor == 3)
                {
                    cadPJPF.CPF            = ficha.CNPJ_CPF.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");
                    cadPJPF.INSCR_ESTADUAL = ficha.InscricaoEstadual;
                }

                cadPJPF.TP_LOGRADOURO = ficha.TipoLogradouro;
                cadPJPF.ENDERECO      = ficha.Endereco;
                cadPJPF.NUMERO        = ficha.Numero;
                cadPJPF.COMPLEMENTO   = ficha.Complemento;
                cadPJPF.CEP           = ficha.Cep;
                cadPJPF.BAIRRO        = ficha.Bairro;
                cadPJPF.CIDADE        = ficha.Cidade;
                cadPJPF.UF            = ficha.Estado;
                cadPJPF.PAIS          = ficha.Pais;
            }

            //Transformar em Enum
            if (ficha.TipoFornecedor != 2)
            {
                cadPJPF.INSCR_MUNICIPAL = ficha.InscricaoMunicipal;
            }

            cadPJPF.OBSERVACAO = ficha.Observacao;
        }
コード例 #2
0
        public static void PopularAcompanhamentoNovoFornecedor(this ControleSolicitacaoController controller, FichaCadastralWebForLinkVM modelo, SOLICITACAO solicitacao)
        {
            SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedorNacional = solicitacao.SolicitacaoCadastroFornecedor.FirstOrDefault();

            modelo.DadosEnderecos = Mapper.Map <List <SOLICITACAO_MODIFICACAO_ENDERECO>, List <DadosEnderecosVM> >(solicitacao.WFD_SOL_MOD_ENDERECO.ToList());
            modelo.DadosBancarios = Mapper.Map <List <SolicitacaoModificacaoDadosBancario>, List <DadosBancariosVM> >(solicitacao.SolicitacaoModificacaoDadosBancario.ToList());
            modelo.DadosContatos  = Mapper.Map <List <SolicitacaoModificacaoDadosContato>, List <DadosContatoVM> >(solicitacao.SolicitacaoModificacaoDadosContato.ToList());
            modelo.SolicitacaoFornecedor.Solicitacao = true;

            //Mapear os Documentos
            modelo.SolicitacaoFornecedor.Documentos =
                Mapper.Map <List <SolicitacaoDeDocumentos>, List <SolicitacaoDocumentosVM> >(solicitacao.SolicitacaoDeDocumentos.Where(x => x.ARQUIVO_ID != null).ToList());

            // Popula a view model FichaCadastralVM
            if (solicitacaoCadastroFornecedorNacional != null)
            {
                modelo.CategoriaId            = solicitacaoCadastroFornecedorNacional.CATEGORIA_ID;
                modelo.Solicitacao.Fluxo.ID   = solicitacao.FLUXO_ID;
                modelo.Solicitacao.Fluxo.Nome = solicitacao.Fluxo.FLUXO_NM;
                if (solicitacaoCadastroFornecedorNacional != null)
                {
                    modelo.CategoriaNome = solicitacaoCadastroFornecedorNacional.WFD_PJPF_CATEGORIA.DESCRICAO;
                }
                else
                {
                    modelo.CategoriaNome = solicitacao.Fornecedor.WFD_CONTRATANTE_PJPF.First(x => x.CONTRATANTE_ID == solicitacao.CONTRATANTE_ID).WFD_PJPF_CATEGORIA.DESCRICAO;
                }
                modelo.RazaoSocial = solicitacaoCadastroFornecedorNacional.PJPF_TIPO != 3
                    ? solicitacaoCadastroFornecedorNacional.RAZAO_SOCIAL
                    : solicitacaoCadastroFornecedorNacional.NOME;
                modelo.NomeFantasia = solicitacaoCadastroFornecedorNacional.NOME_FANTASIA;
                //modelo.CNAE = solicitacaoCadastroFornecedorNacional.CNAE;
                modelo.CNPJ_CPF = solicitacaoCadastroFornecedorNacional.PJPF_TIPO == 3
                    ? Convert.ToUInt64(solicitacaoCadastroFornecedorNacional.CPF).ToString(@"000\.000\.000\-00")
                    : Convert.ToUInt64(solicitacaoCadastroFornecedorNacional.CNPJ).ToString(@"00\.000\.000\/0000\-00");
                modelo.InscricaoEstadual  = solicitacaoCadastroFornecedorNacional.INSCR_ESTADUAL;
                modelo.InscricaoMunicipal = solicitacaoCadastroFornecedorNacional.INSCR_MUNICIPAL;
                modelo.TipoFornecedor     = solicitacaoCadastroFornecedorNacional.PJPF_TIPO;
                modelo.Observacao         = solicitacaoCadastroFornecedorNacional.OBSERVACAO;
                modelo.TipoLogradouro     = solicitacaoCadastroFornecedorNacional.TP_LOGRADOURO;
                modelo.Endereco           = solicitacaoCadastroFornecedorNacional.ENDERECO;
                modelo.Numero             = solicitacaoCadastroFornecedorNacional.NUMERO;
                modelo.Complemento        = solicitacaoCadastroFornecedorNacional.COMPLEMENTO;
                modelo.Cep    = solicitacaoCadastroFornecedorNacional.CEP;
                modelo.Bairro = solicitacaoCadastroFornecedorNacional.BAIRRO;
                modelo.Cidade = solicitacaoCadastroFornecedorNacional.CIDADE;
                modelo.Estado = solicitacaoCadastroFornecedorNacional.UF;
                modelo.Pais   = solicitacaoCadastroFornecedorNacional.PAIS;
            }

            // this.FornecedorRobo(modelo, solicitacao);

            if (solicitacaoCadastroFornecedorNacional.WFD_PJPF_ROBO != null)
            {
                modelo.FornecedorRobo.SimplesNacionalSituacao = solicitacaoCadastroFornecedorNacional.WFD_PJPF_ROBO.SIMPLES_NACIONAL_SITUACAO == null
                    ? ""
                    : solicitacaoCadastroFornecedorNacional.WFD_PJPF_ROBO.SIMPLES_NACIONAL_SITUACAO;
            }
        }
コード例 #3
0
 public AprovacaoVM(int idSolicitacao, int fluxoId, string fluxoNome)
 {
     Solicitacao          = new SOLICITACAO();
     Fornecedor           = new SolicitacaoCadastroFornecedor();
     Solicitacao_Tramite  = new SOLICITACAO_TRAMITE();
     FornecedorFinalizado = new Fornecedor();
     IdSolicitacao        = idSolicitacao;
     FluxoId         = fluxoId;
     NomeSolicitacao = fluxoNome;
 }
コード例 #4
0
        public static void PopularAcompanhamentoNovoFornecedorEstrangeiro(this ControleSolicitacaoController controller, FichaCadastralWebForLinkVM modelo, SOLICITACAO solicitacao)
        {
            SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedorEstrangeiro = solicitacao.SolicitacaoCadastroFornecedor.First();

            modelo.DadosEnderecos = Mapper.Map <List <SOLICITACAO_MODIFICACAO_ENDERECO>, List <DadosEnderecosVM> >(solicitacao.WFD_SOL_MOD_ENDERECO.ToList());
            modelo.DadosBancarios = Mapper.Map <List <SolicitacaoModificacaoDadosBancario>, List <DadosBancariosVM> >(solicitacao.SolicitacaoModificacaoDadosBancario.ToList());
            modelo.DadosContatos  = Mapper.Map <List <SolicitacaoModificacaoDadosContato>, List <DadosContatoVM> >(solicitacao.SolicitacaoModificacaoDadosContato.ToList());
            modelo.SolicitacaoFornecedor.Solicitacao = true;

            modelo.SolicitacaoFornecedor.Documentos = solicitacao.WFD_PJPF_SOLICITACAO_DOCUMENTOS.Select(c => new SolicitacaoDocumentosVM
            {
                ID            = c.ID,
                Documento     = c.WFD_PJPF_LISTA_DOCUMENTOS.DescricaoDeDocumentos.TipoDeDocumento.DESCRICAO + " - " + c.WFD_PJPF_LISTA_DOCUMENTOS.DescricaoDeDocumentos.DESCRICAO,
                PorValidade   = c.WFD_PJPF_LISTA_DOCUMENTOS.EXIGE_VALIDADE,
                DataValidade  = c.DATA_VENCIMENTO,
                NomeArquivo   = c.NOME_ARQUIVO,
                ArquivoID     = c.PJPF_ARQUIVO_ID,
                SolicitacaoID = c.SOLICITACAO_ID
            }).ToList();

            // Popula a view model FichaCadastralVM
            modelo.CategoriaId = solicitacaoCadastroFornecedorEstrangeiro.CATEGORIA_ID;
            if (solicitacaoCadastroFornecedorEstrangeiro != null)
            {
                modelo.CategoriaNome = solicitacaoCadastroFornecedorEstrangeiro.WFD_PJPF_CATEGORIA.DESCRICAO;
            }
            else
            {
                modelo.CategoriaNome = solicitacao.Fornecedor.WFD_CONTRATANTE_PJPF.First(x => x.CONTRATANTE_ID == solicitacao.CONTRATANTE_ID).WFD_PJPF_CATEGORIA.DESCRICAO;
            }
            modelo.Solicitacao.Fluxo.ID = solicitacao.FLUXO_ID;
            modelo.RazaoSocial          = solicitacaoCadastroFornecedorEstrangeiro.RAZAO_SOCIAL;
            modelo.NomeFantasia         = solicitacaoCadastroFornecedorEstrangeiro.NOME_FANTASIA;
            //modelo.CNAE = solicitacaoCadastroFornecedorEstrangeiro.CNAE;
            modelo.CNPJ_CPF           = solicitacaoCadastroFornecedorEstrangeiro.CNPJ;
            modelo.InscricaoEstadual  = solicitacaoCadastroFornecedorEstrangeiro.INSCR_ESTADUAL;
            modelo.InscricaoMunicipal = solicitacaoCadastroFornecedorEstrangeiro.INSCR_MUNICIPAL;
            modelo.TipoFornecedor     = solicitacaoCadastroFornecedorEstrangeiro.PJPF_TIPO;
            modelo.Observacao         = solicitacaoCadastroFornecedorEstrangeiro.OBSERVACAO;

            modelo.TipoFornecedor = solicitacaoCadastroFornecedorEstrangeiro.PJPF_TIPO;
            modelo.Observacao     = solicitacaoCadastroFornecedorEstrangeiro.OBSERVACAO;
            modelo.TipoLogradouro = solicitacaoCadastroFornecedorEstrangeiro.TP_LOGRADOURO;
            modelo.Endereco       = solicitacaoCadastroFornecedorEstrangeiro.ENDERECO;
            modelo.Numero         = solicitacaoCadastroFornecedorEstrangeiro.NUMERO;
            modelo.Complemento    = solicitacaoCadastroFornecedorEstrangeiro.COMPLEMENTO;
            modelo.Cep            = solicitacaoCadastroFornecedorEstrangeiro.CEP;
            modelo.Bairro         = solicitacaoCadastroFornecedorEstrangeiro.BAIRRO;
            modelo.Cidade         = solicitacaoCadastroFornecedorEstrangeiro.CIDADE;
            modelo.Estado         = solicitacaoCadastroFornecedorEstrangeiro.UF;
            modelo.Pais           = solicitacaoCadastroFornecedorEstrangeiro.PAIS;

            modelo.Solicitacao.Fluxo.ID   = solicitacao.FLUXO_ID;
            modelo.Solicitacao.Fluxo.Nome = solicitacao.Fluxo.FLUXO_NM;
        }
コード例 #5
0
 public static void PopularEndereco(FichaCadastralWebForLinkVM ficha, SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor)
 {
     //ficha.Bairro = solicitacaoCadastroFornecedor.BAIRRO;
     //ficha.Cep = solicitacaoCadastroFornecedor.CEP;
     //ficha.Cidade = solicitacaoCadastroFornecedor.CIDADE;
     //ficha.Complemento = solicitacaoCadastroFornecedor.COMPLEMENTO;
     //ficha.Endereco = solicitacaoCadastroFornecedor.ENDERECO;
     //ficha.Numero = solicitacaoCadastroFornecedor.NUMERO;
     //ficha.Pais = solicitacaoCadastroFornecedor.PAIS;
     //ficha.Estado = solicitacaoCadastroFornecedor.UF;
     //ficha.TipoLogradouro = solicitacaoCadastroFornecedor.TP_LOGRADOURO;
     Mapper.Map <FichaCadastralWebForLinkVM>(solicitacaoCadastroFornecedor);
 }
コード例 #6
0
        public static void PopularAcompanhamentoAmpliacao(this ControleSolicitacaoController controller, FichaCadastralWebForLinkVM modelo, SOLICITACAO solicitacao)
        {
            SolicitacaoCadastroFornecedor solicitacaoExpansaoFornecedor = solicitacao.SolicitacaoCadastroFornecedor.First();

            Fornecedor fornecedor = PJpFbp.BuscarPorIdComRelacionamentos((int)solicitacao.PJPF_ID);
            List <DocumentosDoFornecedor> documentosFornecedor = fornecedor.DocumentosDoFornecedor.ToList();

            modelo.DadosEnderecos = Mapper.Map <List <SOLICITACAO_MODIFICACAO_ENDERECO>, List <DadosEnderecosVM> >(solicitacao.WFD_SOL_MOD_ENDERECO.ToList());
            modelo.DadosBancarios = Mapper.Map <List <SolicitacaoModificacaoDadosBancario>, List <DadosBancariosVM> >(solicitacao.SolicitacaoModificacaoDadosBancario.ToList());
            modelo.DadosContatos  = Mapper.Map <List <SolicitacaoModificacaoDadosContato>, List <DadosContatoVM> >(solicitacao.SolicitacaoModificacaoDadosContato.ToList());

            modelo.SolicitacaoFornecedor = new SolicitacaoFornecedorVM
            {
                Solicitacao = false,
                Documentos  = documentosFornecedor.Select(d => new SolicitacaoDocumentosVM
                {
                    ID        = d.ID,
                    Documento =
                        d.DescricaoDeDocumentos.TipoDeDocumento.DESCRICAO + " - " +
                        d.DescricaoDeDocumentos.DESCRICAO,
                    DataValidade  = d.DATA_VENCIMENTO,
                    NomeArquivo   = d.NOME_ARQUIVO,
                    ArquivoID     = d.ARQUIVO_ID,
                    SolicitacaoID = d.SOLICITACAO_ID
                }).ToList()
            };

            // Popula a view model FichaCadastralVM
            modelo.CategoriaId   = solicitacao.Fornecedor.WFD_CONTRATANTE_PJPF.First(x => x.CONTRATANTE_ID == solicitacao.CONTRATANTE_ID).CATEGORIA_ID ?? 0;
            modelo.CategoriaNome = solicitacao.Fornecedor.WFD_CONTRATANTE_PJPF.First(x => x.CONTRATANTE_ID == solicitacao.CONTRATANTE_ID).WFD_PJPF_CATEGORIA.DESCRICAO;
            modelo.ID            = fornecedor.ID;
            modelo.ContratanteID = solicitacao.CONTRATANTE_ID;
            Mapeamento.PopularDadosReceita(modelo, fornecedor);
            Mapeamento.PopularEndereco(modelo, fornecedor);
            modelo.Observacao = solicitacaoExpansaoFornecedor.OBSERVACAO;

            modelo.Solicitacao = new SolicitacaoVM
            {
                Fluxo = new FluxoVM
                {
                    ID = 3
                }
            };

            controller.FornecedorRobo(modelo, RetornaFornecedor(solicitacao));
        }
コード例 #7
0
        public static void PopularDadosReceita(FichaCadastralWebForLinkVM ficha, SolicitacaoCadastroFornecedor fornNacional)
        {
            //ficha.RazaoSocial = fornNacional.RAZAO_SOCIAL;
            //ficha.NomeFantasia = fornNacional.NOME_FANTASIA;
            //ficha.Nome = fornNacional.NOME;
            //ficha.CNAE = fornNacional.CNAE;
            //ficha.InscricaoEstadual = fornNacional.INSCR_ESTADUAL;
            //ficha.InscricaoMunicipal = fornNacional.INSCR_MUNICIPAL;
            //ficha.TipoFornecedor = fornNacional.PJPF_TIPO;
            //ficha.Observacao = fornNacional.OBSERVACAO;
            //ficha.CategoriaId = fornNacional.CATEGORIA_ID;

            Mapper.Map <FichaCadastralWebForLinkVM>(fornNacional);

            if (ficha.TipoFornecedor != 2)
            {
                ficha.CNPJ_CPF = fornNacional.PJPF_TIPO == 3
                    ? Convert.ToUInt64(fornNacional.CPF).ToString(@"000\.000\.000\-00")
                    : Convert.ToUInt64(fornNacional.CNPJ).ToString(@"00\.000\.000\/0000\-00");
            }
        }
コード例 #8
0
        public static void AmpliacaoFornecedor(this AprovacaoController controller, FichaCadastralWebForLinkVM ficha, SOLICITACAO solicitacao)
        {
            SolicitacaoCadastroFornecedor fornExpansao = solicitacao.SolicitacaoCadastroFornecedor.First();

            Fornecedor fornecedor = controller.Db.WFD_PJPF
                                    .Include("BancoDoFornecedor")
                                    .Include("WFD_PJPF_CONTATOS")
                                    .Include("DocumentosDeFornecedor.DescricaoDeDocumentos.TipoDeDocumento")
                                    .FirstOrDefault(c => c.ID == solicitacao.PJPF_ID);

            List <DocumentosDoFornecedor> documentos = fornecedor.DocumentosDoFornecedor.ToList();

            ficha.DadosBancarios = controller.ListarSolicitacaoModificacaoBancario(solicitacao, false);

            ficha.DadosContatos = controller.ListarSolicitacaoDadosContato(solicitacao, false);

            ficha.SolicitacaoFornecedor.Solicitacao = true;

            ficha.SolicitacaoFornecedor.Documentos =
                Mapper.Map <List <SolicitacaoDeDocumentos>, List <SolicitacaoDocumentosVM> >(solicitacao.SolicitacaoDeDocumentos.Where(x => x.ARQUIVO_ID != null).ToList());

            // Popula a view model FichaCadastralVM
            ficha.ID            = fornecedor.ID;
            ficha.ContratanteID = solicitacao.CONTRATANTE_ID;
            ficha.CNPJ_CPF      = fornecedor.TIPO_PJPF_ID == 3 ? Convert.ToUInt64(fornecedor.CPF).ToString(@"000\.000\.000\-00") : Convert.ToUInt64(fornecedor.CNPJ).ToString(@"00\.000\.000\/0000\-00");

            ficha.Observacao  = fornExpansao.OBSERVACAO;
            ficha.CategoriaId = fornExpansao.CATEGORIA_ID;

            Mapeamento.PopularDadosReceita(ficha, fornecedor);
            Mapeamento.PopularEndereco(ficha, fornecedor);

            ficha.Solicitacao = new SolicitacaoVM
            {
                Fluxo = new FluxoVM
                {
                    ID = solicitacao.FLUXO_ID
                }
            };
        }
コード例 #9
0
        public static void CadastroFornecedor(this AprovacaoController controller, FichaCadastralWebForLinkVM ficha, SOLICITACAO solicitacao)
        {
            SolicitacaoCadastroFornecedor fornNacional = solicitacao.SolicitacaoCadastroFornecedor.First();

            ficha.ID = fornNacional.ID;
            ficha.SolicitacaoFornecedor.Solicitacao = true;
            ficha.ContratanteID        = solicitacao.CONTRATANTE_ID;
            ficha.Solicitacao.Fluxo.ID = solicitacao.FLUXO_ID;

            Mapeamento.PopularDadosReceita(ficha, fornNacional);
            Mapeamento.PopularEndereco(ficha, fornNacional);

            ficha.DadosBancarios = controller.ListarSolicitacaoModificacaoBancario(solicitacao, false);
            ficha.DadosEnderecos = Mapper.Map <List <DadosEnderecosVM> >(solicitacao.WFD_SOL_MOD_ENDERECO.ToList());
            ficha.DadosContatos  = controller.ListarSolicitacaoDadosContato(solicitacao, true);

            if (ficha.TipoFornecedor != 2)
            {
                ficha.SolicitacaoFornecedor.Documentos =
                    Mapper.Map <List <SolicitacaoDeDocumentos>, List <SolicitacaoDocumentosVM> >(solicitacao.SolicitacaoDeDocumentos.Where(x => x.ARQUIVO_ID != null).ToList());
            }
        }
コード例 #10
0
        private CONTRATANTE CriarContratante(string documento, SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor)
        {
            CONTRATANTE contratanteAncora = new CONTRATANTE()
            {
                TIPO_CADASTRO_ID    = (int)EnumTiposFornecedor.EmpresaNacional,
                TIPO_CONTRATANTE_ID = (int)EnumTipoContratante.FornecedorIndividual,
                DATA_CADASTRO       = DateTime.Now,
                DATA_NASCIMENTO     = solicitacaoCadastroFornecedor.DT_NASCIMENTO,
                NOME_FANTASIA       = solicitacaoCadastroFornecedor.NOME_FANTASIA,
                RAZAO_SOCIAL        = solicitacaoCadastroFornecedor.RAZAO_SOCIAL,
                CNPJ     = documento,
                ATIVO    = true,
                ATIVO_DT = DateTime.Now,
                ESTILO   = "Azul"
            };

            var papel = _papelRepository.BuscarPorContratanteIdETipoPapelId(1, 50);

            contratanteAncora.WFL_PAPEL.Add(new WFL_PAPEL
            {
                PAPEL_NM    = papel.PAPEL_NM,
                PAPEL_SGL   = papel.PAPEL_SGL,
                PAPEL_TP_ID = papel.PAPEL_TP_ID
            });

            contratanteAncora.WAC_PERFIL.Add(new Domain.Models.Perfil
            {
                PERFIL_DSC = "Administrador do Sistema",
                PERFIL_NM  = "Administrador"
            });
            contratanteAncora.WAC_PERFIL.Add(new Domain.Models.Perfil
            {
                PERFIL_DSC = "Usuário do Sistema",
                PERFIL_NM  = "Usuário"
            });
            return(contratanteAncora);
        }
コード例 #11
0
        /// <summary>
        /// Será atualizado o código de ERP se o mesmo não vier nulo apenas nos retorno de Cad.Fornecedor Nacional e Nacional Direto
        /// </summary>
        /// <param name="db">contexto do Banco de Dados</param>
        /// <param name="lstRetorno">Retorno do arquivo</param>
        private void AtualizarCodigoERP(WebForLinkContexto db, List <MensagensCarga> lstRetorno)
        {
            try
            {
                lstRetorno.ForEach(
                    x =>
                {
                    var solicitacao = db.WFD_SOLICITACAO
                                      .Include(y => y.Usuario)
                                      .Include(y => y.Fluxo)
                                      .FirstOrDefault(ws => ws.ID == x.SolicitacaoId);
                    bool mandaEmail = false;
                    switch (solicitacao.Fluxo.FLUXO_TP_ID)
                    {
                    case (int)EnumTiposFluxo.CadastroFornecedorNacional:
                    case (int)EnumTiposFluxo.CadastroFornecedorNacionalDireto:
                        if (x.CodigoERP > 0)
                        {
                            SolicitacaoCadastroFornecedor solCadastro = db.WFD_SOL_CAD_PJPF
                                                                        .FirstOrDefault(y => y.SOLICITACAO_ID == x.SolicitacaoId);

                            solCadastro.COD_PJPF_ERP    = x.CodigoERP.ToString();
                            db.Entry(solCadastro).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                        mandaEmail = true;
                        break;
                    }
                    AtualizarSolicitacao(db, solicitacao.ID, solicitacao.Fluxo.FLUXO_TP_ID, solicitacao.CONTRATANTE_ID, solicitacao.Usuario.ID, solicitacao.Usuario.EMAIL, mandaEmail);
                }
                    );
            }
            catch (Exception)
            {
            }
        }
コード例 #12
0
        public JsonResult ReceitaFederalCPF(string cpf, int contratante, string dataNascimento, int tipoFornecedor, int solicitacaoId)
        {
            string path = Server.MapPath("~/");

            RoboReceitaCPF RoboCPF = new RoboReceitaCPF();

            RoboCPF = RoboCPF.CarregaRoboCPF(cpf, dataNascimento, path);

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

            try
            {
                //WFD_SOLICITACAO solicitacao = Db.WFD_SOLICITACAO.Include("WFD_SOL_CAD_PJPF").Include("WFD_PJPF_ROBO").FirstOrDefault(s => s.ID == solicitacaoId);
                SOLICITACAO solicitacao = _solicitacaoService.BuscarPorId(solicitacaoId);
                SolicitacaoCadastroFornecedor solForn = solicitacao.SolicitacaoCadastroFornecedor.First();
                ROBO robo = solicitacao.ROBO.FirstOrDefault();

                RoboCPF.GravaRoboCpf(RoboCPF, ref robo);
                //_solicitacaoService.Alterar(solicitacao);
                //_repositorios.roboBP.Inserir(robo);
                //Db.Entry(robo).State = EntityState.Modified;

                if (RoboCPF.Code < 100)
                {
                    if (RoboCPF.Code == 1)
                    {
                        solForn.PJPF_TIPO       = tipoFornecedor;
                        solForn.NOME            = RoboCPF.Data.Nome;
                        solForn.CPF             = cpf.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");
                        solForn.WFD_SOLICITACAO = solicitacao;

                        //Db.Entry(solForn).State = EntityState.Modified;
                        //_repositorios.solicitacaoCadastroPJPFBP.Alterar(solForn);
                    }
                }

                ROBO_LOG entityLog = new ROBO_LOG()
                {
                    COD_RETORNO = RoboCPF.Code,
                    DATA        = DateTime.Now,
                    MENSAGEM    = RoboCPF.Data.Message,
                    ROBO        = EnumRobo.ReceitaFederalPF.ToString(),
                    //WFD_SOLICITACAO = solicitacao,
                    CONTRATANTE_ID = contratante
                };

                solicitacao.WFD_PJPF_ROBO_LOG.Add(entityLog);
                _solicitacaoService.Alterar(solicitacao);
                //_solicitacaoService.Dispose();
                RoboCPF.SolicitacaoID = solicitacao.ID;
            }
            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!";
                //dbContextTransaction.Rollback();
                Log.Error(string.Format("Error ao executar o método ReceitaFederalCPF: {0}", ex));
            }

            return(Json(RoboCPF));
        }
コード例 #13
0
        public ActionResult Index(int solicitacaoID)
        {
            try
            {
                //TODO: Nelson Neto - RETIRAR OS COMENTÁRIOS
                //int idSolicitacao = 124;
                int solicitacaoTipoID = 1;
                int papelID           = 1;
                var contratanteID     = (int)Geral.PegaAuthTicket("ContratanteId");

                ViewBag.Fluxo  = solicitacaoTipoID;
                ViewBag.Bancos = _bancoBP.ListarTodosPorNome();

                #region Ficha Cadastral

                FichaCadastralWebForLinkVM modelo = new FichaCadastralWebForLinkVM
                {
                    DadosBancarios        = new List <DadosBancariosVM>(),
                    DadosContatos         = new List <DadosContatoVM>(),
                    SolicitacaoFornecedor =
                        new SolicitacaoFornecedorVM {
                        Documentos = new List <SolicitacaoDocumentosVM>()
                    },
                    Aprovacao   = new AprovacaoVM(),
                    Solicitacao = new SolicitacaoVM {
                        Fluxo = new FluxoVM()
                    },
                    DadosBloqueio      = new DadosBloqueioVM(),
                    FornecedorRobo     = new FornecedorRoboVM(),
                    FornecedoresUnspsc = new List <FornecedorUnspscVM>()
                };

                #region BPs

                SOLICITACAO solicitacao = _solicitacaoService.BuscarPorSolicitacaoId(solicitacaoID);
                if (solicitacao == null)
                {
                    throw new Exception(string.Format("Solicitação com id {0} inexistente.", solicitacaoID));
                }
                SolicitacaoCadastroFornecedor cadastroPJPF = solicitacao.SolicitacaoCadastroFornecedor.FirstOrDefault();
                List <SolicitacaoModificacaoDadosBancario> cadastroBanco    = solicitacao.SolicitacaoModificacaoDadosBancario.ToList();
                List <SolicitacaoModificacaoDadosContato>  cadastroContatos = solicitacao.SolicitacaoModificacaoDadosContato.ToList();

                #endregion

                FichaCadastralWebForLinkVM fichaCadastralVM = new FichaCadastralWebForLinkVM()
                {
                    ID                      = solicitacao.ID,
                    ContratanteID           = solicitacao.CONTRATANTE_ID,
                    ContratanteFornecedorID = 0,
                    NomeEmpresa             = cadastroPJPF != null
                        ? cadastroPJPF.RAZAO_SOCIAL
                        : string.Empty,
                    RazaoSocial  = cadastroPJPF.RAZAO_SOCIAL,
                    NomeFantasia = cadastroPJPF.NOME_FANTASIA,
                    //CNAE = cadastroPJPF.CNAE,
                    CNPJ_CPF           = cadastroPJPF.CNPJ ?? cadastroPJPF.CPF,
                    InscricaoEstadual  = cadastroPJPF.INSCR_ESTADUAL,
                    InscricaoMunicipal = cadastroPJPF.INSCR_MUNICIPAL,
                    TipoLogradouro     = cadastroPJPF.TP_LOGRADOURO,
                    Endereco           = cadastroPJPF.ENDERECO,
                    Numero             = cadastroPJPF.NUMERO,
                    Complemento        = cadastroPJPF.COMPLEMENTO,
                    Cep            = cadastroPJPF.CEP,
                    Bairro         = cadastroPJPF.BAIRRO,
                    Cidade         = cadastroPJPF.CIDADE,
                    Estado         = cadastroPJPF.UF,
                    Pais           = cadastroPJPF.PAIS,
                    Observacao     = cadastroPJPF.OBSERVACAO,
                    TipoFornecedor = cadastroPJPF.PJPF_TIPO,
                    DadosBancarios = cadastroBanco.Select(x => new DadosBancariosVM()
                    {
                        Agencia             = x.AGENCIA,
                        Digito              = x.AG_DV,
                        Banco               = x.BANCO_ID,
                        ContaCorrente       = x.CONTA,
                        ContaCorrenteDigito = x.CONTA_DV,
                        NomeBanco           = x.T_BANCO.BANCO_NM,
                    }).ToList(),
                    DadosContatos = cadastroContatos.Select(x => new DadosContatoVM()
                    {
                        Celular      = x.CELULAR,
                        ContatoID    = x.CONTATO_PJPF_ID ?? 0,
                        EmailContato = x.EMAIL,
                        NomeContato  = x.NOME,
                        Telefone     = x.TELEFONE
                    }).ToList()
                };

                #endregion


                List <QUESTIONARIO> questionarioList = _cadastroUnicoBP.BuscarPorIdContratante(contratanteID);
                foreach (QUESTIONARIO questionario in questionarioList)
                {
                    List <QUESTIONARIO_ABA> abasQuestionario = questionario
                                                               .QIC_QUEST_ABA
                                                               .OrderBy(x => x.ORDEM)
                                                               .ToList();
                    List <AbaVM> questionarioAbas = new List <AbaVM>();
                    foreach (QUESTIONARIO_ABA aba in abasQuestionario)
                    {
                        List <QUESTIONARIO_PERGUNTA> perguntasAba = aba
                                                                    .QIC_QUEST_ABA_PERG
                                                                    .OrderBy(x => x.ORDEM)
                                                                    .ToList();
                        List <PerguntaVM> abaPerguntas = new List <PerguntaVM>();
                        foreach (QUESTIONARIO_PERGUNTA pergunta in perguntasAba)
                        {
                            QUESTIONARIO_PAPEL papelPergunta = pergunta
                                                               .QIC_QUEST_ABA_PERG_PAPEL
                                                               .FirstOrDefault(x => x.PAPEL_ID == papelID);
                            WFD_INFORM_COMPL resposta = pergunta
                                                        .WFD_INFORM_COMPL
                                                        .FirstOrDefault(x => x.PERG_ID == pergunta.ID);
                            if (papelPergunta.LEITURA)
                            {
                                PerguntaVM perguntaVM = Mapper.Map <PerguntaVM>(pergunta);
                                Mapper.Map <PerguntaVM>(papelPergunta);

                                if (pergunta.TP_DADO == "DOMINIO" && pergunta.DOMINIO == true)
                                {
                                    perguntaVM.DominioList =
                                        Mapper.Map <List <QUESTIONARIO_RESPOSTA>, List <SelectListItem> >(pergunta
                                                                                                          .QIC_QUEST_ABA_PERG_RESP
                                                                                                          .OrderBy(x => x.ORDEM).ToList());

                                    perguntaVM.DominioList.Insert(0,
                                                                  new SelectListItem()
                                    {
                                        Value    = "0",
                                        Text     = "--Selecione",
                                        Selected = true
                                    });
                                    perguntaVM.DominioListId = !string.IsNullOrEmpty(perguntaVM.Resposta)
                                        ? int.Parse(perguntaVM.Resposta)
                                        : 0;
                                }

                                if (pergunta.PERG_PAI != null)
                                {
                                    int pergPai = pergunta.PERG_PAI ?? 0;
                                    WFD_INFORM_COMPL informaCompl = _informacaoComplementarBP.BuscarPorPerguntaId(pergPai);

                                    //TODO: Validar LEITURA
                                    ///Validar se pode ser desbloqueado por resposta do pai
                                    /// pelo papel
                                    /// pela resposta anterior
                                    perguntaVM.Leitura = informaCompl != null;

                                    perguntaVM.PaiRespondido = informaCompl != null
                                        ? informaCompl.PERG_ID
                                        : 0;
                                }

                                //perguntaVM.Leitura = papelPergunta.
                                abaPerguntas.Add(perguntaVM);
                            }
                        }
                        //Mapear Lista de aba com Modelo de aba
                        AbaVM abaModelo = Mapper.Map <QUESTIONARIO_ABA, AbaVM>(aba);
                        abaModelo.PerguntaList = abaPerguntas;
                        questionarioAbas.Add(abaModelo);
                    }
                    //Mapear Lista de Questionários com Modelo de Questionários
                    QuestionarioVM questionarioModelo = Mapper.Map <QUESTIONARIO, QuestionarioVM>(questionario);
                    questionarioModelo.AbaList = questionarioAbas;
                    fichaCadastralVM.Questionarios.QuestionarioDinamicoList.Add(questionarioModelo);
                }
                return(View(fichaCadastralVM));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                ViewBag.Message = ex.Message;
                return(View(new FichaCadastralWebForLinkVM()));
            }
        }
コード例 #14
0
        public void IncluirFornecedorIndividual(string documento)
        {
            SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor = _solicitacaoCadastroRepository.Buscar(x => x.CNPJ == documento || x.CPF == documento);
            SOLICITACAO solicitacao    = solicitacaoCadastroFornecedor.WFD_SOLICITACAO;
            ROBO        roboFornecedor = solicitacaoCadastroFornecedor.WFD_PJPF_ROBO;

            Domain.Models.Fornecedor fornecedor = new Domain.Models.Fornecedor
            {
                CONTRATANTE_ID  = solicitacao.CONTRATANTE_ID,
                TIPO_PJPF_ID    = solicitacaoCadastroFornecedor.PJPF_TIPO,
                RAZAO_SOCIAL    = solicitacaoCadastroFornecedor.RAZAO_SOCIAL,
                NOME_FANTASIA   = solicitacaoCadastroFornecedor.NOME_FANTASIA,
                NOME            = solicitacaoCadastroFornecedor.NOME,
                CNPJ            = solicitacaoCadastroFornecedor.CNPJ,
                CPF             = solicitacaoCadastroFornecedor.CPF,
                CNAE            = solicitacaoCadastroFornecedor.CNAE,
                INSCR_ESTADUAL  = solicitacaoCadastroFornecedor.INSCR_ESTADUAL,
                INSCR_MUNICIPAL = solicitacaoCadastroFornecedor.INSCR_MUNICIPAL,
                ENDERECO        = solicitacaoCadastroFornecedor.ENDERECO,
                NUMERO          = solicitacaoCadastroFornecedor.NUMERO,
                COMPLEMENTO     = solicitacaoCadastroFornecedor.COMPLEMENTO,
                BAIRRO          = solicitacaoCadastroFornecedor.BAIRRO,
                CIDADE          = solicitacaoCadastroFornecedor.CIDADE,
                UF    = solicitacaoCadastroFornecedor.UF,
                CEP   = solicitacaoCadastroFornecedor.CEP,
                PAIS  = solicitacaoCadastroFornecedor.PAIS,
                ATIVO = true,
            };
            if (roboFornecedor != null && solicitacaoCadastroFornecedor.PJPF_TIPO != 2)
            {
                fornecedor.ROBO_ID = roboFornecedor.ID;
            }

            #region Unspsc
            foreach (var item in solicitacao.WFD_SOL_UNSPSC)
            {
                fornecedor.FornecedorServicoMaterialList.Add(new FORNECEDOR_UNSPSC
                {
                    SOLICITACAO_ID = solicitacao.ID,
                    UNSPSC_ID      = item.UNSPSC_ID,
                    DT_INCLUSAO    = DateTime.Now,
                    WFD_PJPF       = fornecedor
                });
            }
            #endregion

            WFD_CONTRATANTE_PJPF contratanteFornecedor = new WFD_CONTRATANTE_PJPF
            {
                CATEGORIA_ID       = solicitacaoCadastroFornecedor.CATEGORIA_ID,
                CONTRATANTE_ID     = solicitacao.CONTRATANTE_ID,
                PJPF_ID            = fornecedor.ID,
                PJPF_COD_ERP       = solicitacaoCadastroFornecedor.COD_PJPF_ERP,
                PJPF_STATUS_ID     = 1,
                PJPF_STATUS_ID_SOL = solicitacao.ID,
                TP_PJPF            = 2
            };

            #region Bancos
            foreach (var item in solicitacao.WFD_SOL_MOD_BANCO)
            {
                contratanteFornecedor.WFD_PJPF_BANCO.Add(new FORNECEDOR_BANCO
                {
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID,
                    BANCO_ID            = item.BANCO_ID,
                    AGENCIA             = item.AGENCIA,
                    AG_DV        = item.AG_DV,
                    CONTA        = item.CONTA,
                    CONTA_DV     = item.CONTA_DV,
                    ATIVO        = true,
                    DATA_UPLOAD  = item.DATA_UPLOAD,
                    NOME_ARQUIVO = item.NOME_ARQUIVO,
                    ARQUIVO_ID   = item.ARQUIVO_ID
                });
            }
            #endregion

            #region Endereços
            foreach (var solicitacaoModificacaoEndereco in solicitacao.WFD_SOL_MOD_ENDERECO)
            {
                contratanteFornecedor.WFD_PJPF_ENDERECO.Add(new FORNECEDOR_ENDERECO
                {
                    BAIRRO              = solicitacaoModificacaoEndereco.BAIRRO,
                    CEP                 = solicitacaoModificacaoEndereco.CEP,
                    CIDADE              = solicitacaoModificacaoEndereco.CIDADE,
                    COMPLEMENTO         = solicitacaoModificacaoEndereco.COMPLEMENTO,
                    ENDERECO            = solicitacaoModificacaoEndereco.ENDERECO,
                    NUMERO              = solicitacaoModificacaoEndereco.NUMERO,
                    PAIS                = solicitacaoModificacaoEndereco.PAIS,
                    T_UF                = solicitacaoModificacaoEndereco.T_UF,
                    TP_ENDERECO_ID      = solicitacaoModificacaoEndereco.TP_ENDERECO_ID,
                    UF                  = solicitacaoModificacaoEndereco.UF,
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID
                });
            }
            #endregion

            #region Contatos

            foreach (var item in solicitacao.WFD_SOL_MOD_CONTATO)
            {
                contratanteFornecedor.WFD_PJPF_CONTATOS.Add(new FORNECEDOR_CONTATOS
                {
                    CONTRAT_ORG_COMPRAS_ID = solicitacao.WFD_CONTRATANTE.WFD_CONTRATANTE_ORG_COMPRAS.First().ID,
                    CONTRATANTE_PJPF_ID    = contratanteFornecedor.ID,
                    NOME     = item.NOME,
                    EMAIL    = item.EMAIL,
                    CELULAR  = item.CELULAR,
                    TELEFONE = item.TELEFONE
                });
            }

            #endregion

            #region Documentos
            if (solicitacaoCadastroFornecedor.PJPF_TIPO != 2)
            {
                foreach (SOLICITACAO_DOCUMENTOS item in solicitacao.WFD_SOL_DOCUMENTOS)
                {
                    if (item.ARQUIVO_ID != null)
                    {
                        contratanteFornecedor.WFD_PJPF_DOCUMENTOS.Add(new FORNECEDOR_DOCUMENTOS
                        {
                            CONTRATANTE_PJPF_ID    = contratanteFornecedor.ID,
                            ARQUIVO_ID             = item.ARQUIVO_ID,
                            DATA_VENCIMENTO        = item.DATA_VENCIMENTO,
                            DESCRICAO_DOCUMENTO_ID = item.DESCRICAO_DOCUMENTO_ID,
                            LISTA_DOCUMENTO_ID     = item.LISTA_DOCUMENTO_ID,
                            OBRIGATORIO            = item.OBRIGATORIO,
                            EXIGE_VALIDADE         = item.EXIGE_VALIDADE,
                            PERIODICIDADE_ID       = item.PERIODICIDADE_ID,
                            SOLICITACAO_ID         = solicitacao.ID,
                            PJPF_ID = fornecedor.ID
                        });
                    }
                }
            }
            #endregion

            #region Informações Complementares
            foreach (var item in solicitacao.WFD_INFORM_COMPL)
            {
                contratanteFornecedor.WFD_PJPF_INFORM_COMPL.Add(new FORNECEDOR_INFORM_COMPL
                {
                    PERG_ID             = item.PERG_ID,
                    RESPOSTA            = item.RESPOSTA,
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID
                });
            }
            #endregion


            CONTRATANTE contratanteAncora = CriarContratante(documento, solicitacaoCadastroFornecedor);

            fornecedor.WFD_CONTRATANTE_PJPF.Add(contratanteFornecedor);
            contratanteAncora.WFD_CONTRATANTE_PJPF.Add(contratanteFornecedor);

            _fornecedorRepository.Inserir(fornecedor);
            _contratanteRepository.Inserir(contratanteAncora);
            _unitOfWork.Finalizar();
            CriacaoUsuarioPadrao(documento, solicitacao.WFD_SOL_MOD_CONTATO.FirstOrDefault().EMAIL);
        }
コード例 #15
0
        public void PreencherFichaCadastral(SOLICITACAO solicitacao, FichaCadastralWebForLinkVM ficha, int TpPapel)
        {
            Contratante contratante = solicitacao.Contratante;
            SolicitacaoCadastroFornecedor solicitacaoCadastroPJPF = solicitacao.SolicitacaoCadastroFornecedor.First();
            SolicitacaoFornecedorVM       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> >(
                        _cadastroUnicoBP.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 = _contratanteConfiguracaoService.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...";
            }
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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));
        }
コード例 #18
0
        public ActionResult FornecedoresExpandirFrm(FichaCadastralWebForLinkVM model, int Empresa, int Organizacao, int FluxoID, int[] DocumentoID, string[] NomeDocumento, int?[] ArquivoID, int[] BancoOrdem, int[] BancoID, int[] Banco, string[] Agencia, string[] Digito, string[] ContaCorrente, string[] ContaCorrenteDigito, int?UsarContato, int[] ContatoID, string[] NomeContato, string[] Email, string[] Telefone, string[] Celular)
        {
            int?usuarioId = (int?)Geral.PegaAuthTicket("UsuarioId");

            List <int> contratantesForn = Db.WFD_CONTRATANTE_PJPF.Where(c => c.PJPF_ID == model.ID).Select(cc => cc.CONTRATANTE_ID).ToList();

            List <Contratante> contratantes = Db.Contratante.Where(c => c.WFD_USUARIO1.Any(u => u.ID == usuarioId) && !contratantesForn.Contains(c.ID)).ToList();
            int contID = contratantes.FirstOrDefault(c => c.ID == Empresa).ID;

            ViewBag.Empresa         = new SelectList(contratantes, "ID", "RAZAO_SOCIAL", Empresa);
            ViewBag.Organizacao     = new SelectList(_organizacaoComprasBP.ListarTodosPorIdContratante(contID), "ID", "ORG_COMPRAS_DSC");
            ViewBag.Bancos          = _bancoBP.ListarTodosPorNome();
            ViewBag.EscolherContato = true;
            ViewBag.UsarContato     = UsarContato;

            model.Expansao    = new ExpansaoVM();
            model.Solicitacao = new SolicitacaoVM
            {
                Fluxo = new FluxoVM
                {
                    ID = FluxoID
                }
            };

            if (UsarContato == null)
            {
                ModelState.AddModelError("ContatosValidation", "Informe contato que deseja utilizar!");
            }

            //VERIFICA DADOS DE CONTATOS
            model.DadosContatos = new List <DadosContatoVM>();
            for (int i = 0; i < ContatoID.Length; i++)
            {
                model.DadosContatos.Add(new DadosContatoVM
                {
                    ContatoID    = ContatoID[i],
                    NomeContato  = (i < NomeContato.Length) ? NomeContato[i] : "",
                    EmailContato = (i < Email.Length) ? Email[i] : "",
                    Telefone     = (i < Telefone.Length) ? Telefone[i] : "",
                    Celular      = (i < Celular.Length) ? Celular[i] : "",
                });

                if (ContatoID[i] == UsarContato)
                {
                    if (string.IsNullOrEmpty(Email[i]))
                    {
                        ModelState.AddModelError("ContatosValidation", "Informe o email!");
                    }
                }
            }

            // VERIFICA DADOS BANCARIOS
            bool dadosBancariosCompleto = true;

            model.DadosBancarios = new List <DadosBancariosVM>();
            for (int i = 0; i < Banco.Length; i++)
            {
                bool temDadosBancario = false;

                if ((Banco[i] != 0))
                {
                    temDadosBancario = true;
                }
                if ((!string.IsNullOrEmpty(Agencia[i])))
                {
                    temDadosBancario = true;
                }
                if ((!string.IsNullOrEmpty(Digito[i])))
                {
                    temDadosBancario = true;
                }
                if ((!string.IsNullOrEmpty(ContaCorrente[i])))
                {
                    temDadosBancario = true;
                }
                if ((!string.IsNullOrEmpty(ContaCorrenteDigito[i])))
                {
                    temDadosBancario = true;
                }

                model.DadosBancarios.Add(new DadosBancariosVM
                {
                    BancoSolicitacaoID = BancoID[i],
                    Banco               = (i < Banco.Length) ? Banco[i] : 0,
                    Agencia             = (i < Agencia.Length) ? Agencia[i] : "",
                    Digito              = (i < Digito.Length) ? Digito[i] : "",
                    ContaCorrente       = (i < ContaCorrente.Length) ? ContaCorrente[i] : "",
                    ContaCorrenteDigito = (i < ContaCorrenteDigito.Length) ? ContaCorrenteDigito[i] : ""
                });

                if (temDadosBancario)
                {
                    if ((Banco[i] == 0))
                    {
                        dadosBancariosCompleto = false;
                    }
                    if ((string.IsNullOrEmpty(Agencia[i])))
                    {
                        dadosBancariosCompleto = false;
                    }
                    if (Agencia[i].Length < 4)
                    {
                        dadosBancariosCompleto = false;
                    }
                    if ((string.IsNullOrEmpty(ContaCorrente[i])))
                    {
                        dadosBancariosCompleto = false;
                    }
                }
            }
            if (!dadosBancariosCompleto)
            {
                ModelState.AddModelError("DadosBancariosValidation", "Dado Bancário Incompleto!");
            }
            if (model.DadosBancarios.Count == 0)
            {
                ModelState.AddModelError("DadosBancariosValidation", "Informe ao menos um Dado Bancário!");
            }

            //VERIFICA ANEXOS
            model.SolicitacaoFornecedor = new SolicitacaoFornecedorVM()
            {
                Solicitacao = false,
                Documentos  = new List <SolicitacaoDocumentosVM>()
            };
            if (DocumentoID != null)
            {
                for (int i = 0; i < DocumentoID.Length; i++)
                {
                    SolicitacaoDocumentosVM solicitacaoDocumentosvm = new SolicitacaoDocumentosVM()
                    {
                        ID        = DocumentoID[i],
                        Documento = NomeDocumento[i],
                        ArquivoID = ArquivoID[i]
                    };
                    model.SolicitacaoFornecedor.Documentos.Add(solicitacaoDocumentosvm);
                }
            }

            ModelState.Remove("SolicitacaoFornecedor.Assunto");
            ModelState.Remove("SolicitacaoFornecedor.DescricaoSolicitacao");

            if (ModelState.IsValid)
            {
                try
                {
                    WFD_CONTRATANTE_PJPF fornecedor = Db.WFD_CONTRATANTE_PJPF.Include("Fornecedor")
                                                      .Include("WFD_PJPF_CATEGORIA")
                                                      .FirstOrDefault(f => f.PJPF_ID == model.ID && f.CONTRATANTE_ID == model.ContratanteFornecedorID);
                    string codigoCategoria         = fornecedor.WFD_PJPF_CATEGORIA.CODIGO;
                    FORNECEDOR_CATEGORIA categoria = Db.WFD_PJPF_CATEGORIA.FirstOrDefault(c => c.CONTRATANTE_ID == Empresa && c.CODIGO == codigoCategoria);

                    SOLICITACAO solicitacao = new SOLICITACAO();
                    PopularSolicitacaoEmAprovacao(Empresa, model.ID, usuarioId, FluxoID, solicitacao);

                    Db.Entry(solicitacao).State = EntityState.Added;
                    Db.SaveChanges();

                    SolicitacaoCadastroFornecedor solforn = new SolicitacaoCadastroFornecedor
                    {
                        SOLICITACAO_ID         = solicitacao.ID,
                        EhExpansao             = true,
                        EXPANSAO_PARA_CONTR_ID = Empresa,
                        CATEGORIA_ID           = categoria.ID,
                        ORG_COMPRAS_ID         = Organizacao
                    };

                    for (int i = 0; i < BancoID.Length; i++)
                    {
                        solforn.WFD_SOLICITACAO.SolicitacaoModificacaoDadosBancario.Add(
                            new SolicitacaoModificacaoDadosBancario()
                        {
                            BANCO_PJPF_ID = BancoID[i] != 0 ? (int?)BancoID[i] : null,
                            BANCO_ID      = (Banco[i] != 0) ? Banco[i] : 0,
                            AGENCIA       = (string.IsNullOrEmpty(Agencia[i]) || String.IsNullOrWhiteSpace(Agencia[i])) ? null : Agencia[i],
                            AG_DV         = (string.IsNullOrEmpty(Digito[i]) || String.IsNullOrWhiteSpace(Digito[i])) ? null : Digito[i],
                            CONTA         = (string.IsNullOrEmpty(ContaCorrente[i]) || String.IsNullOrWhiteSpace(ContaCorrente[i])) ? null : ContaCorrente[i],
                            CONTA_DV      = (string.IsNullOrEmpty(ContaCorrenteDigito[i]) || String.IsNullOrWhiteSpace(ContaCorrenteDigito[i])) ? null : ContaCorrenteDigito[i]
                        });
                    }
                    for (int i = 0; i < ContatoID.Length; i++)
                    {
                        if (ContatoID[i] == UsarContato)
                        {
                            solforn.WFD_SOLICITACAO.SolicitacaoModificacaoDadosContato.Add(new SolicitacaoModificacaoDadosContato
                            {
                                EMAIL    = Email[i],
                                NOME     = NomeContato[i],
                                TELEFONE = Mascara.RemoverMascaraTelefone(Telefone[i]),
                                CELULAR  = Celular[i]
                            });
                        }
                    }

                    solforn.OBSERVACAO = model.Observacao;

                    Db.Entry(solforn).State = EntityState.Added;
                    Db.SaveChanges();

                    _tramite.AtualizarTramite(Empresa, solicitacao.ID, FluxoID, 1, 2, null);

                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = string.Format("Solicitação {0} de Expansão realizado com Sucesso!", solicitacao.ID) }));
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                }
            }

            return(View(model));
        }