Estoy haciendo un sistema de "Casas de Cambio" - Foreign Exchange.
Estoy trabado hace horas, estuve buscando por aca y por el wiki y no lo encuentro.
En el report que trato de generar, tengo clientes y sus movimientos. Lo tengo que agrupar en el report por cliente y dentro del cliente las monedas que compro separadas. La función GROUP ON field->Cliente funciona perfecto. El problema se ve que esta en que no esta relacionada con la moneda.
Adjunto mi codigo de ejemplo:
Code: Select all
report rep_per CAPTION n_empcort + ' - Imprimir ' ;
font oFuentep, oFueREP , oFuenteS , oFuentbc, oFuenteM ;
title n_empcort,;
'Impreso el día '+DTOC(DATE())+ "-"+TIME(),;
'' ,;
'Reporte de Movimientos',;
'Período: '+ dtoc(VNUM[1])+' - '+dtoc(vnum[2]) ,;
'' LEFT;
footer 'Pagina : '+str(rep_per:npage,3) center preview
column title 'Fecha' Data field->fecha size 12 font 2
column title 'Hora' data field->hora size 5 font 2
column title 'Cliente' data field->razon size 25 font 2
column title 'Moneda' data field->moneda size 7 font 2
column title 'Tipo' data if(field->tipo == 1, 'Vendió', 'Compró') size 8 font 2
column title 'Historico' data field->hcoti size 10 font 2
column title 'Cotizado' data field->coti size 10 font 2
column title 'Monto' data field->cantidad TOTAL size 20 picture "@ 9,999,999,999.99" font 2
column title 'Pesos' data field->pesos TOTAL size 20 picture "@ 9,999,999,999.99" font 2
column title 'Cajero' data field->name size 18 font 2
group on field->razon header 'Cliente: '+ rep_per:aGroups[1]:cValue footer 'Monto operado por ' + rep_per:aGroups[1]:cValue EJECT
group on field->moneda header 'Moneda: '+ rep_per:aGroups[2]:cValue footer 'Total de cliente en ' + rep_per:aGroups[2]:cValue
Rep_per:bInit:= { || DbGoTop() }
end report
rep_per:otitle:afont[1]:={||3}
rep_per:otitle:afont[2]:={||4}
rep_per:otitle:afont[3]:={||4}
rep_per:otitle:afont[4]:={||4}
rep_per:nTitleUpLine := 1
rep_per:nTitleDnLine := 1
rep_per:nTotalLine := 1
rep_per:cGrandTotal := "Total General"
rep_per:cPageTotal := "Total acumulado"
activate report rep_per ON STARTGROUP(rep_per:NewLine()) ON POSTEND(impcligen(rep_per))
oFueREP:END()
sysrefresh()
return nil
TABLA:
Juan compra 100usd
Juan vende 50usd
Juan compra 100eur
Manuel vende 100usd
RESULTADO:
Cliente: Juan
Moneda: EUR
Juan compra 100eur
Total de Juan en EUR: 100
Moneda: USD
Juan compra 100usd
Juan vende 50usd
Total operado por Juan: 250 (No interesa este totalizador, ya que mezcla monedas y solo es valor nominal)
Cliente: Manuel
Manuel vende 100usd
Total de Manuel en USD: 250
Total operado por Manuel: 100
No sé si se logra entender del todo bien, pero lo que genera es que se agrupa por moneda indistintamente de que si cambia de cliente y se mezcla, el resultado esperado seria el siguiente
RESULTADO ESPERADO:
Cliente: Juan
Moneda: EUR
Juan compra 100eur
Total de Juan en EUR: 100
Moneda: USD
Juan compra 100usd
Juan vende 50usd
Total de Juan en USD: 150 // Este totalizador no lo genera
Total operado por Juan: 250
Cliente: Manuel
Moneda: USD
Manuel vende 100usd
Total de Manuel en USD: 100
Total operado por Manuel: 100
Por lo que pude observar, deseguro que la resolución se encuentra utilizando endgroup() con alguna función personal, pero la realidad es que estoy haciendo continuación de los sistemas de mi padre, y no estoy del todo canchero con este lenguaje aun.
Muchas gracias,
Nicolás