Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Del Programador para La Creación de Un Software Facturador en VFP 9.0
Manual Del Programador para La Creación de Un Software Facturador en VFP 9.0
Edgardo Lpez
Mariana Martnez
Danelia Medina
Edwin Vaughan
Introduccin
Objetivo general
Desarrollar una aplicacin para un sistema de control farmacutico, mediante el uso de
la aplicacin Visual Fox Pro 9.0.
Objetivos especficos
Implantar los parmetros ( campos, funciones, datos, etc) requeridos en la aplicacin
Utilizar los conocimientos bsicos adquiridos en clase sobre Visual Fox Pro 9.0.
Facilitar el uso de la aplicacin por medio de la creacin de un manual.
IEntorno de trabajo
- Crear una carpeta con el nombre del proyecto en el Disco local C.
Nombre Carpeta: Proyecto 3.0
Se utilizara para guardar el proyecto, ejecutable, la aplicacin.
Nota: al crear esta carpeta en el Disco Local C se permite ubicar ms fcil las direcciones a la
hora de realizar la programacin y escribir la sintaxis
-
Crear subcarpetas
Datos: Guardara la Base de Datos, Tablas y consultas
Formularios: Guardara los Formularios
Informes: Guardara los reportes
Menues: Guardar el Men
Imgenes: Guardar las imgenes utilizadas para la interfaz del proyecto
Msica: efectos de sonido contenidos en la aplicacin
IIDatos
- Nuevo Proyecto
Abrir Visual
FoxPro 9.0
Nuevo
Proyecto
Abrir el
Administrad
or de
Proyectos
Aministrad
or de
Proyectos
Pestaa
"All"
(Todos)
Datos
Databases
Nuevo
Nueva
Base de
Datos
Nombrar y
Guardar
en Carpeta
Datos
Tablas
Diseador
de Base
de Datos
Click en
"New
Table"
(Nueva
Tabla)
Crear
Nueva
Tabla
Tipo
Ancho
ndice
Usuario
Carcter
15
Contrasea
Carcter
10
AscendentePrincipal
-----
2- Clientes:
Campos
Nombre
Tipo
Ancho
ndice
Cod_clien
Numrico
Nom_clien
Carcter
30
Dir_clien
Telf_clien
Carcter
Carcter
50
9
Ascendente
Principal
Ascendente
Normal
-----------
3- Facturas:
Campos
Nombre
Cod_fac
Tipo
Numrico
Ancho
ndice
5
Ascendente
Principal
Cod_clien
Numrico
5
Ascendente
Normal
Fecha_fac
Fecha
8
Ascendente
DTOS
(fecha_fac)
Subtotal
Numrico
6
-----IVA
Numrico
6
-----Total
Numrico
6
-----Nota: Al Campo Fecha_fac de le agrego un valor predeterminado = DATE()
Tipo
Numrico
Ancho
4- Productos
Campos
Nombre
Cod_fac
Cod_prod
Numrico
Nom_prod
Cant_prod
Prec_ind
Prec_tot
Carcter
Numrico
Numrico
Numrico
40
6
6
6
ndice
Ascendente
Normal
Ascendente
Normal
---------------------
5- Stock
Campos
Nombre
Cod_prod
Tipo
Numrico
Ancho
5
Nom_prod
Carcter
40
Form_farm
Carcter
25
Via_admin
Carcter
15
Precio
Numrico
6
Cantidad
Numrico
6
Nota: Cod_prod ndice con Filtro: .NOT.DELETED()
6- Proveedores
Campos
ndice
Ascendente
Principal
--------------------------
Nombre
Cod_prov
Tipo
Numrico
Ancho
Nom_prov
Carcter
30
Dir_prov
Telf_prov
Carcter
Numrico
50
9
ndice
AscendentePrincipal
AscendenteNormal
---------
7- Pedidos
Campos
Nombre
Cod_ped
Tipo
Numrico
Ancho
ndice
AscendentePrincipal
Cod_prov
Numrico
5
AscendenteNormal
Fecha_pedido
Fecha
8
-----Nota en programa el cdigo de proveedor en la tabla pedidos es de Ancho 10 y en la
tabla de Proveedores es de Ancho 5
5
8- Productos Pedidos
Campos
Nombre
Cod_ped
Tipo
Numrico
Ancho
5
Cod_prod
Numrico
Nom_prod
Cant_prod
Carcter
Numrico
25
6
ndice
AscendenteNormal
Filtro:
.NOT.DELETED()
AscendenteNormal
Filtro:
.NOT.DELETED()
---------
Relacin de Tablas
III-
Cuando un cliente realiza una facturacin, este puede solicitar diferentes productos,
estos productos estn unidos al stock para reflejar su venta. Disminuyendo la cantidad
de producto disponible.
De una lista de proveedores, podemos realizar el pedido de productos, al realizar estos
pedidos se debe reflejar el aumento en la cantidad de producto en nuestro inventario.
En la tabla stock reflejamos la cantidad de productos disponibles en el sistema de
farmacia.
La tabla Login funciona como sistema de seguridad, permite agregar un usuario y
contrasea.
Formulario
Administrad
or de
Proyectos
Pestaa
"Documents
"
(Documento
s)
Formularios
Nuevo
Nuevo
Formulario
Se crearn 8 formularios:
1- Login
Este formulario funcionara como sistema de seguridad, permite agregar un usuario y
contrasea.
a) Se crea un formulario
Se establecen las propiedades:
Height 302
Left 185
Top 151
b) Se realiza un diseo
d) Botones Comandos
Botones Comando
Diseo
Entr
Salir
NombreFuncin
Entrar- Abre
la tabla Login,
realiza una
bsqueda del
usuario si
coincide
procede a una
bsqueda de
la contrasea
si ambos
coinciden
procede a
abrir el
formulario
principal. Sino
mostrara un
mensaje de
usuario
incorrecto.
Salir Cierra
el formulario
Programacin
SELECT login
LOCATE FOR
ALLTRIM(login.Usuario)=ALLTRIM(Thisform.txtUsuario.Value)
IF FOUND() THEN
IF
ALLTRIM(login.Contrasea)=ALLTRIM(Thisform.txtContrase
a.Value) Then
MESSAGEBOX("Contrasea aceptada")
DO FORM c:\proyecto2.0\formularios\principal.scx
ELSE
MESSAGEBOX("Contrasea incorrecta")
thisform.txtContrasea.Value= " "
endif
ELSE
MESSAGEBOX("Usuario incorrecto")
thisform.txtUsuario.Value=" "
thisform.txtContrasea.Value= " "
endif
Thisform.refresh
Thisform.release
2- Principal
Este formulario se utilizar para mostrar la portada al crearse la aplicacin, aqu se solicitar
un usuario y contrasea para poder ingresar al sistema.
a) Se crea un Formulario
Height 566
Left 0
Top 0
Width 660
b) Se agrega un Label y Command Group (Grupo de Comandos)
Para crear una barra de ttulos
Botones Comando
Diseo
Factu
Pedid
Stock
Inform
Salir
3- Factura
NombreFuncin
Factura Abre
el formulario
Factura.
Pedido Abre
el formulario
Pedido
Programacin
DO FORM c:\proyecto2.0\formularios\factura.scx
DO FORM c:\proyecto2.0\formularios\pedidos.scx
Thisform.release
b) Escribir
SET DELETED ON
SELECT Facturas
GO BOTTOM
THISFORM.REFRESH
c) Procedimiento Init
d) Regresar Diseador de Formulario Colocar Label
Se establecen las propiedades:
Height 565
Left 119
Width 541
Top 0
e) Trasladar los campos a utilizar de las tablas al Formulario
Los campos Cod_fac, Cod_clien y Fecha fueron tomados de la tabla Factura.
f) Se agrega el Grid
Botones Comando
Diseo
>
NombreFuncin
Buscar
Este
Botn
realizara una
bsqueda
telefnica de
los clientes.
Si
est
registrado nos
aparecer su
nombre
y
cdigo
de
cliente
automticame
nte.
Programacin
LOCAL A
LOCAL B
SELECT clientes
LOCATE FOR
ALLTRIM(clientes.telf_clien)==ALLTRIM(Thisform.text1.Value)
IF FOUND() then
A=clientes.cod_clien
B=clientes.nom_clien
ELSE
messagebox("El cliente no est registrado")
ENDIF
SELECT facturas
LOCATE FOR cod_fac=thisform.txtCod_fac.value
Thisform.txtCod_clien.Value=A
thisform.txtNom_clien.Value=B
Nuevo
Agregar
>
Nuevo Cliente
Este Botn
abrir
el
Formulario
Agregar
Clientes
Agregar
Producto
Este
Botn
Abre la tabla
productos va al
inicio. Y coloca
el cdigo de
factura.
Buscador
Este Botn se
encuentra en
el Grid.
Nos
permite
Buscar
un
Producto
y
Verificar si la
cantidad
de
este satisface
su demanda. Y
nos Brinda su
Precio
individual
y
codigo
de
Producto.
DO FORM c:\proyecto2.0\formularios\agregclientes.scx
SELECT productos
GO bottom
APPEND blank
replace cod_fac WITH thisform.txtcod_fac.value
Thisform.grid1.refresh
SELECT stock
LOCATE FOR
ALLTRIM(thisform.grid1.column3.text1.Value)==ALLTRIM(stoc
k.Nom_prod)
IF
Alltrim(thisform.grid1.column3.text1.Value)==ALLTRIM(stock.N
om_prod) then
Thisform.grid1.column2.text1.value=stock.cod_prod
Thisform.grid1.column5.text1.value=stock.precio
IF thisform.grid1.column4.text1.Value<=stock.cantidad
THEN
H= productos.cant_prod * productos.prec_ind
thisform.grid1.column6.Text1.Value = H
SELECT stock
T=stock.cantidad
U=T-thisform.grid1.column4.text1.Value
replace stock.cantidad WITH U
ELSE
MESSAGEBOX("No hay suficientes productos")
Thisform.grid1.column2.text1.value=""
Thisform.grid1.column4.text1.value=""
Thisform.grid1.column5.text1.value=""
ENDIF
ELSE
messagebox("El producto no existe")
ENDIF
Eliminar
Thisform.grid1.refresh
- SELECT stock
Abre la tabla
Stock
y
reemplaza la
cantidad
de
productos
LOCATE FOR
ALLTRIM(Thisform.grid1.column3.text1.Value)=ALLTRIM(stock
.nom_prod)
J=stock.cantidad
K=J+thisform.grid1.column4.text1.Value
replace stock.cantidad WITH K
SELECT productos
DELETE
Sub-
I.V.
Tot
Nue
Sal
Sub-Total
Este
Botn
realiza
la
Suma
del
precio
de
todos
los
productos.
I.V.A.
Multiplica
el
Sub-Total por
el 15%.
thisform.grid1.refresh
SELECT productos
SUM prec_tot FOR
productos.cod_fac=thisform.txtcod_fac.value TO
Thisform.txtsubtotal.Value
I=Thisform.txtSubtotal.Value
J=I*0.15
Thisform.txtIva.Value=J
Total Realiza
la Suma del
Sub-Total y el
I.V.A.
K=Thisform.txtsubtotal.value
L=thisform.txtIva.Value
M=K+L
Thisform.txtTotal.Value=M
Nuevo Abre
la
Tabla
Factura
y
guarda
la
informacin,
limpia
el
Formulario Y
crea un nuevo
nmero
de
Factura
Sumando
al
anterior +1.
SELECT facturas
GO bottom
C=facturas.cod_fac
D=C+1
APPEND BLANK
Thisform.txtCod_fac.Value = D
Thisform.txtSubtotal.Value = " "
Thisform.txtIva.Value = " "
Thisform.txtTotal.Value = " "
Thisform.txtCod_clien.Value = " "
Thisform.txtNom_clien.Value = " "
Thisform.text1.Value= " "
Thisform.Refresh
Salir Cierra Thisform.release
el Formulario.
4- Agregar Cliente
b) Escribir
SELECT Clientes
GO BOTTOM
THISFORM.REFRESH
c) Procedimiento Init
d) Crear un Formulario
Se establecen las propiedades:
Height 302
Left 185
Top 151
e) Agregar Label y realizar el Diseo del Formulario
f) Crear la relacin con la Tabla Clientes.
Botones Comando
Diseo
Nue
Nombre-Funcin
Nuevo- Este Botn
permite agregar un
cliente que no se
encuentre registrado.
Abre la tabla
Clientes, designa un
nuevo cdigo de
Programacin
SELECT clientes
GO bottom
A=clientes.cod_clien
B=A+1
APPEND BLANK
Thisform.txtcod_clien.Value = B
Thisform.txtNom_clien.Value = " "
Regre
5- Pedido
Es un formulario en el cual se llevar un registro sobre las ventas de productos realizadas a
un cliente. Se podr realizar una cantidad de pedidos ilimitada.
a) Dar click derecho en cualquier parte libre del formulario Cdigo
b) Escribir
SET DELETED ON
SELECT Pedidos
GO BOTTOM
THISFORM.REFRESH
c) Procedimiento Init
d) Regresar Diseador de Formulario Colocar Label
Se establecen las propiedades:
Height 565
Left 119
Width 541
Top 0
Botones Comando
Diseo
>
NombreFuncin
Programacin
LOCAL A
Buscar
Este
Botn LOCAL B
SELECT proveedores
Nuevo
Proveedor
Agregar
>
realizara
una
bsqueda por
el nombre del
proveedor.
Si
est
registrado nos
aparecer
su
telfono
y
cdigo
de
proveedor
automticamen
te.
LOCATE FOR
ALLTRIM(proveedores.nom_prov)==ALLTRIM(Thisform.text1.Value)
IF FOUND() then
A=proveedores.cod_prov
B=proveedores.telf_prov
Nuevo
Proveedor
Este
Botn
abrir
el
Formulario
Agregar
Clientes
Agregar
Producto
Este
Botn
Abre la tabla
productos
pedidos va al
inicio. Y coloca
el cdigo de
pedido.
Buscador
Este Botn se
encuentra en el
Grid.
Nos
permite
Buscar
un
Producto
y
agregar
la
cantidad
reflejada en el
pedido
al
inventario.
DO FORM c:\proyecto2.0\formularios\agregprov.scx
ELSE
messagebox("El proveedor no est registrado")
ENDIF
SELECT pedidos
LOCATE FOR cod_ped=thisform.txtCod_ped.value
Thisform.txtCod_prov.Value=A
thisform.txttelf_prov.Value=B
SELECT producpedidos
GO bottom
APPEND blank
replace cod_ped WITH thisform.txtcod_ped.value
Thisform.grid1.refresh
SELECT stock
LOCATE FOR
ALLTRIM(thisform.grid1.column3.text1.Value)==ALLTRIM(stock.Nom_
prod)
Thisform.grid1.column2.text1.value=stock.cod_prod
IF
ALLTRIM(thisform.grid1.column3.text1.Value)==ALLTRIM(stock.Nom_
prod) then
Thisform.grid1.column2.text1.value=stock.cod_prod
T=stock.cantidad
U=T+thisform.grid1.column4.text1.Value
replace stock.cantidad WITH U
ELSE
messagebox("El producto no existe")
ENDIF
Thisform.grid1.refresh
Nue
Sal
Eliminar - Abre
la tabla Stock y
reemplaza
la
cantidad
de
productos
SELECT stock
LOCATE FOR
ALLTRIM(Thisform.grid1.column3.text1.Value)=ALLTRIM(stock.nom_p
rod)
J=stock.cantidad
K=J-thisform.grid1.column4.text1.Value
replace stock.cantidad WITH K
SELECT producpedidos
DELETE
thisform.grid1.refresh
SELECT pedidos
GO bottom
C=pedidos.cod_ped
D=C+1
APPEND BLANK
Thisform.txtCod_ped.Value = D
Thisform.txtCod_prov.Value = " "
Thisform.txtTelf_prov.Value = " "
Thisform.text1.Value= " "
Nuevo Abre
la
Tabla
Pedidos
y
guarda
la
informacin,
limpia
el
Formulario
Y
crea un nuevo
cdigo
de
Pedido
Thisform.Refresh
Sumando
al
anterior +1.
Salir Cierra el Thisform.release
Formulario.
6- Agregar proveedor
Es utilizado para agregar proveedores de medicamentos que no s encuentren registrados en
l sistema. Estos se guardan en la tabla proveedores. Esta tabla puede ser abierta desde el
Formulario Pedido o el Formulario Principal.
a) Crear un Formulario
Se establecen las propiedades:
Height 302
Left 18
Top 151
Botones Comando
Diseo
Nue
Regre
Nombre-Funcin
Nuevo- Este Botn
permite agregar un
proveedor que no se
encuentre registrado.
Abre la tabla
Proveedores,
designa un nuevo
cdigo de proveedor
sumando +1 al
anterior y limpia el
formulario.
Regresar Cierra el
Formulario
Programacin
SELECT proveedores
GO bottom
A=proveedores.cod_prov
B=A+1
APPEND BLANK
Thisform.txtcod_prov.Value = B
Thisform.txtNom_prov.Value = " "
Thisform.txtDir_prov.Value = " "
Thisform.txtTelf_prov.Value = " "
Thisform.refresh
ThisForm.Release
7- Editar Stock
Este formulario mostrar los productos disponibles en el stock, permitir agregar nuevos
productos y realizar una bsqueda de estos.
b) Escribir
SELECT Stock
GO TOP
Set Deleted ON
ThisForm.Refresh
c) Procedimiento Init
d) Regresar Diseador de Formulario Colocar Label
Se establecen las propiedades:
Height 565
Left 119
Width 541
Top 0
e) Crear Grid Builder Trasladar los campos a utilizar de las tablas al
Formulario (campos de la tablas stock)
Nuevo
Text 1
NombreFuncin
Nuevo Producto
Este botn abre
la tabla Stock e
ingresa el cdigo
de producto.
Text
1Este
producto realiza
una
bsqueda
segn Nombre o
Cdigo.
NOTA:
Este
comando tiene la
procedimiento
Interactive
Change.
Nombre
Programacin
SELECT stock
GO bottom
A=stock.cod_prod
B=A+1
APPEND BLANK
replace stock.cod_prod WITH B
Thisform.refresh
DO CASE
CASE thisform.check1.Value=1
LOCATE FOR
stock.nom_prod=ALLTRIM(This.Value)
thisform.grid1.refresh
CASE thisform.check2.Value=1
LOCATE FOR stock.cod_prod=This.value
thisform.grid1.Refresh
Thisform.refresh
ENDCASE
Thisform.check2.Enabled=.T.
Thisform.text1.Value= " "
Endcase
Cdigo
Thisform.check1.Enabled=.T.
Thisform.text1.Value= " "
Endcase
Sal
8- Informes y Consultas
Botones Comando
Informes
Diseo
Factur
Client
Pedid
Consultas
Diseo
Factur
Client
Pedid
Jarabe
Cpsu
Tablet
Cre
Nombre-Funcin
Factura Nos
muestra el Reporte
Facturas.
Clientes Nos
muestra el Reporte
Clientes.
Pedidos Nos
muestra el Reporte
Pedidos.
Nombre-Funcin
Facturas Nos
Mostrar la Consulta
diaria Factura.
Clientes Nos
Mostrar la Consulta
diaria Clientes.
Pedidos Nos
Mostrar la Consulta
diaria Pedidos
Jarabe Nos
Mostrar la Consulta
por Producto Jarabe.
Programacin
REPORT FORM
"c:\proyecto2.0\informes\facturas.frx" PREVIEW
REPORT FORM
c:\proyecto2.0\informes\clientes.frx PREVIEW
REPORT FORM
"c:\proyecto2.0\informes\pedidos.frx" PREVIEW
Programacin
DO c:\proyecto2.0\datos\consulta2.qpr
DO "c:\proyecto2.0\datos\consulta 7.qpr"
DO c:\proyecto2.0\datos\query5.qpr
DO "c:\proyecto2.0\datos\consulta 5.qpr"
DO "c:\proyecto2.0\datos\consulta 3.qpr"
Cpsula Nos
Mostrar la Consulta
por Producto
Cpsula.
DO "c:\proyecto2.0\datos\consulta 6.qpr"
Tableta Nos
Mostrar la Consulta
por Producto Tableta
DO "c:\proyecto2.0\datos\consulta 4.qpr"
Crema Nos
Mostrar la Consulta
Sal
Salir Cierra el
Formulario
Thisform.release
IV-
Informes
V-
Consultas
3. Pedidos: Esta consulta muestra todos los pedidos realizados el da en que se ejecuta
la consulta.
1.
2.
3.
4.
Men
Administrad
or de
Proyectos
Otros
Mens
Men
Diseador
de Mens
b) Submen Archivo
Indicador
Nueva Factura
Accin
Comando
Nuevo Pedido
Comando
Salir
Procedimiento
Opciones
DO FORM
c:\proyecto2.0\formularios\factura.scx
DO FORM
c:\proyecto2.0\formularios\pedidos.scx
QUIT
c) Submen Informes
Indicador
Clientes
Accin
Comando
Facturas
Comando
Pedidos
Comando
d) Submen Herramientas
Opciones
REPORT FORM
c:\proyecto2.0\informes\clientes.frx
PREVIEW
REPORT FORM
c:\proyecto2.0\informes\facturas.frx
PREVIEW
REPORT FORM
c:\proyecto2.0\informes\pedidos.frx
PREVIEW
Indicador
Editor de Stock
Accin
Comando
Opciones
Agregar Clientes
Comando
DO FORM
c:\proyecto2.0\formularios\agregclientes.scx
Agregar Proveedor
Comando
DO FORM
c:\proyecto2.0\formularios\agregprov.scx
VII-
DO FORM
c:\proyecto2.0\formularios\editstock.scx
Ejecutable y Aplicacin
Ejecutable
Administra
dor de
Proyectos
"Code"
(Cdigo)
Programas
Nuevo
Aplicacin
Aministrad
or de
Proyectos
Programas
- Farmacia
Generar
Opciones
para
Generar
Conclusin
En el Presente Proyecto hemos desarrollado una Aplicacin en Visual FoxPro 9.0 que
simplifica la complejidad del manejo de registros generales de Farmacia La Esperanza.
Respecto a las funciones del programa, cabe destacar que es un facturador que permitir al
usuario registrar a sus proveedores y clientes de tal forma que le facilite buscar o aadirlos.
El facturador se encarga realizar las operaciones de los productos comprados por los clientes
adems de conservar algunos de sus datos personales. Desde la aplicacin tambin se
pueden solicitar pedidos a los proveedores consolidados de la farmacia, ya que guarda
informacin de ellos, al igual la creacin de un inventario de los productos existentes en ella.
De esta forma concluimos demostrando el alcance de los objetivos planteados al inicio de la
elaboracin de este proyecto.