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.
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
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
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