hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
07 de Octubre de 2008, 04:31:07
Noticias: ¿No te llega el email de confirmacion?
Para ver este enlace Registrate o Inicia Sesion
> leer aqui

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  Visual Basic
| | | |-+  Codigo Abierto (Moderador: >> s E t H <<)
| | | | |-+  PDA-Toma Nota
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: PDA-Toma Nota  (Leído 188 veces)
Pasqui
NZ3
***
Desconectado Desconectado

Mensajes: 559


El saber no es suficiente, debemos aplicarlo


Ver Perfil
« : 10 de Abril de 2008, 09:49:37 »

Bueno como de momento este es un tema que no hemos tocado, pero para mi por ejemplo es interesante, al menos desde le punto de vista de la programación, aquí os dejo algunos pantallazos de una pequeña aplicación que hice hace algún tiempo, algunas versiones tengo ya vendidas, así que si alguien se anima a contribuir o aprender estaría, bien.
Si de este post sale alguna venta, jeje, se hace donación para el foro, jeje, ummm podría ser una idea, jejejejeje, de momento os dejo algunas capturas para q vean,

espero alguien se anime, si les gusta esta programación, díganme, y les proporciono herramientas,

****************************************************************************



aqui podemos ver la pantalla de entrada donde podremos identificarnos en la aplicación,





disponemos de nuestro propio teclado, para no tener que usar el del dispositivo, una vez hemos seleccionado el usuario y "centro", entramos en el menu, de mesas,



vemos las mesas, las cuales se identifican perfectamente las ocupadas con las libres, verde=ocupada
roja=libre, seleccionando una entramos en el menu de entrada registros,



y vamos seleccionando o confeccionando la nota,



****************************************************************************

bueno, en principio solo quiero que vean esto algunos pantallazos  y demás, comentar que la comunicación es via wifi con un pc central que se encarga de recibir online, todo lo anotado en la pda,

mi intención, pues he visto que este tipo de programación o para estos dispositivos, no está muy listado en el foro es comenzar a introducir, este tipo de lenguaje, quizás algunos ya lo conozcan o lo hayan probado,

tampoco sabía donde ubicarlo bien, por eso pensé en de momento ofrecer estas pantallas y en breve realizar si la gente se anima un pequeño manual dedicado a ello,

saludos,
En línea


Pasqui
NZ3
***
Desconectado Desconectado

Mensajes: 559


El saber no es suficiente, debemos aplicarlo


Ver Perfil
« Respuesta #1 : 10 de Abril de 2008, 11:28:14 »

bueno, vamos a profundizar un poco más en el código y algunos aspectos, veamos,
La aplicación, va asociada o "conectada", a un pc principal con otro programa digamos TPV (terminal punto de venta) con pantalla táctil, pero existe también la versión sin pc central. Con el TPV, la aplicación en su arranque realiza una conexión de prueba con el servidor, avisando en caso de fallo,



si la conexión es buena, o sea ha contestado el servidor entraremos en la aplicación, decir que la primera entrada la debemos configurar, con un código de acceso, "111666", es un ej, pues se puede variar



y accedemos a la configuración del pda y conexión,



En la casilla PDA1, ahí podemos configurar el nombre de nuestro dispositivo, evidentemente el programa está preparado, para varios dispositivos a la vez numerados como nosotros veamos, Cam1 - Cam2 ..., escogemos la ruta vemos que pone \BarpasPocket\ esa es una ruta wifi configurada real en un pc, conectado por esta via, podría ser, c:\pruebas\, en esta ruta se crean y copian los ficheros necesarios, digamos que si ponermos Cam1, y damos "ok" nos creara la siguiente ruta:
\pruebas\Cam1
                   \cobrar  - para el módulo de cobros, si no lleva TPV
                   \imprimir - aquí guardamo en formato *.txt -  para la lectura via wifi, al TPV (1)
                   \leer - el PDa, lee del terminal TPV, digamos que avisamo de alguna cuestión TPV-PDA
                   \mesas - igual que leer pero para el control de las mesas, existentes
                   \ultimo - en esta carpeta más importante, realiza el TPV, la lectura, por si ha habido algún tipo de modificación en (nueva mesa), (nuevo Artículo), así desde el TPV, actualizamos datos y en la primera conexión el PDA, actualiza sus datos.

(1), este sería el formato,
Código:
3B*ELENA*REFRESCOS*-1-124=3-17*WEBING*19
3B*ELENA*REFRESCOS*-1-124=3-17*WEBING*20
3B*ELENA*CERVEZAS*-1-127=1-3*WEBING*21
3B*ELENA*REFRESCOS*-1-124=3-17*WEBING*22
3B*ELENA*GINEBRA*-1-128=4-23+11-121*WEBING*24
3B*ELENA*VODKA*-1-126=2-14+11-119*WEBING*26
3B*ELENA*GINEBRA*-1-128=4-21+11-118*WEBING*28

además en el raíz de la aplicación, digamos en \PRUEBAS\ sin entrar en ningún nombre o carpeta de PDA la aplicacion ha creado 5 ficheros *.txt básicos para la lectura y actualización, donde lee en cada conexión.

bueno, comprendido esto veamos un poco de código,

Código:
On Error Resume Next
Err.Number = CInt(0)
      #If APPFORGE Then
        database = "\BarPasPocket\pasqui.cdb"
        datasi = "\Windows\si.cdb"
      #Else
        database = "c:\BarPasPocket\mdb\pasqui.mdb"
        datasi = "c:\BarPasPocket\mdb\si.mdb"
      #End If

 'CREAMOS LAS CARPETAS
        Set pasdire = pasfiche.OpenDirectory(rutapda, True)
        Set pasdire = pasfiche.OpenDirectory(rutapda & "\" & CStr("imprimir"), True)
        Set pasdire = pasfiche.OpenDirectory(rutapda & "\" & CStr("cobrar"), True)
        Set pasdire = pasfiche.OpenDirectory(rutapda & "\" & CStr("leer"), True)
        Set pasdire = pasfiche.OpenDirectory(rutapda & "\" & CStr("ultimo"), True)
        Set pasdire = pasfiche.OpenDirectory(rutapda & "\" & CStr("mesas"), True)
 'CREAMOS LAS CARPETAS
'EJEMPLO DE FICHERO
 Set pcUarticulos = pasfiche.OpenAsText(rutaultimo & "\Uarticulos" & ".txt", afFileModeCreate)
 Set pcUarticulos = Nothing
'EJEMPLO DE FICHERO

una vez que se realiza la conexión correctamente nos cargaría en la ruta, los usuarios,



decir que según el nivel de acceso le hayamos dado al cliente podremos realizar según que cosas en el programa, por ej. miren esto,
YOLI~1~1~1~WEBING~
ELENA~1~1~1~WEBING~
EMILIO~1~1~0~WEBING~
MANUEL~1~1~0~WEBING~
RAUL~1~1~1~WEBING~
el camarero, Yoli, tiene nivel 1 y el camarero Manuel y Emilio nivel 0 quiere decir que unos el
nivel 1 verá esto al entrar



las mesas, que como verán se pueden configurar más de una pantalla,



y con el nivel 0 verían esto:



muchas más opciones de programa, aquí por ej, podemos ver la opción de cuentas, decir que con la versión PDA y TPV, estas opciones no son necesarias pues el control de cobros y demás se haría desde el TPV, bien, si entramos en cuentas, veamos la entrada en el código,

Código:
OpeningasDatabase
OpenmesasDatabase
cuentas.Show
Unload principal

vemos que hacemos una llamada y abrimos dos tablas, "ingas" y "mesas", veamos el código de la tabla "ingas", realmente llamamos a un módulo,

declaración de los campos
Código:
Global tningas As tingasrecord
Option Explicit
Public Enum tingasDatabaseFields
        cingfecha = 0
        cingdescri = 1
        cingingreso = 2
        cinggasto = 3
        cingingas = 4
        cingciudad = 5
        cingusuario = 6
        cingmesa = 7
        cingtarifa = 8
        cinghora = 9
        cingid = 10
End Enum

Public Type tingasrecord
        cingfecha As Date
        cingdescri As String
        cingingreso As Double
        cinggasto As Double
        cingingas As Boolean
        cingciudad As String
        cingusuario As String
        cingmesa As String
        cingtarifa As String
        cinghora As Date
        cingid As Long
End Type

conexion
Código:
Public conn As AFDatabaseLib.IConnection

abrimos
Código:
Public Sub OpeningasDatabase()
On Error GoTo DBOpenError
Dim iMsgBoxResult As Integer
Set mgr = New AFDatabaseLib.CDBAccessManager
     Set conn = mgr.OpenConnection("CEDB", database)
     Set tingas = conn.OpenTable(cingas)
     tingas.MoveFirst
     Exit Sub
DBOpenError:
    #If APPFORGE Then
        If Err.Number = -2147206501 Then
          MsgBox "No existe la *cdb, base de datos,", vbOKOnly
          If iMsgBoxResult = vbYes Then
          Else
            MsgBox "Aplicación cerrada", vbOKOnly
            End
          End If
        End If
    #End If
End Sub

y vemos,



aquí podemos hacer cierres diarios y ver diferentes consultas respecto a los totales y las mesas,

volviendo a las mesas, cuando seleccionamos una que esté en verde, quiere decir que está libre, accedemos a la mesa,
los colores
Código:
Sub nmesa_Click(Index As Integer)
If nmesa(Index).BackColor = &H80C0FF Then
    nmesa(Index).BackColor = &H8080FF
    mesa(Index).BackColor = &H8080FF
End If
mesa_Click (Index)
End Sub

un poco de código amplio del acceso a una mesa donde se verá si está ocupada si tiene algún pedido etc,

Código:
Sub mesa_Click(Index As Integer)
totalnota = 0
lamesa = mesa(Index).Caption
'añaerror "SELECCION DE MESA: " & CStr(lamesa)
If mesa(CLng(lamesa)).BackColor = &H80FF80 Then
    sitiene = 0
Else
    sitiene = 1
End If

nomtarifa = "NO"
tmesas.MoveFirst
For I = 1 To tmesas.RecordCount
    If tmesas.FieldAsString(1) = ciudad And tmesas.FieldAsLong(0) = CLng(lamesa) Then
        If mesa(CLng(lamesa)).BackColor = &H80FF80 Then
            lafecha = Date 'tmesas.FieldAsDate(5)
            lahora = Time 'tmesas.FieldAsDate(4)
            lamesajr = tmesas.FieldAsString(9)
            I = tmesas.RecordCount
            tmesas.MoveNext
        Else
            nomtarifa = tmesas.FieldAsString(6)
            lafecha = tmesas.FieldAsDate(5)
            lahora = tmesas.FieldAsDate(4)
            lamesajr = tmesas.FieldAsString(9)
            tmesas.MoveNext
        End If
    Else
        tmesas.MoveNext
    End If
Next
    If Sintarifa.Value = afCheckBoxValueUnchecked Then
        'miramos si hay tarifas
        If nomtarifa = "NO" Then
         If ttarifa.RecordCount > 0 Then
            Lista.Visible = True
            Ltarifa.Visible = True
            Otarifa.Visible = True
         ElseIf ttarifa.RecordCount = 0 Then
            'OpenserviciosDatabase
            'OpenarticuDatabase
            'OpeningasDatabase
            servmesa.Caption = "MESA: " & lamesajr
            servmesa.Show
            Unload servicios
         End If
        ElseIf nomtarifa <> "NO" Then
            ttarifa.MoveFirst
            busco = ttarifa.FindString(CLng(0), CStr(nomtarifa), afDBFindEqual)
            If busco = True Then
               nomtarifa = ttarifa.FieldAsString(0)
               latarifa = ttarifa.FieldAsDouble(1)
            End If
            'OpenserviciosDatabase
            'OpenarticuDatabase
            'OpeningasDatabase
            servmesa.Caption = lamesajr & "-" & nomtarifa
            servmesa.Show
            Unload servicios
        End If
        'miramos si hay tarifas
     ElseIf Sintarifa.Value = afCheckBoxValueChecked Then
            latarifa = CDbl(0)
            nomtarifa = "NO"
            'OpenserviciosDatabase
            'OpenarticuDatabase
            'OpeningasDatabase
            servmesa.Caption = lamesajr
            servmesa.Show
            Unload servicios
     End If
End Sub

una vez vamos seleccionando los diferentes pedidos, según tenemos configurado, si pulsamos a salir nos aparece una pregunta como esta



"enviar nota", nos dice si queremos enviar al TPV, la nota realizada para que aparezca en la pantalla del terminal, servidor,
un poco de código, no explicaré de momento solo vean y pregunten

Código:
iMsgBoxResult = MsgBox("¿ENVIAR NOTA?", vbYesNo)   'Show the message
    lascomprobaciones = CInt(2)
    tlincombi.Close
    OpenlincombiDatabase
    tlincombi.MoveLast
    tlincombi.MoveFirst
    On Error Resume Next
    Err.Number = CInt(0)
    'MsgBox Err.Number
    If iMsgBoxResult = 6 Then
        Set paswri = pasfiche.OpenAsText(rutaimprimir & "\" & CStr(vtridnota) & ".txt", afFileModeCreate)
    'MsgBox rutaimprimir
    'MsgBox Err.Number
    If Err.Number = CInt(0) Or Err.Number = CInt(91) Then
        'MIRAMOS SI TIENE COMBINADO
         tlincombi.MoveFirst
         For I = CInt(1) To tlincombi.RecordCount
            If tlincombi.FieldAsString(0) = lamesajr Then
            'AQUI COMPROBAMOS SI SE HA IMPRESO EN NOTAMESA
                'MsgBox tlincombi.FieldAsLong(9)
                If tlincombi.FieldAsBoolean(10) = False Then
                    If tlincombi.FieldAsString(3) <> CStr("NO") And tlincombi.FieldAsString(4) = CStr("NO") And tlincombi.FieldAsString(5) = CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) = CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) <> CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("+") & tlincombi.FieldAsString(5) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) <> CStr("NO") And tlincombi.FieldAsString(6) <> CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("+") & tlincombi.FieldAsString(5) & CStr("+") & tlincombi.FieldAsString(6) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    End If
                    'guardalincombi
                    'cambialincombi
                    'tlincombi.MoveNext
                'ElseIf sehaimpreso = CInt(1) Then
                ElseIf tlincombi.FieldAsBoolean(10) = True Then
                    If tlincombi.FieldAsString(3) <> CStr("NO") And tlincombi.FieldAsString(4) = CStr("NO") And tlincombi.FieldAsString(5) = CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (CStr("*") & lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) = CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (CStr("*") & lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) <> CStr("NO") And tlincombi.FieldAsString(6) = CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (CStr("*") & lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("+") & tlincombi.FieldAsString(5) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    ElseIf tlincombi.FieldAsString(4) <> CStr("NO") And tlincombi.FieldAsString(5) <> CStr("NO") And tlincombi.FieldAsString(6) <> CStr("NO") And tlincombi.FieldAsString(7) = CStr("NO") Then
                        paswri.WriteLine (CStr("*") & lamesajr & CStr("*") & usu & CStr("*") & tlincombi.FieldAsString(2) & CStr("*") & tlincombi.FieldAsString(3) & CStr("=") & tlincombi.FieldAsString(4) & CStr("+") & tlincombi.FieldAsString(5) & CStr("+") & tlincombi.FieldAsString(6) & CStr("*") & ciudad & CStr("*") & tlincombi.FieldAsLong(9))
                        fichecero = CInt(1)
                    End If
                 End If
                    guardalincombi
                    cambialincombi
                    tlincombi.MoveNext
            ElseIf tlincombi.FieldAsString(0) <> lamesajr Then
                tlincombi.MoveNext
            End If
         Next
        'MIRAMOS SI TIENE COMBINADO
        tnotamesa.MoveFirst
        For I = 1 To tnotamesa.RecordCount
                guardadatos
                cambianota
                tnotamesa.MoveNext
        Next
       
        If fichecero = CInt(0) Then
           paswri.WriteLine (CStr("*") & lamesajr & CStr("*") & usu & CStr("*") & ciudad)
        End If
        tmesas.MoveFirst
        For I = 1 To tmesas.RecordCount
            If tmesas.FieldAsLong(0) = CLng(lamesa) And tmesas.FieldAsString(1) = ciudad Then
                vtridmesas = tmesas.FieldAsLong(7)
                If fichecero <> CInt(0) Then
                    modiimprimir
                Else
                    desocupada
                End If
                tmesas.MoveNext
            Else
                tmesas.MoveNext
            End If
        Next
        Set paswri = Nothing
        Err.Clear
        mesayaconecta
    Else
        MsgBox CStr("No hay CONEXION"), vbInformation
        mesasconecta
        'servicios.nmesa(1).BackColor = &H80C0FF
        'mesanaranja = CInt(Labmesa.Caption)
        Set paswri = Nothing
        Err.Clear
    End If
    'HASTA AQUI LLEGA EL SI DEL ENVIO

bueno, decir que podemos evidentemente borrar alguna anotación,



evidentemente se borrará u actualizará en el TPV,

esto es todo de momento ya me dirán que les parece,

saludos,
En línea


Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online