/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }