/// <summary>
        /// Asocia los datos del objeto Contrato a la interfaz
        /// </summary>
        /// <param name="bo">Origen de los datos</param>
        private void DatoAInterfazUsuario(ContratoRDBO bo)
        {
            try{
                if (bo == null)
                {
                    bo = new ContratoRDBO();
                    if (bo.Sucursal == null)
                    {
                        bo.Sucursal = new SucursalBO();
                    }
                    if (bo.Sucursal.UnidadOperativa == null)
                    {
                        bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
                    }
                    return;
                }
                this.vista.ContratoID = bo.ContratoID;
                if (bo.Estatus != null)
                {
                    this.vista.EstatusID = (int)bo.Estatus;
                }
                else
                {
                    this.vista.EstatusID = null;
                }

                this.presentadorHerramientas.DatosAInterfazUsuario(bo);

                if (bo != null && bo.DocumentosAdjuntos != null && bo.DocumentosAdjuntos.Count > 0)
                {
                    bo.DocumentosAdjuntos = bo.DocumentosAdjuntos.Where(archivo => archivo.Activo == true).ToList();
                }
                #region Lineas
                if (bo.ObtenerLineaContrato() != null && bo.ObtenerLineaContrato().Equipo != null && bo.ObtenerLineaContrato().Equipo is UnidadBO && ((UnidadBO)bo.ObtenerLineaContrato().Equipo).UnidadID != null)
                {
                    ElementoFlotaBO elemento = new ElementoFlotaBO()
                    {
                        Unidad = (UnidadBO)bo.ObtenerLineaContrato().Equipo
                    };
                    elemento.Tramites = new TramiteBR().ConsultarCompleto(this.dctx, new TramiteProxyBO()
                    {
                        Activo = true, Tramitable = elemento.Unidad
                    }, false);
                    if (elemento != null && elemento.Unidad != null && elemento.Unidad.Sucursal == null)
                    {
                        elemento.Unidad.Sucursal = new SucursalBO();
                    }

                    this.presentadorDG.DatoAInterfazUsuario(elemento as object);
                    this.presentadorDG.ProductoServicioAInterfazUsuario(bo.ObtenerLineaContrato().ProductoServicio);
                    this.presentadorDG.MostrarProductoServicio(true);
                    this.presentadorEA.DatoAInterfazUsuario(elemento as object);
                    this.presentadorEA.CargarEquiposAliados();
                }
                else
                {
                    this.presentadorDG.Inicializar();
                    this.presentadorEA.Inicializar();
                }

                int?kmRecorridos = null;
                if (bo.ObtenerLineaContrato() != null)
                {
                    kmRecorridos = bo.ObtenerLineaContrato().CalcularKilometrajeRecorrido();
                }
                #endregion
                //En cualquiera de estos casos, es Cancelación
                bool casoPermitido1 = bo.Estatus != null && bo.Estatus == EEstatusContrato.EnPausa;
                bool casoPermitido2 = bo.Estatus != null && bo.Estatus == EEstatusContrato.PendientePorCerrar && kmRecorridos != null && kmRecorridos == 0;
                //En este caso, es Cierre
                bool casoPermitido3 = bo.Estatus != null && bo.Estatus == EEstatusContrato.PendientePorCerrar && kmRecorridos != null && kmRecorridos > 0;

                this.vista.Cancelable = casoPermitido1 || casoPermitido2;
                this.vista.Cerrable   = casoPermitido3;

                this.vista.PermitirCerrar(casoPermitido1 || casoPermitido2 || casoPermitido3);

                this.presentadorDocumentosContrato.Vista.EstablecerListasArchivos(bo.DocumentosAdjuntos, new List <TipoArchivoBO>());
                LineaContratoRDBO linea = bo.ObtenerLineaContrato();
                if (linea != null)
                {
                    ListadoVerificacionBO chkEntrega   = new ListadoVerificacionBO();
                    ListadoVerificacionBO chkRecepcion = new ListadoVerificacionBO();
                    chkEntrega = linea.ObtenerListadoVerificacionPorTipo(ETipoListadoVerificacion.ENTREGA);
                    if (chkEntrega != null)
                    {
                        this.presentadorDocumentosEntrega.Vista.EstablecerListasArchivos(chkEntrega.Adjuntos, new List <TipoArchivoBO>());
                    }
                    chkRecepcion = linea.ObtenerListadoVerificacionPorTipo(ETipoListadoVerificacion.RECEPCION);
                    if (chkRecepcion != null)
                    {
                        this.presentadorDocumentosRecepcion.Vista.EstablecerListasArchivos(chkRecepcion.Adjuntos, new List <TipoArchivoBO>());
                    }
                }
                this.presentadorResumen.DatosAInterfazUsuario(bo);
                this.vista.UltimoObjeto = bo;
            } catch (Exception ex) {
                throw new Exception(this.nombreClase + ".DatoAInterfazUsuario: " + ex.Message);
            }
        }
Example #2
0
        /// <summary>
        /// Enlaza los datos a la interfaz de usuario
        /// </summary>
        /// <param name="bo"> objeto con los datos necesarios</param>
        private void DatoAInterfazUsuario(ContratoRDBO bo)
        {
            this.vista.ContratoID    = bo.ContratoID;
            this.vista.FechaContrato = bo.FechaContrato;
            if (bo.Estatus != null)
            {
                this.vista.EstatusID = (int)bo.Estatus;
            }
            else
            {
                this.vista.EstatusID = null;
            }

            if (bo.CierreContrato == null)
            {
                bo.CierreContrato = new CancelacionContratoRDBO();
            }
            if (bo.CierreContrato.Usuario == null)
            {
                bo.CierreContrato.Usuario = new UsuarioBO();
            }

            LineaContratoRDBO linea = bo.ObtenerLineaContrato();

            if (linea != null)
            {
                if (linea.Equipo != null)
                {
                    this.vista.EquipoID = linea.Equipo.EquipoID;
                    if (linea.Equipo is UnidadBO)
                    {
                        this.vista.UnidadID = ((UnidadBO)linea.Equipo).UnidadID;
                        ElementoFlotaBO elemento = new ElementoFlotaBO()
                        {
                            Unidad = (UnidadBO)linea.Equipo
                        };
                        elemento.Tramites = new TramiteBR().ConsultarCompleto(this.dctx, new TramiteProxyBO()
                        {
                            Activo = true, Tramitable = elemento.Unidad
                        }, false);
                        if (elemento != null)
                        {
                            if (elemento.Unidad != null && elemento.Unidad.Sucursal == null)
                            {
                                elemento.Unidad.Sucursal = linea.Equipo.Sucursal;
                            }

                            this.presentadorDG.DatoAInterfazUsuario(elemento as object);
                            this.presentadorEA.DatoAInterfazUsuario(elemento as object);
                            this.presentadorEA.CargarEquiposAliados();
                        }
                    }
                    else
                    {
                        this.vista.UnidadID = null;
                    }
                }
                if (linea.Equipo.ActivoFijo != null && linea.Equipo.ActivoFijo.CostoSinIva != null)
                {
                    Decimal?montoDeducibleCalcuado = 0;
                    montoDeducibleCalcuado = linea.Equipo.ActivoFijo.CostoSinIva;
                    var unidad = (UnidadBO)linea.Equipo;
                    if (unidad.EquiposAliados.Count > 0)
                    {
                        montoDeducibleCalcuado = unidad.EquiposAliados.Aggregate(montoDeducibleCalcuado, (monto, equipoAliado) => equipoAliado.ActivoFijo != null ? equipoAliado.ActivoFijo.CostoSinIva != null ? monto + equipoAliado.ActivoFijo.CostoSinIva : monto : monto);
                    }
                    this.vista.ImporteDeposito = bo.CalcularMontoDeposito(montoDeducibleCalcuado.Value);
                }
                else
                {
                    this.vista.ImporteDeposito = null;
                }
                //Tarifas
                if (linea.Cobrable == null)
                {
                    var tarifaTemporal = ((TarifaContratoRDBO)linea.Cobrable);
                    this.vista.TarifaKmLibres     = tarifaTemporal.KmsLibres;
                    this.vista.TarifaKmExcedido   = tarifaTemporal.RangoTarifas != null && tarifaTemporal.RangoTarifas.Any() ? tarifaTemporal.RangoTarifas.First().CargoKm ?? 0 : 0;
                    this.vista.TarifaHrsLibres    = tarifaTemporal.HrsLibres;
                    this.vista.TarifaHrsExcedidas = tarifaTemporal.RangoTarifas != null && tarifaTemporal.RangoTarifas.Any() ? tarifaTemporal.RangoTarifas.First().CargoHr ?? 0 : 0;
                }
                //Listados de Verificación
                ListadoVerificacionBO entrega = linea.ObtenerListadoVerificacionPorTipo(ETipoListadoVerificacion.ENTREGA);
                if (entrega == null)
                {
                    entrega = new ListadoVerificacionBO();
                }
                ListadoVerificacionBO recepcion = linea.ObtenerListadoVerificacionPorTipo(ETipoListadoVerificacion.RECEPCION);
                if (recepcion == null)
                {
                    recepcion = new ListadoVerificacionBO();
                }
                this.vista.FechaRecepcion = recepcion.Fecha;

                this.vista.KmRecorrido           = linea.CalcularKilometrajeRecorrido();
                this.vista.KmRecorrido           = linea.CalcularKilometrajeRecorrido();
                this.vista.KmExcedido            = linea.CalcularKilometrosExcedidos();
                this.vista.MontoKmExcedido       = linea.CalcularMontoPorKilometrosExcedidos();
                this.vista.HrsExcedidas          = linea.CalcularHorasExcedidas();
                this.vista.HrsConsumidas         = linea.CalcularHorasConsumidas();
                this.vista.MontoHrsExcedidas     = linea.CalcularMontoPorHorasExcedidas();
                this.vista.KmEntrega             = entrega.Kilometraje;
                this.vista.HrsEntrega            = entrega.Horometro;
                this.vista.KmRecepcion           = recepcion.Kilometraje;
                this.vista.HrsRecepcion          = recepcion.Horometro;
                this.vista.DiferenciaCombustible = linea.CalcularDiferenciaCombustible();

                if (this.vista.ImporteUnidadCombustible != null)
                {
                    this.vista.ImporteTotalCombustible = linea.CalcularMontoCombustible(this.vista.ImporteUnidadCombustible.Value);
                }
                else
                {
                    this.vista.ImporteUnidadCombustible = null;
                }

                //Cierre del Contrato
                this.vista.ObservacionesCierre = bo.CierreContrato.Observaciones;
                if (bo.CierreContrato is CierreContratoRDBO)
                {
                    this.vista.ImporteReembolso       = ((CierreContratoRDBO)bo.CierreContrato).ImporteReembolso;
                    this.vista.CargoAbusoOperacion    = ((CierreContratoRDBO)bo.CierreContrato).CargoAbusoOperacion;
                    this.vista.CargoDisposicionBasura = ((CierreContratoRDBO)bo.CierreContrato).CargoDisposicionBasura;
                    this.vista.PersonaRecibeReembolso = ((CierreContratoRDBO)bo.CierreContrato).PersonaRecibeReembolso;
                }
                else
                {
                    this.vista.ImporteReembolso       = null;
                    this.vista.CargoAbusoOperacion    = null;
                    this.vista.CargoDisposicionBasura = null;
                    this.vista.PersonaRecibeReembolso = null;
                }

                //Cálculos de Días de Renta
                this.vista.DiasRentaProgramada = bo.CalcularDiasPrometidosRenta();
                this.vista.DiasEnTaller        = 0;
                this.vista.DiasRealesRenta     = bo.CalcularDiasTranscurridosRenta();
                if (this.vista.DiasRentaProgramada != null && this.vista.DiasRealesRenta != null)
                {
                    this.vista.DiasAdicionales = this.vista.DiasRealesRenta.Value - this.vista.DiasRentaProgramada.Value;
                }
                else
                {
                    this.vista.DiasAdicionales = null;
                }
                if (this.vista.DiasAdicionales != null && ((TarifaContratoRDBO)linea.Cobrable).TarifaDiaria != null)
                {
                    this.vista.MontoTotalDiasAdicionales = this.vista.DiasAdicionales * ((TarifaContratoRDBO)linea.Cobrable).TarifaDiaria;
                }
                else
                {
                    this.vista.MontoTotalDiasAdicionales = null;
                }
            }

            this.presentadorHerramientas.DatosAInterfazUsuario(bo);
            this.presentadorResumen.DatosAInterfazUsuario(bo);
        }