private void Btn_Facturar_Click(object sender, EventArgs e) { try { CTRL.Terminal_CTRL Equipo = (CTRL.Terminal_CTRL)((Control)sender).Parent; //facturamos si el equipo se encuentra ocupado if (Equipo.Equipo.Estado != ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado & Equipo.Equipo.Estado != ENT.TiposAnidados_ENT.EstadoTerminal.Detenido) { return; } //enviamos la orden de detener el equipo EnviarOrdenaCliente(Equipo.Equipo.TCP, "BB"); Equipo.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Detenido); //validamos si la configuracion permite tiempo de ocio. if (Configuraciones.EstaTiempoOcioActivo() && Convert.ToInt32(Equipo.Equipo.TiempoConsumido.TotalMinutes) <= ENT.TiposAnidados_ENT.MinutosOcio) { DialogResult Res = MessageBox.Show("El Tiempo Consumido No Ha Superado El Tiempo De Ocio ¿Desea Anular El Tiempo (Si) Ó Desea Continuar (No)?" , "Advertencia ", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (Res == DialogResult.Yes) { EnviarOrdenaCliente(Equipo.Equipo.TCP, "Bloq"); Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); } else { EnviarOrdenaCliente(Equipo.Equipo.TCP, "Cont"); Equipo.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado); } } else { //llamamos al formulario de factura. Frm_Facturar Frm_Factura = new Frm_Facturar(Equipo.Equipo); Frm_Factura.ShowDialog(); if (Frm_Factura.OperacionSel != ENT.TiposAnidados_ENT.TipoOperacionFactura.Ninguna) { RealizarOperacion(Equipo, Frm_Factura.OperacionSel); } Application.DoEvents(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void AgregarCliente(string Nombre, int Puerto = 0, TcpClient ClienteSel = null) { try { string Notificacion = ""; ENT.Terminal_ENT Equipo = Equipos.Find(C => C.Equipo == Nombre); if (Equipo == null) { Equipo = new ENT.Terminal_ENT(); Equipo.Equipo = Nombre; Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Disponible; Equipo.Puerto = Puerto; Equipo.TCP = ClienteSel; Equipos.Add(Equipo); Ctrl_Terminales.AgregarControl(Equipo); AsignarEventosControlesTerminales(); Notificacion = "El cliente " + Equipo.Equipo + " se ha conectado"; } else { CTRL.Terminal_CTRL Ctrl = Ctrl_Terminales.EncontrarControlXNombre(Nombre); Equipo.Puerto = Puerto; Equipo.TCP = ClienteSel; Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Disponible; Ctrl.Equipo.Puerto = Puerto; Ctrl.Equipo.TCP = ClienteSel; Ctrl.CambiarEstado(Equipo.Estado); Notificacion = "El cliente " + Equipo.Equipo + " se ha reconectado"; } MostrarNotificacion(Notificacion); LlenarComboEquipos(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void Btn_TrasladarTiempo_Click(object sender, EventArgs e) { string Descripcion; BLL.Auditor_BLL Auditor = new BLL.Auditor_BLL(); CTRL.Terminal_CTRL Equipo = (CTRL.Terminal_CTRL)((Control)sender).Parent; CTRL.Terminal_CTRL Destino; List <string> Disponibles = (from Eq in Equipos where Eq.Estado == ENT.TiposAnidados_ENT.EstadoTerminal.Disponible select Eq.Equipo).ToList(); if (Equipo.Equipo.Estado != ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado) { return; } if (Disponibles.Count == 0) { MessageBox.Show("No hay equipos disponibles para hacer cambio."); return; } //detenemos el equipo actual para hacer el traslado de equipo Equipo.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Detenido); EnviarOrdenaCliente(Equipo.Equipo.TCP, "Bloq"); //solicitamos la seleccion del equipo destino Frm_TrasladoEquipo Frm_Traslado = new Frm_TrasladoEquipo(Equipo.Equipo, Disponibles); Frm_Traslado.Show(); //obtenemos el objeto destino Destino = Ctrl_Terminales.EncontrarControlXNombre(Frm_Traslado.DestinoSeleccionado); //asignamos las variables de la operacion vigente Destino.Equipo.TieneTiempoIlimitado = Equipo.Equipo.TieneTiempoIlimitado; Destino.Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado; Destino.Equipo.HoraInicio = Equipo.Equipo.HoraInicio; Destino.Equipo.TiempoConsumido = Equipo.Equipo.TiempoConsumido; Destino.Equipo.TiempoConsumir = Equipo.Equipo.TiempoConsumir; Destino.Equipo.Valor = Equipo.Equipo.Valor; Equipo.Equipo.ProductosAdicionales.ForEach(I => Destino.Equipo.ProductosAdicionales.Add( new ENT.Detalles_ENT() { Producto = I.Producto, Cantidad = I.Cantidad, ValorUnidad = I.ValorUnidad, ValorTotal = I.ValorTotal })); //habilitamos nuevamente el equipo Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); //enviamos la orden al destino if (Equipo.Equipo.TieneTiempoIlimitado) { EnviarOrdenaCliente(Destino.Equipo.TCP, "LI" + Destino.Equipo.TiempoConsumido.ToString()); } else { TimeSpan TiempoRestante = Destino.Equipo.TiempoConsumir.Subtract(Destino.Equipo.TiempoConsumido); EnviarOrdenaCliente(Destino.Equipo.TCP, "I" + TiempoRestante.ToString()); } Destino.ActualizarControles(); Descripcion = "El usuario " + Usuario.Usuario + " traslado el tiempo del equipo " + Equipo.Equipo.Equipo + " al equipo " + Destino.Equipo.Equipo + "a las " + DateTime.Now.ToLongTimeString(); Auditor.Registrar(Descripcion, Usuario.Usuario, ENT.TiposAnidados_ENT.AccionesAuditoria.TrasladarTiempo); }
private void RealizarOperacion(CTRL.Terminal_CTRL Equipo, ENT.TiposAnidados_ENT.TipoOperacionFactura Operacion) { try { DateTime HoraSalida = DateTime.Now; int EstadoAnulacion = 4; int EstadoFacturacion = 3; BLL.Auditor_BLL Auditor = new BLL.Auditor_BLL(); string Descripcion; switch (Operacion) { case ENT.TiposAnidados_ENT.TipoOperacionFactura.Continuar: EnviarOrdenaCliente(Equipo.Equipo.TCP, "Cont"); Equipo.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado); break; case ENT.TiposAnidados_ENT.TipoOperacionFactura.Anular: DialogResult Res = MessageBox.Show("¿Desea Anular Esta Factura?" , "Anular" , MessageBoxButtons.YesNo , MessageBoxIcon.Exclamation); if (Res == System.Windows.Forms.DialogResult.Yes) { if (Configuraciones.EstaTiempoOcioActivo() && Convert.ToInt32(Equipo.Equipo.TiempoConsumido.TotalMinutes) <= ENT.TiposAnidados_ENT.MinutosOcio) { Descripcion = "Se anula el registro automático del equipo " + Equipo.Equipo + " por no cumplir el tiempo de ocio a las " + HoraSalida.ToLongTimeString(); Auditor.Registrar(Descripcion, Usuario.Usuario, ENT.TiposAnidados_ENT.AccionesAuditoria.AnularFactura); Factura.Eliminar(Equipo.Equipo); Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); } else { Descripcion = "El usuario " + Usuario.Usuario + " anuló la factura del equipo " + Equipo.Equipo + "con tiempo consumido " + Equipo.Equipo.TiempoConsumido.Minutes.ToString(); Auditor.Registrar(Descripcion, Usuario.Usuario, ENT.TiposAnidados_ENT.AccionesAuditoria.AnularFactura); //guardamos el registro Factura.Guardar(Equipo.Equipo, Hoy.ToShortDateString(), HoraSalida.ToLongTimeString(), Usuario.Usuario, EstadoAnulacion); //enviamos la orden de bloqueo del equipo EnviarOrdenaCliente(Equipo.Equipo.TCP, "Bloq"); Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); } } break; case ENT.TiposAnidados_ENT.TipoOperacionFactura.Facturar: Descripcion = "El usuario " + Usuario.Usuario + " facturó al " + Equipo.Equipo + "por valor de " + Equipo.Equipo.TotalFacturar.ToString() + " en la hora " + HoraSalida.ToLongTimeString(); Auditor.Registrar(Descripcion, Usuario.Usuario, ENT.TiposAnidados_ENT.AccionesAuditoria.FacturaTiempo); //guardamos el registro Factura.Guardar(Equipo.Equipo, Hoy.ToShortDateString(), HoraSalida.ToLongTimeString(), Usuario.Usuario, EstadoFacturacion); //enviamos la orden de bloqueo del equipo EnviarOrdenaCliente(Equipo.Equipo.TCP, "Bloq"); Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }