예제 #1
0
        /// <summary>
        ///  Método encargado de Terminar la Asignación
        /// </summary>
        /// <param name="fecha">fecha</param>
        /// <returns></returns>
        public RetornoOperacion TerminarAsignacion(DateTime fecha)
        {
            //Declarando Objeto de retorno
            RetornoOperacion result = new RetornoOperacion();

            //Instanciando Asignación
            using (ActividadAsignacion aa = new ActividadAsignacion(this._id_asignacion_actividad))
            {
                //Editando Asignación
                result = aa.TerminaAsignacion(fecha, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
            }

            //Validando que la Operación fuese Exitosa
            if (result.OperacionExitosa)
            {
                //Asignando Variables
                this._id_asignacion_actividad = result.IdRegistro;
            }

            //Inicializando Control
            inicializaControlUsuario(1);

            //Asignando Mensaje de Operación
            TSDK.ASP.ScriptServer.MuestraNotificacion(this, result, TSDK.ASP.ScriptServer.PosicionNotificacion.AbajoDerecha);

            //Devolviendo Resultado Obtenido
            return(result);
        }
예제 #2
0
        /// <summary>
        /// Metodo encargado de editar un registro actividad periodo
        /// </summary>
        /// <param name="id_actividad_asignacion"></param>
        /// <param name="id_tipo_periodo"></param>
        /// <param name="inicio_periodo"></param>
        /// <param name="fin_periodo"></param>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion EditaActividadPeriodo(int id_actividad_asignacion, TipoPeriodoActividad id_tipo_periodo, DateTime inicio_periodo, DateTime fin_periodo, int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciando la actividad correspondiente
            using (ActividadAsignacion a = new ActividadAsignacion(this._id_actividad_asignacion))
            {
                //Instanciando al tipo de periodo
                using (TipoPeriodoAsignacion t = new TipoPeriodoAsignacion(this._id_tipo_periodo))
                {
                    //Si la asignación NO se ha terminado y el periodo no la afecta
                    //O si el periodo es extemporaneo
                    if ((a.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada &&
                         t.signo < 0) || t.signo > 0)
                    {
                        //Realizando la actualización del registro
                        resultado = this.editaActividadPeriodo(id_actividad_asignacion, (int)id_tipo_periodo, inicio_periodo, fin_periodo, 0, id_usuario, this.habilitar);
                    }
                    //Si no es válida la edición
                    else
                    {
                        resultado = new RetornoOperacion("El estatus de la asignación no permite la actualización del periodo.");
                    }
                }
            }

            //Devolviendo resultado
            return(resultado);
        }
예제 #3
0
        /// <summary>
        /// Metodo encargado de terminar el periodo ligado a la actividad
        /// </summary>
        /// <param name="fecha"></param>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion TerminaActividadPeriodo(DateTime fecha, int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciamos la actividad
            using (ActividadAsignacion actividad = new ActividadAsignacion(_id_actividad_asignacion))
            {
                //Validando que la actividad no se encuentre terminada aún
                if (actividad.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada)
                {
                    //Validamos Resultado
                    if (this._inicio_periodo > this._fin_periodo)
                    {
                        //Instanciamos al tipo de periodo
                        using (TipoPeriodoAsignacion tipo = new TipoPeriodoAsignacion(this._id_tipo_periodo))
                        {
                            //Creamos la transacción
                            using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
                            {
                                //Terminamos el periodo
                                resultado = this.editaActividadPeriodo(this.id_actividad_asignacion, this.id_tipo_periodo, this.inicio_periodo, fecha, 0, id_usuario, this.habilitar);

                                //Si el resultado de la actualizacion es correcto
                                if (resultado.OperacionExitosa)
                                {
                                    //Si el tipo de periodo es negativo
                                    if (tipo.signo == -1)
                                    {
                                        //Realizamos la activacion de la actividad
                                        resultado = actividad.CambiaEstatusActividadAsignacion(ActividadAsignacion.EstatusAsignacionActividad.Iniciada, id_usuario);
                                    }

                                    //Validamos Resultado
                                    if (resultado.OperacionExitosa)
                                    {
                                        //Terminamos transacción
                                        scope.Complete();
                                    }
                                }
                            }
                        }
                    }
                    else    //Establecemos Mesaje Error
                    {
                        resultado = new RetornoOperacion("La fecha de inicio del periodo " + this._inicio_periodo.ToString("dd/MM/yyyy HH:mm") + " debe ser mayor a la fecha de fin del periodo " + this._fin_periodo.ToString("dd/MM/yyyy HH:mm") + ".");
                    }
                }
                else
                {
                    resultado = new RetornoOperacion("Imposible actualizar, la asignación ya se encuentra terminada.");
                }
            }

            //Devolvinedo resultado
            return(resultado);
        }
예제 #4
0
        /// <summary>
        /// Metodo encargado de deshabilitar el periodo ligado a la actividad
        /// </summary>
        /// <param name="id_usuario">Id de usuario</param>
        /// <returns></returns>
        public RetornoOperacion DeshabilitaActividadPeriodo(int id_usuario)
        {
            //Declarando variable de retorno
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciamos al tipo de periodo
            using (TipoPeriodoAsignacion t = new TipoPeriodoAsignacion(this._id_tipo_periodo))
            {
                //Instanciamos la actividad
                using (ActividadAsignacion actividad = new ActividadAsignacion(id_actividad_asignacion))
                {
                    //Si la actividad no se ha cerrado aún y el periodo es negativo (pausa)
                    //O si el periodo no implica actualización sobre la asignación y la actividad
                    if ((actividad.Estatus != ActividadAsignacion.EstatusAsignacionActividad.Terminada && t.signo < 0) ||
                        t.signo > 0)
                    {
                        //Creamos la transacción
                        using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
                        {
                            //Deshabilitando el periodo
                            resultado = this.editaActividadPeriodo(this.id_actividad_asignacion, this.id_tipo_periodo, this.inicio_periodo, this.fin_periodo, 0, id_usuario, false);

                            //Si el resultado de la actualizacion es correcto
                            if (resultado.OperacionExitosa)
                            {
                                //Si el tipo de periodo es negativo
                                if (t.signo == -1 && this._fin_periodo.CompareTo(DateTime.MinValue) == 0)
                                {
                                    //Realizamos la activacion de la actividad
                                    resultado = actividad.CambiaEstatusActividadAsignacion(ActividadAsignacion.EstatusAsignacionActividad.Iniciada, id_usuario);

                                    //Validamos Resultado
                                    if (resultado.OperacionExitosa)
                                    {
                                        scope.Complete();
                                    }
                                }
                            }
                        }
                    }
                    //De lo contrario
                    else
                    {
                        resultado = new RetornoOperacion("El estatus de la asignación de actividad no permite esta actualización.");
                    }
                }
            }

            //Devolviendo resultado
            return(resultado);
        }
예제 #5
0
        /// <summary>
        /// Terminamos Actividad
        /// </summary>
        /// <param name="fecha">fecha</param>
        /// <param name="id_usuario">Id Usuario</param>
        /// <returns></returns>
        public RetornoOperacion TerminaActividad(DateTime fecha, int id_usuario)
        {
            //Establecemos resultado
            RetornoOperacion res = new RetornoOperacion();

            //Validamos Estatus de la Actividad
            if ((EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Iniciada)
            {
                //Validamos que todas las asignaciones se encuentren Terminadas
                if (!Validacion.ValidaOrigenDatos(ActividadAsignacion.CargaAsignacionesPendientesTermino(this._id_orden_actividad)))
                {
                    //Validamos Fecha de la Actividad vs fecha de termino de la última Asignación
                    using (ActividadAsignacion objAsignacion = new ActividadAsignacion(ActividadAsignacion.ObtieneUltimaAsignacionTerminada(this._id_orden_actividad)))
                    {
                        if (fecha >= objAsignacion.fin_asignacion)
                        {
                            //Validamos Requisiciones Pendientes
                            res = OrdenTrabajoActividadRequisicion.ValidaRequisicionesPendientexTerminarActividad(this._id_orden_actividad);

                            //Validamos Resultado
                            if (res.OperacionExitosa)
                            {
                                //Terminamos Actividad
                                res = editaOrdenTrabajoActividad(this._id_actividad, this._id_orden, this._id_falla, EstatusOrdenActividad.Terminada, this._fecha_inicio, fecha, ActividadAsignacion.ObtieneDuracionAsignacion(this._id_orden_actividad), id_usuario, this.habilitar);
                            }
                        }
                        else
                        {
                            //Establecemos Mesaje Error
                            res = new RetornoOperacion("La fecha de termino de la actividad " + fecha.ToString("dd/MM/yyyy HH:mm") + " debe ser mayor a la fecha de termino de la última asignación " + objAsignacion.fin_asignacion.ToString("dd/MM/yyyy HH:mm") + ".");
                        }
                    }
                }
                else
                //Mostramos mensaje Resultado
                {
                    res = new RetornoOperacion("Las asignaciones deben estar en estatus Terminada.");
                }
            }
            else
            {
                res = new RetornoOperacion("El estatus de la actividad no permite su edición.");
            }
            //Devolvemos resultado
            return(res);
        }
예제 #6
0
        /// <summary>
        /// Método encargado de Guardar la Asignación de la Actividad
        /// </summary>
        /// <returns></returns>
        public RetornoOperacion GuardaAsignacionActividad()
        {
            //Declarando Objeto de retorno
            RetornoOperacion result = new RetornoOperacion();

            //Obteniendo Fechas
            DateTime fecha_inicio = DateTime.MinValue, fecha_fin = DateTime.MinValue;

            DateTime.TryParse(txtInicioAsignacion.Text, out fecha_inicio);
            DateTime.TryParse(txtFinAsignacion.Text, out fecha_fin);

            //Instanciando Asignación
            using (ActividadAsignacion aa = new ActividadAsignacion(this._id_asignacion_actividad))
            {
                //Validando que Exista el Registro
                if (aa.id_asignacion_actividad > 0)
                {
                    //Editando Asignación
                    result = aa.EditaRegistroActividadAsignacion(this._id_orden_actividad, (ActividadAsignacion.TipoAsignacionActividad)Convert.ToInt32(ddlTipo.SelectedValue),
                                                                 (ActividadAsignacion.EstatusAsignacionActividad)Convert.ToInt32(ddlEstatus.SelectedValue), Convert.ToInt32(TSDK.Base.Cadena.RegresaCadenaSeparada(txtEmpleado.Text, "ID:", 1, "0")),
                                                                 Convert.ToInt32(TSDK.Base.Cadena.RegresaCadenaSeparada(txtProveedor.Text, "ID:", 1, "0")), fecha_inicio, fecha_fin,
                                                                 ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                }
                else
                {
                    //Insertando Asignación
                    result = ActividadAsignacion.InsertaActividadAsignacion(this._id_orden_actividad, (ActividadAsignacion.TipoAsignacionActividad)Convert.ToInt32(ddlTipo.SelectedValue),
                                                                            ActividadAsignacion.EstatusAsignacionActividad.Asignada, Convert.ToInt32(TSDK.Base.Cadena.RegresaCadenaSeparada(txtEmpleado.Text, "ID:", 1, "0")),
                                                                            Convert.ToInt32(TSDK.Base.Cadena.RegresaCadenaSeparada(txtProveedor.Text, "ID:", 1, "0")), DateTime.MinValue, DateTime.MinValue,
                                                                            ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                }
            }

            //Validando que la Operación fuese Exitosa
            if (result.OperacionExitosa)
            {
                //Asignando Variables
                this._id_asignacion_actividad = result.IdRegistro;
            }

            //Inicializando Control
            inicializaControlUsuario(1);

            //Devolviendo Resultado Obtenido
            return(result);
        }
예제 #7
0
        /// <summary>
        /// Método encargado de Eliminar la Asignación de la Actividad
        /// </summary>
        /// <returns></returns>
        public RetornoOperacion EliminaAsignacionActividad()
        {
            //Declarando Objeto de retorno
            RetornoOperacion result = new RetornoOperacion();

            //Instanciando Asignación
            using (ActividadAsignacion aa = new ActividadAsignacion(this._id_asignacion_actividad))
            {
                //Validando que Exista el Registro
                if (aa.id_asignacion_actividad > 0)
                {
                    //Deshabilitando Actividad
                    result = aa.DeshabilitaActividadAsignacion(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                }
                else
                {
                    //Instanciando Excepción
                    result = new RetornoOperacion("No se encontro la Asignación deseada");
                }
            }

            //Validando que la Operación fuese Exitosa
            if (result.OperacionExitosa)
            {
                //Asignando Variables
                this._id_asignacion_actividad = 0;
            }

            //Inicializando Control
            inicializaControlUsuario(1);

            //Asignando Mensaje de Operación
            TSDK.ASP.ScriptServer.MuestraNotificacion(this, result, TSDK.ASP.ScriptServer.PosicionNotificacion.AbajoDerecha);

            //Devolviendo Resultado Obtenido
            return(result);
        }
예제 #8
0
        /// <summary>
        /// Cancelamos Actividad
        /// </summary>
        /// <param name="id_usuario">Id Usuario</param>
        /// <returns></returns>
        public RetornoOperacion CancelaOrdenTrabajoActividad(int id_usuario)
        {
            //Establecemos resultado
            RetornoOperacion res = new RetornoOperacion();

            //Validamos que el estatus de la Actividad
            if ((EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Terminada)
            {
                //Validamos que todas las asignaciones se encuentren Canceladas
                if (!Validacion.ValidaOrigenDatos(ActividadAsignacion.CargaAsignacionesDifEstatus(this._id_orden_actividad, ActividadAsignacion.EstatusAsignacionActividad.Cancelada)))
                {
                    //Validamos Requisiciones Pendientes
                    res = OrdenTrabajoActividadRequisicion.ValidaRequisicionesPendientexTerminarActividad(this._id_orden_actividad);
                    //Validamos Resultado
                    if (res.OperacionExitosa)
                    {
                        //Cancelamos la Actividad
                        res = editaOrdenTrabajoActividad(this._id_actividad, this._id_orden, this._id_falla, EstatusOrdenActividad.Cancelada, this._fecha_inicio, this._fecha_fin, this._duracion, id_usuario, this.habilitar);
                    }
                }
                else
                //Mostramos mensaje Resultado
                {
                    res = new RetornoOperacion("Las asignaciones deben estar en estatus Cancelada.");
                }
            }
            //Establecemos Mesaje Error
            else
            {
                //Mostramos  Mensaje Error
                res = new RetornoOperacion("El estatus de la Actividad no permite su edición. ");
            }

            //Devolvemos resultado
            return(res);
        }
예제 #9
0
        /// <summary>
        /// Método encaragdo de Terminar la Actividad y sus Asignaciones Ligadas
        /// </summary>
        /// <param name="estatus">Estatus de la Actividad</param>
        /// <param name="id_usuario">Usuario que Actualiza el Registro</param>
        /// <returns></returns>
        public RetornoOperacion TerminaActividadAsignaciones(DateTime fecha_fin, int id_usuario)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Inicializando Bloque Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Validando que la Actividad este Iniciada ó Pausada
                if ((EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Iniciada ||
                    (EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Pausada)
                {
                    //Obteniendo Asignaciones de la Actividad
                    using (DataTable dtAsignaciones = ActividadAsignacion.CargaAsignacionesActividadOT(this._id_orden_actividad))
                    {
                        //Validando que existan Asignaciones
                        if (Validacion.ValidaOrigenDatos(dtAsignaciones))
                        {
                            //Recorriendo Asignaciones
                            foreach (DataRow dr in dtAsignaciones.Rows)
                            {
                                //Instanciando Asignación
                                using (ActividadAsignacion asignacion = new ActividadAsignacion(Convert.ToInt32(dr["Id"])))
                                {
                                    //Validando que exista la Asignación
                                    if (asignacion.habilitar)
                                    {
                                        //Validando Estatus
                                        switch (asignacion.Estatus)
                                        {
                                        case ActividadAsignacion.EstatusAsignacionActividad.Iniciada:
                                        case ActividadAsignacion.EstatusAsignacionActividad.Pausada:
                                        {
                                            //Terminando Asignación
                                            result = asignacion.TerminaAsignacion(fecha_fin, id_usuario);
                                            break;
                                        }

                                        case ActividadAsignacion.EstatusAsignacionActividad.Terminada:
                                        case ActividadAsignacion.EstatusAsignacionActividad.Cancelada:
                                        {
                                            //Instanciando Retorno
                                            result = new RetornoOperacion(asignacion.id_asignacion_actividad);
                                            break;
                                        }

                                        case ActividadAsignacion.EstatusAsignacionActividad.Asignada:
                                        {
                                            //Instanciando Excepción
                                            result = new RetornoOperacion("La Asignación debe de estar Iniciada ó Pausada para poder Terminarla");
                                            break;
                                        }
                                        }

                                        //Validando Operación Exitosa
                                        if (!result.OperacionExitosa)
                                        {
                                            //Terminando Ciclo
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        //Instanciando Excepción
                                        result = new RetornoOperacion("No se puede Acceder a la Asignación");

                                        //Terminando Ciclo
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                //Si esta Registrada o Cancelada
                else if ((EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Registrada ||
                         (EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Cancelada)
                {
                    //Instanciando Excepción
                    result = new RetornoOperacion("La Actividad debe de estar Iniciada ó Pausada para poder Terminarla");
                }
                //Si esta Terminada
                else if ((EstatusOrdenActividad)this._id_estatus == EstatusOrdenActividad.Terminada)
                {
                    //Instanciando Asignación
                    result = new RetornoOperacion(this._id_orden_actividad);
                }

                //Validando Operación Exitosa
                if (result.OperacionExitosa)
                {
                    //Editamos el estatus asi como la fecha de inicio
                    result = this.editaOrdenTrabajoActividad(this.id_actividad, this.id_orden, this.id_falla, EstatusOrdenActividad.Terminada, this.fecha_inicio, fecha_fin, this._duracion, id_usuario, this.habilitar);

                    //Validando Operación Exitosa
                    if (result.OperacionExitosa)
                    {
                        //Instanciando Registro
                        result = new RetornoOperacion(this._id_orden_actividad);

                        //Completando Transacción
                        trans.Complete();
                    }
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }