public void ObtenerDatosUnidad() { if (this.vista.lstUnidades != null) { if (this.vista.lstUnidades.Count > 0) { int? equipoId = this.vista.EquipoID.Value != null ? this.vista.EquipoID.Value : 0; UnidadBO unidad = this.vista.lstUnidades.Where(r => r.EquipoID == this.vista.EquipoID).FirstOrDefault(); if (unidad == null) { throw new Exception("La unidad seleccionada no es valida. Favor de recargar el contrato."); } //revisamos que tenga checklist de recepción ContratoPSLBO bo = (ContratoPSLBO)this.vista.ObtenerPaqueteNavegacion("UltimoContratoPSLBO"); ContratoPSLBR contratoPSLBR = new ContratoPSLBR(); //Obtenemos el Horómetro if (bo != null) { if (bo.LineasContrato != null) { LineaContratoPSLBO lineaContrato = (LineaContratoPSLBO)bo.LineasContrato.Where(r => r.Equipo.EquipoID == equipoId).FirstOrDefault(); //Verificamos que exista un checkList de recepción if (lineaContrato.ListadosVerificacion.Count < 2) { bool existeEntrega = lineaContrato.ListadosVerificacion.Where(r => r.Tipo == ETipoListadoVerificacion.ENTREGA).Any(); if (existeEntrega) { //Obtiene los últimos valores de Combustible y Horómetro List <Int32> linea = contratoPSLBR.ConsultarUltimosCombustibleHorometro(this.dctx, unidad.UnidadID, ETipoListadoVerificacion.ENTREGA); this.vista.PorcentajeUnidadCliente = linea.Count > 0 ? linea[0].ToString() : Convert.ToString(0); this.vista.HorometroUnidadCliente = linea.Count > 0 ? linea[1].ToString() : Convert.ToString(0); } } else { bool existeRecepcion = lineaContrato.ListadosVerificacion.Where(r => r.Tipo == ETipoListadoVerificacion.RECEPCION).Any(); if (existeRecepcion) { if (lineaContrato != null) { //LineaContratoPSLBO lineaContratoBO = new LineaContratoPSLBO(); AVerificacionLineaPSLBO listado = lineaContrato.ObtenerListadoVerificacionPorTipo <AVerificacionLineaPSLBO>(ETipoListadoVerificacion.RECEPCION); //Obtiene los últimos valores de Combustible y Horómetro List <Int32> linea = contratoPSLBR.ConsultarUltimosCombustibleHorometro(this.dctx, unidad.UnidadID, ETipoListadoVerificacion.RECEPCION); this.vista.PorcentajeUnidadCliente = linea.Count > 0 ? linea[0].ToString() : Convert.ToString(0); this.vista.HorometroUnidadCliente = linea.Count > 0 ? linea[1].ToString() : Convert.ToString(0); } } } } else { throw new Exception(this.nombreClase + ".ObtenerDatosUnidad: no se pueden obtener líneas del contrato de esta unidad "); } } else { throw new Exception(this.nombreClase + ".ObtenerDatosUnidad: no se pueden obtener datos del contrato "); } this.vista.ECodeCliente = unidad.NumeroEconomico; //consultamos el modelo this.vista.ModeloCliente = ConsultarModeloUnidad(unidad.IDLider).ConfiguracionModeloMotorizacion.Modelo.Nombre; this.vista.EquipoID = unidad.EquipoID; this.vista.UnidadID = unidad.UnidadID; this.vista.SucursalID = unidad.Sucursal.Id; } } else { throw new Exception(this.nombreClase + ".ObtenerDatosUnidad: no se pueden determinar la unidad del contrato "); } }
/// <summary> /// Despliega la línea en la interfaz de usuario /// </summary> /// <param name="lineaContrato"></param> /// <param name="plazoAnio"></param> public void DatosAInterfazUsuario(LineaContratoPSLBO lineaContrato, ContratoPSLBO bo) { DatosAInterfazUsuario((UnidadBO)lineaContrato.Equipo); if (lineaContrato.Equipo != null && lineaContrato.Equipo.Sucursal != null && lineaContrato.Equipo.Sucursal.UnidadOperativa != null) { vista.UnidadOperativaID = lineaContrato.Equipo.Sucursal.UnidadOperativa.Id; } //this.vista.TipoTarifaID = (int?)lineaContrato.TipoTarifa; if (lineaContrato.Cobrable != null) { var tarifaContrato = ((TarifaContratoPSLBO)lineaContrato.Cobrable); vista.TarifaPSLID = tarifaContrato.TarifaPSLID; vista.DuracionDiasPeriodo = tarifaContrato.DuracionDiasPeriodo; vista.MaximoHrsTurno = tarifaContrato.MaximoHrsTurno; //Tarifas this.vista.TarifaHrsLibres = tarifaContrato.HorasLibres == null ? 0 : tarifaContrato.HorasLibres; this.vista.TarifaHrsExcedidas = tarifaContrato.RangoTarifas != null && tarifaContrato.RangoTarifas.Any() ? tarifaContrato.RangoTarifas.First().Cargo ?? 0 : 0; AVerificacionLineaPSLBO entrega = lineaContrato.ObtenerListadoVerificacionPorTipo <AVerificacionLineaPSLBO>(ETipoListadoVerificacion.ENTREGA); AVerificacionLineaPSLBO recepcion = lineaContrato.ObtenerListadoVerificacionPorTipo <AVerificacionLineaPSLBO>(ETipoListadoVerificacion.RECEPCION); this.vista.HrsExcedidas = lineaContrato.CalcularHorasExcedidas(); this.vista.HrsConsumidas = lineaContrato.CalcularHorasConsumidas(); this.vista.MontoHrsExcedidas = lineaContrato.CalcularMontoPorHorasExcedidas() == null ? 0 : lineaContrato.CalcularMontoPorHorasExcedidas(); this.vista.HrsEntrega = entrega.Horometro; this.vista.HrsRecepcion = recepcion.Horometro; this.vista.DiferenciaCombustible = lineaContrato.CalcularDiferenciaCombustible(); if (this.vista.ImporteUnidadCombustible != null) { this.vista.ImporteTotalCombustible = lineaContrato.CalcularMontoCombustible(this.vista.ImporteUnidadCombustible.Value); } else { this.vista.ImporteUnidadCombustible = null; } this.vista.CargoAbusoOperacion = lineaContrato.CargoAbusoOperacion; this.vista.CargoDisposicionBasura = lineaContrato.CargoDisposicionBasura; //Cálculos de Días de Renta this.vista.DiasRentaProgramada = bo.CalcularDiasPrometidosRenta(); this.vista.DiasEnTaller = 0; //TODO: Integración con módulo de mantenimiento 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 && ((TarifaContratoPSLBO)lineaContrato.Cobrable).TarifaDiaria != null) { this.vista.MontoTotalDiasAdicionales = this.vista.DiasAdicionales * ((TarifaContratoPSLBO)lineaContrato.Cobrable).TarifaDiaria; } else { this.vista.MontoTotalDiasAdicionales = null; } } else { this.vista.TarifaHrsLibres = 0; this.vista.MontoHrsExcedidas = 0; } }