César, Francisco y Antonio:
Casi casi el éxito, el código quedó así:
Al definir los grupos no definí el FOOTER
- Code: Select all Expand view RUN
GROUP gPry ON oRsDet:Fields("HDR_PRO"):Value FONT 2
gPry:bHeader := {|| "Proyecto: " + oRsDet:Fields("HDR_PRO"):Value + " " + AllTrim(oRsDet:Fields("PRO_DES"):Value)}
El footer los defini hasta tener el objeto oReporte creado:
- Code: Select all Expand view RUN
oReporte:bEndGroup := { |oGroup| MiFuncion(oReporte,oGroup) }
ENDIF
Y la función MiFuncion qudó así
- Code: Select all Expand view RUN
STATIC FUNCTION MiFuncion(oReporte,oGroup)
DO CASE
CASE oGroup:nOrder == 1
oReporte:Say( 03,"Totales por proyecto:",2,RPT_RIGHT,oReporte:nRow + (oReporte:nStdLineHeight() / 2) )
CASE oGroup:nOrder == 2
oReporte:Say( 03,"Totales por concepto:",2,RPT_RIGHT,oReporte:nRow + (oReporte:nStdLineHeight() / 2) )
ENDCASE
RETURN(Nil)
Por comodidad cambie los IFs por un CASE, pero con los IFs tambien funciona.
El resultado es casí 100 excepto que , al no definir el FOOTER al momento de definir el GROUP, no pinta
los importe de los totales, entonces definí un FOOTER "" etc ... y ya pinta los totales pero pone el texto Total,,,
al inicio del renglón de totales.
Aquí el resultado
Saludos