Programando una Aplicacion para Restaurant Paso a Paso en VB6 y Base de Datos My Sql....!!!!

in sistema •  5 years ago 

Saludos Mi Gente de Steemit,

Quiero Comenzar el dia de hoy a contarles un trabajo que me encargaron hace 2 meses, es la aventura de diseñar un programa software aplicacion como lo quieran llamar para un restaauran en particular, considero interesante en detallar todos los pasos por los cuales un programador independiente como mi persona debe encarar para lograr el objetivo de culminar la aplicacion solo sin apoyo de ninhun programador diseñador dba etc.

 Como profesional de la informatica que me forme hace 20 años en la prestigiosa universidad Fermin Toro Ubicada en Acarigua Edo. Portuguesa, logre las competencias básicas y necesarias para optar pot el titulo de Informático, con conocimientos adquirido en la universidad y otros de manera autodidacta logré aprender el arte de analizar los sistemas, diseñar soluciones mejorar sistemas mal estructurados, adquirí las bases solidades en lenguajes de programacion para el momento de mucho uso como lo fueron Turbo Pascal Ver 5,6 y 7, Visual Basic, para el Momento era gw basic, fox pro como base de datos y finalmente clipper por el cual me incliné a hacer mi trabajo de grado, mucho trajinar he transcurrido, pasando por sistemas operativos muy añorado como el ms-dos pasando por todas las versiones de windows hasta la ya hoy dia Windows 10.

  Bien paso a Contar mi Desarrollo , El sistema es un Software Administrativo para Negocio de Ventas de Pollo Asado sin embargo me enfoqué en que el mismo pudiese ser utilizado en cualquier tipo de negocio de comida, ya sea pizzeria, comida rapida y cualquier otro tipo de negocio de comida, El lenguaje Escogido muy Visual Basic 6.0 Sp6 del cual tengo ya varios desarrollos realizados y tengo suficientes herramientas y conocimientos para empreder el trabajo, la base de datos a utilizar es Mysql 5.37, la cual es de uso abieto liencia gratuita por lo tanto puede Ser Usado sin ningun tipo de pago estas dos herramientas en conjunto forman el corazón y cuerpo del sistema el cual estoy programando.

Foto1.jpg
Aca las herramientas de desarrollo imagenes pertenecen a sus dueños

Todo Sistema pasa por Varias Fases de Desarrollo, planteamiento del problema, análisis del problema, posibles soluciones, herramientas de programación a utilizar en fin todo un largo proceso antes de utilizar los días para el desarrollo de la programación de la aplicación, la final obtenes una base de datos una carta estrutuctura con todas las opciones que tendra el sistema e aqui en adelante todo es programar la idea osea plasmar todo el analisis en un programa que cubra todas las expectativas y necesidades del cliente,

Lo Particular de los sistemas administrativos para restaurrantes es que necesariamente debemos manejar dos inventarios el primero es el inventario de la mercancia y productos que usamos a diario, el el inventario de los platos de comida que vendemos, es necesario programar los gastos exactos de alimentos que vendemos y a partir de todos los ingredientes usados calculos el costo aplicamos la formula para el precio y finalmente el impuesto al valor agregado que nos arrojara el precio final del producto

MENU PRINCIPAL DEL SISTEMA.jpg
aca les dejo la pantalla principal del sistema aun en fase de desarrollo

Como bien les explico el desarrollo de una aplicacion conlleva dedicacion paciencia, constancia mucho trabajo hastas soñar con el trabajo que se esta desarrollando no sin antes enfrentar muchos cangrejos los cuales son transparente para el usuario, como programador necesitamos saber logica matematica contabilidad inventario y un sin fin de etc etc etc, puesto hay que enfrentar cualquier problema de cualquier area hasta lograr la solucion acertada, el

el primer modulo es crear la interfaz basica del programa sosea lo que vera el usuario en pantalla para luego adentrarnos a la creacion del codigo en si, comence programando el modulo de los grupos o departamentos de articulos que lleva el inventario el mismo consta de la interfaz como tal, las opciones generales, incluir modificar buscar y listar los departamentos y cargar la data en la grilla

departamentos.jpg
aca les dejo la pantalla y luego le coloco todo el codigo logrado

Dim tblDpto As New ADODB.Recordset ' Tabla Loterias Clasicas
Dim nNroReg As Integer ' Contador de Registros
Private Sub btnEli_Click()
Dim tblDpto As New ADODB.Recordset 'Tabla Agencias en Modo Internet

'Primero hacemos el select del registro a eliminar
'Esta Version permite eliminar departamentos de de cualquier taquilla

If grDpto.TextMatrix(grDpto.Row, 2) = "admin" Then
MsgBox "No se Permite Eliminar el Super Usuario Admin..!", vbExclamation, "Mensaje al Usuario"
Else
If MsgBox("Desea Eliminar el Usuario : " & grDpto.TextMatrix(grDpto.Row, 1), vbQuestion + vbYesNo, "Mensaje al Usuario") = vbYes Then

   tblDpto.Open "DELETE FROM departamentos where cod_depar='" & Trim(grDpto.TextMatrix(grDpto.Row, 2)) & " '" _
      , BD, addOpenKeyset, adLockOptimistic
    '  BD.Close
      With grDpto
           .RemoveItem (.Row)
      End With
   MsgBox "Registro Borrado Correctamente ", vbInformation, "Mensaje al Usuario"
End If

End If

End Sub

Private Sub btnEliminar_Click()
Dim tblDpto As New ADODB.Recordset 'Tabla Agencias en Modo Internet

'Primero hacemos el select del registro a eliminar
'Esta Version permite eliminar departamentos de de cualquier taquilla

If MsgBox("Desea Eliminar el deparamento : " & grDpto.TextMatrix(grDpto.Row, 1), vbQuestion + vbYesNo, "Mensaje al Usuario") = vbYes Then
       
   tblDpto.Open "DELETE FROM departamentos where cod_depar='" & Trim(grDpto.TextMatrix(grDpto.Row, 0)) & " '" _
      , BD, addOpenKeyset, adLockOptimistic
    '  BD.Close
      With grDpto
           .RemoveItem (.Row)
      End With
   MsgBox "Registro Borrado Correctamente ", vbInformation, "Mensaje al Usuario"
End If

End Sub

Private Sub btnEliminar_MouseLeave()
st.Panels(1) = ""
End Sub

Private Sub btnEliminar_MouseMove(Button As MouseButtonConstants, Shift As Integer, Control As Integer, X As Long, y As Long)
st.Panels(1) = "Eliminar Departamento"
End Sub

Private Sub btnIncluir_Click()
frmManttoDpto.parametros 1
frmManttoDpto.Show vbModal
End Sub

Private Sub btnIncluir_MouseLeave()
st.Panels(1) = ""
End Sub

Private Sub btnIncluir_MouseMove(Button As MouseButtonConstants, Shift As Integer, Control As Integer, X As Long, y As Long)
st.Panels(1) = "Incluir Nuevo Departamento "
End Sub

Private Sub btnModificar_Click()
frmManttoDpto.parametros 2
frmManttoDpto.Show vbModal
' frmModUsu.Show vbModal
End Sub

Private Sub btnModificar_MouseLeave()
st.Panels(1) = ""
End Sub

Private Sub btnModificar_MouseMove(Button As MouseButtonConstants, Shift As Integer, Control As Integer, X As Long, y As Long)
st.Panels(1) = "Modificar Usuario"
End Sub

Private Sub btnPol_Click()
frmPolUsu.Show vbModal
End Sub

Private Sub btnPol_MouseLeave()
st.Panels(1) = ""
End Sub

Private Sub btnPol_MouseMove(Button As MouseButtonConstants, Shift As Integer, Control As Integer, X As Long, y As Long)
st.Panels(1) = "Politicas de Acceso de los departamentos"
End Sub

Private Sub btnSalir_Click()
Unload Me
Set frmDepartamentos = Nothing
End Sub

Private Sub btnMod_Click()

frmModUsu.Show vbModal

End Sub

Private Sub Command1_Click()

frmPolUsu.Show vbModal

End Sub

Private Sub btnSalir_MouseLeave()
st.Panels(1) = ""
End Sub

Private Sub btnSalir_MouseMove(Button As MouseButtonConstants, Shift As Integer, Control As Integer, X As Long, y As Long)
st.Panels(1) = "Salir del Modulo de departamentos"
End Sub

Private Sub cmbBusqueda_Click()
If cmbBusqueda.ListIndex = 0 Then
cargar_grilla 0
ElseIf cmbBusqueda.ListIndex = 1 Then
cargar_grilla 1
ElseIf cmbBusqueda.ListIndex = 2 Then
cargar_grilla 2
End If

End Sub

Private Sub edtBuscar_Change()
If Len(Trim(edtBuscar.Text)) = 0 Then
If cmbBusqueda.ListIndex = 0 Then ' Ordenamos por Codigo
cargar_grilla 0
ElseIf cmbBusqueda.ListIndex = 1 Then ' Ordenamos por Nombre
cargar_grilla 1
ElseIf cmbBusqueda.ListIndex = 2 Then ' Ordenamos por cod_depar
cargar_grilla 2
End If
ElseIf Len(Trim(edtBuscar.Text)) > 0 Then
If cmbBusqueda.ListIndex = 0 Then ' Buscamos por Codigo
buscar_grilla 0, 0
ElseIf cmbBusqueda.ListIndex = 1 Then ' Buscamos por Nombre
buscar_grilla 1, 1
ElseIf cmbBusqueda.ListIndex = 2 Then ' Buscamos por cod_depar
buscar_grilla 2, 2
End If
End If
End Sub

Private Sub Form_Activate()
'MsgBox " Cargo "
nAncho = Me.Width

  panel1 = (nAncho / 2)
  panel2 = nAncho / 4
  panel1 = panel1 + panel2

' Panel1 = Panel1 + panel2

  st.Panels(1).Width = panel1
  st.Panels(1).Text = ""
  
  st.Panels(2).Width = panel2
  st.Panels(2).Text = " Registros: " & Str(nNroReg)

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 27 'Bajar
btnSalir_Click
KeyCode = 0
End Select

End Sub

Private Sub Form_Load()

'On Error GoTo hay
nInicio = 1
swAcceso = False

nConta = 0
cmbBusqueda.AddItem "Buscar Por Código"
cmbBusqueda.AddItem "Buscar Por Descripcion"
cmbBusqueda.ListIndex = 0

With grDpto 'utilizar la notación "With"
'Crear cabeceras para las columnas 1 y 2
.TextMatrix(0, 0) = "Codigo"
.TextMatrix(0, 1) = "Descripción"
.TextMatrix(0, 2) = "Activo "

'Seleccionar cabeceras

.Row = 0
.Col = 0
.RowSel = 0
.ColSel = 2

'Poner cabeceras en negrita y centrar
.FillStyle = flexFillRepeat 'rellenar toda la selección
.CellFontBold = True
.CellAlignment = flexAlignCenterCenter

'Definir el Ancho de Cada Columna
.ColWidth(0) = (140 * Width / 800)
.ColWidth(1) = (490 * Width / 800)
.ColWidth(2) = (140 * Width / 800)

.Row = .Rows - 1
.Col = 0
.RowSel = .Rows - 1
.ColSel = 2

End With

'BD.Close
'Exit Sub
'hay:

'MsgBox Err.Description & " Linea de error: " & Erl()

End Sub

Private Sub KewlButtons2_Click()
frmIncluUserTaq.Show vbModal
End Sub

Private Sub KewlButtons1_Click()
'BD.Close
Unload Me
End Sub

Private Sub KewlButtons3_Click()

End Sub

Private Sub KewlButtons4_Click()
frmModUser.Show vbModal
End Sub

Sub xxxx()

Unload Me
Set frmDepartamentos = Nothing

End Sub

Private Sub vkCommand1_Click()

End Sub

'Private Sub Form_Resize()
' nAncho = Me.Width
'
' panel1 = nAncho / 2
' panel2 = nAncho / 2
'
' panel2 = panel2 / 2
' panel1 = panel1 + panel2
'
' st.Panels(1).Width = panel1
' st.Panels(1).Text = ""
'
' st.Panels(2).Width = panel2
' st.Panels(2).Text = " Registros: "
'End Sub

Sub cargar_grilla(nCol As Integer)
Static nConta As Integer

If nCol = 0 Then
tblDpto.Open " select * from departamentos order by cod_depar", BD, adOpenKeyset, adLockOptimistic
ElseIf nCol = 1 Then
tblDpto.Open " select * from departamentos order by des_Depar", BD, adOpenKeyset, adLockOptimistic
End If

If tblDpto.EOF Then
MsgBox "No hay Registros Encontrados...!!!! Debe Comenzar a Incluir Registros "
btnModificar.Enabled = False
btnEliminar.Enabled = False
tblDpto.Close
Set tblDpto = Nothing
Exit Sub

Else
With grDpto
nNroReg = tblDpto.RecordCount

     st.Panels(2) = "Registros : " & nNroReg
     .Rows = 1    'Aqui vaciamos la Grilla y la dejamos sin nada
     .Redraw = False
     Do While Not tblDpto.EOF
        .AddItem tblDpto!cod_depar & vbTab & _
        tblDpto!des_Depar & vbTab & _
        IIf(tblDpto!Activo = 1, "Activo", "Inactivo")
     
        Orde grDpto, 0, False, 4
        Orde grDpto, 1, False, 0
        Orde grDpto, 2, False, 4
        
        tblDpto.MoveNext
           
     Loop
     .Redraw = True
     
     
     
     If .Row >= 1 Then
        .Row = 1
        .Col = 0
        .RowSel = 1
        .ColSel = 2
     Else
         btnModificar.Enabled = False
         btnEliminar.Enabled = False
     End If
     tblDpto.Close
     Set tblDpto = Nothing
     Color_Grid grDpto
End With

End If

End Sub

'---------------------------------------------------------------------------------------
' Procedure : buscar_grilla
' DateTime : 19/11/2014 10:09
' Author : lgavidia
' Purpose :
'---------------------------------------------------------------------------------------
'
Sub buscar_grilla(nCol As Integer, nBuscar As Integer)
Static nConta As Integer
nConta = 0

'If IsMissing(nBuscar) Then
' MsgBox "Burcar no Fue Pasado"
'End If

If IsMissing(nBuscar) Then
If nCol = 0 Then
tblDpto.Open " select * from departamentos order by cod_depar", BD, adOpenKeyset, adLockOptimistic
ElseIf nCol = 1 Then
tblDpto.Open " select * from departamentos order by des_Depar", BD, adOpenKeyset, adLockOptimistic
End If

Else

If nCol = 0 Then
tblDpto.Open " select * from departamentos where cod_depar LIKE '" & _
edtBuscar.Text & "%' order by cod_depar", BD, adOpenKeyset, adLockOptimistic
ElseIf nCol = 1 Then
tblDpto.Open " select * from departamentos where des_depar LIKE '" & _
edtBuscar.Text & "%' order by des_depar", BD, adOpenKeyset, adLockOptimistic
End If

End If

If tblDpto.EOF Then
If nModulo = 0 Then ' Indique que se esta llamando del Modulo Principal
btnModificar.Enabled = False
btnEliminar.Enabled = False
tblDpto.Close
Set tblDpto = Nothing
Exit Sub
Else
tblDpto.Close
Set tblDpto = Nothing
Exit Sub
End If

Else
With grDpto
nNroReg = tblDpto.RecordCount
st.Panels(2) = "Registros : " & nNroReg
.Rows = 1
.Redraw = False
Do While Not tblDpto.EOF

             .AddItem tblDpto!cod_depar & vbTab & _
             tblDpto!des_Depar & vbTab & _
             IIf(tblDpto!Activo = True, "Activo", "Inactivo")
      
             Orde grDpto, 0, False, 4
             Orde grDpto, 1, False, 0
             Orde grDpto, 2, False, 4
             tblDpto.MoveNext
            
          Loop
          tblDpto.Close
          Set tblDpto = Nothing
          Color_Grid grDpto
          If .Row >= 1 Then
             .Row = 1
             .Col = 0
             .RowSel = 1
             .ColSel = 2
          Else
             btnModificar.Enabled = False
             btnEliminar.Enabled = False
          End If
          .Redraw = True
     End With
       
         
End If

End Sub

Private Sub grDpto_DblClick()
frmManttoDpto.parametros 2
frmManttoDpto.Show vbModal
End Sub

Las Lineas de Codigo para lograr esa interfaz para el usuario final....

Hasta los Momentos Estoy en el modulo de de Ajuste Masivo de Precios a Todos los articulos el se encarga de en solo proceso que no tarda mas de 3 segundos de cambiarle el precio a cientos de articulos en una sola ejecucion, lo cumbre del codigo es que hay que recalcular los costos, los precio_!, precio_", y precio_3 junto con los margenes de utilidad de acuerdo a los parametros definidos

en mi proximo post seguire explicando el desarrollo e la aplicación hay bastante tela que cortar

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!