Beispiel #1
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));
            }
        }
Beispiel #2
0
        /// <summary>
        /// Despliega en la vista la inforamciónd e la unidad que se haya recuperado
        /// </summary>
        /// <param name="unidadBase">Unidad que se desea visualizar</param>
        private void DatoAInterfazUsuario(ElementoFlotaBOF unidadBase)
        {
            var elemento = unidadBase;

            #region Datos Elemento
            #region Nuevo elemento
            if (elemento == null)
            {
                elemento.Unidad = new UnidadBO
                {
                    Cliente  = new ClienteBO(),
                    Sucursal = new SucursalBO {
                        UnidadOperativa = new UnidadOperativaBO()
                    },
                    Modelo = new ModeloBO {
                        Marca = new MarcaBO()
                    },
                    ActivoFijo            = new ActivoFijoBO(),
                    CaracteristicasUnidad = new CaracteristicasUnidadBO(),
                    EquiposAliados        = new List <EquipoAliadoBO>(),
                    TipoEquipoServicio    = new TipoUnidadBO(),
                };
                elemento.Tramites = new List <TramiteBO>();
                elemento.Contrato = new ContratoProxyBO {
                    Cliente = new CuentaClienteIdealeaseBO()
                };
            }
            #endregion

            #region Instanciar Propiedades
            if (elemento.Unidad == null)
            {
                elemento.Unidad = new UnidadBO
                {
                    Cliente  = new ClienteBO(),
                    Sucursal = new SucursalBO {
                        UnidadOperativa = new UnidadOperativaBO()
                    },
                    Modelo = new ModeloBO {
                        Marca = new MarcaBO()
                    },
                    ActivoFijo            = new ActivoFijoBO(),
                    CaracteristicasUnidad = new CaracteristicasUnidadBO(),
                    EquiposAliados        = new List <EquipoAliadoBO>(),
                    TipoEquipoServicio    = new TipoUnidadBO(),
                };
            }
            if (elemento.Unidad.Cliente == null)
            {
                elemento.Unidad.Cliente = new ClienteBO();
            }
            if (elemento.Unidad.Sucursal == null)
            {
                elemento.Unidad.Sucursal = new SucursalBO {
                    UnidadOperativa = new UnidadOperativaBO()
                }
            }
            ;
            if (elemento.Unidad.Sucursal.UnidadOperativa == null)
            {
                elemento.Unidad.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            }
            if (elemento.Unidad.Modelo == null)
            {
                elemento.Unidad.Modelo = new ModeloBO {
                    Marca = new MarcaBO()
                }
            }
            ;
            if (elemento.Unidad.Modelo.Marca == null)
            {
                elemento.Unidad.Modelo.Marca = new MarcaBO();
            }
            if (elemento.Unidad.ActivoFijo == null)
            {
                elemento.Unidad.ActivoFijo = new ActivoFijoBO();
            }
            if (elemento.Unidad.CaracteristicasUnidad == null)
            {
                elemento.Unidad.CaracteristicasUnidad = new CaracteristicasUnidadBO();
            }
            if (elemento.Unidad.EquiposAliados == null)
            {
                elemento.Unidad.EquiposAliados = new List <EquipoAliadoBO>();
            }
            if (elemento.Unidad.TipoEquipoServicio == null)
            {
                elemento.Unidad.TipoEquipoServicio = new TipoUnidadBO();
            }
            if (elemento.Tramites == null)
            {
                elemento.Tramites = new List <TramiteBO>();
            }
            if (elemento.Contrato == null)
            {
                elemento.Contrato = new ContratoProxyBO {
                    Cliente = new CuentaClienteIdealeaseBO()
                }
            }
            ;
            if (elemento.Contrato.Cliente == null)
            {
                elemento.Contrato.Cliente = new CuentaClienteIdealeaseBO();
            }
            #endregion

            #region Información de la Unidad en barra
            this.vista.EstaDisponible    = elemento.EstaDisponible;
            this.vista.EstaEnContrato    = elemento.EstaEnRenta;
            this.vista.TieneEquipoAliado = elemento.TieneEquipoAliado;

            #region Tramites
            PlacaEstatalBO tPlacaEstatal = (PlacaEstatalBO)elemento.Tramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL);
            PlacaFederalBO tPlacaFederal = (PlacaFederalBO)elemento.Tramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_FEDERAL);

            this.vista.NumeroPlaca = tPlacaFederal != null
                                         ? tPlacaFederal.Numero
                                         : (tPlacaEstatal != null ? tPlacaEstatal.Numero : null);
            #endregion
            #endregion
            #endregion

            #region Datos Unidad
            var bo = unidadBase.Unidad;
            #region Unidad Nueva
            if (ReferenceEquals(bo, null))
            {
                bo = new UnidadBO
                {
                    ActivoFijo     = new ActivoFijoBO(),
                    EquiposAliados = new List <EquipoAliadoBO>(),
                    Modelo         = new ModeloBO {
                        Marca = new MarcaBO()
                    },
                    Sucursal = new SucursalBO {
                        UnidadOperativa = new UnidadOperativaBO()
                    },
                    TipoEquipoServicio = new TipoUnidadBO()
                };
            }
            #endregion

            #region Instancias de propiedades
            if (bo.TipoEquipoServicio == null)
            {
                bo.TipoEquipoServicio = new TipoUnidadBO();
            }
            if (bo.ActivoFijo == null)
            {
                bo.ActivoFijo = new ActivoFijoBO();
            }
            if (bo.EquiposAliados == null)
            {
                bo.EquiposAliados = new List <EquipoAliadoBO>();
            }
            if (bo.Modelo == null)
            {
                bo.Modelo = new ModeloBO {
                    Marca = new MarcaBO()
                }
            }
            ;
            if (bo.Sucursal == null)
            {
                bo.Sucursal = new SucursalBO {
                    UnidadOperativa = new UnidadOperativaBO()
                }
            }
            ;
            #endregion

            #region DetalleUnidad
            this.vista.UnidadID          = bo.UnidadID;
            this.vista.NumeroSerie       = bo.NumeroSerie;
            this.vista.ClaveActivoOracle = bo.ClaveActivoOracle;
            this.vista.LiderID           = bo.IDLider;
            this.vista.NumeroEconomico   = bo.NumeroEconomico;
            this.vista.TipoUnidadNombre  = bo.TipoEquipoServicio.Nombre;
            this.vista.ModeloNombre      = bo.Modelo.Nombre;
            this.vista.Anio         = bo.Anio;
            this.vista.FechaCompra  = bo.ActivoFijo.FechaFacturaCompra;
            this.vista.MontoFactura = bo.ActivoFijo.CostoSinIva;
            this.vista.FolioFactura = string.Empty;
            #endregion

            #region Info Sucursal
            bool completa = false;
            this.vista.SucursalActualID     = bo.Sucursal.Id;
            this.vista.SucursalActualNombre = bo.Sucursal.Nombre;

            #region Empresa
            var empresa = new EmpresaBO();
            if (bo.Sucursal.UnidadOperativa != null)
            {
                this.vista.EmpresaActualID = bo.Sucursal.UnidadOperativa.Id;


                if (bo.Sucursal.UnidadOperativa.Empresa == null)
                {
                    #region Unidad Operativa
                    //Obtener información de la Unidad Operativa
                    List <UnidadOperativaBO> lstUO = FacadeBR.ConsultarUnidadOperativaCompleto(this.dctx,
                                                                                               new UnidadOperativaBO()
                    {
                        Id =
                            this.vista
                            .UnidadOperativaID
                    });
                    if (lstUO.Count <= 0)
                    {
                        throw new Exception(
                                  "No se encontró la información completa de la unidad operativa sobre la que trabaja.");
                    }
                    //Establecer la información de la Unidad Operativa
                    if (lstUO[0].Empresa != null)
                    {
                        empresa = lstUO[0].Empresa;
                    }
                    #endregion

                    this.vista.EmpresaActualNombre = empresa.Nombre;
                }
                else
                {
                    if (!string.IsNullOrEmpty(bo.Sucursal.UnidadOperativa.Empresa.Nombre) && !string.IsNullOrWhiteSpace(bo.Sucursal.UnidadOperativa.Empresa.Nombre))
                    {
                        this.vista.EmpresaActualNombre = bo.Sucursal.UnidadOperativa.Empresa.Nombre;
                    }
                    else
                    {
                        #region Unidad Operativa
                        //Obtener información de la Unidad Operativa
                        List <UnidadOperativaBO> lstUO = FacadeBR.ConsultarUnidadOperativaCompleto(this.dctx,
                                                                                                   new UnidadOperativaBO()
                        {
                            Id =
                                this.vista
                                .UnidadOperativaID
                        });
                        if (lstUO.Count <= 0)
                        {
                            throw new Exception(
                                      "No se encontró la información completa de la unidad operativa sobre la que trabaja.");
                        }
                        //Establecer la información de la Unidad Operativa
                        if (lstUO[0].Empresa != null)
                        {
                            empresa = lstUO[0].Empresa;
                        }

                        #endregion
                        this.vista.EmpresaActualNombre = empresa.Nombre;
                    }
                }
            }

            #endregion

            #region Domicilio Sucursal
            if (bo.Sucursal.DireccionesSucursal != null)
            {
                if (bo.Sucursal.DireccionesSucursal.Count > 0)
                {
                    var direccionActual = bo.Sucursal.DireccionesSucursal.Find(p => p.Primaria != null && p.Primaria == true);
                    if (direccionActual != null)
                    {
                        string dir = "";
                        if (!string.IsNullOrEmpty(direccionActual.Calle))
                        {
                            dir += (direccionActual.Calle + " ");
                        }
                        if (!string.IsNullOrEmpty(direccionActual.Colonia))
                        {
                            dir += (direccionActual.Colonia + " ");
                        }
                        if (!string.IsNullOrEmpty(direccionActual.CodigoPostal))
                        {
                            dir += (direccionActual.CodigoPostal + " ");
                        }
                        if (direccionActual.Ubicacion != null)
                        {
                            if (direccionActual.Ubicacion.Municipio != null && !string.IsNullOrEmpty(direccionActual.Ubicacion.Municipio.Nombre))
                            {
                                dir += (direccionActual.Ubicacion.Municipio.Nombre + " ");
                            }
                            if (direccionActual.Ubicacion.Ciudad != null && !string.IsNullOrEmpty(direccionActual.Ubicacion.Ciudad.Nombre))
                            {
                                dir += (direccionActual.Ubicacion.Ciudad.Nombre + " ");
                            }
                            if (direccionActual.Ubicacion.Estado != null && !string.IsNullOrEmpty(direccionActual.Ubicacion.Estado.Nombre))
                            {
                                dir += (direccionActual.Ubicacion.Estado.Nombre + " ");
                            }
                            if (direccionActual.Ubicacion.Pais != null && !string.IsNullOrEmpty(direccionActual.Ubicacion.Pais.Nombre))
                            {
                                dir += (direccionActual.Ubicacion.Pais.Nombre + " ");
                            }
                        }

                        if (dir != null && dir.Trim().CompareTo("") != 0)
                        {
                            this.vista.DomicilioSucursalActual = dir;
                            completa = true;
                        }
                        else
                        {
                            this.vista.DomicilioSucursalActual = null;
                        }
                    }
                    else
                    {
                        this.vista.DomicilioSucursalActual = null;
                    }
                }
                else
                {
                    this.vista.DomicilioSucursalActual = null;
                }
            }
            #endregion

            #region Consultar Completo para obtener la Dirección
            if (bo.Sucursal != null && bo.Sucursal.Id != null && !completa)
            {
                List <SucursalBO> lst = FacadeBR.ConsultarSucursalCompleto(this.dctx, bo.Sucursal);

                DireccionSucursalBO direccion = null;
                if (lst.Count > 0 && lst[0].DireccionesSucursal != null)
                {
                    direccion = lst[0].DireccionesSucursal.Find(p => p.Primaria != null && p.Primaria == true);
                }

                if (direccion != null)
                {
                    string dir = "";
                    if (!string.IsNullOrEmpty(direccion.Calle))
                    {
                        dir += (direccion.Calle + " ");
                    }
                    if (!string.IsNullOrEmpty(direccion.Colonia))
                    {
                        dir += (direccion.Colonia + " ");
                    }
                    if (!string.IsNullOrEmpty(direccion.CodigoPostal))
                    {
                        dir += (direccion.CodigoPostal + " ");
                    }
                    if (direccion.Ubicacion != null)
                    {
                        if (direccion.Ubicacion.Municipio != null && !string.IsNullOrEmpty(direccion.Ubicacion.Municipio.Nombre))
                        {
                            dir += (direccion.Ubicacion.Municipio.Nombre + " ");
                        }
                        if (direccion.Ubicacion.Ciudad != null && !string.IsNullOrEmpty(direccion.Ubicacion.Ciudad.Nombre))
                        {
                            dir += (direccion.Ubicacion.Ciudad.Nombre + " ");
                        }
                        if (direccion.Ubicacion.Estado != null && !string.IsNullOrEmpty(direccion.Ubicacion.Estado.Nombre))
                        {
                            dir += (direccion.Ubicacion.Estado.Nombre + " ");
                        }
                        if (direccion.Ubicacion.Pais != null && !string.IsNullOrEmpty(direccion.Ubicacion.Pais.Nombre))
                        {
                            dir += (direccion.Ubicacion.Pais.Nombre + " ");
                        }
                    }

                    if (dir != null && dir.Trim().CompareTo("") != 0)
                    {
                        this.vista.DomicilioSucursalActual = dir;
                        completa = true;
                    }
                    else
                    {
                        this.vista.DomicilioSucursalActual = null;
                    }
                }
                else
                {
                    this.vista.DomicilioSucursalActual = null;
                }
            }
            else if (!completa)
            {
                this.vista.DomicilioSucursalActual = null;
            }
            #endregion

            #endregion
            #endregion
        }
        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);
            }
        }
Beispiel #4
0
        private void DatoAInterfazUsuario(object obj)
        {
            if (obj is ElementoFlotaBOF)
            {
                ElementoFlotaBOF elemento = (ElementoFlotaBOF)obj;
                if (elemento == null)
                {
                    elemento = new ElementoFlotaBOF();
                }
                if (elemento.Unidad == null)
                {
                    elemento.Unidad = new UnidadBO();
                }
                if (elemento.Contrato == null)
                {
                    elemento.Contrato = new ContratoProxyBO();
                }
                if (elemento.Contrato.Cliente == null)
                {
                    elemento.Contrato.Cliente = new CuentaClienteIdealeaseBO();
                }
                if (elemento.Tramites == null)
                {
                    elemento.Tramites = new List <TramiteBO>();
                }

                //Información de la unidad
                this.DatoAInterfazUsuario(elemento.Unidad);
                this.vista.AreaNombre        = elemento.AreaText;
                this.vista.EstatusNombre     = elemento.EstatusText;
                this.vista.EstaDisponible    = elemento.EstaDisponible;
                this.vista.EstaEnContrato    = elemento.EstaEnRenta;
                this.vista.TieneEquipoAliado = elemento.TieneEquipoAliado;

                //Información de trámites
                PlacaEstatalBO tPlacaEstatal = (PlacaEstatalBO)elemento.Tramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL);
                PlacaFederalBO tPlacaFederal = (PlacaFederalBO)elemento.Tramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_FEDERAL);
                SeguroBO       tSeguro       = (SeguroBO)elemento.Tramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.SEGURO);
                if (tSeguro == null)
                {
                    tSeguro = new SeguroBO();
                }

                if (tPlacaFederal != null)
                {
                    this.vista.NumeroPlaca = tPlacaFederal.Numero;
                    this.vista.TipoPlaca   = "FEDERAL";
                }
                else
                {
                    if (tPlacaEstatal != null)
                    {
                        this.vista.NumeroPlaca = tPlacaEstatal.Numero;
                        this.vista.TipoPlaca   = "ESTATAL";
                    }
                    else
                    {
                        this.vista.NumeroPlaca = null;
                        this.vista.TipoPlaca   = null;
                    }
                }
                this.vista.SeguroID = tSeguro.TramiteID;
                this.vista.FechaVigenciaSeguroInicial = tSeguro.VigenciaInicial;
                this.vista.FechaVigenciaSeguroFinal   = tSeguro.VigenciaFinal;
                this.vista.Aseguradora  = tSeguro.Aseguradora;
                this.vista.NumeroPoliza = tSeguro.NumeroPoliza;

                //Información del contrato
                this.vista.ContratoID     = elemento.Contrato.ContratoID;
                this.vista.NumeroContrato = elemento.Contrato.NumeroContrato;
                if (elemento.Contrato.Tipo != null)
                {
                    this.vista.TipoContratoID = (int)elemento.Contrato.Tipo;
                }
                else
                {
                    this.vista.TipoContratoID = null;
                }
                this.vista.CuentaClienteNombre      = elemento.Contrato.Cliente.Nombre;
                this.vista.FechaInicioContrato      = elemento.FechaInicioContrato;
                this.vista.FechaVencimientoContrato = elemento.FechaVencimientoContrato;
                if (elemento.FechaInicioContrato != null & elemento.FechaVencimientoContrato != null)
                {
                    this.vista.MesesFaltantesContrato = ((elemento.FechaVencimientoContrato.Value.Year - elemento.FechaInicioContrato.Value.Year) * 12) + elemento.FechaVencimientoContrato.Value.Month - elemento.FechaInicioContrato.Value.Month;
                }
                else
                {
                    this.vista.MesesFaltantesContrato = null;
                }

                this.ConfiguracionOpciones();
            }
            if (obj is UnidadBO)
            {
                UnidadBO unidad = (UnidadBO)obj;
                if (unidad == null)
                {
                    unidad = new UnidadBO();
                }
                if (unidad.ActivoFijo == null)
                {
                    unidad.ActivoFijo = new ActivoFijoBO();
                }
                if (unidad.Sucursal == null)
                {
                    unidad.Sucursal = new SucursalBO();
                }
                if (unidad.TipoEquipoServicio == null)
                {
                    unidad.TipoEquipoServicio = new TipoUnidadBO();
                }
                if (unidad.Modelo == null)
                {
                    unidad.Modelo = new ModeloBO();
                }
                if (unidad.Modelo.Marca == null)
                {
                    unidad.Modelo.Marca = new MarcaBO();
                }

                this.vista.UnidadID          = unidad.UnidadID;
                this.vista.EquipoID          = unidad.EquipoID;
                this.vista.IDLider           = unidad.IDLider;
                this.vista.ClaveActivoOracle = unidad.ClaveActivoOracle;
                this.vista.NumeroSerie       = unidad.NumeroSerie;
                this.vista.NumeroEconomico   = unidad.NumeroEconomico;
                this.vista.Anio = unidad.Anio;
                if (unidad.Area != null)
                {
                    this.vista.AreaID = Convert.ToInt32(unidad.Area);
                }
                else
                {
                    this.vista.AreaID = null;
                }
                if (unidad.EstatusActual != null)
                {
                    this.vista.EstatusID = (int)unidad.EstatusActual;
                }
                else
                {
                    this.vista.EstatusID = null;
                }

                this.vista.FechaCompra  = unidad.ActivoFijo.FechaFacturaCompra;
                this.vista.MontoFactura = unidad.ActivoFijo.CostoSinIva;
                if (this.vista.TiempoUsoActivos != null && unidad.ActivoFijo.FechaFacturaCompra != null && unidad.Area != null && (EArea)unidad.Area == EArea.RD)
                {
                    this.vista.FechaSustitucion = unidad.ActivoFijo.FechaFacturaCompra.Value.AddMonths(this.vista.TiempoUsoActivos.Value);
                }
                else
                {
                    this.vista.FechaSustitucion = null;
                }
                //Valores que en un futuro se obtendrán de Oracle pero que por ahora no tenemos
                this.vista.FolioFactura                  = null;
                this.vista.ValorLibros                   = unidad.ActivoFijo.ImporteResidual;
                this.vista.ResidualMonto                 = unidad.ActivoFijo.ImporteResidual;
                this.vista.ResidualPorcentaje            = unidad.ActivoFijo.PorcentajeResidual;
                this.vista.DepreciacionMensualMonto      = unidad.ActivoFijo.ImporteDepreciacion;
                this.vista.DepreciacionMensualPorcentaje = unidad.ActivoFijo.PorcentajeDepreciacion;
                this.vista.MesesVidaUtilTotal            = null;
                this.vista.MesesVidaUtilRestante         = null;

                this.vista.ModeloNombre     = unidad.Modelo.Nombre;
                this.vista.TipoUnidadNombre = unidad.TipoEquipoServicio.Nombre;
                this.vista.SucursalNombre   = unidad.Sucursal.Nombre;

                this.vista.Llantas        = unidad.Llantas;
                this.vista.EquiposAliados = unidad.EquiposAliados;
            }
        }
        /// <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));
            }
        }