Ejemplos con Ejercicios

Preparar un formulario de Facturación

  • En la parte inferior se muestra el producto final  para llegar a ello, Ud. Debe realizar ciertos pasos previos que se detallan después del grafico


1. Para simular una Entidad vamos a crear  las siguientes tablas en la Base de Datos Ventas, a las tablas Artículos y Clientes ingresar algunos registros.

2. Creamos  Nuevo formulario luego insertamos los objetos que se muestran en el grafico inferior.


3.  Para el Entorno de Datos asignamos las cinco tablas creadas anteriormente


4.  En tiempo de Diseño:

Modificamos las propiedades de los objetos según la tabla siguiente:


Antes de continuar con mas cambios, vamos a insertar objetos Combo y Spinner en la columna1 y columna2 del Grid respectivamente, para ello prepare el control de Formularios luego:
  1. Seleccione el objeto: Grid
  2. Presione sobre ella : Botón Derecho 
  3. Seleccione : Modificar 
  4. Hacemos Click en : Combo 
  5. Luego Click sobre ab debajo de: Header1 de la primera columna del grid 
  6. Hacemos Click en : Spinner 
  7. Luego Click sobre ab debajo de: Header1 de la Segunda columna del grid 
  8. Salimos de edición haciendo Click fuera del Grid
  9. Presionamos Botón derecho sobre el Grid
  10. Propiedades
  11. Hacemos Clic en: grdDetalle
  12. Seleccionamos : Column1
  13. Current Control
  14. Clic en Text1
  15. seleccionamos Combo1
  16. Similar debe hacerlo para Spinner de la Segunda Columna
Continuamos cambiando el valor de las propiedades de los siguientes objetos:



Mas propiedades


Nota: Caption de Labels ver el Grafico


   Digitaremos los siguientes códigos, según como se indican a continuación


Objeto:  Formulario Principal (Form1)

 

Evento Init

Public srec
set multilock on
set talk off
set safety off
set exclusive on



SELECT GUIAENC
=cursorsetprop("buffering",3)
set order to tag Nguia
go bottom
thisform.txtnguia.value=right("00000"+alltrim(str(val(nguia)+1)),6)
append blank
replace nguia with thisform.txtnguia.value

Select temporal
dele all
set dele on
append blank
replace nguia with thisform.txtnguia.value
srec=recno()
thisform.grdDetalle.refresh
thisform.txttotal.value=0

Evento Destroy

SELECT GUIAENC
=Tablerevert(.t.)
SELECT TEMPORAL




Objeto:  Cmbdescripcion

Evento: Click
if len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0
                               thisform.grddetalle.colcantidad.spncantidad.setfocus
else
                               thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
endif
thisform.refresh
Evento: Interactivechange
SELECT temporal
go srec
replace artcod with articulo.artcod
replace preuni with articulo.artpre
replace subtotal with thisform.grddetalle.colcantidad.spncantidad.value*preuni
sum subtotal to ntotal
go srec
thisform.txttotal.value=ntotal
thisform.grddetalle.colcantidad.spncantidad.value=1
thisform.refresh
Evento: LostFocus
if len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0
                               thisform.grddetalle.colcantidad.spncantidad.setfocus
else
                               thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
endif
thisform.refresh
Objeto:  spnCantidad

Evento: InteractiveChange

select temporal
replace subtot with thisform.grddetalle.colcantidad.spncantidad.value*preuni
nrec=recno()
sum subtotal to ntotal
go nrec
thisform.txttotal.value=ntotal
thisform.refresh
Evento: LostFocus
thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus

Objeto: cmbCliente
Evento: Click
SELECT GUIAENC
replace cliecod with cliente.cliecod
thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
THISFORM.REFRESH


Objeto: cmdAgregar
Evento: Click
public srec
SELECT TEMPORAL
if len(allt(artdet))>0
               append blank
                               srec=recno()
                               thisform.grddetalle.colcantidad.spncantidad.value=1
endif
replace nguia with thisform.txtnguia.value
thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
thisform.refresh
Objeto: cmdNuevo

Evento: Click
Public srec
select temporal
dele all
set dele on
append blank
replace nguia with thisform.txtnguia.value
srec=recno()
thisform.grddetalle.refresh
thisform.txttotal.value=0
thisform.refresh
Objeto: cmdGuardar
Evento: Click
SELECT GUIAENC
replace igv with thisform.txttotal.value*0.18
replace total with thisform.txttotal.value
=tableupdate(.t.)

SELECT TEMPORAL
 Scan
                                               insert into guiadet(nguia,artcod,artdet,preuni,cant,subtotal);
values(temporal.nguia,temporal.artcod,temporal.artdet,;
                                               temporal.preuni,temporal.cant,temporal.subtotal)
 EndScan

SELECT GUIAENC
set order to tag Nguia
go bottom
thisform.txtnguia.value=right("00000"+alltrim(str(val(nguia)+1)),6)
Objeto: cmdSalir
Evento: Click
SELECT GUIAENC
=tablerevert(.t.)
SELECT TEMPORAL
release thisform



Guardar y  Probar la Ejecución.

Realizar los cambios respectivos, hasta presentar similar al presente modelo.


Queda para el usuario hacer los últimos toques, para que resulte un buen diseño.