Visual Basic - Pantalla para comanda o pedidos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 73
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por pablo (52 intervenciones) el 20/04/2022 16:29:09
Les consulto, tengo un programa para casas de delivery de comidas, los pedidos a medida que van ingresando van agregandose a un datargridview para que en la cocina los vayan preparando.
Mi idea es mejorarlo para que sea mas rapido usarlo y no usen tanto el mouse.
Les dejo una imagen de como me gustaria poder verlo en pantalla, si tienen alguna idea les agradeceria mucho.

Desde ya muchas gracias.

COMANDA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por raul (160 intervenciones) el 20/04/2022 21:49:43
Primero debes de pensar en 4 hechos.

El primero es en que visualizamos la información; por ejemplo en un formulario. O sea que por cada orden tu sistema crea un formulario.

Segundo hecho cada que tiempo se incluye una orden al sistema 10, 15, 30 segundo.

Tercero quien cancela las órdenes.

Que mecanismo se usa para transferir la orden.

Luego que concilien estás 4 situaciones. Tu programa tomara cuerpo. Veras por ejemplo si guardas la información mediante MySQL que es ideal para conectar. Tablet de forma tal que los meseros llenen la orden y la suban al servidor creativas una rutina para que el chef vea cada 15 segundos mediante consulta automática la nueva orden.

Escribeme al correo [email protected] y te paso un ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 73
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por Pablo Sebastián (52 intervenciones) el 20/04/2022 22:12:44
Esta todo funcionando pero los pedidos se ven en un datagridview.
El programa revisa cada 4 segundos la base de datos y va enviando los datos a la cocina.
Mi idea es mejorar la visual y aprovechar la pantalla táctil y que no usen mouse y teclado como ahora.

Estoy probando que el software busque los pedidos y por cada uno cre in panel con label dentro abajo un datagrisviewe con la lista de item y otro panel abajo como la imagen.
Por ahora queda raro pero seguire probando.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 111
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por Agustin (43 intervenciones) el 22/04/2022 01:27:51
Me agarraste de buenas y armé la solución completa a tu problema:

Olvidate de VB y de Winforms, esto con Avalonia lo haces en 3 patadas.

Si tenes un proyecto de winforms lo deberias poder integrar relativamente facil, creo. Fuera de eso, este codigo es multiplataforma y puede correr en Windows, Linux, Mac, Android, iOS, WASM, etc.

dhbu4gO

Fijate que el codigo en si no hace nada, son todos datos de ejemplo.

la magia está en el XAML que usa los bindings para mostrar los datos.

Te subí un zip acá. Normalmente lo pongo en github pero ahora no tengo el usuario y no tengo el cliente instalado tampoco.

Abrilo con Visual Studio 2022 y dale F5. Te va a aparecer la pantalla vacía y cada 5 segundos se va a ir agregando un pedido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 73
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por Pablo (52 intervenciones) el 22/04/2022 16:39:18
Muchas gracias.
Lo voy a descargar y lo voy a revisar para tener otra forma de hacerlo.

Por ahora lo consegui con Windows form. Creando un panel dentro de ese otro panel con texto y debajo el dstsgridviewe peersonalizado.
Cuando tenga tiempo les subo imagenes yvel código.
Muchas gracias por el aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 73
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pantalla para comanda o pedidos

Publicado por pablo (52 intervenciones) el 24/04/2022 23:00:33
Buenas , les dejo como me esta quedando con Windows Form, lo unico que me queda resolver es como se acomodan las ordenes ya que si una tiene mas de 5 items se sobrepone a la de abajo, si tienen alguna idea los leo, miebtras les dejo el codigo de como lo hice.


Dim loDataTable As New DataTable


'Me.WindowState = FormWindowState.Maximized
Dim EspaciadoX1 As Integer = (grbBotones.Size.Width \ 5) + 30 'Con el Form Maximizado, se calcula 10 columnas
Dim Ancho1 As Integer = EspaciadoX1 - 5
Dim EspaciadoY1 As Integer = (grbBotones.Size.Height \ 5) + 60 ''Con el Form Maximizado, se calcula 10 filas
Dim Alto1 As Integer = EspaciadoY1 - 5
Dim TotalColumnas1 As Integer = grbBotones.Size.Width \ EspaciadoX1
Dim PosIni1 As Integer = CInt((grbBotones.Size.Width - (TotalColumnas1 * EspaciadoX1)) / 2)
Dim PosControl1 As New Point(PosIni1, PosIni1)
Dim NumColumna1 As Integer = 0
Dim estado As String = "abierta"
Dim CadenaSQL As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\comidas\comidas\bin\base\comidas.accdb;Persist Security Info=False")
Dim lsQuery As String = "SELECT * FROM PEDIDOCLIE WHERE estado = '" & estado & "' "
Try
Using loConexion As New OleDb.OleDbConnection(CadenaSQL)
'crear el DataAdapter
Using loDataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(lsQuery, loConexion)
'cargar el datatable
loDataAdapter.Fill(loDataTable)
End Using
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Dim MiColor1 As Drawing.Color = Color.White
Dim MiColor2 As Drawing.Color = Color.White

'recorrer la tabla para cargar los controles en el Form
For Each loFila As DataRow In loDataTable.Rows
'Crear nuevo Button
Dim loButton As New Panel
loButton.Name = "PnlSample"
loButton.Location = New Point(PosControl1.X, PosControl1.Y)
loButton.AutoSize = True
loButton.BorderStyle = BorderStyle.None
loButton.BackColor = Color.LightGray
loButton.Visible = True

Dim PANELTEXTO As New Panel


PANELTEXTO.Location = New Point(1, 1)
PANELTEXTO.Size = New Size(250, 60)
PANELTEXTO.BorderStyle = BorderStyle.None
PANELTEXTO.BackColor = Color.Transparent
PANELTEXTO.Visible = True





'TEXTO NUMERO DE ORDEN
Dim TextoNumeroOrden As New Label
TextoNumeroOrden.Text = "Numero:"
TextoNumeroOrden.Width = 95
TextoNumeroOrden.Location = New Point(1, 1)
TextoNumeroOrden.Font = New Font("Tahoma", 14, FontStyle.Bold)

Dim TextoNumeroOrden1 As New Label
TextoNumeroOrden1.Text = loFila.Item("numero2").ToString()
TextoNumeroOrden1.Location = New Point(95, 1)
TextoNumeroOrden1.Font = New Font("Tahoma", 14, FontStyle.Bold)
TextoNumeroOrden1.ForeColor = Color.Red



''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'TEXTO CLIENTE
Dim TextoNumeroCliente As New Label
TextoNumeroCliente.Text = "Cliente:"
TextoNumeroCliente.Width = 55
TextoNumeroCliente.Height = 15
TextoNumeroCliente.Location = New Point(1, 25)
TextoNumeroCliente.Font = New Font("Tahoma", 9, FontStyle.Bold)

Dim TextoNumeroCliente1 As New Label
TextoNumeroCliente1.Text = loFila.Item("nombre").ToString()

TextoNumeroCliente1.Location = New Point(58, 25)
TextoNumeroCliente1.Font = New Font("Tahoma", 9, FontStyle.Bold)
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
'TEXTO CLIENTE

Dim TextoNumeroMINUTOS As New Label
TextoNumeroMINUTOS.Text = "Mnutos:"

TextoNumeroMINUTOS.Location = New Point(1, 40)
TextoNumeroMINUTOS.Font = New Font("Tahoma", 9, FontStyle.Bold)
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Dim dgv As New DataGridView


dgv.Location = New Point(1, 40)
dgv.BorderStyle = BorderStyle.None



dgv.Visible = True
dgv.BackgroundColor = Color.White
dgv.Width = 250
dgv.Height = 120
Dim numero As String = loFila.Item("numero").ToString()
Dim dataset1 As New DataSet
Dim datatable1 As New DataTable
Dim sql1 As String = "SELECT ARTICULO, CANTIDAD FROM PEDIDOART WHERE NUMERO = '" & numero & "' "
Dim adp1 As New OleDb.OleDbDataAdapter(sql1, conexion)

dataset1.Tables.Add("TABLAS")
adp1.Fill(dataset1.Tables("TABLAS"))
dgv.DataSource = dataset1.Tables("TABLAS")

dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
dgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

dgv.AllowUserToAddRows = False
dgv.AllowUserToDeleteRows = False
dgv.CellBorderStyle = DataGridViewCellBorderStyle.None
dgv.DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 12, FontStyle.Bold)
dgv.RowTemplate.Height = 30
dgv.DefaultCellStyle.SelectionBackColor = dgv.DefaultCellStyle.BackColor
dgv.DefaultCellStyle.SelectionForeColor = dgv.DefaultCellStyle.ForeColor
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dgv.RowHeadersVisible = False




'Añadir el control a la coleccion de controles del Form
grbBotones.Controls.Add(loButton)
loButton.Controls.Add(PANELTEXTO)
loButton.Controls.Add(dgv)
PANELTEXTO.Controls.Add(TextoNumeroOrden)
PANELTEXTO.Controls.Add(TextoNumeroOrden1)
PANELTEXTO.Controls.Add(TextoNumeroCliente)
PANELTEXTO.Controls.Add(TextoNumeroCliente1)
PANELTEXTO.Controls.Add(TextoNumeroMINUTOS)




PosControl1.X += EspaciadoX1
NumColumna1 += 1
If NumColumna1 = TotalColumnas1 Then
NumColumna1 = 0
PosControl1.X = PosIni1
PosControl1.Y += EspaciadoY1
End If
dgv.Columns("ARTICULO").Width = 220
dgv.Columns("CANTIDAD").Width = 30

Dim CUENTA As String = CStr(dgv.Rows.Count)

If CDbl(CUENTA) = 10 Then 'Falta agregar todas las cantidades solo probe 10
dgv.Height = 330
End If

Next

COMANDA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar