FoxPro/Visual FoxPro - COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

 
Vista:

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por LEONELS (25 intervenciones) el 30/01/2017 21:53:13
HOLA AMIGOS. TENGO UN PROBLEMA EN MI REPORTE QUE EMITO. EJEMPLO.
TENGO UN REPORTE DE 100.55. QUIERO QUE CUANDO PASA O SEA IGUAL A 5 EL PRIMER DECIMAL ME MUESTRE MI REPORTE DE 101.00

ESTO ES MI PROBLEMA ESPERO SU APOYO POR FAVOR.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Fidel José (657 intervenciones) el 30/01/2017 22:57:08
Y no te sirve Round(100.55,0) ?
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

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por LEONELS (25 intervenciones) el 31/01/2017 02:48:39
MUCHAS GRACIAS ..
EFECTIVAMENTE FUNCIONA CON UN REGISTRO
PERO CUANDO HE INGRESADO TRES REGISTROS ME DA EL SIGUIENTE RESULTADO

--REGISTROS::

1. 109.55
2. 109.55
3. 109.55

SE SUPONE QUE DEBERÍA MOSTRARME . 328.65 Y REDONDEANDO DEBERÍA SALIR 329.00 (ESTE ES EL RESULTADO QUE BUSCO)
PERO ME MUESTRA EN EL RESULTADO 330.00.. LO CUAL ES INCORRECTO..

MUCHAS GRACIAS ESPERO SU APOYO..
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
sin imagen de perfil
Val: 309
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Santiago (551 intervenciones) el 31/01/2017 05:57:04
La fórmula es correcta y debería darte 329, quizás el problema sea algún calculo que te entregue esa cifra.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Fidel José (657 intervenciones) el 31/01/2017 12:30:58
El tema es que si sumas cifras redondeadas el valor final puede llegar a ser distinto de sumar los valores y redondear el total.
Esta es una previsión que tiene que estar en la generación de los importes y no en el reporte mismo (o sea, debe estar en la capa de negocios. y no en la de datos).
O sea, para lo que expones, es lo mismo que 110 * 3, o sea 330.00.
Mientras que 109.55 * 3 = 328.65 y su redondeo da 329.00.
También viene mal que expongas los valores internos redondeados y la suma redondeada, porque cualquiera que se tome el trabajo de verificar la suma se dará cuenta de que no da.
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

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por LEONELS (25 intervenciones) el 31/01/2017 21:19:01
EL PROBLEMA ES QUE YO CUANDO QUIERO PAGAR IMPUESTOS A SUNAT. ME EXIGE QUE SEAN NÚMEROS SIN DECIMALES.
EJEMPLO SI TENGO REGISTROS .
109.35
109.35
109.35
109.35
109.35

SUMANDO EN MI REPORTE CON DECIMALES SERIA : (546.75) PERO CUANDO YO PAGO TENGO QUE PAGAR (547) POR QUE EL PRIMER DECIMAL ES MAYOR QUE 5.
ENTONCES A LA HORA QUE AFECTO MI PRESUPUESTO ME TIENE QUE MOSTRAR EN MI REPORTE
ASI: ::: TOTAL A PAGAR = 547

ESO ES EL PROBLEMA POR ESO PIDO APOYO,, AMIGOS....
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Fidel José (657 intervenciones) el 01/02/2017 00:05:17
Para el caso que comentas, la única solución lógica es agregar al cursor un registro cuyo concepto sea "Diferencia por Redondeo"
Mira este código:
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
30
31
32
33
34
35
36
LOCAL lnImporte,;
	lnSum,;
	lnSumaRedon,;
	lnDifer,;
	lnSuma_aPagar
 
lnImporte = 109.35
CREATE CURSOR curRedond ("concepto" c(30), "importe" n(12,2))
FOR i = 1 TO 5
	INSERT INTO curRedond (concepto,importe) ;
		VALUES ("Concepto"+TRANSFORM(m.i), m.lnImporte)
NEXT
 
SELECT SUM(importe) FROM curRedond WHERE !DELETED() INTO ARRAY laSum
lnSum = IIF(_tally > 0,laSum[1,1],0)
 
lnSumaRedon = ROUND(m.lnSum,0)
lnDifer = ROUND(m.lnSumaREdon - m.lnSum,2)
IF !EMPTY(m.lndifer)
	INSERT INTO curRedond (concepto,importe) ;
		VALUES ("Redondeos",m.lnDifer)
ENDIF
 
SELECT SUM(importe) FROM curRedond WHERE !DELETED() INTO ARRAY laSum
lnSuma_aPagar = IIF(_tally > 0,laSum[1,1],0)
lcMessage = "Suma Original: "+TRANSFORM(m.lnsum,"999,999.99") + CHR(13);
		+ "Suma Original Redondeada="+TRANSFORM(m.lnSumaRedon,"999,999.99") + CHR(13);
		+ "Diferencia por Redondeo="+TRANSFORM(m.lnDifer,"999,999.99") + CHR(13);
		+ "Suma final del Cursor=" +TRANSFORM(m.lnsuma_aPagar,"999,999.99")
MESSAGEBOX(m.lcMessage)
 
 
 
SELECT curRedond
GO top
BROWSE
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

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por LEONELS (25 intervenciones) el 01/02/2017 14:42:12
MUCHAS GRACIAS.
LOS CÓDIGOS YA SON PARA LOS EXPERTOS.. NO LOGRE ENTENDERLOS..
MUCHAS GRACIAS DE TODAS MANERAS..
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Fidel José (657 intervenciones) el 01/02/2017 16:23:32
Los códigos no son para expertos, son para cualquiera que quiera lograr algo con la programación.
Debes conocer el lenguaje antes de largarte a la pista, y si hay partes del código que no logras comprender, solo busca en la ayuda de Visual Fox que es muy completa. También tienes la MNSD con la misma ayuda. Busca con Google.
O al menos, puedes meter este código en un CommandButton y ver que cosa hace. No es un virus.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
*<Define Variables>
	LOCAL lnImporte,;
		lnSum,;
		lnSumaRedon,;
		lnDifer,;
		lnSuma_aPagar
 
	lnImporte = 109.35
*</Define Variables>
 
*<Crea un escenario de simulación>
 
	*<Generar Cursor>
		CREATE CURSOR curRedond ("concepto" c(30), "importe" n(12,2))
	*</Generar Cursor>
 
	*<Agregar Valores de simulación>
		FOR i = 1 TO 5
			INSERT INTO curRedond (concepto,importe) ;
				VALUES ("Concepto"+TRANSFORM(m.i), m.lnImporte)
		NEXT
	*</Agregar Valores de simulación>
*</Crea un escenario de simulación>
 
*<Calcula la suma del campo importe>
	SELECT SUM(importe) FROM curRedond WHERE !DELETED() INTO ARRAY laSum
	lnSum = IIF(_tally > 0,laSum[1,1],0)
*</Calcula la suma del campo importe>
 
*<Análisis de redondeos>
	lnSumaRedon = ROUND(m.lnSum,0)
	lnDifer = ROUND(m.lnSumaREdon - m.lnSum,2)
 
	* Si la diferencia de redondeo es distinto de cero
	* se agrega un registro al cursor
	* para mostrar esa diferencia en el reporte.
	IF !EMPTY(m.lndifer)
		INSERT INTO curRedond (concepto,importe) ;
			VALUES ("Redondeos",m.lnDifer)
	ENDIF
*</Análisis de redondeos>
 
 
 
* En lugar de el código que sigue, acá debe ir la llamada al reporte.
 
* Esto es solo al efecto de controlar que el proceso sea correcto.
* Se vuelve a sumar el cursor, redondeo incluido, si es que se incluyó
SELECT SUM(importe) FROM curRedond WHERE !DELETED() INTO ARRAY laSum
lnSuma_aPagar = IIF(_tally > 0,laSum[1,1],0)
lcMessage = "Suma Original: "+TRANSFORM(m.lnsum,"999,999.99") + CHR(13);
		+ "Suma Original Redondeada="+TRANSFORM(m.lnSumaRedon,"999,999.99") + CHR(13);
		+ "Diferencia por Redondeo="+TRANSFORM(m.lnDifer,"999,999.99") + CHR(13);
		+ "Suma final del Cursor=" +TRANSFORM(m.lnsuma_aPagar,"999,999.99")
MESSAGEBOX(m.lcMessage)
 
SELECT curRedond
GO top
BROWSE
USE IN curRedon
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

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por LEONELS (25 intervenciones) el 11/02/2017 01:29:09
MUCHAS GRACIAS ME A SERVIDO DE MUCHA AYUDA....
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

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Yuri Dextre (1 intervención) el 13/03/2019 17:21:25
Suma todos tus registros y al resultado final le aplicas el redondeo segun este algoritmo:

Round(TotSuma,0)

eso te dará el redondeo que necesitas para declarar a SUNAT
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
sin imagen de perfil

COMO REDONDEAR LOS DECIMALES EN REPORTE FOX

Publicado por Ernesto (1 intervención) el 15/03/2022 14:42:02
Hay que usar el instuccion que se llama myround
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