Esempio n. 1
0
        /// <summary>
        /// Nombre: Txt_Codigo_Barras_KeyUp
        ///
        /// Descripción: Método que se ejecuta al presionar una tecla en la caja de código de barras.
        ///
        /// Usuario Creo: Juan Alberto Hernández Negrete.
        /// Fecha Creo: 15 Noviembre 2013.
        /// Usuario Modifico: Roberto González Oseguera
        /// Fecha Modifico: 21-feb-2014
        /// Causa modificación: Se cambia <DateTime?> por <MySql.Data.Types.MySqlDateTime?> para recibir
        ///                     un campo fecha al utilizar una base de datos MySQL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Txt_Codigo_Barras_KeyUp(object sender, KeyEventArgs e)
        {
            // entrar solamente con la tecla enter
            if (e.KeyCode == Keys.Return && Txt_Codigo_Barras.Text.Length > 0)
            {
                Cls_Ope_Estacionamiento_Negocio Obj_Estacionamiento;
                DataTable Dt_Datos_Acceso_Estacionamiento = null;
                DataTable Dt_Datos_Pago      = null;
                string    Producto_ID        = string.Empty;
                string    No_Estacionamiento = string.Empty;
                string    Estatus            = string.Empty;
                MySql.Data.Types.MySqlDateTime?Fecha_Hora_Ingreso = null;
                double Horas = 0;

                try
                {
                    Obj_Estacionamiento             = new Cls_Ope_Estacionamiento_Negocio();
                    Obj_Estacionamiento.P_Codigo    = Txt_Codigo_Barras.Text.Trim();
                    Dt_Datos_Acceso_Estacionamiento = Obj_Estacionamiento.Consultar_Estacionamiento();

                    // validar que la consulta haya regresado resultados
                    if (Dt_Datos_Acceso_Estacionamiento != null && Dt_Datos_Acceso_Estacionamiento.Rows.Count > 0)
                    {
                        Array.ForEach(Dt_Datos_Acceso_Estacionamiento.Rows.OfType <DataRow>().ToArray(), fila =>
                        {
                            Producto_ID        = fila.IsNull(Ope_Estacionamiento.Campo_Producto_ID) ? string.Empty : fila.Field <string>(Ope_Estacionamiento.Campo_Producto_ID);
                            Fecha_Hora_Ingreso = fila.IsNull(Ope_Estacionamiento.Campo_Fecha_Hora_Ingreso) ? null : fila.Field <MySql.Data.Types.MySqlDateTime?>(Ope_Estacionamiento.Campo_Fecha_Hora_Ingreso);
                            No_Estacionamiento = fila.IsNull(Ope_Estacionamiento.Campo_No_Estacionamiento) ? string.Empty : fila.Field <string>(Ope_Estacionamiento.Campo_No_Estacionamiento);
                            Estatus            = fila.IsNull(Ope_Estacionamiento.Campo_Estatus) ? string.Empty : fila.Field <string>(Ope_Estacionamiento.Campo_Estatus);
                        });

                        // si el estatus del acceso es PENDIENTE, entrar al pago
                        if (Estatus.Equals("PENDIENTE"))
                        {
                            // se ocupa .GetDateTime() cuando es un tipo MySqlDateTime
                            Horas = Math.Ceiling(DateTime.Now.Subtract(Fecha_Hora_Ingreso.Value.GetDateTime()).Duration().TotalHours);

                            Obj_Estacionamiento.P_Estatus            = "PAGADO";
                            Obj_Estacionamiento.P_Fecha_Hora_Salida  = DateTime.Now;
                            Obj_Estacionamiento.P_Horas              = Convert.ToInt32(Horas);
                            Obj_Estacionamiento.P_No_Estacionamiento = No_Estacionamiento;

                            Dt_Datos_Pago = Crear_Datos_Pago(Producto_ID, Convert.ToDecimal(Horas), ref Obj_Estacionamiento);

                            Frm_Ope_Pago Frm_Pago = new Frm_Ope_Pago();
                            Frm_Pago.P_Obj_Estacionamiento   = Obj_Estacionamiento;
                            Frm_Pago.Es_Pago_Estacionamiento = true;
                            Frm_Pago.MdiParent = this.ParentForm;
                            Frm_Pago.Set_Dt_Detalles_Venta(Dt_Datos_Pago);
                            Frm_Pago.Set_Frm_Estacionamiento(this);
                            this.Hide();
                            Frm_Pago.Show();
                        }
                        else
                        {
                            Txt_Codigo_Barras.Text = string.Empty;
                            MessageBox.Show(this, "El acceso al estacionamiento tiene un estatus de " + Estatus, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    else
                    {
                        Txt_Codigo_Barras.Text = string.Empty;
                        MessageBox.Show(this, "No se encontró el código de acceso ingresado.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }

                catch (Exception Ex)
                {
                    MessageBox.Show(this, Ex.Message, "Error - Método: [Txt_Codigo_Barras_KeyPress]", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
 ///*******************************************************************************
 ///NOMBRE DE LA FUNCIÓN : Set_Frm_Pago
 ///DESCRIPCIÓN          : Establece la referencia a la ventana Frm_Ope_Pagos
 ///PARAMETROS           :
 ///CREO                 : Miguel Angel Bedolla Moreno
 ///FECHA_CREO           : 13/Octubre/2013
 ///MODIFICO             :
 ///FECHA_MODIFICO       :
 ///CAUSA_MODIFICACIÓN   :
 ///*******************************************************************************
 public void Set_Frm_Pago(Frm_Ope_Pago Frm_Pagos)
 {
     Frm_Pago = Frm_Pagos;
 }