private void EstablecerDatosNavegacion(object paqueteNavegacion)
        {
            try
            {
                if (paqueteNavegacion == null)
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No se puede identificar qué unidad desea dar de alta.");
                }
                if (!(paqueteNavegacion is UnidadBO))
                {
                    throw new Exception("Se esperaba una unidad.");
                }

                UnidadBO boAnterior = (UnidadBO)paqueteNavegacion;
                var      unidadBase = new ElementoFlotaBOF {
                    Unidad = new UnidadBO()
                };

                this.vista.LimpiarPaqueteNavegacion("UnidadExpedienteBO");

                boAnterior = this.ObtenerUnidad(boAnterior);
                this.vista.UltimoObjeto = boAnterior;

                //Consultamos la unidad para el elemento a editar
                unidadBase.Unidad.UnidadID = boAnterior.UnidadID;
                unidadBase = this.ObtenerElemento(unidadBase.Unidad);

                if (unidadBase == null)
                {
                    unidadBase = new ElementoFlotaBOF();
                }
                if (unidadBase != null && unidadBase.Unidad == null)
                {
                    unidadBase.Unidad = new UnidadBO();
                }

                if (!unidadBase.Unidad.EstatusActual.HasValue)
                {
                    throw new Exception("El estatus de la unidad no fue recuperado, para continuar con la alta de la unidad es necesario especificar el estatus actual de la unidad.");
                }

                //Validar estatus de acuerdo a regla
                if (!boAnterior.ValidarCambioEstatus(unidadBase.Unidad.EstatusActual))
                {
                    string mnj = "No se puede cambiar el estatus de la unidad de " +
                                 (boAnterior.EstatusActual != null ? boAnterior.EstatusActual.ToString() : "") +
                                 " a " +
                                 (unidadBase.Unidad.EstatusActual != null ? unidadBase.Unidad.EstatusActual.ToString() : "");
                    this.vista.PermitirRegistrar(false);
                    this.vista.MostrarMensaje(mnj, ETipoMensajeIU.ADVERTENCIA, null);
                }

                if ((unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Terminada))
                {
                    this.vista.PermitirRegistrar(false);
                    this.vista.MostrarMensaje("No se puede dar de alta la unidad, debido a que no cuenta con el estatus Terminada, verifique su información", ETipoMensajeIU.ADVERTENCIA, null);
                }

                this.DatoAInterfazUsuario(unidadBase);
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new UnidadBO());
                this.vista.PermitirRegistrar(false);
                throw new Exception(this.nombreClase + ".EstablecerDatosNavegacion: " + ex.Message);
            }
        }
示例#2
0
        /// <summary>
        /// Prepara la vista para la reasignacion de la unidad
        /// </summary>
        public void PrepararEdicion()
        {
            try
            {
                //Obtenemos el paquete correspondiente al contrato a editar
                var unidad = this.vista.ObtenerPaqueteNavegacion("UnidadExpedienteBO");

                //Validaciones iniciales
                if (ReferenceEquals(unidad, null))
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No fue posible identificar la unidad que se desea mover.");
                }
                if (!(unidad is UnidadBO))
                {
                    throw new Exception("El paquete recuperado no corresponde a una unidad, verifique su información.");
                }

                var unidadAnterior = new UnidadBO((UnidadBO)unidad);
                var unidadBase     = new ElementoFlotaBOF {
                    Unidad = new UnidadBO()
                };

                //Eliminamos el paquete de navegación
                this.vista.LimpiarPaqueteNavegacion("UnidadExpedienteBO");

                //Consultamos la unidad para el último objeto
                unidadAnterior          = this.ObtenerUnidad(unidadAnterior);
                this.vista.UltimoObjeto = unidadAnterior;

                //Consultamos la unidad para el elemento a editar
                unidadBase.Unidad.UnidadID = unidadAnterior.UnidadID;
                unidadBase = this.ObtenerElemento(unidadBase.Unidad);

                if (unidadBase == null)
                {
                    unidadBase = new ElementoFlotaBOF();
                }
                if (unidadBase != null && unidadBase.Unidad == null)
                {
                    unidadBase.Unidad = new UnidadBO();
                }

                //Cargamos el objeto a edición
                this.vista.ObjetoEdicion = unidadBase.Unidad;

                if (!unidadBase.Unidad.EstatusActual.HasValue)
                {
                    throw new Exception("El estatus de la unidad no fue recuperado, para continuar con la reactivación es necesario especificar el estatus actual de la unidad.");
                }

                //Validar estatus de acuerdo a regla
                if (!unidadAnterior.ValidarCambioEstatus(unidadBase.Unidad.EstatusActual))
                {
                    string mnj = "No se puede cambiar el estatus de la unidad de " +
                                 (unidadAnterior.EstatusActual != null ? unidadAnterior.EstatusActual.ToString() : "") +
                                 " a " +
                                 (unidadBase.Unidad.EstatusActual != null ? unidadBase.Unidad.EstatusActual.ToString() : "");
                    this.vista.PermitirRegistrar(false);
                    this.vista.MostrarMensaje(mnj, ETipoMensajeIU.ADVERTENCIA, null);
                }


                #region SC0009 - Adición de validación para estatus de siniestro
                if (unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Baja &&
                    unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Siniestro)
                {
                    this.vista.PermitirRegistrar(false);
                    this.vista.MostrarMensaje("No se puede reactivar la unidad, porque esta se encuentra en uso, verifique su información", ETipoMensajeIU.ADVERTENCIA, null);
                }
                #endregion

                //Desplegamos la unidad obtenida
                this.DatoAInterfazUsuario(unidadBase);

                this.EstablecerSeguridad();
            }
            catch (Exception ex)
            {
                this.vista.PermitirRegistrar(false);
                throw new Exception(string.Format("{0}.PrepararEdicion:{1}{2}", nombreClase, Environment.NewLine, ex.Message));
            }
        }
        /// <summary>
        /// Prepara la vista para la reasignacion de la unidad
        /// </summary>
        public void PrepararEdicion()
        {
            try
            {
                //Obtenemos el paquete correspondiente al contrato a editar
                var unidad = this.vista.ObtenerPaqueteNavegacion("UnidadExpedienteBO");

                //Validaciones iniciales
                if (ReferenceEquals(unidad, null))
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No fue posible identificar la unidad que se desea mover.");
                }
                if (!(unidad is UnidadBO))
                {
                    throw new Exception("El paquete recuperado no corresponde a una unidad, verifique su información.");
                }

                var unidadAnterior = new UnidadBO((UnidadBO)unidad);
                var unidadBase     = new ElementoFlotaBOF {
                    Unidad = new UnidadBO()
                };

                //Eliminamos el paquete de navegación
                this.vista.LimpiarPaqueteNavegacion("UnidadExpedienteBO");

                #region Se agrega la sección de documentos adjuntos
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Generacion:
                case (int)ETipoEmpresa.Construccion:
                case (int)ETipoEmpresa.Equinova:
                    //Se establece el modo edición al catálogo de documentos
                    this.presentadorDocumentos.ModoEditable(true);

                    //Se establecen los tipos de archivos que serán permitidos para adjuntar al contrato
                    List <TipoArchivoBO> lstTipoArchivo = new TipoArchivoBR().Consultar(this.dctx, new TipoArchivoBO());
                    var o = new object();
                    this.presentadorDocumentos.Vista.Identificador = o.GetHashCode().ToString();
                    this.presentadorDocumentos.EstablecerTiposArchivo(lstTipoArchivo);

                    this.vista.MostrarSeccionDocumentos(true);
                    this.vista.MostrarSeccionCentroCostos(true);
                    break;

                default:
                    this.presentadorDocumentos.LimpiarSesion();
                    this.vista.MostrarSeccionDocumentos(false);
                    this.vista.MostrarSeccionCentroCostos(false);
                    break;
                }

                #endregion

                //Consultamos la unidad para el último objeto
                unidadAnterior          = this.ObtenerUnidad(unidadAnterior);
                this.vista.UltimoObjeto = unidadAnterior;

                //Consultamos la unidad para el elemento a editar
                unidadBase.Unidad.UnidadID = unidadAnterior.UnidadID;
                unidadBase = this.ObtenerElemento(unidadBase.Unidad);

                if (unidadBase == null)
                {
                    unidadBase = new ElementoFlotaBOF();
                }
                if (unidadBase != null && unidadBase.Unidad == null)
                {
                    unidadBase.Unidad = new UnidadBO();
                }

                //Cargamos el objeto a edición
                this.vista.ObjetoEdicion = unidadBase.Unidad;

                if (!unidadBase.Unidad.EstatusActual.HasValue)
                {
                    throw new Exception("El estatus de la unidad no fue recuperado, para continuar con la baja de unidad es necesario especificar el estatus actual de la unidad.");
                }

                //Validar estatus de acuerdo a regla
                if (!unidadAnterior.ValidarCambioEstatus(unidadBase.Unidad.EstatusActual))
                {
                    string mnj = "No se puede cambiar el estatus de la unidad de " +
                                 (unidadAnterior.EstatusActual != null ? unidadAnterior.EstatusActual.ToString() : "") +
                                 " a " +
                                 (unidadBase.Unidad.EstatusActual != null ? unidadBase.Unidad.EstatusActual.ToString() : "");
                    this.vista.PermitirRegistrar(false);
                    this.vista.MostrarMensaje(mnj, ETipoMensajeIU.ADVERTENCIA, null);
                }

                #region SC0006 - Adición de validación para el estatus de Siniestro
                bool lPermitir = true;
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Generacion:
                case (int)ETipoEmpresa.Equinova:
                case (int)ETipoEmpresa.Construccion:
                    lPermitir = unidadBase.Unidad.EstatusActual != null && (unidadBase.Unidad.EstatusActual == EEstatusUnidad.Disponible || unidadBase.Unidad.EstatusActual == EEstatusUnidad.EnVenta || unidadBase.Unidad.EstatusActual == EEstatusUnidad.Siniestro);
                    break;

                default:
                    if ((unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Disponible) &&
                        (unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.EnTaller) &&
                        (unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Seminuevo) &&
                        (unidadBase.Unidad.EstatusActual.Value != EEstatusUnidad.Siniestro))
                    {
                        lPermitir = false;
                        this.vista.MostrarMensaje("No se puede dar de baja a la unidad de la sucursal actual, porque esta se encuentra en uso, verifique su información", ETipoMensajeIU.ADVERTENCIA, null);
                    }
                    break;
                }
                this.vista.PermitirRegistrar(lPermitir);
                #endregion

                //Validamos los equipos aliados
                if (unidadBase.TieneEquipoAliado.HasValue)
                {
                    if (unidadBase.TieneEquipoAliado.Value)
                    {
                        this.vista.PermitirRegistrar(false);
                        this.vista.MostrarMensaje("No se puede dar de baja a la unidad de la sucursal actual, porque esta aun cuenta con equipos aliados asociados, elimine los equipos e intente de nuevo.", ETipoMensajeIU.ADVERTENCIA, null);
                    }
                }

                //Desplegamos la unidad obtenida
                this.DatoAInterfazUsuario(unidadBase);
                this.EstablecerSeguridad();
            }
            catch (Exception ex)
            {
                this.vista.PermitirRegistrar(false);
                throw new Exception(string.Format("{0}.PrepararEdicion:{1}{2}", nombreClase, Environment.NewLine, ex.Message));
            }
        }