public Object Accion(Object oDatos)
        {
            Object oResultado = null;

            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = Constantes.ProcesoTipo.SOLICITUD;

            oResultado = new SIT_SNT_SOLICITANTEDao(_cn, _transaction, _sDataAdapter).dmlAgregar(_afdEdoDataMdl.solicitante);
            oResultado = new SIT_SOL_SOLICITUDDao(_cn, _transaction, _sDataAdapter).dmlAgregar(_afdEdoDataMdl.solicitud);

            _afdEdoDataMdl.solClave = _afdEdoDataMdl.solicitud.solclave;

            /* CREAMOS EL SEGUIMIENTO DE LA SOLICITUD */

            SIT_SOL_SEGUIMIENTO solSegMdl = new SIT_SOL_SEGUIMIENTO(
                solclave: _afdEdoDataMdl.solClave,
                prcclave: Constantes.ProcesoTipo.SOLICITUD,
                segmultiple: AfdConstantes.MULTIPLE.NO,
                segfecini: new DateTime(_afdEdoDataMdl.solicitud.solfecsol.Ticks),
                segfecfin: new DateTime(),
                segfecestimada: _afdEdoDataMdl.ID_FecEstimada,
                segfeccalculo: new DateTime(),
                segfecamp: new DateTime(),
                segdiassemaforo: 0,
                segdiasnolab: 0,
                segsemaforocolor: 0,
                segultimonodo: 0,
                segedoproceso: AfdConstantes.PROCESO_ESTADO.EN_EJECUCION,
                afdclave: _afdEdoDataMdl.ID_ClaAfd,
                repclave: null,
                usrclave: _afdEdoDataMdl.usrClaveOrigen);


            oResultado = new SIT_SOL_SEGUIMIENTODao(_cn, _transaction, _sDataAdapter).dmlAgregar(solSegMdl);
            _afdEdoDataMdl.AFDseguimientoMdl = solSegMdl;

            /* CREAR NODO INAI CREAR SOLICITUD CERO*/
            SIT_RED_NODO nodoINAI = new SIT_RED_NODO {
                prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave,
                araclave       = _afdEdoDataMdl.ID_AreaInai, nodcapa = _afdEdoDataMdl.ID_Capa,
                nodatendido    = AfdConstantes.NODO.FINALIZADO, nodclave = _afdEdoDataMdl.ID_EstadoActual,
                nodfeccreacion = _afdEdoDataMdl.solicitud.solfecsol,
                nedclave       = Constantes.NodoEstado.INAI_SOLICITUD,
                usrclave       = _afdEdoDataMdl.usrClaveDestino
            };

            oResultado        = _nodoDao.dmlAgregar(nodoINAI);
            nodoINAI.nodclave = _nodoDao.iSecuencia;

            _afdEdoDataMdl.AFDnodoActMdl = nodoINAI;
            //////////////////////////////////////////// _afdEdoDataMdl.ID_EstadoActual = Constantes.NodoEstado.UT_RECIBIR_SOL;

            // Aqui voy a crear el Nodo de la UT
            _afdEdoDataMdl.ID_Capa = _afdEdoDataMdl.ID_Capa + 1;

            //GRABAMOS los archivos que vienen en la solicitud
            GrabarDocSol(_afdEdoDataMdl.solicitud.solclave);

            return(AccionBase(true));
        }
        public Object dmlUpdateNodoRegresar(SIT_RED_NODO dtoDatos)
        {
            String sqlQuery = " update  SIT_RED_NODO"
                              + " SET  nodregresar = :P0 "
                              + " where   nodclave = :P1 ";

            return(EjecutaDML(sqlQuery, dtoDatos.nodregresar, dtoDatos.nodclave));
        }
        public Object dmlUpdateNodoAtendido(SIT_RED_NODO dtoDatos)
        {
            String sqlQuery = " update  SIT_RED_NODO"
                              + " SET  nodatendido = :P0 "
                              + " where  nodclave = :P1 ";

            return(EjecutaDML(sqlQuery, dtoDatos.nodatendido, dtoDatos.nodclave));
        }
        public Object dmlAgregar(SIT_RED_NODO oDatos)
        {
            iSecuencia = SecuenciaDML("SEC_SIT_RED_NODO");
            String sSQL = " INSERT INTO SIT_RED_NODO( perclave, nodfeclectura, nodusrausencia, usrclave, prcclave, solclave, araclave, nodcapa, nodatendido, nedclave, nodfeccreacion, nodclave, nodregresar) VALUES (  :P0, :P1, :P2, :P3, :P4, :P5, :P6, :P7, :P8, :P9, :P10, :P11, :P12) ";

            EjecutaDML(sSQL, oDatos.perclave, oDatos.nodfeclectura, oDatos.nodusrausencia, oDatos.usrclave, oDatos.prcclave, oDatos.solclave, oDatos.araclave, oDatos.nodcapa, oDatos.nodatendido, oDatos.nedclave, oDatos.nodfeccreacion, iSecuencia, oDatos.nodregresar);
            return(iSecuencia);
        }
Exemple #5
0
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.RESPONDER)
            {
                return(ResponderSol());
            }
            else if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.SI;

                //BUSCAMOS QUIEN ES EL QUE ESTA ATENIDNEDO LA SOLICITUD.. PARA CREAR LA BARRERA
                SIT_SOL_SEGUIMIENTO solSegBuscar = new SIT_SOL_SEGUIMIENTO();
                solSegBuscar.solclave = _afdEdoDataMdl.solClave;
                solSegBuscar.prcclave = iClaveProceso;

                SIT_SOL_SEGUIMIENTO segAux = _segDao.dmlSelectID(solSegBuscar);
                _afdEdoDataMdl.AFDseguimientoMdl.usrclave = segAux.usrclave;

                SIT_RED_NODO nodoNvoPRUDanalizar = ExisteNodo(_afdEdoDataMdl.solClave, Constantes.NodoEstado.PRUD_REVISARRESP_SOLICITUD, (int)segAux.usrclave, _afdEdoDataMdl.ID_Capa + 1);

                // BUSCAR QUIEN ATIENDE LA SOLICUTD.... PARA BUSCAR LE NODO...
                if (nodoNvoPRUDanalizar == null)
                {
                    // CREAR NODO ACTUAL SIGUIENTE DE LA PRUFanalizar que es la barrera
                    nodoNvoPRUDanalizar = new SIT_RED_NODO
                    {
                        prcclave       = iClaveProceso,
                        solclave       = _afdEdoDataMdl.solClave,
                        araclave       = _afdEdoDataMdl.ID_AreaUT,
                        nodcapa        = _afdEdoDataMdl.ID_Capa + 1,
                        nodatendido    = AfdConstantes.NODO.INDETERMINADO,
                        nedclave       = Constantes.NodoEstado.PRUD_REVISARRESP_SOLICITUD,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion,
                        nodclave       = Constantes.General.ID_PENDIENTE,
                        usrclave       = segAux.usrclave,
                        perclave       = Constantes.Perfil.PRUT
                    };
                    _nodoDao.dmlAgregar(nodoNvoPRUDanalizar);
                }

                SIT_RED_NODORESP oNodoResp = _redNodoRespDao.dmlSelectRespUnica(_afdEdoDataMdl.AFDnodoActMdl.nodclave);
                _afdEdoDataMdl.repClave = oNodoResp.repclave;

                return(Turnar(_afdEdoDataMdl, _nodoDao.iSecuencia));
            }
            else if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.ASIGNAR)
            {
                Asignar();
            }

            return(0);
        }
Exemple #6
0
        protected SIT_RED_NODO ExisteNodo(long lFolio, int iNodoEstado, int iUsuario, int iCapa)
        {
            SIT_RED_NODO oNodoBuscar = new SIT_RED_NODO();

            oNodoBuscar.solclave = lFolio;
            oNodoBuscar.nodclave = iNodoEstado;
            oNodoBuscar.usrclave = iUsuario;
            oNodoBuscar.nodcapa  = iCapa;

            // verificar si bien en nulo
            return(_nodoDao.dmlSelectNodoExiste(oNodoBuscar));
        }
Exemple #7
0
        protected Object Turnar(AfdEdoDataMdl afdDataMdl, long nodRegresar)
        {
            object oResultado     = null;
            Int32  iTipoAristaIni = afdDataMdl.rtpclave;

            SIT_RED_NODO nodoInicial = _nodoDao.dmlSelectNodoID(afdDataMdl.AFDnodoActMdl.nodclave);

            SIT_RESP_TURNARDao     turnarDao = new SIT_RESP_TURNARDao(_cn, _transaction, _sDataAdapter);
            List <SIT_RESP_TURNAR> lstTurnar = turnarDao.dmlSelectTurnarResp(afdDataMdl.repClave);

            foreach (SIT_RESP_TURNAR usrTurnar in lstTurnar)
            {
                afdDataMdl.ID_EstadoActual = (int)nodoInicial.nedclave;
                afdDataMdl.AFDnodoActMdl   = nodoInicial;
                afdDataMdl.rtpclave        = iTipoAristaIni;
                afdDataMdl.usrClaveDestino = usrTurnar.usrclave;
                afdDataMdl.Observacion     = usrTurnar.turinstruccion;
                afdDataMdl.ID_AreaDestino  = usrTurnar.araclave;
                afdDataMdl.ID_Capa         = nodoInicial.nodcapa;
                oResultado = AccionBase(true);

                afdDataMdl.AFDnodoActMdl.nodregresar = nodRegresar;
                _nodoDao.dmlUpdateNodoRegresar(afdDataMdl.AFDnodoActMdl);

                // sera uno especial para el aerea que estos turnando
                RespMoverSigNodo(nodoInicial.nodclave, _afdEdoDataMdl.AFDnodoActMdl.nodclave, Constantes.RespuestaEstado.TURNADO, Constantes.RespuestaEstado.ANALIZAR);
            }

            if (lstTurnar.Count > 1)
            {
                _segDao.dmlUpdMultiple(afdDataMdl.AFDseguimientoMdl);
            }


            //List<Tuple<int, string, int>> lstPersonasTurnar = _afdEdoDataMdl.dicAuxRespuesta[ProcesoGralDao.PARAM_LISTA_TURNAR] as List<Tuple<int, string, int>>;
            //foreach (Tuple<int, string, int> areaTurnar in lstPersonasTurnar )
            //{
            //    afdDataMdl.ID_EstadoActual = (int)nodoInicial.nedclave;
            //    afdDataMdl.AFDnodoActMdl = nodoInicial;
            //    afdDataMdl.rtpclave = iTipoAristaIni;
            //    afdDataMdl.usrClaveDestino = areaTurnar.Item1;
            //    afdDataMdl.Observacion = areaTurnar.Item2;
            //    afdDataMdl.ID_AreaDestino = areaTurnar.Item3;
            //    afdDataMdl.ID_Capa = nodoInicial.nodcapa;
            //    oResultado = AccionBase(true);

            //    afdDataMdl.AFDnodoActMdl.nodregresar = nodRegresar;
            //    _nodoDao.dmlUpdateNodoRegresar(afdDataMdl.AFDnodoActMdl);

            //    RespMoverSigNodo(nodoInicial.nodclave, _afdEdoDataMdl.AFDnodoActMdl.nodclave, Constantes.RespuestaEstado.TURNADO, Constantes.RespuestaEstado.ANALIZAR);
            //}
            return(oResultado);
        }
        public SIT_RED_NODO dmlSelectNodoExiste(SIT_RED_NODO oNodo)
        {
            String sqlQuery = " Select nodo.solclave, nodclave, ARACLAVE, nodfeccreacion, nedclave, prcclave, nodatendido, nodcapa "
                              + " FROM SIT_red_nodo nodo "
                              + " WHERE solclave = :P0 and nedclave = :P1 and usrClave = :P2 and nodcapa = :P3 ";

            List <SIT_RED_NODO> lstDatos = CrearListaMDL <SIT_RED_NODO>(ConsultaDML(sqlQuery, oNodo.solclave, oNodo.nedclave, oNodo.usrclave, oNodo.nodcapa));

            if (lstDatos.Count > 0)
            {
                return(lstDatos[0]);
            }
            else
            {
                return(null);
            }
        }
        public SIT_RED_NODO dmlSelectNodoReturnar(SIT_RED_NODO oNodo)
        {
            String sqlQuery = " Select *  "
                              + " FROM SIT_RED_NODO "
                              + " WHERE solclave = :P0 and nedclave = :P1 AND nodclave < :P2 ";

            List <SIT_RED_NODO> lstDatos = CrearListaMDL <SIT_RED_NODO>(ConsultaDML(sqlQuery, oNodo.solclave, oNodo.nedclave, oNodo.nodclave));

            if (lstDatos.Count > 0)
            {
                return(lstDatos[0]);
            }
            else
            {
                return(null);
            }
        }
        public Object Accion(Object oDatos)
        {
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;

            //ACTUALIZAR LA TABLA ACLARACION PARA SABER EN QUE PROCESO ESTA
            _afdEdoDataMdl.solicitud.prcclave  = Constantes.ProcesoTipo.ACLARACION;
            _afdEdoDataMdl.solicitud.solfecacl = _afdEdoDataMdl.FechaRecepcion;
            new SIT_SOL_SOLICITUDDao(_cn, _transaction, _sDataAdapter).dmlEditar(_afdEdoDataMdl.solicitud);

            //MODIFICAR SE DEBE DE REGRESAR LA SOLICITUD AL ÁREA ORIGINAL
            Object bResultado = AccionBase(true);

            // CREAR DE FORMA ANTICIPADA EL NODO DE UT ANALIZAR
            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                SIT_RED_NODO nodoNvoUTanalizar = ExisteNodo(_afdEdoDataMdl.solClave, Constantes.NodoEstado.UT_RECIBIR_SOLICITUD, _afdEdoDataMdl.ID_AreaUT, _afdEdoDataMdl.ID_Capa + 1);
                if (nodoNvoUTanalizar == null)
                {
                    // CREAR NODO ACTUAL SIGUIENTE DE LA UTanalizar que es la barrera

                    nodoNvoUTanalizar = new SIT_RED_NODO {
                        prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaUT,
                        nodcapa        = _afdEdoDataMdl.ID_Capa + 1, nodatendido = AfdConstantes.NODO.INDETERMINADO, nodclave = Constantes.NodoEstado.UT_RECIBIR_SOLICITUD,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino
                    };

                    _nodoDao.dmlAgregar(nodoNvoUTanalizar);
                }
            }


            //hubo una respuesta
            if (_afdEdoDataMdl.rtpclave != Constantes.Respuesta.TURNAR)
            {
                bResultado = _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);
            }

            return(bResultado);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl    = (AfdEdoDataMdl)oDatos;
            _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            //AL NODO ACTGUAL LO ACTUALIZAMOS
            _afdEdoDataMdl.AFDnodoActMdl.nodatendido = AfdConstantes.NODO.FINALIZADO;
            _nodoDao.dmlEditar(_afdEdoDataMdl.AFDnodoActMdl);

            // BUSCAR EL NODO ANTERIOR DE CT por FOLIO - CAPA - AREA
            SIT_RED_NODO nodoCT = ExisteNodo(_afdEdoDataMdl.solClave, Constantes.NodoEstado.INDEFINIDO, _afdEdoDataMdl.ID_AreaCT, _afdEdoDataMdl.ID_Capa);

            /* CREAR ARISTA NODO_ACTUAL UA --> CT  */
            int[]          aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(_afdEdoDataMdl.AFDnodoActMdl.nodfeccreacion, _afdEdoDataMdl.FechaRecepcion);
            SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                arihito    = Constantes.RespuestaHito.SI,
                aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = _afdEdoDataMdl.FechaRecepcion,
                ariclave   = Constantes.General.ID_PENDIENTE,
                noddestino = nodoCT.nodclave, nodorigen = _afdEdoDataMdl.AFDnodoActMdl.nodclave
            };

            _redAristaDao.dmlEditar(aristaMdl);
            aristaMdl.ariclave = _redAristaDao.iSecuencia;

            /* ACTUALIZAR EL SEGUIMIENTO */
            _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave, _afdEdoDataMdl.FechaRecepcion,
                                                                                     _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);

            _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);

            //////GrabarDocumentos(aristaMdl.ariclave);

            return(true);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            if (_calcularPlazoNeg == null)
            {
                _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
            }

            Dictionary <string, object> dicParam = new Dictionary <string, object>();

            dicParam.Add(DButil.SIT_SOL_SEGUIMIENTO_COL.SOLCLAVE, _afdEdoDataMdl.solClave);
            dicParam.Add(DButil.SIT_SOL_SEGUIMIENTO_COL.PRCCLAVE, Constantes.ProcesoTipo.SOLICITUD);

            _afdEdoDataMdl.AFDseguimientoMdl = _segDao.dmlSelectSeguimientoPorID(dicParam) as SIT_SOL_SEGUIMIENTO;

            _afdEdoDataMdl.AFDnodoActMdl = (SIT_RED_NODO)_nodoDao.dmlSelectNodoID(_afdEdoDataMdl.AFDseguimientoMdl.segultimonodo);
            _afdEdoDataMdl.ID_Capa       = _afdEdoDataMdl.AFDnodoActMdl.nodcapa + 1;
            _afdEdoDataMdl.rtpclave      = Constantes.Respuesta.RECEPCION_INFO_ADICIONAL;

            /* CREAR UN NUEVO SEGUIMIENTO */
            SIT_SOL_SEGUIMIENTO solSegMdl = new SIT_SOL_SEGUIMIENTO {
                repclave       = Constantes.Respuesta.SIN_RESPUESTA,
                segfecestimada = _afdEdoDataMdl.ID_FecEstimada, segultimonodo = 0, segfecini = _afdEdoDataMdl.FechaRecepcion,
                afdclave       = _afdEdoDataMdl.ID_ClaAfd, segedoproceso = AfdConstantes.PROCESO_ESTADO.EN_EJECUCION,
                prcclave       = Constantes.ProcesoTipo.ACLARACION, segfeccalculo = new DateTime(), segdiasnolab = 0, segmultiple = AfdConstantes.MULTIPLE.NO,
                segfecfin      = new DateTime(), segfecamp = new DateTime(), segsemaforocolor = 0, segdiassemaforo = 0,
                solclave       = _afdEdoDataMdl.solClave, usrclave = _afdEdoDataMdl.usrClaveOrigen
            };

            _segDao.dmlAgregar(solSegMdl);


            // CREAR NODO UT-RECIBIR_SOLICITUD
            SIT_RED_NODO nodoUT = new SIT_RED_NODO {
                prcclave       = Constantes.ProcesoTipo.ACLARACION, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaUT,
                nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = Constantes.NodoEstado.INDEFINIDO,
                nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                usrclave       = _afdEdoDataMdl.usrClaveDestino
            };

            _nodoDao.dmlAgregar(nodoUT);
            nodoUT.nodclave = _nodoDao.iSecuencia;

            /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
            int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(_afdEdoDataMdl.FechaRecepcion, DateTime.Now);

            SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA
            {
                arihito     = Constantes.RespuestaHito.NO,
                aridiasnat  = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                aridiaslab  = aiDias[CalcularPlazoNeg.DIAS_LABORALES],
                arifecenvio = _afdEdoDataMdl.FechaRecepcion,
                ariclave    = Constantes.General.ID_PENDIENTE,
                noddestino  = nodoUT.nodclave,
                nodorigen   = _afdEdoDataMdl.AFDnodoActMdl.nodclave
            };

            _redAristaDao.dmlEditar(aristaMdl);
            aristaMdl.ariclave = _redAristaDao.iSecuencia;

            // NODO ACTUAL EL NUEVO CREADO PARA PROCESAR EL SIGUIENTE
            _afdEdoDataMdl.AFDnodoActMdl = nodoUT;

            // ACTUALIZAR EL REGISTRO DE LA SOLICICTUD CON UNA ACLARACION
            _afdEdoDataMdl.solicitud.solfecacl = _afdEdoDataMdl.FechaRecepcion;
            _afdEdoDataMdl.solicitud.prcclave  = Constantes.ProcesoTipo.ACLARACION;

            SIT_SOL_SOLICITUDDao solDao = new SIT_SOL_SOLICITUDDao(_cn, _transaction, _sDataAdapter);

            solDao.dmlEditar(_afdEdoDataMdl.solicitud);

            return(_afdEdoDataMdl);
        }
        public Object Accion(Object oDatos)
        {
            Object oResultado = null;

            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;

            // ESTE ESTADO TIENE DOS ETAPAS 1) CREAR SU PROPIO ESTADO 2) TURNAR LA ACLARACION
            int iTipoProceso  = 0;
            int?iClaveProceso = _afdEdoDataMdl.solicitud.prcclave;

            if (_afdEdoDataMdl.solicitud != null)
            {
                if (_afdEdoDataMdl.solicitud.solfecacl == DateTime.MinValue)
                {
                    iTipoProceso = Constantes.ProcesoTipo.SOLICITUD;
                }
                else
                {
                    iTipoProceso = Constantes.ProcesoTipo.ACLARACION;
                }

                _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.NO;

                // CREAR MI PROPIO ESTADO
                // BUSCAR DATOS PARA PROCESAR LA ACCION
                Dictionary <string, object> dicParam = new Dictionary <string, object>();
                dicParam.Add(DButil.SIT_SOL_SOLICITUD_COL.SOLCLAVE, _afdEdoDataMdl.solicitud.solclave);
                dicParam.Add(DButil.SIT_SOL_SOLICITUD_COL.PRCCLAVE, iTipoProceso);

                _afdEdoDataMdl.AFDseguimientoMdl = _segDao.dmlSelectSeguimientoPorID(dicParam) as SIT_SOL_SEGUIMIENTO;

                if (_afdEdoDataMdl.AFDseguimientoMdl.segultimonodo > 0)
                {
                    _afdEdoDataMdl.AFDnodoActMdl = _nodoDao.dmlSelectNodoID(_afdEdoDataMdl.AFDseguimientoMdl.segultimonodo) as SIT_RED_NODO;
                    _afdEdoDataMdl.ID_Capa       = _afdEdoDataMdl.AFDnodoActMdl.nodcapa + 1;
                    _afdEdoDataMdl.rtpclave      = Constantes.Respuesta.RECURSO_REVISION;



                    //////_afdEdoDataMdl.dicAuxRespuesta[ProcesoGralDao.PARAM_LISTA_TURNAR]
                    //////if (_afdEdoDataMdl.lstPersonasTurnar.Count > 1)
                    //////    iMultiple = 1;



                    /* CREAR UN NUEVO SEGUIMIENTO */
                    SIT_SOL_SEGUIMIENTO solSegMdl = new SIT_SOL_SEGUIMIENTO(repclave: Constantes.Respuesta.SIN_RESPUESTA,
                                                                            segfecestimada: _afdEdoDataMdl.ID_FecEstimada, segultimonodo: 0, segfecini: new DateTime(),
                                                                            afdclave: _afdEdoDataMdl.ID_ClaAfd, segedoproceso: AfdConstantes.PROCESO_ESTADO.EN_EJECUCION,
                                                                            prcclave: Constantes.ProcesoTipo.RECURSO_REVISION, segfeccalculo: new DateTime(), segdiasnolab: 0,
                                                                            segmultiple: _afdEdoDataMdl.AFDseguimientoMdl.segmultiple,
                                                                            segfecfin: new DateTime(), segfecamp: new DateTime(), segsemaforocolor: 0, segdiassemaforo: 0,
                                                                            solclave: _afdEdoDataMdl.solClave, usrclave: _afdEdoDataMdl.usrClaveOrigen);


                    ////DEBEMSO DE CALCULAR EL SEGUIMINETO..
                    ////afdEdoDataMdl = afdDatos;
                    ////CalcularSeguimiento(afdEdoDataMdl.solicitud.sotclave, afdDatos.FechaRecepcion);

                    _segDao.dmlAgregar(solSegMdl);

                    //Actualziamos el seguimiento
                    _afdEdoDataMdl.AFDseguimientoMdl = solSegMdl;

                    // CREAR NODO UT-RECIBIR_SOLICITUD
                    SIT_RED_NODO nodoUT = new SIT_RED_NODO {
                        prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaUT,
                        nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = Constantes.NodoEstado.UT_RECIBIR_SOLICITUD,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino
                    };
                    _nodoDao.dmlAgregar(nodoUT);
                    nodoUT.nodclave = _nodoDao.iSecuencia;

                    /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                    if (_calcularPlazoNeg == null)
                    {
                        _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
                    }

                    int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(_afdEdoDataMdl.FechaRecepcion, DateTime.Now);

                    SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                        arihito    = _afdEdoDataMdl.ID_Hito,
                        aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                        aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = DateTime.Now,
                        ariclave   = Constantes.General.ID_PENDIENTE,
                        noddestino = nodoUT.nodclave, nodorigen = _afdEdoDataMdl.AFDnodoActMdl.nodclave
                    };


                    _redAristaDao.dmlEditar(aristaMdl);
                    aristaMdl.ariclave = _redAristaDao.iSecuencia;

                    // Guardamos los datos del recurso de revision
                    _afdEdoDataMdl.recRevisionMdl.repclave = aristaMdl.ariclave;
                    new SIT_RESP_RREVISIONDao(_cn, _transaction, _sDataAdapter).dmlAgregar(_afdEdoDataMdl.recRevisionMdl);

                    ////////////Grabamos los documentso en al nueva arista
                    ////////////GrabarDocumentos(aristaMdl.ariclave);
                    ////////////Borramos los docuemntso apra que no se graben nuevamente...

                    ////////////if (_afdEdoDataMdl.lstDocContenidoMdl != null)
                    ////////////    _afdEdoDataMdl.lstDocContenidoMdl.Clear();

                    // ACTUALIZAR EL REGISTRO DE LA SOLICICTUD CON UNA ACLARACION
                    _afdEdoDataMdl.solicitud.solfecrecrev = _afdEdoDataMdl.FechaRecepcion;
                    _afdEdoDataMdl.solicitud.prcclave     = Constantes.ProcesoTipo.RECURSO_REVISION;
                    new SIT_SOL_SOLICITUDDao(_cn, _transaction, _sDataAdapter).dmlEditar(_afdEdoDataMdl.solicitud);

                    // AHORA QUE SE HA CREADO EL NODO NUEVO ES NECESARIO CREAR LOS TURNOS..
                    // Y SE EJECUTA LA FUNCION BASE

                    List <Tuple <int, string, int> > lstPersonasTurnar = _afdEdoDataMdl.dicAuxRespuesta[ProcesoGralDao.PARAM_LISTA_TURNAR] as List <Tuple <int, string, int> >;

                    foreach (Tuple <int, string, int> areaTurnar in lstPersonasTurnar)
                    {
                        _afdEdoDataMdl.AFDnodoActMdl      = nodoUT;
                        _afdEdoDataMdl.ID_AreaDestino     = Convert.ToInt32(areaTurnar.Item1);
                        _afdEdoDataMdl.Observacion        = areaTurnar.Item2;
                        _afdEdoDataMdl.ID_PerfilDestino   = areaTurnar.Item3;
                        _afdEdoDataMdl.rtpclave           = Constantes.Respuesta.TURNAR;
                        _afdEdoDataMdl.ID_EstadoSiguiente = Constantes.NodoEstado.INAI_RECURSO_REVISION;

                        oResultado = AccionBase(true);
                    }
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl    = (AfdEdoDataMdl)oDatos;
            _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;


            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.CORREGIR)
            {
                // CREAR NODO UT y MARCARLO COMO FINALIZADO
                SIT_RED_NODO nodoUT = new SIT_RED_NODO {
                    prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaUT,
                    nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.FINALIZADO, nodclave = Constantes.NodoEstado.INDEFINIDO,
                    nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };
                _nodoDao.dmlAgregar(nodoUT);
                nodoUT.nodclave = _nodoDao.iSecuencia;

                // CREAR ARISTA CT ( Sesionar) --(18)--> UT (requerimiento)
                int[]          aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(_afdEdoDataMdl.AFDnodoActMdl.nodfeccreacion, _afdEdoDataMdl.FechaRecepcion);
                SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                    arihito     = Constantes.RespuestaHito.NO,
                    aridiasnat  = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab  = aiDias[CalcularPlazoNeg.DIAS_LABORALES],
                    arifecenvio = _afdEdoDataMdl.AFDnodoActMdl.nodfeccreacion, ariclave = Constantes.General.ID_PENDIENTE,
                    noddestino  = nodoUT.nodclave, nodorigen = _afdEdoDataMdl.AFDnodoActMdl.nodclave
                };

                _redAristaDao.dmlEditar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;

                // CREAR NODO UA PARA REQUERIMIENTO
                SIT_RED_NODO nodoUA = new SIT_RED_NODO {
                    prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaDestino,
                    nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = Constantes.NodoEstado.INDEFINIDO,
                    nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };

                _nodoDao.dmlAgregar(nodoUA);
                nodoUA.nodclave = _nodoDao.iSecuencia;

                // CREAR ARISTA UT ( requerimiento) --(18)--> UA (requerimiento)
                aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoUA.nodfeccreacion, _afdEdoDataMdl.FechaRecepcion);
                SIT_RED_ARISTA aristaNvoMdl = new SIT_RED_ARISTA
                {
                    arihito     = Constantes.RespuestaHito.NO,
                    aridiasnat  = 0,
                    aridiaslab  = 0,
                    arifecenvio = _afdEdoDataMdl.FechaRecepcion,
                    ariclave    = Constantes.General.ID_PENDIENTE,
                    noddestino  = nodoUA.nodclave,
                    nodorigen   = nodoUT.nodclave
                };
                _redAristaDao.dmlEditar(aristaNvoMdl);

                /* ACTUALIZAR EL SEGUIMIENTO */
                _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave,
                                                                                         nodoUA.nodfeccreacion, _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);

                _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);
            }
            else
            {
                // Creamos una capa nueva para contestar
                _afdEdoDataMdl.ID_Capa = _afdEdoDataMdl.ID_Capa + 1;
                AccionBase(true);

                /* GUARDAMOS EN EL SEGUIMIENTO LA RESPUESTA INTERNA Y EXTERNA*/
                ////////_afdEdoDataMdl.AFDseguimientoMdl.ariclave = _afdEdoDataMdl.ID_ClaAristaActual;
                ////////_segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);

                ////////_afdEdoDataMdl.AFDrescomiteMdl.ariclave = _afdEdoDataMdl.ID_ClaAristaActual;

                //////new SIT_ARISTA_COMITEDao(_cn, _transaction, _sDataAdapter).dmlAgregar(_afdEdoDataMdl.AFDrescomiteMdl);

                // ACUTALIZAMOS EL HITO
                SIT_RED_ARISTA aristaHito = new SIT_RED_ARISTA();
                aristaHito.ariclave = _afdEdoDataMdl.ID_ClaAristaActual;
                aristaHito.arihito  = Constantes.RespuestaHito.SI;
                _redAristaDao.dmlUpdateAristaHito(aristaHito);
            }
            return(true);
        }
Exemple #15
0
        public Object Accion(Object oDatos)
        {
            // MODIFICAR SE DEBE DE REGRESAR LA SOLICITUD AL ÁREA ORIGINAL
            SIT_RED_NODO   nodoActual = null;
            SIT_RED_ARISTA aristaMdl  = null;
            Boolean        bResultado;

            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;

            SIT_RED_NODO nodoAnterior = _afdEdoDataMdl.AFDnodoActMdl;
            // Finalizamos el proceso
            int?iClaveProceso = _afdEdoDataMdl.solicitud.prcclave;

            if (_afdEdoDataMdl.AFDseguimientoMdl.repclave != Constantes.Respuesta.NOTIFICACION_PRORROGA)
            {
                _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.SI;
            }

            bResultado = AccionBase(true);

            // obtenemos el ultimo nodo de la respuesta
            if (_afdEdoDataMdl.AFDseguimientoMdl.repclave == Constantes.Respuesta.NOTIFICACION_PRORROGA)
            {
                //actualizar el seguimiento para la fecha de notificaion
                _afdEdoDataMdl.AFDseguimientoMdl.segfecamp = _afdEdoDataMdl.FechaRecepcion;
            }
            else
            {
                _afdEdoDataMdl.AFDseguimientoMdl.segedoproceso = AfdConstantes.PROCESO_ESTADO.TERMINADO;
                _afdEdoDataMdl.AFDseguimientoMdl.segultimonodo = _afdEdoDataMdl.AFDnodoActMdl.nodclave;

                List <Int32> lstOmitir = new List <Int32>();
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaCT);
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaUT);
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaUTN);
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaInai);  // El perfil y el area tienen el mismo valor..

                Dictionary <string, object> dicParam = new Dictionary <string, object>();
                dicParam.Add(DButil.SIT_RED_NODO_COL.SOLCLAVE, _afdEdoDataMdl.solClave);
                dicParam.Add(DButil.SIT_RED_NODO_COL.PRCCLAVE, _afdEdoDataMdl.solicitud.prcclave);
                dicParam.Add(SIT_RED_NODODao.COL_AREAS_EXCLUIR, lstOmitir);

                DataTable dtAreasTurnar = _nodoDao.dmlSelectNodosGrafo(dicParam) as DataTable;

                int[] aiDias;

                foreach (DataRow drArea in dtAreasTurnar.Rows)
                {
                    nodoActual = new SIT_RED_NODO {
                        prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = Convert.ToInt32(drArea["ka_claarea"]),
                        nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = _afdEdoDataMdl.ID_EstadoMensaje,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino
                    };

                    _nodoDao.dmlAgregar(nodoActual);
                    nodoActual.nodclave = _nodoDao.iSecuencia;

                    aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnterior.nodfeccreacion, nodoActual.nodfeccreacion);
                    aristaMdl = new SIT_RED_ARISTA
                    {
                        arihito     = Constantes.RespuestaHito.NO,
                        aridiasnat  = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                        aridiaslab  = aiDias[CalcularPlazoNeg.DIAS_LABORALES],
                        arifecenvio = nodoActual.nodfeccreacion,
                        ariclave    = Constantes.General.ID_PENDIENTE,
                        noddestino  = nodoActual.nodclave,
                        nodorigen   = nodoAnterior.nodclave
                    };

                    _redAristaDao.dmlEditar(aristaMdl);
                }
            }

            _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);
            // dejamos al nodo de sistema terminado..
            _afdEdoDataMdl.AFDnodoActMdl.nodatendido = AfdConstantes.NODO.FINALIZADO;
            _nodoDao.dmlEditar(_afdEdoDataMdl.AFDnodoActMdl);

            return(bResultado);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl    = (AfdEdoDataMdl)oDatos;
            _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);

            SIT_RED_NODO   nodoActual = null;
            SIT_RED_ARISTA aristaMdl  = null;

            SIT_RED_NODO nodoAnterior = _afdEdoDataMdl.AFDnodoActMdl;
            int          iEdoSig      = _afdEdoDataMdl.ID_EstadoSiguiente; // SiguienteEstado(afdEdoDataMdl.rptclave);

            _afdEdoDataMdl.AFDnodoActMdl.nodatendido = AfdConstantes.NODO.FINALIZADO;
            _nodoDao.dmlEditar(_afdEdoDataMdl.AFDnodoActMdl);
            _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.NO;

            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.AMPLIACION_PLAZO)
            {
                // CREAR NUEVO NODO ACTUAL
                nodoActual = new SIT_RED_NODO
                {
                    prcclave       = iClaveProceso,
                    solclave       = _afdEdoDataMdl.solClave,
                    araclave       = _afdEdoDataMdl.ID_AreaUTN,
                    nodcapa        = _afdEdoDataMdl.ID_Capa,
                    nodatendido    = AfdConstantes.NODO.EN_PROCESO,
                    nedclave       = iEdoSig,
                    nodfeccreacion = _afdEdoDataMdl.FechaRecepcion,
                    nodclave       = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };

                _nodoDao.dmlEditar(nodoActual);
                nodoActual.nodclave = _nodoDao.iSecuencia;

                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnterior.nodfeccreacion, nodoActual.nodfeccreacion);

                aristaMdl = new SIT_RED_ARISTA {
                    arihito    = _afdEdoDataMdl.ID_Hito,
                    aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoActual.nodfeccreacion,
                    ariclave   = Constantes.General.ID_PENDIENTE,
                    noddestino = nodoActual.nodclave, nodorigen = nodoAnterior.nodclave
                };

                _redAristaDao.Agregar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;
                ////////////GrabarDocumentos(aristaMdl.ariclave);

                // BUSCAR SI EXISTEN OTRAS SOLICITUDES DE AMPLIACION Y CERRARLAS DEBIDO QUE SE AUTORIZO LA AMPLIACION
                Dictionary <string, object> dicParam = new Dictionary <string, object>();
                dicParam.Add(DButil.SIT_RED_NODO_COL.SOLCLAVE, _afdEdoDataMdl.solClave);
                dicParam.Add(DButil.SIT_RESP_TIPO_COL.RTPCLAVE, Constantes.Respuesta.AMPLIACION_PLAZO);
                dicParam.Add(DButil.SIT_RED_ARISTA_COL.NODDESTINO, _afdEdoDataMdl.AFDnodoActMdl.nodclave);

                List <SIT_RED_NODO> lstSIT_RED_NODO = _nodoDao.dmlSelectMdlAmpPendiente(dicParam) as List <SIT_RED_NODO>;
                foreach (SIT_RED_NODO nodoPendienteMdl in lstSIT_RED_NODO)
                {
                    nodoPendienteMdl.nodatendido = AfdConstantes.NODO.FINALIZADO;
                    _nodoDao.dmlEditar(nodoPendienteMdl);

                    aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoPendienteMdl.nodfeccreacion, nodoActual.nodfeccreacion);
                    aristaMdl = new SIT_RED_ARISTA {
                        arihito    = _afdEdoDataMdl.ID_Hito,
                        aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                        aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoActual.nodfeccreacion,
                        ariclave   = Constantes.General.ID_PENDIENTE,
                        noddestino = nodoActual.nodclave, nodorigen = nodoPendienteMdl.nodclave
                    };

                    _redAristaDao.dmlAgregar(aristaMdl);

                    ////////GrabarDocumentos(aristaMdl.ariclave);
                }

                // GENERAMOS UN MENSAJE A TODAS LAS DEMAS ÁREAS PENDIENTES
                iEdoSig = dicAccionEstado[Constantes.Respuesta.CREAR_MENSAJE];

                List <Int32> lstOmitir = new List <Int32>();
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaCT);
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaUTN);
                lstOmitir.Add(_afdEdoDataMdl.ID_AreaInai);  // El perfil y el area tienen el mismo valor..

                dicParam.Add(DButil.SIT_RED_NODO_COL.PRCCLAVE, _afdEdoDataMdl.solicitud.prcclave);
                dicParam.Add(SIT_RED_NODODao.COL_AREAS_EXCLUIR, lstOmitir);



                DataTable dtAreasTurnar = _nodoDao.dmlSelectNodosGrafo(dicParam) as DataTable;

                foreach (DataRow drArea in dtAreasTurnar.Rows)
                {
                    nodoActual = new SIT_RED_NODO {
                        prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = Convert.ToInt32(drArea["ka_claarea"]),
                        nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = iEdoSig,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino
                    };
                    _nodoDao.dmlAgregar(nodoActual);
                    nodoActual.nodclave = _nodoDao.iSecuencia;

                    aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnterior.nodfeccreacion, nodoActual.nodfeccreacion);
                    aristaMdl = new SIT_RED_ARISTA {
                        arihito    = _afdEdoDataMdl.ID_Hito,
                        aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                        aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoActual.nodfeccreacion,
                        ariclave   = Constantes.General.ID_PENDIENTE,
                        noddestino = nodoActual.nodclave, nodorigen = nodoAnterior.nodclave
                    };
                    _redAristaDao.dmlAgregar(aristaMdl);
                }
            }
            else
            {
                // MANDAMOS UN MENSAJE AL AREA ANTERIOR NOTIFICANDO LA CAUSA
                iEdoSig = dicAccionEstado[Constantes.RespuestaEstado.NEGAR];

                // CREAR NODO ACTUAL
                nodoActual = new SIT_RED_NODO {
                    prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaDestino,
                    nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = iEdoSig,
                    nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };



                _nodoDao.dmlAgregar(nodoActual);
                nodoActual.nodclave = _nodoDao.iSecuencia;

                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnterior.nodfeccreacion, nodoActual.nodfeccreacion);

                aristaMdl = new SIT_RED_ARISTA {
                    arihito     = _afdEdoDataMdl.ID_Hito,
                    aridiasnat  = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab  = aiDias[CalcularPlazoNeg.DIAS_LABORALES],
                    arifecenvio = nodoActual.nodfeccreacion, ariclave = Constantes.General.ID_PENDIENTE,
                    noddestino  = nodoActual.nodclave, nodorigen = nodoAnterior.nodclave
                };


                _redAristaDao.dmlAgregar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;
            }
            return(true);
        }
Exemple #17
0
        protected Boolean AccionBase(bool bAvanzar)
        {
            try
            {
                SIT_RED_NODO nodoActual = null;


                _afdEdoDataMdl.AFDnodoOrigen = _afdEdoDataMdl.AFDnodoActMdl;

                if (bAvanzar == true)
                {
                    _afdEdoDataMdl.AFDnodoOrigen.nodatendido = AfdConstantes.NODO.FINALIZADO;
                    _nodoDao.dmlEditar(_afdEdoDataMdl.AFDnodoOrigen);
                    _afdEdoDataMdl.ID_EstadoSiguiente = _afdEdoDataMdl.dicAfdFlujo[_afdEdoDataMdl.ID_EstadoActual].dicAccionEstado[_afdEdoDataMdl.rtpclave];
                    _afdEdoDataMdl.ID_EstadoActual    = _afdEdoDataMdl.ID_EstadoSiguiente;
                }

                if (_calcularPlazoNeg == null)
                {
                    _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
                }

                if (_afdEdoDataMdl.AFDnodoOrigen.nodregresar > 0)
                {
                    nodoActual             = _nodoDao.dmlSelectNodoID(_afdEdoDataMdl.AFDnodoOrigen.nodregresar);
                    nodoActual.nodatendido = AfdConstantes.NODO.EN_PROCESO;
                    _nodoDao.dmlUpdateNodoAtendido(nodoActual);
                }
                else
                {
                    nodoActual = new SIT_RED_NODO
                    {
                        prcclave       = _afdEdoDataMdl.AFDseguimientoMdl.prcclave,
                        solclave       = _afdEdoDataMdl.solClave,
                        araclave       = _afdEdoDataMdl.ID_AreaDestino,
                        nodcapa        = _afdEdoDataMdl.ID_Capa,
                        nodatendido    = AfdConstantes.NODO.EN_PROCESO,
                        nedclave       = _afdEdoDataMdl.ID_EstadoActual,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion,
                        nodclave       = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino,
                        perclave       = _afdEdoDataMdl.ID_PerfilDestino
                    };
                    _nodoDao.dmlAgregar(nodoActual);
                    nodoActual.nodclave = _nodoDao.iSecuencia;
                }
                // CREAR NODO ACTUAL


                // NODO ACTUAL EL NUEVO CREADO
                _afdEdoDataMdl.AFDnodoActMdl = nodoActual;

                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(_afdEdoDataMdl.AFDnodoOrigen.nodfeccreacion, nodoActual.nodfeccreacion);

                SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA
                {
                    ariclave    = Constantes.General.ID_PENDIENTE,
                    nodorigen   = _afdEdoDataMdl.AFDnodoOrigen.nodclave,
                    noddestino  = nodoActual.nodclave,
                    arifecenvio = _afdEdoDataMdl.AFDnodoOrigen.nodfeccreacion,
                    aridiasnat  = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab  = aiDias[CalcularPlazoNeg.DIAS_LABORALES],
                    arihito     = _afdEdoDataMdl.ID_Hito,
                    rtpclave    = _afdEdoDataMdl.rtpclave,
                    solclave    = _afdEdoDataMdl.solClave
                };

                _redAristaDao.dmlAgregar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;

                /* ACTUALIZAR EL SEGUIMIENTO */
                _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave, nodoActual.nodfeccreacion,
                                                                                         _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);
                _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);

                _afdEdoDataMdl.ID_ClaAristaActual = aristaMdl.ariclave;
                ////////RespMoverSigNodo(_afdEdoDataMdl.AFDnodoOrigen.nodclave, _afdEdoDataMdl.AFDnodoActMdl.nodclave);
            }
            catch (Exception ex)
            {
                _sMsjError = ex.ToString();
                throw new Exception("Error en el método AccionBase " + ex.ToString());
            }

            return(true);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            /// FALTA GRABAR LA RESOLUCION DE LA UA...
            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                return(base.AccionBase(true));
            }
            else if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.AMPLIACION_PLAZO)
            {
                // SE CREA UN NUEVO FLUJO DE TRABAJO EN PARALELO
                _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
                return(base.AccionBase(false));
            }
            else  // DEFINO UNA RESPUESTA
            {
                _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
                // como es una respueta verficamos si existe el nodo siguiente que es la UT.
                SIT_RED_NODO nodoAnt = _afdEdoDataMdl.AFDnodoActMdl;
                nodoAnt.nodatendido = AfdConstantes.NODO.FINALIZADO;
                _nodoDao.dmlEditar(nodoAnt);


                SIT_SOL_SEGUIMIENTO solSegBuscar = new SIT_SOL_SEGUIMIENTO();
                solSegBuscar.solclave = _afdEdoDataMdl.solClave;
                solSegBuscar.prcclave = iClaveProceso;

                SIT_SOL_SEGUIMIENTO segAux = _segDao.dmlSelectID(solSegBuscar);
                _afdEdoDataMdl.AFDseguimientoMdl.usrclave = segAux.usrclave;


                _afdEdoDataMdl.ID_EstadoSiguiente = _afdEdoDataMdl.dicAfdFlujo[_afdEdoDataMdl.ID_EstadoActual].dicAccionEstado[_afdEdoDataMdl.rtpclave];

                //////// VERIFICAR SI EXISTE EL NODO SIGUIENTE UT, ya que solo puede existir uno...  y actualizar su estado.. ya que no lo veo...
                _afdEdoDataMdl.AFDnodoActMdl = ExisteNodo((int)nodoAnt.solclave, _afdEdoDataMdl.ID_EstadoSiguiente, (int)segAux.usrclave, nodoAnt.nodcapa + 1);
                if (_afdEdoDataMdl.AFDnodoActMdl == null)
                {
                    throw new System.ArgumentException("NO EXISTE NODO DE BARRERA", "original");
                }

                _afdEdoDataMdl.AFDnodoActMdl.nodatendido = AfdConstantes.NODO.EN_PROCESO;
                _nodoDao.dmlUpdateNodoAtendido(_afdEdoDataMdl.AFDnodoActMdl);


                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnt.nodfeccreacion, DateTime.Now);

                /* EN LA ARISTA SE GUARDA LA RESOLUCION DEL AREA */
                SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                    arihito    = Constantes.RespuestaHito.SI,
                    aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoAnt.nodfeccreacion,
                    ariclave   = Constantes.General.ID_PENDIENTE,
                    noddestino = _afdEdoDataMdl.AFDnodoActMdl.nodclave, nodorigen = nodoAnt.nodclave
                };

                _redAristaDao.dmlAgregar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;

                /* ACTUALIZAR EL SEGUIMIENTO */
                _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave, DateTime.Now,
                                                                                         _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);

                //////GrabarDocumentos(aristaMdl.ariclave);
            }
            return(true);
        }
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;

            SIT_RED_NODO nodoAnterior = _afdEdoDataMdl.AFDnodoActMdl;

            nodoAnterior.nodatendido = AfdConstantes.NODO.FINALIZADO;
            _nodoDao.dmlEditar(nodoAnterior);
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            try
            {
                if (_calcularPlazoNeg == null)
                {
                    _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
                }

                _afdEdoDataMdl.ID_EstadoActual = _afdEdoDataMdl.ID_EstadoSiguiente;

                // CREAR NODO ACTUAL
                SIT_RED_NODO nodoActual = new SIT_RED_NODO {
                    prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaDestino,
                    nodcapa        = _afdEdoDataMdl.ID_Capa, nodatendido = AfdConstantes.NODO.FINALIZADO, nodclave = _afdEdoDataMdl.ID_EstadoActual,
                    nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };

                _nodoDao.dmlAgregar(nodoActual);
                nodoActual.nodclave = _nodoDao.iSecuencia;

                // NODO ACTUAL EL NUEVO CREADO
                _afdEdoDataMdl.AFDnodoActMdl = nodoActual;

                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[]          aiDias    = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnterior.nodfeccreacion, nodoActual.nodfeccreacion);
                SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                    arihito    = _afdEdoDataMdl.ID_Hito,
                    aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoActual.nodfeccreacion,
                    ariclave   = Constantes.General.ID_PENDIENTE,
                    noddestino = nodoActual.nodclave, nodorigen = nodoAnterior.nodclave
                };



                _redAristaDao.dmlEditar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;

                /* ACTUALIZAR EL SEGUIMIENTO */
                _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave, nodoActual.nodfeccreacion,
                                                                                         _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);

                _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);

                //////GrabarDocumentos(aristaMdl.ariclave);
                _afdEdoDataMdl.ID_ClaAristaActual = aristaMdl.ariclave;
            }
            catch (Exception ex)
            {
                _sMsjError = ex.ToString();
                throw new Exception("Error en el método AccionCrearNodoAristaSeg " + ex.ToString());
            }
            return(true);
        }
        public SIT_RED_NODO dmlSelectID(SIT_RED_NODO oDatos)
        {
            String sSQL = " SELECT * FROM SIT_RED_NODO WHERE  nodclave = :P0 ";

            return(CrearListaMDL <SIT_RED_NODO>(ConsultaDML(sSQL, oDatos.nodclave) as DataTable)[0]);
        }
        public int dmlBorrar(SIT_RED_NODO oDatos)
        {
            String sSQL = " DELETE FROM SIT_RED_NODO WHERE  nodclave = :P0 ";

            return((int)EjecutaDML(sSQL, oDatos.nodclave));
        }
        public int dmlEditar(SIT_RED_NODO oDatos)
        {
            String sSQL = " UPDATE SIT_RED_NODO SET  perclave = :P0, nodfeclectura = :P1, nodusrausencia = :P2, usrclave = :P3, prcclave = :P4, solclave = :P5, araclave = :P6, nodcapa = :P7, nodatendido = :P8, nedclave = :P9, nodfeccreacion = :P10, nodregresar = :P11 WHERE  nodclave = :P12 ";

            return((int)EjecutaDML(sSQL, oDatos.perclave, oDatos.nodfeclectura, oDatos.nodusrausencia, oDatos.usrclave, oDatos.prcclave, oDatos.solclave, oDatos.araclave, oDatos.nodcapa, oDatos.nodatendido, oDatos.nedclave, oDatos.nodfeccreacion, oDatos.nodregresar, oDatos.nodclave));
        }
Exemple #23
0
        public Object Accion(Object oDatos)
        {
            // MODIFICAR SE DEBE DE REGRESAR LA SOLICITUD AL ÁREA ORIGINAL
            Boolean bResultado = false;

            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.CORREGIR)
            {
                // CREAR NODO UT y MARCARLO COMO FINALIZADO
                SIT_RED_NODO nodoUTnuevo = new SIT_RED_NODO {
                    prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.AFDnodoActMdl.araclave,
                    nodcapa        = _afdEdoDataMdl.AFDnodoOrigen.nodcapa, nodatendido = AfdConstantes.NODO.FINALIZADO, nodclave = _afdEdoDataMdl.AFDnodoActMdl.nodclave,
                    nodfeccreacion = _afdEdoDataMdl.AFDnodoActMdl.nodfeccreacion, nedclave = Constantes.General.ID_PENDIENTE,
                    usrclave       = _afdEdoDataMdl.usrClaveDestino
                };

                _nodoDao.dmlAgregar(nodoUTnuevo);
                nodoUTnuevo.nodclave = _nodoDao.iSecuencia;

                // ACTUALIZAR LA ARISTA CON BASE AL NUEVO NODO UT
                Dictionary <string, object> dicParam = new Dictionary <string, object>();

                SIT_RED_ARISTA aristaMdl = (SIT_RED_ARISTA)_redAristaDao.dmlSelectAristaID(dicParam);

                aristaMdl.noddestino  = nodoUTnuevo.nodclave;
                aristaMdl.arifecenvio = _afdEdoDataMdl.AFDnodoActMdl.nodfeccreacion;
                aristaMdl.arihito     = Constantes.RespuestaHito.NO;
                _redAristaDao.dmlEditar(aristaMdl);

                // ACTUALIZAMOS EL NODO  Y CONTINUAMOS..
                _afdEdoDataMdl.AFDnodoActMdl = nodoUTnuevo;
                _afdEdoDataMdl.ID_Capa       = nodoUTnuevo.nodcapa;
            }
            else if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                // BUSCAR EL NODO
                Dictionary <string, object> dicParam = new Dictionary <string, object>();
                dicParam.Add(DButil.SIT_RED_NODO_COL.SOLCLAVE, _afdEdoDataMdl.solClave);

                if (_afdEdoDataMdl.solicitud.prcclave == Constantes.ProcesoTipo.SOLICITUD)
                {
                    dicParam.Add(DButil.SIT_RED_NODOESTADO_COL.NEDCLAVE, Constantes.NodoEstado.UT_RECIBIR_SOLICITUD);
                }
                else if (_afdEdoDataMdl.solicitud.prcclave == Constantes.ProcesoTipo.ACLARACION)
                {
                    // VERIFICAR EL PROCESO
                    dicParam.Add(DButil.SIT_RED_NODOESTADO_COL.NEDCLAVE, Constantes.NodoEstado.UT_RECIBIR_SOLICITUD);
                }
                else
                {
                    // VERIFICAR EL PROCESO
                    dicParam.Add(DButil.SIT_RED_NODOESTADO_COL.NEDCLAVE, Constantes.NodoEstado.UT_RECIBIR_SOLICITUD); // MAS ADELANTE REVISAR EL SEGUNDO RECURSO DE REVISION
                }
                dicParam.Add(DButil.SIT_SOL_SEGUIMIENTO_COL.PRCCLAVE, _afdEdoDataMdl.solicitud.prcclave);

                _afdEdoDataMdl.AFDnodoActMdl = _nodoDao.dmlSelectNodoFolioEstadoPrc(dicParam) as SIT_RED_NODO;
                _afdEdoDataMdl.ID_Capa       = _afdEdoDataMdl.AFDnodoActMdl.nodcapa;
            }


            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.CORREGIR ||
                _afdEdoDataMdl.rtpclave == Constantes.Respuesta.PARA_COMITE || _afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.NO;
            }
            else
            {
                _afdEdoDataMdl.ID_Hito = Constantes.RespuestaHito.SI;
            }

            base.AccionBase(true);

            if (_afdEdoDataMdl.rtpclave != Constantes.Respuesta.TURNAR &&
                _afdEdoDataMdl.rtpclave != Constantes.Respuesta.CORREGIR
                )
            {
                /////////////////&& _afdEdoDataMdl.rtpclave != Constantes.Respuesta.RETURNAR
                _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);
            }

            return(bResultado);
        }
Exemple #24
0
        public Object Accion(Object oDatos)
        {
            _afdEdoDataMdl = (AfdEdoDataMdl)oDatos;
            int iClaveProceso = (int)_afdEdoDataMdl.solicitud.prcclave;

            if (_calcularPlazoNeg == null)
            {
                _calcularPlazoNeg = new CalcularPlazoNeg(_afdEdoDataMdl.dicDiaNoLaboral);
            }

            /// FALTA GRABAR LA RESOLUCION DE LA UA...
            if (_afdEdoDataMdl.rtpclave == Constantes.Respuesta.TURNAR)
            {
                AccionBase(true);
            }
            else
            {
                // como es una respueta verficamos si existe el nodo siguiente que es la UT.
                SIT_RED_NODO nodoAnt = _afdEdoDataMdl.AFDnodoActMdl;
                nodoAnt.nodatendido = AfdConstantes.NODO.FINALIZADO;
                _nodoDao.dmlEditar(nodoAnt);

                // VERIFICAR SI EXISTE EL NODO SIGUIENTE CT, ya que solo puede existir uno...
                // el nodo siemrpe existe....

                SIT_RED_NODO nodoActual = ExisteNodo((long)nodoAnt.solclave, _afdEdoDataMdl.ID_EstadoSiguiente, _afdEdoDataMdl.ID_AreaDestino, nodoAnt.nodcapa + 1);
                if (nodoActual == null)
                {
                    // CREAR NODO ACTUAL

                    nodoActual = new SIT_RED_NODO {
                        prcclave       = iClaveProceso, solclave = _afdEdoDataMdl.solClave, araclave = _afdEdoDataMdl.ID_AreaDestino,
                        nodcapa        = _afdEdoDataMdl.ID_Capa + 1, nodatendido = AfdConstantes.NODO.EN_PROCESO, nodclave = _afdEdoDataMdl.ID_EstadoSiguiente,
                        nodfeccreacion = _afdEdoDataMdl.FechaRecepcion, nedclave = Constantes.General.ID_PENDIENTE,
                        usrclave       = _afdEdoDataMdl.usrClaveDestino
                    };
                    _nodoDao.dmlAgregar(nodoActual);
                    nodoActual.nodclave = _nodoDao.iSecuencia;
                }

                // NODO ACTUAL EL NUEVO CREADO
                _afdEdoDataMdl.AFDnodoActMdl = nodoActual;

                /* CREAR ARISTA NODO_ANTERIOR --> NODO_NUEVO  */
                int[] aiDias = _calcularPlazoNeg.obtenerDiasNaturalesLaborales(nodoAnt.nodfeccreacion, nodoActual.nodfeccreacion);

                SIT_RED_ARISTA aristaMdl = new SIT_RED_ARISTA {
                    arihito    = Constantes.RespuestaHito.SI,
                    aridiasnat = aiDias[CalcularPlazoNeg.DIAS_NATURALES],
                    aridiaslab = aiDias[CalcularPlazoNeg.DIAS_LABORALES], arifecenvio = nodoActual.nodfeccreacion,
                    ariclave   = Constantes.General.ID_PENDIENTE,
                    noddestino = nodoActual.nodclave, nodorigen = nodoAnt.nodclave
                };

                _redAristaDao.dmlEditar(aristaMdl);
                aristaMdl.ariclave = _redAristaDao.iSecuencia;

                /* ACTUALIZAR EL SEGUIMIENTO */
                _afdEdoDataMdl.AFDseguimientoMdl = _calcularPlazoNeg.CalcularSeguimiento((int)_afdEdoDataMdl.solicitud.sotclave, nodoActual.nodfeccreacion,
                                                                                         _afdEdoDataMdl.lstProcesoPlazos, _afdEdoDataMdl.AFDseguimientoMdl);
                _segDao.dmlEditar(_afdEdoDataMdl.AFDseguimientoMdl);

                ////////GrabarDocumentos(aristaMdl.ariclave);
            }
            return(true);
        }