Report

Report

Postby Jairo Barbosa » Tue Oct 20, 2009 12:01 pm

Antonio

Saludo cordial

En los Report de FWH como puedo cambiar la posición de “Total” ubicarlo en otro sitio del informe y como puedo adicionar otros valores que deriven del total.

Gracias Antonio

Jairo
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: Report

Postby Jairo Barbosa » Wed Oct 21, 2009 11:37 am

Antonio y demás integrantes del foro

Si mi pregunta no tubo respuesta les agradeceré me enseñen como se llama Easy Report desde código

Gracias de antemano

Jairo Barbosa
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: Report

Postby MauroArevalo » Wed Oct 21, 2009 12:52 pm

Jairo:

Te pongo una parte de mi codigo para la impresión de Facturas por Computador, cada cliente tiene su propio diseño, logo, etc., y lo imprimo con esta rutina. Tienes que enlazar el VRD.PRG a tu programa y colocar el #include vrd.ch en el prg que vayas a imprimir.

Si quieres con mucho gusto conectate al ms hymplus@hotmail.com y con gusto te puedo despejar dudas.

Code: Select all  Expand view

EASYREPORT oVRD NAME Pub:DIRLOCAL+Pub:CODEMP+"\REP\factura.vrd" PREVIEW (.T.) OF ventana

 IF oVRD:lDialogCancel = .T.
   RETURN( .F. )
 ENDIF

 PRINTAREA 1 OF oVRD ;
 ITEMIDS    { 101, 102, 103, 104, 170, 171, 172, 150, 181, 180, 173, 174, 175, 182, 183, 184, 185, 186, 187, 190} ;
 ITEMVALUES {V101,V102,V103,V104,V170,V171,V172,V150,V181,V180,V173,V174,V175,V182,V183,V184,V185,V186,V187,V190}

 PRINTAREA 2 OF oVRD

 SELE (SELTEMP)
 DBGOTOP()
 SELE (SELTEMP)
 DBGOTOP()

 DO WHILE .NOT. EOF()
   V330:=TRANSFORM(RECNO(),"9,999")
   V320:=(SELTEMP)->HTARTICU
   IF NITEMP="860534227"    
     V302:=ALLTRIM(SUBS((SELTEMP)->HTDETALL,1,28))+"-"+ALLTRIM((SELTEMP)->HTOBSER2)
    ELSEIF NITEMP="900186800"    
     V302:=(SELTEMP)->HTDETALL+" "+(SELTEMP)->HTOBSER2
    ELSE
     V302:=ALLTRIM(SUBS((SELTEMP)->HTDETALL,1,28))
   ENDIF
   V303:=TRANSFORM((SELTEMP)->HTCANTID,"99999.99")
   IF DOLAR=.F.

     VRporiva:=(SELTEMP)->HTPORIVA
     VRtotale:=(SELTEMP)->HTVRUNIT
     VRpordes:=(SELTEMP)->HTPORDES
     IF ((SELTEMP)->HTFORIVA=1)      //*******IVA INCLUIDO*********
       Divide:=((VRporiva/100)+1)
       VRtota:=ROUND(VRtotale,Decimales)
       VRprde:=(VRpordes/100)
       Etotal:=ROUND((VRtota*VRprde),Decimales) //Valor Descuento
       Vrunit:=VRtota-Etotal
       VRfinal:=ROUND((Vrunit/Divide),Decimales)
       V304:=TRANSFORM(VRfinal,"999,999,999")
      ELSE
       V304:=TRANSFORM((SELTEMP)->HTVRUNIT,"999,999,999")
     ENDIF
 *    V304:=TRANSFORM((SELTEMP)->HTVRUNIT,"999,999,999")
     V305:=TRANSFORM((SELTEMP)->HTSUBTOT,"999,999,999")
     V306:=TRANSFORM((SELTEMP)->HTDESCUE,"999,999,999")
     V307:=TRANSFORM((SELTEMP)->HTVRIVAS,"999,999,999")
     V308:=TRANSFORM((SELTEMP)->HTVRTOTA,"999,999,999")
     V309:=TRANSFORM((SELTEMP)->HTPORIVA,"999,999,999")
     V310:=TRANSFORM((SELTEMP)->HTPORDES,"999,999,999")
     V311:=V451:=(SELTEMP)->HTOBSER2
     V312:=TRANSFORM(ROUND(((SELTEMP)->HTVRUNIT)/(((SELTEMP)->HTPORIVA/100)+1),0),"999,999,999")
     V313:=TRANSFORM(((SELTEMP)->HTVRTOTA-(SELTEMP)->HTVRIVAS),"999,999,999")
    ELSE
     V307:=" " //No Genera IVA
     V309:=" " //No Genera IVA
*    V305:=" " //Subtotal no lo muestra en la factura
     V306:=" " //Valor $ de Descuento no lo muestra en la factura
     V311:=V451:=" " //No genera
     V312:=" " //No genera
     V304:=TRANSFORM((SELTEMP)->HTDOLARE,"999,999,999.99")
     V310:=TRANSFORM((SELTEMP)->HTPORDES,"999,999,999.99")
     SUB:=(HTCANTID*HTDOLARE)
     V305:=TRANSFORM(SUB,"999,999,999.99")
     DES:=ROUND( (((HTCANTID*HTDOLARE)*HTPORDES)/100),2)
     TOT:=(SUB-DES)
     V308:=TRANSFORM(TOT,"999,999,999.99")
     V313:=TRANSFORM(TOT,"999,999,999.99")
   ENDIF
   IF Pub:CODEMP="LU" //PARA ILUMINATTY
     V305:=TRANSFORM(((SELTEMP)->HTSUBTOT-(SELTEMP)->HTDESCUE),"999,999,999")
   ENDIF

   IF Pub:CODEMP="20"  //PARA METALES
     PRINTAREA 3 OF oVRD  ITEMIDS    { 330, 320, 302, 303, 304, 305, 306, 307, 308, 311};
                          ITEMVALUES {V330,V320,V302,V303,V304,V305,V306,V307,V308,V311}
    ELSE
     PRINTAREA 3 OF oVRD ITEMIDS    { 330, 320, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313};
                         ITEMVALUES {V330,V320,V302,V303,V304,V305,V306,V307,V308,V309,V310,V311,V312,V313}
   ENDIF

   FACDOL:=(SELTEMP)->HTFACDOL
   //TOTALES//

   IF DOLAR=.F.
     CANT:=CANT+HTCANTID
     SUBT:=SUBT+HTSUBTOT
     DEST:=DEST+HTDESCUE
     IVAT:=IVAT+HTVRIVAS
     VRTT:=VRTT+HTVRTOTA
    ELSE
     CANT:=CANT+HTCANTID
     SUBT:=SUBT+SUB
     DEST:=DEST+DES
     IVAT:=" "
     VRTT:=VRTT+TOT
   ENDIF


   (SELTEMP)->(DBSKIP())

   IF oVRD:nNextRow > oVRD:nPageBreak
     PAGEBREAK oVRD

     PRINTAREA 1 OF oVRD ;
     ITEMIDS    { 101, 102, 103, 104, 170, 171, 172, 150, 181, 180, 173, 174, 175, 182, 183, 184, 185, 186, 187} ;
     ITEMVALUES {V101,V102,V103,V104,V170,V171,V172,V150,V181,V180,V173,V174,V175,V182,V183,V184,V185,V186,V187}

     PRINTAREA 2 OF oVRD
   ENDIF
 ENDDO
 IF DOLAR=.F.
   V403:=TRAN(CANT,"999,999,999")
   V405:=V505:=TRAN(SUBT,"999,999,999")
   V406:=TRAN(DEST,"999,999,999")
   V407:=V507:=TRAN(IVAT,"999,999,999")
   V408:=TRAN(VRTT,"999,999,999")
   V410:=V520:=ALLTRIM(GVobs)
   V411:=TRAN(GVfle,"999,999,999")

   V412:=V512:=TRAN(((VRTT)-(GVret+GViva+GVica)),"999,999,999")
   V413:=TRAN(GVret,"999,999,999")
   V414:=TRAN(GViva,"999,999,999")
   V415:=TRAN(GVica,"999,999,999")
  ELSE
   V403:=TRANSFORM(CANT,"999,999,999.99")
   V405:=V505:=TRANSFORM(SUBT,"999,999,999.99")
   V406:=TRANSFORM(DEST,"999,999,999.99")
   V407:=V507:=TRANSFORM(IVAT,"999,999,999.99")
   V408:=TRANSFORM(VRTT,"999,999,999.99")
   V410:=V520:=ALLTRIM(GVobs)
   V411:=TRAN(GVfle,"999,999,999.99")
   V412:=V512:=TRAN(((VRTT)-(GVret+GViva+GVica)),"999,999,999.99")
   V413:=TRAN(GVret,"999,999,999.99")
   V414:=TRAN(GViva,"999,999,999.99")
   V415:=TRAN(GVica,"999,999,999.99")
 ENDIF
 IF Pub:CODEMP="LU" //PARA ILUMINATTY
   V405:=TRAN((SUBT-DEST),"999,999,999")
 ENDIF

 SDOTOT:=((VRTT)-(GVret+GViva+GVica))
 VALORES()
 V521:=V409:=CAMT

 PRINTAREA 4 OF oVRD ITEMIDS    { 403, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 451} ;
                     ITEMVALUES {V403,V405,V406,V407,V408,V409,V410,V411,V412,V413,V414,V415,V451}

 PRINTAREA 5 OF oVRD ITEMIDS    { 520, 521, 505, 507, 512} ;
                     ITEMVALUES {V520,V521,V505,V507,V512}

END EASYREPORT oVRD

 


Saludos,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programación....
User avatar
MauroArevalo
 
Posts: 107
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia

Re: Report

Postby Armando » Wed Oct 21, 2009 2:52 pm

Jairo:

El ejemplo de Mauro (Saludos Mauro) es perfectamente funcional, hay otra forma de usar EasyReport que da un poco de más libertad al usuario, veamos un pequeño ejemplo.

Code: Select all  Expand view

// Definimos el objeto
EASYREPORT oVRD NAME (cFmto) PREVIEW (cFolNdv)->FOL_VPN ;
    OF oWindow TITLE "Nota de venta "+ALLTRIM(oHdr:HDR_FAC);
    COPIES (cFolNdv)->FOL_CDN

    oVrd:aAlias := {(cEmpresa),;    //  1
        (cHdrOpe),;                 //  2
        (cDetOpe),;                 //  3
        (cClienta),;                //  4
        (cVendedor),;               //  5
        (cProducto)}                //  6

    PRINTAREA 1 OF oVrd             // Header
    (cDetOpe)->(DBSEEK(oHdr:HDR_OPE))
    DO WHILE (cDetOpe)->(! EOF()) .AND. (cDetOpe)->DET_OPE == oHdr:HDR_OPE
        PRINTAREA 2 OF oVrd         // Detail
        (cDetOpe)->(DBSKIP())
    ENDDO
    PRINTAREA 3 OF oVrd             // Totals

END EASYREPORT oVRD
 


Sí, esto es todo el código necesario para imprimir el reporte, lo destacable aquí es el código oVrd:aAlias, en este código estamos pasando al objeto VRD los Alias que usamos en nuestro PRG.

Observa, también, que estoy enviando a imprimir áreas completas, ejemplo PRINTAREA 2 OF oVRD // Detail y es de suponerse que en esa área hay definidos varios campos de la DBF que quiero imprimir, de hecho esa área es el detalle de una factura donde hay El producto, la descripción, el precio unitario, la cantidad, el importe etc. Ahora la pregunta es ¿Cómo sabe EasyReport lo que debe imprimir?

Sencillo !, en el diseñador del reporte debemos definir las áreas y los campos de cada área, en cada campo debemos definir/relacionar el nombre del campo de la DBF que queremos imprimir, déjame mostrarte una imágen.

Image

En esta primera imágen vemos cómo esta definida el área DETAIL, observa que esta formada por 6 campos.

Image

Esta segunda imágen es la de las propiedades del campo DESCRIPCION observa que hay un botón con una pequeña marca en color rojo (Arriba del puntero del ratón) al dar clic sobre este botón abrimos otro diálogo donde podemos escribir cualquier fórmula, en la siguiente imagén veras lo que tengo escrito.

Image

Alias6->MOD_DES Es puro código xBase, estamos enviando a imprimir la descripción del modelo, campo tomado del Alias6 que si miras en el trozo de código al inicio del post veras que se trata de la DBF Producto.

Creo que de esta forma podras aumentar o disminuir campos al diseño de tu reporte sin necesidad de volver a compilar tu aplicación, lo que la hace más independiente del código.

Un saludo
Last edited by Armando on Wed Oct 21, 2009 7:57 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3201
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Report

Postby Jairo Barbosa » Wed Oct 21, 2009 6:11 pm

Mauro Armando

Muy agradecido muy claro el ejemplo lo organizare a mi necesidad y si tengo problemas seguramente les estaré solicitando ayuda.
Empleo el Report de FW y no encontré la libertad de disponer de los espacios del reporte


Cordialmente

Jairo Barbosa
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: Report

Postby jfafive » Thu Apr 15, 2010 9:39 pm

Hola,

Entiendo que para usar EasyReport desde FWH necesitas el modulo VRD.PRG?

En ese caso, ¿como puedo obtener ese modulo de enlace?

Saludos,
Javier,
FWH 8.04 2008
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Postby MauroArevalo » Fri Apr 16, 2010 11:33 am

Javier:

En el directorio de EasyReport encuentras los prgs que necesitas para enlazar con tu sistema:

\EaseRerport\Fivewin\Source

Lor prg que necesitas son:

VRD.PRG
VRDBCODE.PRG
VRDITEM.PRG

Ademas necesitas el archivo VRD.CH que lo encuentras dentro de \EaseRerport\Fivewin\include

En tu prg donde llamas al EasyReport llamas el archivo vrd.ch Ejemplo:

Code: Select all  Expand view

#include "FiveWin.ch"
#include "vrd.ch"
#include "dtpicker.ch"

...Tú  codigo

FUNC REPOFACTURA()

EASYREPORT oVRD NAME "\MIPROGRAMA\REPORTE\factura.vrd" PREVIEW (.T.) OF Dlg1

 PRINTAREA 1 OF oVRD
 PRINTAREA 2 OF oVRD
 PRINTAREA 3 OF oVRD  
 PRINTAREA 4 OF oVRD
 PRINTAREA 5 OF oVRD

END EASYREPORT oVRD
 


Tambien puedes crear la libreria con los prgs que tienes por ejemplo EASYREPO.LIB y la enlazas con tu programa.

Saludos,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programación....
User avatar
MauroArevalo
 
Posts: 107
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia

Re: Report

Postby jfafive » Fri Apr 16, 2010 7:02 pm

Ok,

Gracias por la información, Mauricio.

Saludos. :lol:
Javier,
FWH 8.04 2008
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Postby elmoiquique » Mon Apr 18, 2011 12:08 am

alguien tiene algun ejemplo funcional con easyreport
Fivewin-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Report

Postby diegopolverelli » Thu Sep 15, 2011 9:11 pm

HOLA, YO ESTOY USANDO EASY REPORT 1.7.6
COMPILO CON FIVEWIN 2.8 Y USO EL BLINKER 7.0 PARA ENLAZAR Y LOS PROGRAMAS ME FUNCIONAN PERFECTAMENTE (REPORTES). POR EJ. UN PROGRAMA QUE SE LLAMA RECI04.PRG

PERO HACE RATO QUE USO TAMBIEN FWH, Y NO PUEDO COMPILAR EL RECI04.PRG
ME DICE QUE NO ENCUENTRA LA FUNCION VRD. ¿ALGUIEN TIENE IDEA SI ES COMPATIBLE, SI CON ESA VERSION DE EASY REPORT PUEDO COMPILAR CON HAUBOUR? SI SE PUEDE, ¿TIENE IDEA DE QUE ME ESTARA FALTANDO HACER? USO FWH104. Y AHORA LO QUE HAGO ES USAR CASI TODO CON FWH, Y 5 O 6 .EXE'S CON BLINKER, PERO ME GENERA 16 BITS, CON TODOS LOS DRAMAS QUE ESTO TRAE.
MUCHAS GRACIAS.
diegopolverelli
 
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 34 guests