/// <summary> /// Liga los datos y ejecuta las operaciones iniciales /// necesarias /// </summary> public override void BindData() { Entities.Sesiones sesion_aux = Entities.Sesiones.GetUltimaSesionPorUsuarioCaja(Sesion.Usuario_ID, Sesion.Caja_ID); reporteTicketsCuentaConductorBindingSource.DataSource = Entities.Vista_TicketsDeSesion.GetDataTable(sesion_aux.Sesion_ID, null); this.reportViewer1.RefreshReport(); base.BindData(); }
} // end Imprimir /// <summary> /// Imprime el corte, cierra la sesión y sale del sistema /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CerrarSesionButton_Click(object sender, EventArgs e) { AppHelper.DoMethod(delegate { // Solicitamos confirmación del cierre de sesión if (AppHelper.Confirm("¿Realmente desea cerrar la sesión?") == System.Windows.Forms.DialogResult.Yes) { // Mandamos imprimir el corte Imprimir(); // Cerrar la sesión // Obtenemos el registro de la sesión actual Entities.Sesiones sesion = Entities.Sesiones.Read(Sesion.Sesion_ID); // Desactivamos sesion.Activo = false; // Configuramos fecha final sesion.FechaFinal = DB.GetDate(); // Actualizamos la base de datos sesion.Update(); // Cerramos el sistema Padre.Close(); } // end if }, this); } // end Click
public CanjeVale_Model(Entities.Sesiones sesion) { this.Sesion = sesion; this.Caja_ID = this.Sesion.Caja_ID.Value; this.Sesion_ID = this.Sesion.Sesion_ID; this.Ticket_ID = null; this.Usuario_ID = this.Sesion.Usuario_ID; }
public void GuardaCorte() { //if (cortecaja.Declaraciones.Count == 0) //{ // GeneraDeclaraciones(); //} bool ok = false; AppHelper.DoTransactions( delegate { foreach (classes.Entities.caja.DeclaracionValores dv in cortecaja.Declaraciones) { ok = false; SICASv20.classes.Interfaces.DeclaracionValores.GuardaDeclaracion(dv); SICASv20.classes.Interfaces.DeclaracionValores.GuardaDetalleEfectivo(dv); SICASv20.classes.Interfaces.DeclaracionValores.GuardaDetalleVales(dv); SICASv20.classes.Interfaces.DeclaracionValores.GuardaDetalleVouchers(dv); ok = true; } } , this); if (ok) { int idx = 1; foreach (classes.Entities.caja.DeclaracionValores dv in cortecaja.Declaraciones) { ok = false; SICASv20.classes.Interfaces.DeclaracionValores.Imprimir(dv, idx); SICASv20.classes.Interfaces.DeclaracionValores.Imprimir(dv, idx); ok = true; idx++; } // Cerrar la sesión Entities.Sesiones sesion = Entities.Sesiones.Read(Sesion.Sesion_ID); sesion.Activo = false; sesion.FechaFinal = DB.GetDate(); sesion.Update(); Sesion.Activo = false; SICASv20.forms.SICASForm fp = (SICASv20.forms.SICASForm) this.ParentForm; fp.SwitchForma("ReporteTicketsDeSesion"); Application.Exit(); } }
} // end ImprimirTicketDeCorte /// <summary> /// Realiza el corte de caja, lo imprime y sale del sistema /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CorteButton_Click(object sender, EventArgs e) { // Solicitamos confirmación if (AppHelper.Confirm("¿Realmente desea efectuar el corte de caja?") == System.Windows.Forms.DialogResult.Yes) { AppHelper.DoMethod(delegate { // Imprimir el ticket las veces // que este configurado // Obtenemos el registro de la caja actual Entities.Cajas caja = Entities.Cajas.Read(Sesion.Caja_ID.Value); // Si tiene impresión doble if (caja.ImpresionDoble.Value) { // Imprimimos dos veces ImprimirTicketDeCorte(); ImprimirTicketDeCorte(); } else // Si no { // Imprimimos solo una vez ImprimirTicketDeCorte(); } // Cerrar la sesión // Obtenemos el registro de la sesión actual Entities.Sesiones sesion = Entities.Sesiones.Read(Sesion.Sesion_ID); // Desactivamos sesion.Activo = false; // Configuramos fecha final sesion.FechaFinal = DB.GetDate(); // Actualizamos en la base de datos sesion.Update(); // Salimos del sistema Application.Exit(); }, this); } // end if } // end Click
/// <summary> /// Realiza el procedimiento de validación /// registro y carga de la pantalla principal del sistema /// </summary> private void LogIn() { try { // Obtenemos las variables a partir de los controles string usuario_id = Usuario_IDTextBox.Text; string pwd = PasswordTextBox.Text; // Verificamos que no esten vacias if (usuario_id != "" && PasswordTextBox.Text != "") { // Instanciamos un objeto Functions SICASCentralQuerysDataSetTableAdapters.Functions fns = new SICASCentralQuerysDataSetTableAdapters.Functions(); // Validamos la relación usuario y contraseña contra la base de datos // mediante el Método AuthUser del objeto Functios fns if ((int)fns.AuthUser(usuario_id, pwd) > 0) { //usuario_id = "gestor.decobranza3"; // Si los datos de usuario y contraseña son válidos Sesion.Usuario_ID = usuario_id; // Cargamos sus datos de Emprea y Estacion Sesion.Set_Empresa_Estacion(); // Verificar si el usuario tiene permisos a una caja, List<Entities.Usuarios_Cajas> UsuariosCajas = Entities.Usuarios_Cajas.Read(usuario_id); // Obtenemos un objeto Usuario a partir del dato usuario_ir Entities.Usuarios usuario = Entities.Usuarios.Read(usuario_id); // Verificamos los permisos de caja // Si el usuario tiene permisos de caja y además no tiene estación fija if (UsuariosCajas.Count > 0 && Sesion.Estacion_ID != null) { // Si el usuario no tiene estacion fija // lanzamos una excepción if (Sesion.Estacion_ID == null) throw new Exception("El usuario debe tener configurada una estacion"); // Obtenemos las sesiones del usuario que esten activas // y las colocamos la variable sesiones List<Entities.Sesiones> sesiones = Entities.Sesiones.Read("Usuario_ID = @Usuario_ID AND Activo = 1 AND FechaFinal IS NULL", null, DB.Param("@Usuario_ID", usuario_id)); // Verificamos si tiene sesiones activas if (sesiones.Count == 0) { // No tiene sesiones activas // Crear sesion int? caja = null; // Selecccionar una caja // Verificar que estacion tenga cajas activas if (!DB.Exists( "Cajas", DB.Param("Estacion_ID", Sesion.Estacion_ID), DB.Param("Activa", true) ) ) { throw new Exception("No existen cajas activas para la estación"); } // Verificar el número de cajas por usuario if (UsuariosCajas.Count == 1) { // Aqui solo tiene una caja, se obtiene la default caja = UsuariosCajas[0].Caja_ID; } else { // Aquí tiene más de una caja el usuario // En caso de haber más de una caja // El usuario debe seleccionar su caja if (this.ShowSeleccionarCaja(usuario_id) == System.Windows.Forms.DialogResult.OK) { // Obtener la caja seleccionada caja = this.SeleccionarCajaForm.Caja_ID; } else { AppHelper.ThrowException("Debe seleccionar una caja"); } // end else } // end else // Verificar que la caja seleccionada no tenga sesión activa // Obtener las sessiones activas de la caja List<Entities.Sesiones> sesionesCaja = Entities.Sesiones.Read( "Caja_ID = @Caja_ID AND Activo = 1 AND FechaFinal IS NULL", null, DB.Param("@Caja_ID", caja) ); // Verificar el numero de registros if (sesionesCaja.Count > 0) { // Si tiene sesiones activas // Enviar mensaje de error AppHelper.ThrowException( @"El usuario {0} ya ha iniciado sesión en la caja seleccionada o predeterminada No puedes iniciar sesión hasta que el usuario {0} la termine realizando el corte correspondiente.", sesionesCaja[0].Usuario_ID ); } // end if // Crear una nueva sesión y registrarla Entities.Sesiones sesion = new Entities.Sesiones(); sesion.Activo = true; sesion.Caja_ID = caja; // falta poner la caja sesion.Estacion_ID = Sesion.Estacion_ID.Value; // Espera no nulo sesion.FechaFinal = null; sesion.FechaInicial = DB.GetDate(); sesion.HostName = null; sesion.IPAddress = null; sesion.MACAddress = null; sesion.Usuario_ID = usuario_id; sesion.Create(); // Pasar los datos a la sesión global Sesion.Sesion_ID = sesion.Sesion_ID; Sesion.Caja_ID = sesion.Caja_ID; Sesion.Estacion_ID = sesion.Estacion_ID; Sesion.FechaInicial = sesion.FechaInicial; } else { // Ya tiene sesión activa // Pasar los datos a la sesión global Sesion.Sesion_ID = sesiones[0].Sesion_ID; Sesion.Caja_ID = sesiones[0].Caja_ID; Sesion.Estacion_ID = sesiones[0].Estacion_ID; Sesion.FechaInicial = sesiones[0].FechaInicial; } } else if (UsuariosCajas.Count > 0 & Sesion.Estacion_ID == null) { throw new Exception("Los usuarios de caja solo deben tener acceso a una estación"); } Sesion.Activo = true; // Mostrar el formulario principal del sistema forms.SICASForm sicasForm = new forms.SICASForm(); this.Hide(); sicasForm.Show(); RegistrarEntrada(); this.Hide(); // Registramos que se ha actualizado el sistema // llamando al procedimiento AutoUpdater de la clase estática AutoUpdate AutoUpdate.AutoUpdater(); } else { // Enviar error de autenticación throw new Exception("Usuario o contraseña erroneas!"); } } } catch (Exception ex) { // Mostramos el mensaje de error AppHelper.Error(ex.Message); } }