DEFINE PEN oPen1 WIDTH 1 COLOR CLR_HGRAY
report infor preview title 'BALANCE','CALCULO POR ARTÍCULOS','Periodo: '+IIF(EMPTY(desde),'GENERAL','del '+dtoc(desde)+' al '+dtoc(hasta)) left PEN oPen1 HEADER alltrim(nempresa),' ' center footer 'Fecha del listado: '+dtoc(date())+space(80)+'Pagina: '+str(infor:npage,3) font letra_cabecera1, letra_cuerpo1, llistado CAPTION 'BALANCE. Calculo por artículos.'
GROUP ON tipofami HEADER iif(tipofami='PL','>> PLANTAS',iif(tipofami='RI','>> RIEGOS',iif(tipofami='IN','>> INSUMOS',iif(tipofami='RA','>> RATIOS',)))) FOOTER "Total: "+ltrim(str(infor:aGroups[1]:nCounter))+' artículos.' font 1
column title 'Código' data codigo size 6 font 2 grid
column title 'Descripción' data descrip size 35 font 2 grid
column title 'Udes.','Vendidas' data xudes TOTAL size 6 font 2 grid
column title 'Importe','Venta','(A)' data xvven PICTURE '9999999.99' total size 8 font 2 grid
column title 'Valor','Costo','(B)' data xvcos PICTURE '9999999.99' total size 8 font 2 grid
column title 'Beneficio',' ','(C=A-B)' data xvven-xvcos PICTURE '9999999.99' total size 8 font 2 grid
column title '% s/las','ventas' data (xvven/ttventa)*100 size 10 font 2 grid
column title '% s/los','benef.' data ((xvven-xvcos)/(ttventa-ttcosto))*100 size 10 font 2 grid
end report
infor:oHeader:aFont[1]:= {|| 3 }
infor:oHeader:aFont[2]:= {|| 3 }
activate report infor on change balance3(.t.) ON POSTEND balance4()
release xudes, xvcos, xvven
return
funct balance3(avanzar)
select 2
if avanzar=.t.
skip
endif
c=codigo
select 24
find &c
store 0 to xvcos, xudes, xvven
do while .not. eof() .and. c=codart
xudes+=cantidad
xvcos+=cantidad*pcosto
xvven+=importe
skip
enddo
select 2
if avanzar=.t.
skip-1
endif
return
funct balance4
infor:lGrid:=.f.
for x=1 to 4
infor:NewLine()
next
infor:Say(2,'Total Ingresos por ventas:')
infor:Say(4,transform(infor:aColumns[4]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine() &&Penultimo 2=tipo letra ; ultimo 2=justificacion a la dcha, si fuese 1, a la izda.
infor:Say(2,'Total Costes de las ventas:')
infor:Say(4,transform(infor:aColumns[5]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine()
infor:Say(2,'Total Beneficio Bruto:')
infor:Say(4,transform(infor:aColumns[6]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine()
infor:Say(2,'Total Gastos en este periodo:')
infor:Say(4,transform(ttgasto+ttbase,'9,999,999.99'),2,2) ; infor:NewLine() ; infor:NewLine()
infor:Say(2,'TOTAL BENEFICOS NETOS:',3) && 3=tipo de letra
infor:Say(4,transform(infor:aColumns[4]:nTotal-infor:aColumns[5]:nTotal-ttgasto-ttbase,'9,999,999.99'),3)
return
FranciscoA wrote:oRpt:lGrid:=.f. //quitar los divisores de columnas
Saludos.
joseluisysturiz wrote:FranciscoA wrote:oRpt:lGrid:=.f. //quitar los divisores de columnas
Saludos.
Gracias por su pronta respuesta, sabia que eso es lo que me esta saboteando, intentaba pero sobre oRpt:CellView() , tratando de desactivarla....lo intente, pero creo en el lugar equivocado, y sobre este otro tema, se puede o no se puede....para no seguir dandole vuelta ni tratar de inventar la rueda..
1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?
asi es una lata.....
HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"
saludos...
FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)
COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1
//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)
joseluisysturiz wrote:FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)
COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1
//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)
Franciso, esto seria como para que.....?
no tengo problema con las COLUMN, lo que preguntaba era sobre los HEADER mira mi pregunta,,,solo si se puede hacer algo...
1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?
asi es una lata.....
HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"
FranciscoA wrote:joseluisysturiz wrote:FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)
COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1
//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)
Franciso, esto seria como para que.....?
no tengo problema con las COLUMN, lo que preguntaba era sobre los HEADER mira mi pregunta,,,solo si se puede hacer algo...
1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?
asi es una lata.....
HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"
Hasta donde sé, el TITLE y/o HEADER de tReport, solo pueden colocarse a la izquierda, centro o derecha: RIGHT, CENTER, LEFT.
Quizás modificando la classe...
FranciscoA wrote:TReport tiene el methodo Say(). Yo nunca lo he usado directamente.
TReport:Say( nCol, xText, nFont, nPad, nRow )
Recuerda que tambien tienes la clase TPrinter
Saludos.
joseluisysturiz wrote:Srs,
iba todo bien hasta que no se que invente...ahora tengo este error de repente
Application
===========
Path and name: C:\SISINGE\PRUEBASX\PRUEBA.Exe (32 bits)
Size: 508,928 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 28/10/2008, 18:43:25
Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10
Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)
agregue esto nuevo...y ahora da el error anterior....
intente usar, oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
y nVentas siempre me da 0, nose si es que lo estoy usando en el lugar equivocado, lo hacia para calcular totales y colocarlos al final de reporte... gracias por su atencion y ayuda...
lineas del reporte:
oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal := .T. // NI IDEA PARA QUE SIRVE
*oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
*msginfo(cValToChar(nVentas))
oRpt:bPostEnd :={|| DatosFin( oRpt, oDbf ) }
ACTIVATE REPORT oRpt
USE
return nil
FUNCTION datosfin( oRpt, oDbf )
local nTotales := Array{10}
&(oDbf)->( dbgotop() )
SUM total TO nTotales[1]
* SUM exento TO nTotales[2]
* SUM base TO nTotales[3]
* SUM iva TO nTotales[4]
* SUM ivaret TO nTotales[5]
* SUM exento TO nTotales[6]
oRpt:lGrid := .F. // DESACTIVA LAS CELDAS DE LOS REGISTRO TIPO EXCEL
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )
RETURN NIL
FranciscoA wrote:joseluisysturiz wrote:Srs,
iba todo bien hasta que no se que invente...ahora tengo este error de repente
Application
===========
Path and name: C:\SISINGE\PRUEBASX\PRUEBA.Exe (32 bits)
Size: 508,928 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 28/10/2008, 18:43:25
Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10
Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)
agregue esto nuevo...y ahora da el error anterior....
intente usar, oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
y nVentas siempre me da 0, nose si es que lo estoy usando en el lugar equivocado, lo hacia para calcular totales y colocarlos al final de reporte... gracias por su atencion y ayuda...
lineas del reporte:
oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal := .T. // NI IDEA PARA QUE SIRVE
*oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
*msginfo(cValToChar(nVentas))
oRpt:bPostEnd :={|| DatosFin( oRpt, oDbf ) }
ACTIVATE REPORT oRpt
USE
return nil
FUNCTION datosfin( oRpt, oDbf )
local nTotales := Array{10}
&(oDbf)->( dbgotop() )
SUM total TO nTotales[1]
* SUM exento TO nTotales[2]
* SUM base TO nTotales[3]
* SUM iva TO nTotales[4]
* SUM ivaret TO nTotales[5]
* SUM exento TO nTotales[6]
oRpt:lGrid := .F. // DESACTIVA LAS CELDAS DE LOS REGISTRO TIPO EXCEL
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )
RETURN NIL
Aqui existe una contradicción. Estas usando STR(.. y TRANSFORM(... a la vez.
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
Prueba asi:
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + Transform(nTotales[1],"999,999.99") ,,PAD_RIGHT, )
Si deseas alinear los valores, debes utilizar otra columna, como en este ejemplo. (para el texto, uso col 1, para los valores, la col 2)
oReport:Say(1, "Valor Productos Malos",,PAD_LEFT, )
oReport:Say(2, Transform(nMalo,"999,999.99") ,,PAD_RIGHT,)
Saludos
Francisco
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 3 guests