FoxPro/Visual FoxPro - Saldo anterior en un Kardex de Productos para Reporte

 
Vista:
Imágen de perfil de Raptor
Val: 2
Ha aumentado su posición en 16 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Saldo anterior en un Kardex de Productos para Reporte

Publicado por Raptor (1 intervención) el 10/03/2021 05:21:00
Estimados Amigos, que esten bien, quisiera molestarlos con una luz o ideas. Estoy realizando un Kardex de un producto y no se me ocurre como poder obtener el saldo anterior que estoy guardando en un cursor. Estoy utilizando Visual Foxpro 9.0
Les explico:
Hago un select en una tabla con los movimientos diarios por rango de fechas y obtengo los datos generales y los meto en un cursor.:
SELECT "FC" AS TipoDoc, nrofactura as Docto, producto, nom_produc, 0 as debe, cantidad as haber, unidad, precio as valor, fechamov, 0 AS saldo;
FROM facturas_det ORDER BY producto, fechamov INTO CURSOR crsPrint READWRITE

En la tabla de productos, tengo campos llamados Debe_ant, Haber_ant, que al restarlos, Debe-Haber me genera el saldo anterior a x fecha, ejemplo DAnt=50, HAnt=20 Saldo= 30 (50-20).
entonces lo que no se me ocurre es en reporte, como le digo VFP que esos 30 son el saldo anterior del producto, y de ahi que me muestre sus movimientos. (por supuesto, en el reporte puedo hacer un group by, y ahi por producto, pero necesito, que en el reporte exista como primera linea, Saldo Anterior. y de ahi los movimientos.

Dije, lo hago manual, e hice el cursos READWRITE con saldo 0 para recorrelo y actualizar el saldo, pero no me sale, cuando quiero hacer el Replace en el Cursor, me dice que pierde la data, overflow:
Tengo un codigo mas o menos asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Select crsPrint
Go Top
xpactual = crsPrint.producto
xnom_produc	= crsPrint.nom_produc
AALIAS = ALIAS()
xSaldoAct	= xSaldoAct
xSaldoAnt	= SaldoAnteriorProducto(ALLTRIM(xpactual)) &&Funcion que devuelve el saldo anterior
SELECT (AALIAS)
Scan For !Empty( crsPrint.producto  )
IF crsPrint.producto != xpactual
xpactual = crsPrint.producto
AALIAS = ALIAS()
xSaldoAnt	= SaldoAnteriorProducto(ALLTRIM(xpactual))
SELECT (AALIAS)
xSaldoAct	= xSaldoAct
APPEND BLANK
Replace TipoDoc WITH "SA"
Replace Docto WITH SPACE(10)
Replace producto WITH xpactual
Replace nom_produc	WITH "Saldo Anterior"
Replace saldo	WITH xSaldoAnt
xSaldoAct	= xSaldoAnt
ENDIF
SCAN FOR crsPrint.producto = xpactual
xSaldoAct = xSaldoAnt + crsPrint.Debe - crsPrint.haber
** Reemplazo el saldo anterior del producto, en la siguiente linea es donde obtengo el error
Replace saldo With xSaldoAct
ENDSCAN
Endscan

Numeric Overflow. Data was lost

de repente estoy inventando el Agua Azucarada, pero no se me ocurre que otra forma hacerlo en forma automatica como para que me lo genere el VFP en el reporte.

Ayuda please!!!
Gracias
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

Saldo anterior en un Kardex de Productos para Reporte

Publicado por jose camilo (805 intervenciones) el 11/03/2021 03:58:28
primero, no veo la razon para manejar saldo anterior como charater, segundo utiliza el metodo de divide y venceras. primero si quieres sacar el saldo anterior consentrate en este solo, luego vas agregando otros calculos a la vez. y eso de hacerlo a codigo. el 90% de mis consultas la hago a codigo.
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