Tablero de mesas y Formulario rápido para bar o restorant

Código útil, tips de programación, etc.
Responder
Fabián Postai
Mensajes: 4
Registrado: Vie Dic 19, 2014 11:22 am
Contactar:

Tablero de mesas y Formulario rápido para bar o restorant

Mensaje por Fabián Postai » Sab Dic 14, 2019 5:21 pm

Buenas tardes Foro y disculpen si los distraigo

Estoy intentando hacer un Windows simple con botones que representan las mesas y un form con Edit Place con botones para un restaurante.
Tengo una tabla de productos que el usuario va agregando y permite asociar un botón al mismo para que luego al presionar el botón desde la pantalla se agregue a la comanda o directamente se agregue a un List(Edit Place) con su respectivo precio e imprimir un ticket. Alguien tiene experiencia en esto ? Me gustaría compartir opiniones y experiencias.
Saludos cordiales Fabián Postai

P/D: Programo en Clarion8 con base SQL Server 2005


anibalponce
Novato
Mensajes: 25
Registrado: Mar May 10, 2011 5:20 pm
Contactar:

Re: Tablero de mesas y Formulario rápido para bar o restorant

Mensaje por anibalponce » Vie Dic 20, 2019 11:04 am

Hola, lo que podes hacer es cargar en una cola en memoria los datos para luego mostrarlos, y segun la posicion que elijas en la windows que te aparezca un form, accion o lo que quieras. Lo uso para mostrar las unidades habitacionales del un hotel, inclusive segun el estado de cada posicion de la tabla cambio de color o bien una leyenda. Se me ocurre que para un restaurant, boxes de un call center, o un cementerio :shock: tambien podria usarse algo similar. El tema es que no es una windows sencilla, hay que tocar bastante.
Saludos
Anibal

Fabián Postai
Mensajes: 4
Registrado: Vie Dic 19, 2014 11:22 am
Contactar:

Re: Tablero de mesas y Formulario rápido para bar o restorant

Mensaje por Fabián Postai » Vie Dic 20, 2019 1:56 pm

Hola Anibal
Gracias por responderme. Estoy viendo varias opciones para poder llegar a mi objetivo.
si tienes ejemplos te lo agradezco.

GRACIAS !!!!

P/D: No tengo cursos de Clarion realizados, debido que son muy costosos.
Todo lo que aprendo es por foros o gente que está con Clarion
Gracias por responder!!!

anibalponce
Novato
Mensajes: 25
Registrado: Mar May 10, 2011 5:20 pm
Contactar:

Re: Tablero de mesas y Formulario rápido para bar o restorant

Mensaje por anibalponce » Vie Dic 20, 2019 6:56 pm

Fabian, te paso una rutina (bastante desprolija) donde en cada caracter de la cola le doy color y marco el comienzo y fin de una estadia. El color indica el estado, no se puede colocar en un solo caracter mucha info :(, pero se podria hacer algo mas grande para cada mesa. Son porciones de codigo como para que tengas una idea y adaptarlo.
cargacola ROUTINE

SETCURSOR(CURSOR:WAIT)

CLEAR(DayQue)
FREE(DayQue)

LOOP i# = 0 TO 30
?List1{PROPLIST:Header ,i#+2} = FORMAT(DAY(LOC:FechaDesde+i#),@N02)
! ?List1{PROPSTYLE:BackColor, i#+2} = COLOR:Red

END

Loc:Any &= WHAT(DayQue,1)
Loc:Any = ''
Loc:Any &= WHAT(DayQue,2)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,3)
Loc:Any = COLOR:Silver
Loc:Any &= WHAT(DayQue,4)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,5)
Loc:Any = COLOR:none
LOOP i# = 2 TO 32
Loc:Any &= WHAT(DayQue,i#*5-4)
Loc:Any = CHOOSE(((LOC:FechaDesde+i#-2) % 7) + 1,'Do','Lu','Ma','Mi','Ju','Vi','Sa')
Loc:Any &= WHAT(DayQue,i#*5-3)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,i#*5-2)
setnull(Res:c1)
Respuesta{PROP:SQL}='select count(*) from Feriados where CONVERT(NVARCHAR(10),Fecha,120)='''&format(LOC:FechaDesde+i#-2,@D10-)&''' '
NEXT(Respuesta)
! message(Res:c1&'|'&format(LOC:FechaDesde,@D10-)&'|'&Respuesta{PROP:SQL})
IF Res:c1=1
Loc:Any = COLOR:Red
ELSE
IF CHOOSE(((LOC:FechaDesde+i#-2) % 7) + 1,true,False,False,False,False,False,True)
Loc:Any = COLOR:Blue
ELSE
Loc:Any = COLOR:Silver
END
END

Loc:Any &= WHAT(DayQue,i#*5-1)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,i#*5)
Loc:Any = COLOR:none
END
ADD(DayQue)

UniH:IdHotel=LOC:IdHotel
SET(UniH:PorHotel2,UniH:PorHotel2)
LOOP UNTIL Access:Unidades.Next()
IF UniH:IdHotel<>LOC:IdHotel THEN BREAK.

IF UniH:Activo

Loc:Any &= WHAT(DayQue,1)
Loc:Any = CHOOSE(LOC:Real=0, UniH:Descripcion, UniH:DescripcionReal)
Loc:Any &= WHAT(DayQue,2)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,3)
Loc:Any = 0dfec94H
Loc:Any &= WHAT(DayQue,4)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,5)
Loc:Any = COLOR:none

LOOP i# = 2 TO 32
Loc:Any &= WHAT(DayQue,i#*5-4)
Loc:Any = ' '
Loc:Any &= WHAT(DayQue,i#*5-3)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,i#*5-2)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,i#*5-1)
Loc:Any = COLOR:none
Loc:Any &= WHAT(DayQue,i#*5)
Loc:Any = COLOR:none
END

ADD(DayQue)

END

END


CLEAR(RES:RECORD)
Respuesta{PROP:SQL}='select v.Llegada,datediff(dd,v.Llegada,v.Salida) as cant,v.IdUnidad,u.Descripcion,v.IdServicio,e.Descripcion Estado, '&|
choose(LOC:EligeEoA='Estado','ev.Descripcion EstVou,ev.NormalFG,ev.NormalBG,ev.SelectedFG,ev.SelectedBG','ta.Descripcion EstVou,ta.NormalFG,ta.NormalBG,ta.SelectedFG,ta.SelectedBG')&',v.bloqueo,v.idvoucher,u.DescripcionReal from voucher v, unidades u,EstadoUnidad e,EstadoVoucher ev, TipoAgente ta '&|
'where (('&LOC:Real&'=1 and v.idUnidadcomplejo=u.idUnidad) or ('&LOC:Real&'=0 and v.idUnidad=u.idUnidad)) and salida>='''&FORMAT(LOC:FechaDesde,@D06)&''' and llegada<='''&FORMAT(LOC:FechaDesde+30,@D06)&''' and e.IdestadoUnidad=u.IdEstadoUnidad '&|
'and ta.IdTipoAgente=v.IdTipoAgente and ev.IdEstadoVoucher=v.IdEstadoVoucher and u.IdHotel='&LOC:IdHotel&' and u.activo=1 and v.activo=1 '&|
'order by v.idunidad,v.bloqueo Desc '

IF ERRORCODE() THEN STOP (FILEERROR()). !FILEERROR ES EL ERROR DEL SQL
LOOP
NEXT(Respuesta)
IF ERRORCODE() THEN BREAK.
! LOC:FechaInicio=deformat(sub(res:c1,1,10),@D10-)-deformat(LOC:FechaDesde,@D10-)+1
IF deformat(sub(res:c1,1,10),@D10-)-LOC:FechaDesde>=0
LOC:FechaInicio=deformat(sub(res:c1,1,10),@D10-)-LOC:FechaDesde+1
cantdias#=RES:C2
ELSE
LOC:FechaInicio=1
cantdias#=RES:C2-ABS(deformat(sub(res:c1,1,10),@D10-)-LOC:FechaDesde)
END
!'-deformat('05/01/2008',@D2)+1
Unidad=CHOOSE(LOC:Real=0, RES:C4, RES:C14)
GET(DayQue,Unidad)
IF ERRORCODE()
message('mal!!!: no encuentra unidad'&CHOOSE(LOC:Real=0, RES:C4, RES:C14))
ELSE


!Para marcar el comienzo de la reserva
LOOP I#=1 TO cantdias#
Loc:Any &= WHAT(DayQue,(LOC:FechaInicio+I#)*5-4)
IF I#=1
Loc:Any = '['

ELSIF I#=cantdias#
Loc:Any = ' '
ELSE
Loc:Any = ' '
.


IF LOC:FechaInicio+I#=TODAY()
Loc:Any = 'X'
END


Loc:Any &= WHAT(DayQue,(LOC:FechaInicio+I#)*5-3)
Loc:Any = res:c8
Loc:Any &= WHAT(DayQue,(LOC:FechaInicio+I#)*5-2)
Loc:Any = res:c9
Loc:Any &= WHAT(DayQue,(LOC:FechaInicio+I#)*5-1)
Loc:Any = res:c10
Loc:Any &= WHAT(DayQue,(LOC:FechaInicio+I#)*5)
Loc:Any = res:c11

put(DayQue)

END

END
END

DISPLAY

SETCURSOR

Despues para ubicar la posicion
GET(DayQue,CHOICE(?List1))
IF ?List1{prop:column}>1
....
....
LOC:FechaD=LOC:FechaDesde+?List1{prop:column}-2

end

Suerte!
Anibal


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados