/// <summary> /// Método encargado de Deshabilitar un Movimiento Vacio Iniciado /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion DeshabilitaMovimientoVacioIniciado(int id_usuario) { //Declaramos objeto Resultado RetornoOperacion resultado = new RetornoOperacion(); //Iniciando transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validamos que el estatus actual del movimiento sea Iniciado if (this.EstatusMovimiento == Estatus.Iniciado) { //Validamos que no existan pagos ligados al movimeinto resultado = validaPagos(); //Validamos que no existan Pagos if (resultado.OperacionExitosa) { //Cargamos Estancias ligadas a un Id Movimiento en Estatus Iniciado using (DataTable mitEstanciasOrigen = EstanciaUnidad.CargaEstanciasTerminadasParada(this._id_parada_origen)) { //Reversa Inicio de Moimiento resultado = ReversaInicioMovimietoVacio(mitEstanciasOrigen, MovimientoAsignacionRecurso.Estatus.Iniciado, id_usuario); } //Validamos Resultado if (resultado.OperacionExitosa) { //Instanciamos Parada Destino using (Parada objParadaDestino = new Parada(this._id_parada_destino)) { //Deshabilitamos Parada Destino resultado = objParadaDestino.DeshabilitaParada(id_usuario); } } } } else { //Establecemos Mensaje resultado = new RetornoOperacion("El estatus del movimiento no permite su edición."); } //Validamos Resultado if (resultado.OperacionExitosa) { scope.Complete(); } } //Devolvemos Valor Retorno return(resultado); }
/// <summary> /// Método encargado de Inicializa el Control de la Fecha de Llegada /// </summary> /// <param name="id_recurso"></param> private void inicializaControlFechaLlegada(int id_recurso) { //Obtenemos Estancia Actual de la Unidad using (EstanciaUnidad objEstanciaUnidad = new EstanciaUnidad(EstanciaUnidad.ObtieneEstanciaUnidadIniciada(id_recurso))) { //Validamos Estancia de la Unidad if (objEstanciaUnidad.id_estancia_unidad > 0) { //En caso de que la Fecha de Inicio de la Estancia sea mayor a la establecida por la Unidad que se desea mover if (objEstanciaUnidad.inicio_estancia > this._fecha_llegada) { // Cambiamos Valor del Control de fecha de llegada lblFechaLlegada.Text = objEstanciaUnidad.inicio_estancia.ToString("dd/MM/yyyy HH:mm").ToString(); } } } }
/// <summary> /// Edita la Fecha de Termino del Movimiento /// </summary> /// <param name="fecha_termino">Fecha de termino del movimiento / Inicio de la Estancia</param> /// <param name="tipo_llegada">Tipo actualización de la fecha de llegada de la parada</param> /// <param name="tipo_actualizacion_inicio">Tipo actualización de la fecha de inicio de la estancia</param> /// <param name="id_usuario">Id Usuario actualiza</param> /// <returns></returns> public RetornoOperacion EditaFechaTerminoMovimiento(DateTime fecha_termino, Parada.TipoActualizacionLlegada tipo_llegada, EstanciaUnidad.TipoActualizacionInicio tipo_actualizacion_inicio, int id_usuario) { //Declarando objeto de retorno RetornoOperacion resultado = new RetornoOperacion(); //Validando estatus actual del movimiento if (this.EstatusMovimiento == Estatus.Terminado) { //Iniciando transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando que las unidades involucradas se encuentren: //Asociadas aún al servicio y en estatus ocupado //Disponibles en la ubicación de fin del movimiento y sin ningún movimiento asignado resultado = MovimientoAsignacionRecurso.ValidaRecursosParaReversaTerminaMovimiento(this._id_movimiento); //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos que no existan pagos ligados al movimeinto resultado = validaPagos(); //Validamos Resultado if (resultado.OperacionExitosa) { //Actualizamos la fecha de llegada de las Estancias resultado = EstanciaUnidad.EditaEstanciasUnidadFechaInicio(this._id_parada_destino, fecha_termino, tipo_actualizacion_inicio, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Instanciamos Parada destino using (Parada objParadaDestino = new Parada(this._id_parada_destino)) { //Editamos fecha de llegada de la parada resultado = objParadaDestino.EditaFechaLlegadaParada(fecha_termino, tipo_llegada, 0, id_usuario); } } } } } } //Devolvemos Resultado return(resultado); }
/// <summary> /// Método encargado de Reversa el Inicio de un Movimiento Vacio /// </summary> /// <param name="mitEstanciasOrigen">Estancias Origen</param> /// <param name="estatus">Estatus de la Asignación que se desea editar</param> /// <param name="id_usuario">Id Usuario</param> /// <returns></returns> private RetornoOperacion ReversaInicioMovimietoVacio(DataTable mitEstanciasOrigen, MovimientoAsignacionRecurso.Estatus estatus, int id_usuario) { //Declaramos objeto Retorno RetornoOperacion resultado = new RetornoOperacion(0); //Iniciando transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciamos la Parada Origen using (Parada objParadaOrigen = new Parada(this._id_parada_origen)) { //Localizando parada comodín de la ubicación origen int id_parada_origen = Parada.ObtieneParadaComodinUbicacion(objParadaOrigen.id_ubicacion, true, id_usuario); //Validamos existencia de Parada Comodin if (id_parada_origen > 0) { //Iniciamos Estancias de la parada origen del servicio resultado = EstanciaUnidad.IniciaEstanciasTerminadasParada(this._id_parada_origen, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Actuakizamos Kilometraje de las Unidades de Movimiento resultado = MovimientoAsignacionRecurso.ActualizaKilometrajeUnidadesMovimiento(this._id_movimiento, -this._kms, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Actualizando estatus de recursos asignados a Disponibles resultado = MovimientoAsignacionRecurso.ActualizaEstatusRecursosTerminadosADisponible(this._id_movimiento, id_parada_origen, objParadaOrigen.fecha_llegada, estatus, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Deshabilita Asignaciones resultado = MovimientoAsignacionRecurso.DeshabilitaMovimientosAsignacionesRecursosVacio(this._id_movimiento, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Recuperando los Id de Recurso de las Unidades List <int> unidades = (from DataRow r in mitEstanciasOrigen.Rows select r.Field <int>("IdRecurso")).DefaultIfEmpty().ToList(); //Cambiamos el Id de Parada de las Estrancias resultado = EstanciaUnidad.CambiaParadaEstanciaUnidadesUbicacion(unidades, id_parada_origen, objParadaOrigen.id_ubicacion, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Deshabilitamos Parada Origen resultado = objParadaOrigen.DeshabilitaParada(id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos Deshabilitación de Movimiento resultado = this.editaMovimiento(this._id_servicio, this._id_segmento_carga, this._secuencia_servicio, (Estatus)this._id_estatus_movimiento, (Tipo)this._id_tipo_movimiento , this._kms, this._kms_maps, this._id_compania_emisor, this._id_parada_origen, this._id_parada_destino, id_usuario, false); } } } } } else { //Mostramos Mensaje Error resultado = new RetornoOperacion(string.Format("Error al actualizar kilometraje de unidades asociadas: {0}", resultado.Mensaje)); } } } else { //Mostramos Mensaje Error resultado = new RetornoOperacion("No se encontró datos complementarios de la parada comodin."); } } //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos resultado scope.Complete(); } } //Devolvemos Valor return(resultado); }
/// <summary> /// Realiza las acciones necesarias para la reversa en la actualización de fin de movimiento: elimina estancias, inicia asignaciones del movimiento, elimina asignaciones copiadas al movimiento siguiente (en caso de existir), los recursos se colocan en estatus tránsito, se resta el kilometraje del movimiento en el despacho de su servicio y el movimiento se coloca como iniciado /// </summary> /// <param name="id_usuario">Id de Usuario que actualiza</param> /// <returns></returns> public RetornoOperacion ReversaTerminaMovimientoVacio(int id_usuario) { //Declarando objeto de retorno RetornoOperacion resultado = new RetornoOperacion("El movimiento debe estar en estatus Terminado"); //Validando estatus actual del movimiento if (this.EstatusMovimiento == Estatus.Terminado) { //Iniciando transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando que las unidades involucradas se encuentren: //Asociadas aún al servicio y en estatus ocupado //Disponibles en la ubicación de fin del movimiento y sin ningún movimiento asignado resultado = MovimientoAsignacionRecurso.ValidaRecursosParaReversaTerminaMovimiento(this._id_movimiento); //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos que no existan pagos ligados al movimeinto resultado = validaPagos(); //Si es válido realizar la reversa if (resultado.OperacionExitosa) { //Actualziando el kilometraje de las unidades involucradas resultado = MovimientoAsignacionRecurso.ActualizaKilometrajeUnidadesMovimiento(this._id_movimiento, -this._kms, id_usuario); //Si no hubo errores if (resultado.OperacionExitosa) { //instanciando parad de origen using (Parada paradaOrigen = new Parada(this._id_parada_origen)) { //Si la parada se encontró if (paradaOrigen.habilitar) { //Eliminando estancias creadas para dichos recursos resultado = EstanciaUnidad.DeshabilitaEstanciaUnidadesReversaFinMovimiento(this._id_movimiento, paradaOrigen.fecha_salida, id_usuario); } else { resultado = new RetornoOperacion("No fue localizada la información de la parada de origen."); } } //Si no hubo errores if (resultado.OperacionExitosa) { //Actualziando estatus de movimiento a iniciado resultado = ActualizaEstatusMovimiento(Estatus.Iniciado, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Instanciamos Parada Destino using (Parada objParadaDestino = new Parada(this._id_parada_destino)) //Editamos Pararda resultado = objParadaDestino.CambiaParadaARegistrada(id_usuario); } else { resultado = new RetornoOperacion("No fue posible actualizar el estatus del movimiento."); } } } else { resultado = new RetornoOperacion(string.Format("Error al actualizar kilometraje de unidades involucradas: {0}", resultado.Mensaje)); } } } //Si no hay errores if (resultado.OperacionExitosa) { //Terminando transacción scope.Complete(); } } } //Devolviendo resultado return(resultado); }
/// <summary> /// Deshabilita un Movimiento en Vacio /// </summary> /// <param name="id_usuario">Id Usuario</param> /// <returns></returns> public RetornoOperacion DeshabilitaMovimientoVacioTerminado(int id_usuario) { //Declaramos objeto resultado RetornoOperacion resultado = new RetornoOperacion("El movimiento debe estar en estatus Terminado"); //Validando estatus actual del movimiento if (this.EstatusMovimiento == Estatus.Terminado) { //Iniciando transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciamos la Parada Origen using (Parada objParadaOrigen = new Parada(this._id_parada_origen), objParadadDestino = new Parada(this._id_parada_destino)) { //Cargamos Estancias ligadas a un Id Movimiento en Estatus Terminado using (DataTable mitEstanciasOrigen = EstanciaUnidad.CargaEstanciasTerminadasParada(this._id_parada_origen)) { //Validando que las unidades involucradas se encuentren: //Asociadas aún al servicio y en estatus ocupado //Disponibles en la ubicación de fin del movimiento y sin ningún movimiento asignado resultado = MovimientoAsignacionRecurso.ValidaRecursosParaReversaTerminaMovimiento(this._id_movimiento); //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos que no existan pagos ligados al movimeinto resultado = validaPagos(); //Validamos Resultado if (resultado.OperacionExitosa) { //Deshabilitamos Estancias resultado = EstanciaUnidad.DeshabilitaEstanciaUnidadesMovimientoVacio(this._id_movimiento, this._id_parada_destino, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Deshabilitamos Parada Destino resultado = objParadadDestino.DeshabilitaParada(id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Reversa los movimientos de la Parada Origen resultado = ReversaInicioMovimietoVacio(mitEstanciasOrigen, MovimientoAsignacionRecurso.Estatus.Terminado, id_usuario); } } } } } } //Si no hay errores if (resultado.OperacionExitosa) { //Terminando transacción scope.Complete(); } } } else { //Establecemos Mesnaje Error resultado = new RetornoOperacion("El estatus del movimiento no permite su eliminación"); } //Devolvemos resultado return(resultado); }
/// <summary> /// Inicializamos Controles Movimiento en Vacio Sin Orden /// </summary> /// <param name="id_recurso">Id Recurso</param> /// <param name="id_compania_emisor">Id Compañia Emisor</param> /// <param name="tipoActualizaionFin">Tipo de Actualización Fin de la Estancia (Manual, GPS, APP)</param> public RetornoOperacion InicializaControl(int id_recurso, int id_compania_emisor, Parada.TipoActualizacionLlegada tipoActualizacionLlegada, Parada.TipoActualizacionSalida tipoActualizacionSalida, EstanciaUnidad.TipoActualizacionInicio tipoActuailizacionInicio, EstanciaUnidad.TipoActualizacionFin tipoActualizaionFin) { //Declaramos Objeto Resultado RetornoOperacion resultado = new RetornoOperacion(); //Asignamo Atributos this._id_tipo_actualizacion_fin = tipoActualizaionFin; this._id_recurso = id_recurso; this._id_compania_emisor = id_compania_emisor; this._id_ubicacion_origen = 0; //Se actualiza con la ubicación de la unidad seleccionada chkFechaActualMov.Checked = false; //Obtenemos Estancia Actual de la Unidad using (EstanciaUnidad objEstanciaUnidad = new EstanciaUnidad(EstanciaUnidad.ObtieneEstanciaUnidadIniciada(id_recurso))) { //Validamos Estancia de la Unidad if (objEstanciaUnidad.id_estancia_unidad > 0) { this._fecha_llegada = objEstanciaUnidad.inicio_estancia; //Instanciamos Parada using (Parada objParada = new Parada(objEstanciaUnidad.id_parada)) { //Instanciamos Unidad using (SAT_CL.Global.Unidad objUnidad = new SAT_CL.Global.Unidad(id_recurso)) { //Si existe unidad a mover if (objUnidad.id_unidad > 0 && objUnidad.EstatusUnidad == Unidad.Estatus.ParadaDisponible) { //Instanciamos Tipo de Unidad using (SAT_CL.Global.UnidadTipo objUnidadTipo = new SAT_CL.Global.UnidadTipo(objUnidad.id_tipo_unidad)) { //Guardando ubicación de origen del movimiento this._id_ubicacion_origen = objParada.id_ubicacion; //Cargamos Catalogos cargaCatalogos(objParada.id_ubicacion); //Validamos Tipo de Unidad para Inicializar y habilitar Controles if (objUnidadTipo.bit_motriz == true) { //Inicializamos Controles inicializaValoresUnidad(objUnidad.id_unidad); //Habilitamos Controles habilitarControlesUnidad(objUnidadTipo.bit_permite_arrastre); //sI LA } else { //Inicializamos Controles inicializaValoresRemolque(objUnidad.id_unidad); //Habilitamos Controles habilitaControlesRemolque(); } } //Establecemos Resultado Exitoso resultado = new RetornoOperacion(0); } } //Inicializando Control de Lugar de Origen lblLugarOrigen.Text = objParada.descripcion; //Inicializamos Control Fecha de Llegada al Origen lblFechaLlegada.Text = objEstanciaUnidad.inicio_estancia.ToString("dd/MM/yyyy HH:mm").ToString(); } } } //Devolvemos Resultado return(resultado); }