FoxPro/Visual FoxPro - Cursor

   
Vista:

Cursor

Publicado por Edwin (31 intervenciones) el 18/11/2010 08:21:01
Hola amigos, esto trabajando en un sistemita de facturacion y se me ocurrio que mediante un grid lo podia hacer facilmente por que la cantidad de articulos siempre varia, y hasta cierta parte estoy muy bien, lo que kisiera ahora es que al hacer click en facturar me guarde los datos del grid(cursor) en una tabla llamada ventas....espero me entiendan..

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cursor

Publicado por es_binario (757 intervenciones) el 18/11/2010 19:00:02
Los cursores son igual a una tabla, por lo tanto los debes de tratar igual, que ella, lo que yo hago es leer el cursor y pasar sus datos a las tablas correspondientes ventas detalle de ventas considerando que el cliente ya se guardo.

asi es como lo hago con un sistema muy simple de facturacion que tengo.

*// comienza el registro de la venta

*// debe de haber un cliente valido
LOCAL cli_f as Integer
IF Thisform.txtcliente.Value # 0
*// primero registra la venta y despues el detalle de la venta
LOCAL v_pedido as Integer
LOCAL v_fecha as Date
LOCAL v_total as Double
LOCAL v_activa as Character
LOCAL v_no_fac as String
LOCAL v_iva as Number
LOCAL v_cliente as integer


*// obtiene la nueva venta
SELECT ventas
SET ORDER TO pedido
GO bottom
v_pedido = ventas.pedido + 1
v_cliente = Thisform.txtCliente.Value
v_fecha = Thisform.txtfecha.Value
v_total = Thisform.txttotal.Value
v_activa = 'A'
v_no_fac = ALLTRIM(Thisform.txtnoFactura.Value)
v_iva = Thisform.txtiva.Value

INSERT INTO ventas VALUES ( v_pedido, ;
v_fecha, ;
v_total, ;
v_activa, ;
v_no_fac, ;
v_cliente, ;
v_iva )
*// graba el detalle
*// detalle_venta(descrip c(60), p_unitario b, cantidad i)
LOCAL d_descrip as string
LOCAL d_p_unita as Double
LOCAL d_cant as Integer
*// iva iva_

SELECT detalle_venta
FOR a = 1 TO RECCOUNT()
SELECT detalle_venta
GO a
d_descrip = ALLTRIM(detalle_venta.descrip)
d_p_unita = detalle_venta.p_unitario
d_cant = detalle_venta.cantidad

*// graba los datos en el detalle de venta
INSERT INTO detalleventa values ( v_pedido, ;
d_cant, ;
d_descrip, ;
d_p_unita, ;
iva_ )
*// verifica si la descripcion existe en articulos
SELECT * FROM productos WHERE productos.descrip = d_descrip;
INTO CURSOR mi_articulo_existe
SELECT mi_articulo_existe
IF RECCOUNT() > 0 && existe
UPDATE productos SET p_unitario = d_p_unita;
WHERE productos.descrip = d_descrip
ELSE && es nuevo
*// obtiene el nuevo codigo de producto
LOCAL nva_clave as Integer
SELECT productos
SET ORDER TO clave
GO bottom
nva_clave = productos.clave + 1

INSERT INTO productos values( nva_clave, ;
d_descrip, ;
d_p_unita, ;
v_activa )
ENDIF
ENDFOR

*// limpia el form
Thisform.txtcliente.Value = 0
Thisform.edit1.Value = ""
Thisform.txtnoFactura.Value = ""
DELETE FROM detalle_venta
Thisformset.refresca_form()
Thisformset.form1.Init()

*// operacion terminada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cursor

Publicado por victor perez (278 intervenciones) el 18/11/2010 22:24:52
hola,

Si se puede, solo debes decirle al sistema que capte todo el detalle de lso articulos vendidos en un Cursor...y que al presionar Guardar guarde cada detalle en la Tabla Detalle. Por supuesto esta es una tabla que contiene linea por linea el articulo vendido, precio, cantidad, etc...+ el numero de factura (que es lo que lo liga a la tabla de Ventas). La tabla de Ventas contiene la informacion del encabezado de la Factura como lo son, numero de factura, fecha, cliente, nombre cliente si deseas, total de la factura, monto pagado etc.

Victor,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar