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:
- Seleccione el objeto: Grid
- Presione sobre ella : Botón Derecho
- Seleccione : Modificar
- Hacemos Click en : Combo
- Luego Click sobre ab debajo de: Header1 de la primera columna del grid
- Hacemos Click en : Spinner
- Luego Click sobre ab debajo de: Header1 de la Segunda columna del grid
- Salimos de edición haciendo Click fuera del Grid
- Presionamos Botón derecho sobre el Grid
- Propiedades
- Hacemos Clic en: grdDetalle
- Seleccionamos : Column1
- Current Control
- Clic en Text1
- seleccionamos Combo1
- 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.