public static void fCerrarOrden(EOrdenTrabajo p_eOrdenACerrar, StatMsg p_smResult) { DBConn l_dbcAccess = null; try { // Obtenemos una conexion l_dbcAccess = DBRuts.GetConection(Connections.Dat); l_dbcAccess.BeginTransaction(); int kilometrajeActualMovil = Bll.Moviles.fGetKilometrajeActualWithConn(l_dbcAccess, p_eOrdenACerrar.Patente, p_smResult); if (p_smResult.NOk) { return; } // Conseguimos la fecha de hoy DateTime l_dtToday = BllRuts.GetDBNow(l_dbcAccess, false, p_smResult); if (p_smResult.NOk) { return; } p_eOrdenACerrar.Kmsactuales = kilometrajeActualMovil; p_eOrdenACerrar.Feccierre = l_dtToday; p_eOrdenACerrar.Finalizada(); Bll.OrdenesTrabajo.SSav(l_dbcAccess, p_eOrdenACerrar, p_smResult); if (p_smResult.NOk) { return; } // Pedimos los registros de la tabla EMovilEstado estadoActual = Bll.Moviles.fGetMovilEstadoActual(l_dbcAccess, p_eOrdenACerrar.Patente, p_smResult); if (p_smResult.NOk) { return; } LEOrdenesTrabajo ordenesPendientes = OrdenesTrabajo.getPendByPatente(l_dbcAccess, p_eOrdenACerrar.Patente, p_smResult); if (p_smResult.NOk) { return; } // Si el movil esta en mantenimiento y acabamos de cerrar la ultima orden en progreso, pasamos el movil a disponible. if (estadoActual.EstaEnEstadoMantenimiento && !ordenesPendientes.ToList().Exists(ordenPend => ordenPend.EstaEnProgreso)) { fGrabarEstadoMovil(l_dbcAccess, p_eOrdenACerrar.Patente, EMovilEstado.EstadoDisponible, p_smResult); if (p_smResult.NOk) { return; } } } catch (Exception l_expData) { // Error en la operacion p_smResult.BllError(l_expData.ToString()); } finally { // Si pude abrir la conexion -> la cierro if (l_dbcAccess != null) { l_dbcAccess.EndTransaction(p_smResult); l_dbcAccess.Close(); } } }
//--------------------------------------------------------------- // Metodos públicos de la clase //--------------------------------------------------------------- #region Metodos publicos de la clase public static void fCheckCreacionAlertas(EMovil p_entMovil, StatMsg p_smResult) { DBConn l_dbcAccess = null; try{ // Obtenemos una conexion l_dbcAccess = DBRuts.GetConection(Connections.Dat); Bel.LEMovilesAlertas configAlertas = Moviles.MvalFSch(l_dbcAccess, p_entMovil.Patente, true, p_smResult); if (p_smResult.NOk) { return; } if (configAlertas.Count == 0) { return; } p_entMovil.MovilesKms = Moviles.MvkmFSch(l_dbcAccess, p_entMovil.Patente, true, p_smResult); if (p_smResult.NOk) { return; } LEAlertas alertasDelMovil = Alertas.AleGetAlertasFromMovil(p_entMovil.Patente, p_smResult); if (p_smResult.NOk) { return; } LEOTItems reparacionesDelMovil = OrdenesTrabajo.OtitGetRealizadosMvl(p_entMovil.Patente, p_smResult); if (p_smResult.NOk) { return; } DateTime fechaActual = BllRuts.GetDBNow(l_dbcAccess, p_smResult); if (p_smResult.NOk) { return; } // Iteramos por todas las config alertas y si alguna cumple condicion creamos la nueva alerta. foreach (EMovilAlerta configAlerta in configAlertas) { if (configAlerta.CumpleCondicion(p_entMovil, alertasDelMovil, reparacionesDelMovil, fechaActual)) { ETalonario nroAlerta = AppRuts.TaloGet(l_dbcAccess, "ConfAlerta", p_smResult); if (p_smResult.NOk) { return; } Bel.EAlerta nuevaAlerta = configAlerta.crearAlerta(nroAlerta.Valor, fechaActual); Alertas.AleSave(nuevaAlerta, p_smResult); if (p_smResult.NOk) { return; } } } } catch (Exception l_expData) { // Error en la operacion p_smResult.BllError(l_expData.ToString()); } finally{ // Si pude abrir la conexion -> la cierro if (l_dbcAccess != null) { l_dbcAccess.Close(); } } }