Professional Documents
Culture Documents
Nuestro proyecto esta enfocado en un sistema de ventas de cosmeticos de la empresa evolution. Para llevar a cabo este proyecto nos guiamos mediante el modelo en cascada del ciclo de vida del software, gracias a este realizamos cada una de las etapas que involucra dicho modelo.
Con el estudio y analisis de los requerimientos del sistema de ventas, se determino que la empresa necesita llevar un control en cuanto a sus ventas ya que carece de esto, por eso hemos creado una aplicacin con una base de datos que involucra a los clientes y la factura que estos reciben por sus compras.
ABSTRACT
Ours plan is focus in a system of sale cosmetics of the company EVOLUTION. To carry out this plan us guide through the model in waterfall of cycle of life software, thanks to this we to realice each one of the phases that implicate this model.
With the study and analysis of the requirements of system of sale, we are determine that the company to need a control realice the sales since lack of this, therefore we are create application with a base of data to involve them client and the invoice to recive by yours purchase.
CREACIN DE LA BASE DE DATOS. Para el desarrollo del sistema de ventas de la empresa EVOLUTION se determino el uso de una base de datos que incluye a los clientes, recibo, proveedores y productos. Dicha base de datos es la siguiente:
El smbolo
Elaboracin de la base de datos en FoxPro. Pasos: 1. Abrir Microsoft Visual FoxPro 6.0
2. Archivo Nuevo 3. ProyectoNuevo Archivo
Al abrir el administrador de proyectos proseguimos a crear nuestra base de datos en la opcin Data, luego DatabasesNuevo, la guardamos con el nombre EVOLUTION. Cuando se abre el diseador de la base de datos, proseguimos a ingresar las tablas con todos los campos que se determinaron anteriormente.
2
ELABORACIN DE LAS PANTALLAS DE ENTRADAS. CREACIN DE FORMULARIOS SIMPLES PERSONALIZADOS: Son formularios vinculados a una o ms tablas y permiten: Generar automticamente cdigos, establecer formatos propios. Modificar ciertos datos, segn los requerimientos. Eliminar, permitiendo crear un respaldo histrico. Buscar registros con diferentes opciones. El desplazamiento entre registros
Pasos para crear el formulario de proveedores: Paso 01: Creacin del Formularios Base Desde la ficha Documentos del administrador de proyecto, seleccione Formularios, luego el botn nuevonuevo formulario.
La barra de herramienta muestra los controles que pueden colocarse en el formulario: Etiquetas, Cajas de Texto, Botones de comando, de verificacin, etc. El formulario a disear: donde se colocan los controles (objetos). Listado de propiedades: son todas las caractersticas de un control o pantalla seleccionada. Paso 02: Establecimiento del origen de datos (entorno de datos) Consiste en vincular el formulario y los datos, en este caso los datos se encuentran en la tabla proveedores. Realice lo siguiente:
Clic sobre el formulario base. Una vez seleccionado el formulario, clic derecho del ratn para mostrar el men desplegable. Seleccionar la opcin Entorno de Datos.
Se muestran dos pantallas: Adicin de Tablas: para seleccionar y agregar la tabla vinculada al formulario. Entorno de Datos: muestra la(s) tablas ya vinculadas Seleccione proveedores y luego el botn adicionar (Add):
Clic en el botn Agregar (Add): Luego, seleccione el botn Cerrar (Close): Paso 03: Asignacin de los campos al formulario: Desde la ventana Entorno de Datos, seleccione el titulo Campos que aparece en la tabla Proveedores y arrastre con el puntero del ratn hacia el formulario
El resultado se muestra a continuacin, ampli el tamao del formulario base para distribuir mejor los controles:
Agregar 11 botones de comando: Seleccione desde la barra de controles el objeto botones de comando y colquelos en el formulario. Paso 04: Guardar el formulario:
Ubquese en la barra de mens, seleccione archivo guardar como y elija el destino donde lo guardara. Propiedades del los objetos (Para el formulario proveedores) Nombre del Objeto Propiedad AutoCenter Caption Name (Formulario): Proveedores .T. Informacin de proveedores Valor
Esta propiedad tambin se utiliza en los dems formularios (productos, recibos y clientes).
Propiedad ControlSource
Valor m.id_proveedor
Propiedad ControlSource
Valor m.nombre
Propiedad ControlSource
Valor m.telefono
Propiedad ControlSource
Valor m.direccion
De igual manera se hacen las modificaciones para las cajas de textos de los dems formularios, adaptando siempre la informacin al formulario que se este realizando. Propiedades de los botones comandos: La imagen de los botones comandos es la siguiente:
Actualiz ar Examin ar Sal ir Primer registr o Regist ro anteri or
Carg ar
Limpi ar
Agreg ar
Reti rar
Siguien te registro
Ultimo registr o
Propiedad
Valor
7
Name: Primero
Valor
Valor
c:\ventacosmeticos\flechas\arrow28c.ico
Valor
c:\ventacosmeticos\flechas\arrow28d.ico
Valor
Propiedad
Valor
8
Name: Actualizar
Valor
Valor
Valor
Valor
Valor
ToolTipText Picture
Las propiedades de los botones de comando de este formulario son las mismas que se utilizan para el resto de los formularios (clientes, productos y recibo).
10
EVENTOS Objeto: (formulario) Proveedores thisform.release close table all select 1 use "c:\ventacosmeticos\proveedores.dbf" order tag id_proveed alias proveedores scatter memvar memo thisform.refresh thisform.txtId_proveedor.setfocus return Procedimiento: Init
Procedimiento:Click
11
IF EMPTY(thisform.txtId_proveedor.value) WAIT WINDOW "Id incorrecto..." nowait thisform.txtId_proveedor.setfocus RETURN ENDIF *Cargar los campos SELECT 1 mProveedores= alltrim(thisform.txtId_proveedor.value) SEEK mProveedores IF FOUND() &&Actualizar registro encontrado SCATTER MEMVAR memo WAIT WINDOW "Proveedor cargado..." nowait ELSE mMens1="Imposible cargar datos, El proveedor" +mProveedores+ "no existe!" +chr(10) mMens2="Utilice otro Id e intente cargar datos de nuevo..." mOpc=MESSAGEBOX(mMens1+mMens2,0+64,"Proveedor no encontrado...") ENDIF thisform.Refresh thisform.txtId_proveedor.setfocus return
Objeto: Limpiar
Procedimiento:Click
Procedimiento:Click
IF EMPTY(thisform.txtId_proveedor.value) wait"Id incorrecto..." windows nowait thisform.txtId_proveedor.setfocus thisform.Refresh RETURN ENDIF * Proveedores IF EMPTY(thisform.txtNombre.value) wait"Nombre incorrecto..."windows nowait thisform.txtNombre.setfocus thisform.Refresh RETURN ENDIF IF EMPTY(thisform.txtTelefono.Value) wait"Telefono incorrecto..."windows nowait thisform.txtTelefono.SetFocus
13
thisform.Refresh RETURN ENDIF IF EMPTY(thisform.txtDireccion.Value) wait"Direccion incorrecta."windows nowait thisform.txtDireccion.SetFocus thisform.Refresh RETURN ENDIF *verificar si el proveedor existe mProveedores=ALLTRIM(thisform.txtId_proveedor.Value) SEEK mProveedores IF FOUND() mens1="Imposible agregar, el proveedor " +mProveedores+ "ya existe!" +chr(10) mens2="Cambie el Id e intente agregar de nuevo..." Op1=MESSAGEBOX(mens1+mens2, 0+64, "Error de Agregacion...") thisform.txtId_proveedor.SetFocus thisform.Refresh RETURN ENDIF *Agregar nuevo registro con los datos en pantalla SELECT 1 INSERT INTO proveedores from memvar *cargar nuevos datos en blanco SCATTER MEMVAR blank
14
Objeto:Retirar SELECT 1
Procedimiento:Click
mProveedores= alltrim(thisform.txtId_proveedor.value) SEEK mProveedores IF !FOUND() &&S no encuentra el registro mens1="Imposible retirar, el proveedor. "+mProveedores+" no existe!"+CHR(10) mens2="Cambie el Id del proveedor e intente retirar de nuevo..." Op1=MESSAGEBOX(mens1+mens2, 0+64," No se puede retirar el registro...") thisform.txtId_proveedor.SetFocus RETURN ENDIF mens1="Desea retirar la factura no. "+mProveedores+" del sistema?"+CHR(10) Op1=MESSAGEBOX(mens1, 1+32, "Retirar registro...") IF Op1=1 &&Si hace click en Aceptar SELECT 1 DELETE PACK WAIT "Registro retirado del sistema" windows nowait *Moverse al registro proximo disponible
15
IF !BOF() skip-1 ELSE GO top ENDIF ENDIF SCATTER MEMVAR memo thisform.txtId_proveedor.SetFocus thisform.Refresh RETURN
Objeto:Examinar SELECT 1
Procedimiento:Click
BROWSE FIELDS id_proveedor,nombre,telefono,direccion NOEDIT NOAPPEND nodelete *activar el seleccionado SCATTER MEMVAR memo thisform.Refresh RETURN
Objeto:Actualizar SELECT 1
Procedimiento:Click
16
*verificar si hay campos vacos *Nmero de recibo IF EMPTY(thisform.txtId_proveedor.value) WAIT "Id incorrecto..." windows nowait thisform.txtId_proveedor.SetFocus thisform.Refresh RETURN ENDIF *recibo IF EMPTY(thisform.txtNombre.Value) wait"Nombre incorrecto..." windows nowait thisform.txtNombre.SetFocus thisform.Refresh RETURN ENDIF IF EMPTY(thisform.txtTelefono.Value) wait"Telefono incorrecto..." windows nowait thisform.txtTelefono.SetFocus thisform.Refresh RETURN ENDIF IF EMPTY(thisform.txtDireccion.Value) wait"Direccion incorrecta..." windows nowait thisform.txtDireccion.SetFocus thisform.Refresh
17
RETURN ENDIF *Verificar si el proveedor existe mProveedores=ALLTRIM(thisform.txtId_proveedor.Value) SEEK mProveedores IF FOUND() &&Actualizar registro encontrado GATHER MEMVAR memo WAIT "Proveedor. "+mProveedores+" Actualizado"windows nowait ELSE mens1="Imposible actualizar, la factura no." +mProveedores+ " no existe!"+CHR(10) mens2="Cambie el Id e intente actualizar de nuevo..." Op1=MESSAGEBOX(mens1+mens2, 0+64,"Error de Actualizacin...") thisform.txtId_proveedor.SetFocus thisform.Refresh RETURN ENDIF RETURN
Objeto:Salir thisform.Release
Procedimiento:Click
Objeto:Primero go top
Procedimiento:Click
18
Objeto:Siguiente if eof()
Procedimiento:Click
thisform.siguiente.enabled=.f. go bottom m.id_proveedor=proveedores.id_proveedor m.nombre=proveedores.nombre m.telefono=proveedores.telefono m.direccion=proveedores.direccion proveedores.refresh else skip 1 m.id_proveedor=proveedores.id_proveedor m.nombre=proveedores.nombre m.telefono=proveedores.telefono m.direccion=proveedores.direccion if thisform.anterior.enabled=.f. thisform.anterior.enabled=.t. endif endif
19
thisform.refresh
Objeto:Anterior if bof() thisform.anterior.enabled=.f. go top else skip -1 if thisform.siguiente.enabled=.f. thisform.siguiente.enabled=.t. endif endif
Procedimiento:Click
Objeto:Ultimo go bottom
Procedimiento:Click
20
21
El cuadro combinado de este formulario tiene las siguientes propiedades: Nombre del Objeto Name: Combo1 Propiedad ControlSource RowRouce m.id_proveedor proveedores Valor
RowSourceType 2-Alias
22
En este formulario se utilizan dos cuadros combinados cuyas propiedades son las siguientes: Nombre del Objeto Name: Combo1 Propiedad ControlSource RowRouce m.id_cliente clientes Valor
RowSourceType 2-Alias
Valor
RowSourceType 2-Alias
Ademas de los botones comando anteriores se le agregan tres botones mas, sus propiedades son las siguientes:
23
EVENTOS
Procedimiento: Init
USE "c:\ventaCosmeticos\recibo.dbf" ORDER tag num_recibo ALIAS recibo SELECT 2 USE "c:\ventaCosmeticos\clientes.dbf" SELECT 3 USE "c:\ventaCosmeticos\producto.dbf" SCATTER MEMVAR memo *thisform.refresh
24
thisform.txtnum_recibo.SetFocus return
Objeto: TxtFecha
Procedimiento: Click
recibos.txtFecha.value = date() &&muestra la fecha actual recibos.txtFecha.enabled=.t. &&El control esta activado recibos.txtfecha.forecolor=rgb(0,0,0)&&texto en negro
Procedimiento: Click
Procedimiento: Click
Procedimiento: Click
25
Propiedad del objeto combo1 Nombre del Objeto Name: Combo1 Propiedad ControlSource RowRouce usuarios.nombre usuarios Valor
RowSourceType 6-campos
IF THISFORM.TxtClave.Value="LUCRECIA" THEN DO FORM c:\ventaCosmeticos\cargarformularios.SCX else if thisform.txtClave.value="ELIETH" then DO FORM c:\ventaCosmeticos\cargarformularios.SCX else
26
if thisform.txtClave.value="EVELING" then DO FORM c:\ventaCosmeticos\cargarformularios.SCX THISFORM.REFRESH ELSE WAIT WINDOW "clave invalida" endif endif endif
Para este formulario es necesario insertar desde los controles de formularios: 2 Etiquetas, 50 shape y 3 timer. Estructura del formulario form1: Nombre del Objeto Name: Form1 Top Propiedad 3 Valor
Valor
27
Top Width
60 504
Valor
Valor
28
Propiedad Enabled Heigth Interval Left Top Width .T. 24 1000 60 240 24
Valor
Propiedad Enabled Heigth Interval Left Top Width .F. 25 200 576 60 25
Valor
Procedure: Activate
29
v=0 && Muestra el porcentaje por=0 K=1 for i=1 to 50 x = alltrim("thisform.shape"+ alltrim(str(i))+ ".mousepointer = 11") &x next i thisform.refresh()
Procedure: Init
Procedure: Timer
Objeto: Timer3 *Controla el Avance del Titulo del Formulario ntiempo=ntiempo+1 if ntiempo % 10 = 0 then
Procedure: Timer
thisform.caption=alltrim(thisform.caption) else thisform.caption=space(ntiempo%10)+thisform.caption endif if ntiempo = 120 then *Se controla si el tiempo transcurrido a terminado messagebox("Su Tiempo a Expirado"+chr(13)+"Tiempo: 3 minutos",48,"EXPIRACION") this.enabled=.f. thisform.release endif
Procedure: Timer
31
IF K<=50 xShape = Alltrim("ThisForm.Shape"+Alltrim(Str(K))+".Visible = .T.") &xShape IF K = 8 THISFORM.label3.CAPTION=" ENDIF IF K = 16 THISFORM.label3.CAPTION=" ENDIF IF K= 24 THISFORM.label3.CAPTION=" ENDIF IF K= 34 THISFORM.label3.CAPTION=" ENDIF IF K= 40 THISFORM.label3.CAPTION="SISTEMA DE INFORMACION... SEGURIDAD" ENDIF IF K= 45 THISFORM.label3.CAPTION=" endif ELSE THISFORM.TIMER1.ENABLED=.F. THISFORM.HIDE
32
BUSCANDO..."
ACCESANDO..."
ABRIENDO... "
DO FORM c:\ventacosmeticos\clientes.scx
Objeto: CmdProveedores
Procedimiento: Click
DO FORM c:\ventacosmeticos\proveedores.scx
Objeto: CmdProductos
Procedimiento: Click
DO FORM c:\ventacosmeticos\recibos.scx
Objeto: InfClientes
Procedimiento: Click
Objeto: InfProductos
Procedimiento: Click
Objeto: InfProveedores
Procedimiento: Click
Objeto: InfRecibos
Procedimiento: Click
Propiedades de los objetos: Nombre del Objeto Name:TxtFecha Propiedad Caption FontBold ControlSource FECHA .T. M.FECHA Valor
34
Valor
Propiedad
Valor
Picture ToolTipText
Propiedad
Valor
Picture
c:\ventacosmeticos\cosmeticos\x1pnp_rgmi5o5 2b3obnkpei71dpkvniqwsp.gif
DO FORM "c:\ventaCosmeticos\MENUS.SCX"
35
PANTALLAS DE SALIDA. CREACION DE INFORMES. Los informes muestran datos y resumen datos en un formulario impreso o en pantalla. Los dos componentes principales de los informes son los datos y el formato. La fuente de datos del informe puede ser una tabla de base de dato, una consulta o una vista. El primer paso para disear un informe es determinar los datos que se van a mostrar, y el segundo paso es determinar cul va a ser el mejor formato para mostrar ese informe. Puede crear listados que se basen en una nica tabla o en informes complejos. El Generador de Informes es una herramienta flexible y de fcil uso para la creacin, diseo y modificacin de informes. Diseo del formulario productos.
CREACIN DE INFORMES:
3. Pulse el botn nuevo 4. Pulse el botn Asistente para Informes Aparece la siguiente ventana.
Seleccione Asistente para informes Pulse Aceptar Aparecer la siguiente ventana donde se muestra la seleccin de la tabla y los campos, seleccione los campos que observa en campos seleccionados:
37
Pulse siguienteElija el estilo ejecutivoorientacion Orizontalordenar por nombre de productoFinalizar. As mismo crear los informes para las dems tablas. Diseo del informe recibo.
39