private void CriarSolicitacaoDocumento(FichaCadastralWebForLinkVM model)
        {
            var solicitacao = CriarSolicitacaoDocumentos(model, (int)EnumTiposFluxo.ModificacaoDocumentos);

            foreach (var item in model.SolicitacaoFornecedor.Documentos.Where(x => x.AtualizarDocOutrosContratantes == true).ToArray())
            {
                if (item.DescricaoDocumentoId_CH > 0)
                {
                    var pjpfs = _fornecedorDocumentoService.BuscarDocumentoOutrosContratantes(model.ContratanteID, model.PJPFID, item.DescricaoDocumentoId_CH);

                    foreach (var subitem in pjpfs)
                    {
                        FichaCadastralWebForLinkVM modelOutroContratante = new FichaCadastralWebForLinkVM();
                        modelOutroContratante.ContratanteID                    = subitem.CONTRATANTE_ID;
                        modelOutroContratante.PJPFID                           = subitem.PJPF_ID;
                        modelOutroContratante.SolicitacaoFornecedor            = new SolicitacaoFornecedorVM();
                        modelOutroContratante.SolicitacaoFornecedor.Documentos = new List <SolicitacaoDocumentosVM>();

                        SolicitacaoDocumentosVM doc = new SolicitacaoDocumentosVM();
                        doc.NomeArquivo          = item.NomeArquivo;
                        doc.Arquivo              = item.Arquivo;
                        doc.PorValidade          = item.PorValidade;
                        doc.DescricaoDocumentoId = item.DescricaoDocumentoId;
                        doc.ListaDocumentosID    = item.ListaDocumentosID;
                        doc.SolicitacaoID        = item.SolicitacaoID;

                        modelOutroContratante.SolicitacaoFornecedor.Documentos.Add(doc);

                        CriarSolicitacaoDocumentos(modelOutroContratante, (int)EnumTiposFluxo.ModificacaoDocumentos);
                    }
                }
            }
        }
Esempio n. 2
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));
        }