FoxPro/Visual FoxPro - Ultima Hoja de Reporte Resumen de Conceptos

 
Vista:
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 27/07/2017 02:21:56
Estimado recurro a su conocimientos para este detalle que tengo.

Tengo una Tabla llamada Conceptos, como su nombre lo dice, tengo diferentes concepto que me gustaría poner en la ultima hoja de mi reporte, ya pude ponerlo en la ultima hoja del reporte. Quiero algo así, este es un ejemplo de como muestra un reporte en la Banda Detail ..

CLIENTE CONCEPTO COSTO
A0001 RENTA 300
A0002 RENTA 300
A0006 ADICIONAL 100
A0035 COMBO 200
..
.
.
---------
Las palabras RENTA, ADICIONAL, COMBO están dentro de la Tabla "Conceptos", asi como otras palabras mas..
Ahora use la Banda Summary para que a lo ultimo de mi reporte tuviera una especie de resumen de estos resultados, por ejemplo algo como ,,,

CANTIDAD TOTAL CONCEPTO
2 600 RENTA
1 100 ADICIONAL
1 200 COMBO

---------
Me podrían dar alguna luz de cómo podría hacer estos cálculos en mi reporte?
Agradezco de antemano !

Saludos !!..
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 27/07/2017 19:35:43
Lo estoy intentando hacer por Banda de grupos, pero tengo un detalle con una condicion IF, si me hechan la mano .. me marca error de sintaxis.

1
IIF(reportediacab.concepto=0,"RENTA",IIF(reportediacab.preciopagado>reportediacab.precio,"RENTA Y RECARGO","RENTA PROPORCIONAL"),reportediacab.concepto)

Gracias
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
Imágen de perfil de xve

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por xve (83 intervenciones) el 28/07/2017 08:35:00
Hola William, te sobra una coma al final... tendría que ser algo así:

1
IIF(reportediacab.concepto=0,"RENTA",IIF(reportediacab.preciopagado>reportediacab.precio,"RENTA Y RECARGO","RENTA PROPORCIONAL"))
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 29/07/2017 02:16:45
Trataré de explicarme mejor ...

Tengo una tabla llamada donde tengo diferentes conceptos ordenados id (numero) y su descripcion.

en un informe muestro los valores de unos resultados, en estos cuando uno de los valores se cumple muestra en una columna el concepto de lo que es, por ejemplo:

CLIENTE IMPORTE CONCEPTO
A0001 300 RENTA
A0007 100 RENTA PROPORCIONAL
A0005 300 RENTA
A0009 150 RENTA PROPORCIONAL
A0045 350 RENTA RECARGO
...
..
.

EL concepto RENTA tiene el Valor 0, en donde en su descripción tiene "RENTA DE SERVICIO MENSUAL" en la tabla, se usa la siguiente condición en un informe para cuando se se cumpla "cambie" el concepto a un nombre mas resumido y de acuerdo a lo que se cumple, por ejemplo:

Si el cobro es igual al precio, en el reporte aparecerá la palabra RENTA.
Si el cobro es mayor al precio, en el reporte aparecerá la palabra "RENTA RECARGO"
Si el cobro en menor al precio, aparecerá la palabra "RENTA PROPORCIONAL"

Una vez entendido esto .. Mi duda es la siguiente..

Lo que deseo es que en el informe donde me muestra los datos tal como lo mencione arriba, cómo puedo hacer para que cuente la cantidad de veces que hay en los diferentes conceptos que se cumplen. Por ejemplo:

Puse una banda summary en el informe para que me aparezca los resultados como un tipo resumen después de muestra todos lo datos., me gustaría tener algo de acuerdo a lo que expuse en el ejemplo anterior algo como :

Cantidad total concepto
2 600 RENTA
2 250 RENTA PROPORCIONAL
1 350 RENTA RECARGO


En mi informe los datos los tengo en una banda Detail y un campo con el siguiente expresión, esto para cambiar la palabra dle concepto:

IIF(reportediacab.concepto=0,IIF(reportediacab.preciopagado=reportediacab.precio .or. reportediacab.preciopagado=0,"RENTA",IIF(reportediacab.preciopagado>reportediacab.precio,"RENTA RECARGO","RENTA PROPORCIONAL")),)

Gracias por su tiempo ...
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 29/07/2017 03:20:04
La tabla se llama "cabfolios" tiene entre otros campos, los conceptos que mencione, esta tabla alli estan ya guardadas el resultado de las operaciones que hace el sistema, solo la uso para extraer la información que necesito, pero para esto tengo que buscar la relacion que hay en otras tablas para extraer el nombre del cliente asi como una tabla llamado "detallespagos" para extraer sus pagos correspondientes, uso el siguiente código.


1
2
3
4
5
6
7
8
lcCadena=""
lcCadena = "SELECT * from cabfolios"
lcCadena = lcCadena+" JOIN detallespagos on detallespagos.folio=cabfolios.folio .AND. detallespagos.empresa_id=cabfolios.empresa_id"
lcCadena = lcCadena+" JOIN clientes on clientes.contrato=cabfolios.contrato WHERE fecha BETWEEN {"+ dtoc(VINICIO)+ "} .AND. {"+dtoc(VFIN)
lcCadena = lcCadena+"} .AND. cabfolios.empresa_id="+str(VAREMPRESA)
lcCadena = lcCadena+" ORDER BY cabfolios.folio"
SQLEXEC(nHandle,lcCadena,"reportediacab")
select reportediacab

De alli en el informe, los campos que pongo en la banda DETAIL son.
columna CLIENTE, tengo en el campo: reportediacab.Contrato
columna IMPORTE: IIF(reportediacab.impreso=.t.,reportediacab.preciopagado,"Cancelado")
columna CONCEPTO:

1
IIF(reportediacab.concepto=0,IIF(reportediacab.preciopagado=reportediacab.precio .or. reportediacab.preciopagado=0,"RENTA",IIF(reportediacab.preciopagado>reportediacab.precio,"RENTA Y RECARGO","RENTA PROPORCIONAL")),reportediacab.mes)


En la banda SUMMARY, tengo un campo para que me sume la cantidad de RENTAS que genera el informe, la siguiente expresión:

1
IIF(reportediacab.concepto=0,IIF(reportediacab.preciopagado=reportediacab.precio .or. reportediacab.preciopagado=0,"RENTA",""),"")

y activado la pestaña Calculate el tipo -count, basado en Report,

Se supone que con eso debería de sumar la cantidad de RENTAS que genere el reporte. o si me falta o sobra algo o de plano ando perdido me podria decir..

Gracias.
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
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por Mauricio Antonio (1541 intervenciones) el 02/08/2017 22:14:46
Yo estoy en ese foro tambien. Debes ACLARAR que no has hecho ni un pedazo de codigo, todo te ha sido dado, asi que no te infles diciento que ya resolviste TU problema, eso es lo malo de copiar y pegar codigo.....6 meses despues vuelven con la misma duda y la misma pregunta.
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 02/08/2017 22:30:37
Estimado Mauricio Antonio

Esto será un offtopic pero para aclarar tu comentario ..

En ningún momento dije que ya RESOLVÍ el problema ni mucho menos diciendo que YO lo he resuelto para que menciones que ando "inflando" o levantando el cuello por algo asi. Lo que hice y te invito a que leeas bien, es INVITAR a los que les interese seguir como se va desarrollando el problema y soluciones que se están dando.

Como se nota que ni has leído el hilo que se ha expuesto en el foro mencionado si en verdad te interesa el tema puedas visitarlo.

Dices que tu estas en ese mismo foro, si sabes la respuesta o alguna idea y quieras compartir tus conocimientos creo hubiere sido mejor que lo que que acabas de comentar ...

Me extraña que usando la imagen de "anonymous" siendo fans de tal personaje no conozcas el dicho o frase principal u objetivo de dicho personaje, en lugar de aportar, criticas.

Un saludo y si tuviste un mal día pues que te puedo decir ...

Una disculpa a los administradores por el Offtopic.
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
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por Mauricio Antonio (1541 intervenciones) el 03/08/2017 01:12:07
Puedes ejecutar el prg saldos y verificar si es lo que deseas hacer?
El que mucho habla, no hace nada, solo hablar......
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 03/08/2017 01:45:42
Vez que solo criticas y ni siquiera lees .. todo eso ya se había checado incluso se hicieron otras pruebas y discúlpame que perdida de tiempo es responderte si no te ubicas en el tema por ser sarcástico.

Mínimo respondiera de una forma con ganas de querer ayudar a los que "no sabemos", viendo las respuesta que has dado en otros topic hasta pereciera que obligado contestas.

"El que mucho habla, no hace nada, solo hablar" ... creo que quisiste decir "el que mucho habla poco hace", hay uno muy bueno que dice "Sabio es el que poco habla y mucho sabe" .. algo que necesitas practicar mucho ya que dices poco pero no ayudas mucho y lo compartes de una forma muy mala sin ganas de ayudar.

Doy por terminado el tema y espero la den por finalizada, esto se esta volviendo SPAM.

Saludos y gracias y disculpen por estos detalles.
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 03/08/2017 02:05:46
agradezco tu ejemplo, podría ser otra alternativa..

Gracias.,
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
Imágen de perfil de William

Ultima Hoja de Reporte Resumen de Conceptos

Publicado por William (15 intervenciones) el 03/08/2017 01:57:50
Doy la respuesta que se llegó con algunas pruebas hasta dar el resultado que se requeria.

Usando el siguiente código, es usado para visualizar todos los registros que fueron cobrados.

1
2
3
4
5
6
7
8
lcCadena=""
lcCadena = "SELECT * from cabfolios"
lcCadena = lcCadena+" JOIN detallespagos on detallespagos.folio=cabfolios.folio .AND. detallespagos.empresa_id=cabfolios.empresa_id"
lcCadena = lcCadena+" JOIN clientes on clientes.contrato=cabfolios.contrato WHERE fecha BETWEEN {"+ dtoc(VINICIO)+ "} .AND. {"+dtoc(VFIN)
lcCadena = lcCadena+"} .AND. cabfolios.empresa_id="+str(VAREMPRESA)
lcCadena = lcCadena+" ORDER BY cabfolios.folio"
SQLEXEC(nHandle,lcCadena,"reportediacab")
select reportediacab

Una vez hecho esto se utiliza el siguiente código para que en el informe pueda hacer un divición de conceptos, ya que recordando el concepto 0 equivale a una renta, pero con la condicion de que si el precio pagado es mayor al precio en lugar de que aparezca el concepto RENTA, debe aparecer el concepto "RENTA CON RECARGO", si es al contrario aparecerá RENTA ANTICIPADA.
Ademas de sumar las cantidades de veces que aparece cada concepto y la suma (preciopagado) del concepto efectuado.

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
*!*	El código a continuación lo debes ejecutar luego
*!* de la generación del cursor "ReporteDiaCab"
*!*
TEXT TO m.lcSelGrupoDetalle TEXTMERGE NOSHOW PRETEXT 15
 
	SELECT CAST("D" As C(1)) As GrupoReport
		 , CAST(contrato as I) as Contrato
		 , CAST(TRIM(Usuario) + " " + TRIM(ApellidoP) + " " + TRIM(ApellidoM) As V(80)) As Cliente
		 , CAST(IIF(rd.Concepto = 0,
		 			IIF(rd.PrecioPagado = rd.Precio or rd.PrecioPagado = 0,
		 					"RENTA",
		 					IIF(rd.PrecioPagado > rd.precio,
		 							"RENTA RECARGO",
		 							"RENTA PROPORCIONAL")),
		 			rd.mes) As V(50)) As Concepto
		 , CAST(IIF(rd.concepto > 0," ",rd.mes) AS V(20)) As Mes
		 , CAST(fecha as DateTime) As Fecha
		 , CAST(Folio as I) As Folio
		 , CAST(0 As I) As Cantidad
		 , PrecioPagado As Importe
		 , rd.Impreso
	FROM ReporteDiaCab As rd
 
ENDTEXT
 
*!*	MESSAGEBOX(lcSelGrupoDetalle)
*!*	&lcSelGrupoDetalle
 
TEXT TO m.lcSelGrupoResumen TEXTMERGE NOSHOW PRETEXT 15
 
	SELECT CAST("R" As C(1)) As GrupoReport
		 , CAST(0 as I) As Contrato
		 , CAST(" " As V(80)) As Cliente
		 , rdc.Concepto
		 , CAST(" " As V(20)) As Mes
		 , CAST(" " As DateTime) As Fecha
		 , CAST(0 as I) As Folio
		 , COUNT(rdc.Concepto) As Cantidad
		 , SUM(rdc.Importe) As Importe
		 , CAST(.F. as L) as Impreso
	FROM (<<m.lcSelGrupoDetalle>>) As rdc
	GROUP BY 1, 2, 3, 4, 5, 6
 
ENDTEXT
 
*!* MESSAGEBOX(lcSelGrupoResumen)
*!*	&lcSelGrupoResumen
 
TEXT TO m.lcSelCursorReporte TEXTMERGE NOSHOW PRETEXT 15
 
	SELECT cd.*
		FROM (<<m.lcSelGrupoDetalle>>) As cd
	UNION ALL
	SELECT cr.*
		FROM (<<m.lcSelGrupoResumen>>) As cr
	INTO CURSOR curReporte
 
ENDTEXT
 
&lcSelCursorReporte

Lo que hace este código ademas de lo ya explicado es que divide por grupo la lista de conceptos generados (grupo "D") y un grupo onde suma las cantidades y sumatoria de precios pagados de estos conceptos (grupo "R")

Asi pues en el informe se coloca un EditText con los campos que se desea visualizar, por ejemplo:

canrtidad cliente importe concepto

esto dentro de una banda del informe llamado Detail, esto con la condición de imprimir siempre y cuando sean del grupo D (gruporeport == "D")

Es todo ..

Agradezco al compañero que me ayudo en el foro mencionado (Victor Hugo Espínola) por su paciencia y conocimiento)

Gracias y Saludos ..
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