Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }