FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Report
Posts: 195
Joined: Fri Jan 23, 2009 02:50 AM
Report
Posted: 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

Posts: 195
Joined: Fri Jan 23, 2009 02:50 AM
Re: Report
Posted: 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

Posts: 111
Joined: Thu Jan 19, 2006 11:47 PM
Re: Report
Posted: 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 (fw): Select all Collapse
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....
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Report
Posted: Wed Oct 21, 2009 02: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 (fw): Select all Collapse
// 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.



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



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.



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
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
Posts: 195
Joined: Fri Jan 23, 2009 02:50 AM
Re: Report
Posted: Wed Oct 21, 2009 06: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

Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Report
Posted: Thu Apr 15, 2010 09: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
Posts: 111
Joined: Thu Jan 19, 2006 11:47 PM
Re: Report
Posted: 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 (fw): Select all Collapse
#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....
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Report
Posted: Fri Apr 16, 2010 07:02 PM

Ok,

Gracias por la información, Mauricio.

Saludos. :lol:

Javier,

FWH 8.04 2008
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: Report
Posted: Mon Apr 18, 2011 12:08 AM

alguien tiene algun ejemplo funcional con easyreport

Fivewin-Xharbour 24.09, Iquique, Chile
Posts: 149
Joined: Thu Jun 21, 2007 03:26 PM
Re: Report
Posted: Thu Sep 15, 2011 09: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.

Continue the discussion