/// <summary>
 /// Bloqueio automatico dos usuarios que ja estao com documentos com prazos atrasados
 /// </summary>
 /// <param name="db">Contexto</param>
 /// <param name="fornecedor">Id do Fornecedor</param>
 private static void InserirSolicitacaoBloqueioAtrasoDocumento(WebForLinkContexto db, int contratante, int fornecedor)
 {
     try
     {
         var         FluxoId     = db.WFL_FLUXO.FirstOrDefault(x => x.CONTRATANTE_ID == contratante && x.FLUXO_TP_ID == 110).ID;
         SOLICITACAO solicitacao = new SOLICITACAO()
         {
             CONTRATANTE_ID        = contratante,
             FLUXO_ID              = FluxoId,
             SOLICITACAO_DT_CRIA   = DateTime.Now,
             SOLICITACAO_STATUS_ID = 5,
             PJPF_ID = fornecedor,
         };
         SOLICITACAO_BLOQUEIO bloqueio = new SOLICITACAO_BLOQUEIO()
         {
             BLQ_COMPRAS_TODAS_ORG_COMPRAS = false,
             BLQ_LANCAMENTO_EMP            = true,
             BLQ_QUALIDADE_FUNCAO_BQL_ID   = 2,
             WFD_SOLICITACAO = solicitacao,
             BLQ_MOTIVO_DSC  = "Bloqueio gerado automaticamente."
         };
         db.Entry(solicitacao).State = EntityState.Added;
         db.Entry(bloqueio).State    = EntityState.Added;
         db.SaveChanges();
     }
     catch (Exception ex)
     {
         throw new WebForLinkException("Erro ao tentar inserir a solicitação de bloqueio. ", ex);
     }
 }
Пример #2
0
        public ActionResult FornecedoresBloqueioFrm(FichaCadastralWebForLinkVM model, string rdLancamento, string rdCompras, string txtAreaMotivoBloqueio, int ContratanteID, int ContratanteFornecedorID, int?ID, int?bloqueioMotivoQualidade)
        {
            if (rdLancamento == null)
            {
                ModelState.AddModelError("FornecedoresBloqueioValidation", "Informe ao menos um bloqueio de lançamento!");
            }

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

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

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

            if (ModelState.IsValid)
            {
                int         contratanteId = (int)Geral.PegaAuthTicket("ContratanteId");
                int         UsuarioId     = (int)Geral.PegaAuthTicket("UsuarioId");
                SOLICITACAO solicitacao   = new SOLICITACAO();

                try
                {
                    int FluxoId = 8;

                    if (contratanteId != 0)
                    {
                        solicitacao.CONTRATANTE_ID = contratanteId;
                    }
                    solicitacao.USUARIO_ID = UsuarioId;
                    solicitacao.PJPF_ID    = model.ID;

                    SOLICITACAO_BLOQUEIO bloqueio = new SOLICITACAO_BLOQUEIO
                    {
                        SOLICITACAO_ID                = solicitacao.ID,
                        BLQ_LANCAMENTO_TODAS_EMP      = rdLancamento == "1",
                        BLQ_LANCAMENTO_EMP            = rdLancamento == "2",
                        BLQ_COMPRAS_TODAS_ORG_COMPRAS = !string.IsNullOrEmpty(rdCompras),
                        BLQ_QUALIDADE_FUNCAO_BQL_ID   = bloqueioMotivoQualidade,
                        BLQ_MOTIVO_DSC                = txtAreaMotivoBloqueio,
                    };
                    _solicitacaoBP.CriarSolicitacaoBloqueio(solicitacao, bloqueio);
                    _tramite.AtualizarTramite(model.ContratanteID, solicitacao.ID, FluxoId, 1, 2, UsuarioId);
                }
                catch (Exception ex)
                {
                    if (solicitacao.ID != 0)
                    {
                        Db.WFD_SOLICITACAO.Remove(solicitacao);
                        Db.SaveChanges();
                        Log.Error(ex);
                        return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "Ocorreu um error para realizar o bloqueio solicitado. Por favor, tente mais tarde." }));
                    }
                }
                return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = string.Format("Solicitação {0} de Bloqueio realizado com Sucesso!", solicitacao.ID) }));
            }
            return(View());
        }
        private static void GeraBloqueioAutomatico(WebForLinkContexto db, FORNECEDORBASE pjpf, SOLICITACAO solicitacao, SOLICITACAO_BLOQUEIO bloq)
        {
            solicitacao.CONTRATANTE_ID        = pjpf.CONTRATANTE_ID;
            solicitacao.FLUXO_ID              = db.WFL_FLUXO.FirstOrDefault(x => x.CONTRATANTE_ID == pjpf.CONTRATANTE_ID && x.FLUXO_TP_ID == 110).ID;
            solicitacao.PJPF_BASE_ID          = pjpf.ID;
            solicitacao.SOLICITACAO_DT_CRIA   = DateTime.Now;
            solicitacao.SOLICITACAO_STATUS_ID = 5;

            bloq.BLQ_COMPRAS_TODAS_ORG_COMPRAS = false;
            bloq.BLQ_LANCAMENTO_EMP            = true;
            bloq.BLQ_QUALIDADE_FUNCAO_BQL_ID   = 2;
            bloq.WFD_SOLICITACAO = solicitacao;
            bloq.BLQ_MOTIVO_DSC  = "Bloqueio gerado automaticamente.";

            db.Entry(solicitacao).State = EntityState.Added;
            db.Entry(bloq).State        = EntityState.Added;
        }
        static void ChamaRobo(int pjpfId)
        {
            try
            {
                WebForLinkContexto db = new WebForLinkContexto();

                var pjpf = BuscarFonecedorBaseParaRobo(db, pjpfId);

                RoboReceitaCNPJ roboReceita    = new RoboReceitaCNPJ();
                RoboSintegra    roboSintegra   = new RoboSintegra();
                RoboSimples     roboSimples    = new RoboSimples();
                RoboReceitaCPF  roboReceitaCpf = new RoboReceitaCPF();

                if (pjpf.ROBO == null)
                {
                    pjpf.ROBO = new ROBO();
                }

                bool validaReceita  = (pjpf.ROBO.ID == 0 || pjpf.ROBO.RF_CONSULTA_DTHR == null);
                bool validaSintegra = (pjpf.ROBO.ID == 0 || pjpf.ROBO.SINT_CONSULTA_DTHR == null);
                bool validaSimples  = (pjpf.ROBO.ID == 0 || pjpf.ROBO.SN_CONSULTA_DTHR == null);

                if (pjpf.PJPF_TIPO == 1)
                {
                    if (validaReceita && pjpf.CNPJ != null)
                    {
                        roboReceita = roboReceita.CarregaRoboCNPJ(pjpf.CNPJ, path);

                        var             robo            = pjpf.ROBO;
                        RoboReceitaCNPJ roboReceitaCnpj = new RoboReceitaCNPJ();
                        roboReceitaCnpj.GravaRoboReceita(roboReceita, ref robo);

                        GravaLog(db, roboReceita.Code, roboReceita.Data.Message, EnumRobo.ReceitaFederal.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }

                    if (validaSintegra && pjpf.ROBO.RF_UF != null)
                    {
                        roboSintegra = roboSintegra.CarregaSintegra(pjpf.ROBO.RF_UF, pjpf.CNPJ, path);

                        var          robo            = pjpf.ROBO;
                        RoboSintegra roboSintegraObj = new RoboSintegra();
                        roboSintegraObj.GravaRoboSintegra(roboSintegra, ref robo);

                        GravaLog(db, roboSintegra.Code, roboSintegra.Data.Message, EnumRobo.Sintegra.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }

                    if (validaSimples && pjpf.CNPJ != null)
                    {
                        roboSimples = roboSimples.CarregaSimplesCNPJ(pjpf.CNPJ, path);

                        var         robo           = pjpf.ROBO;
                        RoboSimples roboSimplesObj = new RoboSimples();
                        roboSimplesObj.GravaRoboSimples(roboSimples, ref robo);

                        GravaLog(db, roboSimples.Code, roboSimples.Data.Message, EnumRobo.SimplesNacional.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }
                }

                // Pessoa Fisica
                if (pjpf.PJPF_TIPO == 3)
                {
                    if (validaReceita && pjpf.CPF != null)
                    {
                        DateTime nasc = (DateTime)pjpf.DT_NASCIMENTO;
                        roboReceitaCpf = roboReceitaCpf.CarregaRoboCPF(pjpf.CPF, nasc.ToString("dd/MM/yyyy"), path);

                        var            robo       = pjpf.ROBO;
                        RoboReceitaCPF roboCpfObj = new RoboReceitaCPF();
                        roboCpfObj.GravaRoboCpf(roboReceitaCpf, ref robo);

                        GravaLog(db, roboReceitaCpf.Code, roboReceitaCpf.Data.Message, EnumRobo.ReceitaFederalPF.ToString(), pjpf.CONTRATANTE_ID, pjpf.ID);
                    }
                }

                #region BLOQUEIO

                bool ReceitaIrregular = false, ReceitaInativa = false, SintegraNaoHabilitado = false;

                if (pjpf.PJPF_TIPO == 1)
                {
                    ReceitaInativa        = (!String.IsNullOrEmpty(roboReceita.Data.SituacaoCadastral) && roboReceita.Data.SituacaoCadastral.ToUpper() != "ATIVA");
                    SintegraNaoHabilitado = (!String.IsNullOrEmpty(roboSintegra.Data.SituacaoCadastral) && roboSintegra.Data.SituacaoCadastral == "HABILITADO ATIVO" && roboSintegra.Data.SituacaoCadastral == "HABILITADO");
                }
                else
                {
                    ReceitaIrregular = (!String.IsNullOrEmpty(roboReceitaCpf.Data.SituacaoCadastral) && roboReceitaCpf.Data.SituacaoCadastral.ToUpper() != "REGULAR");
                }

                SOLICITACAO          solicitacao = new SOLICITACAO();
                SOLICITACAO_BLOQUEIO bloq        = new SOLICITACAO_BLOQUEIO();

                if (ReceitaInativa || SintegraNaoHabilitado || ReceitaIrregular)
                {
                    var BloqManual = db.WFD_CONTRATANTE_CONFIG.FirstOrDefault(x => x.CONTRATANTE_ID == pjpf.CONTRATANTE_ID).BLOQUEIO_MANUAL;
                    if (!BloqManual)
                    {
                        GeraBloqueioAutomatico(db, pjpf, solicitacao, bloq);
                    }
                }

                #endregion

                if (pjpf.ROBO.RF_CONSULTA_DTHR != null && pjpf.ROBO.SINT_CONSULTA_DTHR != null && pjpf.ROBO.SN_CONSULTA_DTHR != null)
                {
                    pjpf.ROBO_EXECUTADO = true;
                }
                if (pjpf.ROBO.RF_CONTADOR_TENTATIVA >= 3 && pjpf.ROBO.SINT_CONTADOR_TENTATIVA >= 3 && pjpf.ROBO.SN_CONTADOR_TENTATIVA >= 3)
                {
                    pjpf.ROBO_TENTATIVAS_EXCEDIDAS = true;
                }

                ContratanteId   = pjpf.CONTRATANTE_ID;
                DataSolicitacao = (DateTime)pjpf.DT_SOLICITACAO_ROBO;

                atualizaPJPFBase(db, pjpf);

                db.Entry(pjpf).State = EntityState.Modified;
                db.SaveChanges();

                //ATUALIZA TRAMITE SE HOUVER CRIAÇÃO DE BLOQUEIO
                if (ReceitaInativa || SintegraNaoHabilitado)
                {
                    int papel = db.WFL_PAPEL.FirstOrDefault(x => x.CONTRATANTE_ID == pjpf.CONTRATANTE_ID && x.PAPEL_TP_ID == 10).ID;
                    _tramite.AtualizarTramite(pjpf.CONTRATANTE_ID, solicitacao.ID, solicitacao.FLUXO_ID, papel, 2, null);
                }
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    foreach (var ve in eve.ValidationErrors)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("Error ao percorrer a lista 'lstFornecedorRobo' exception: {0}", ex));
            }
        }