Page 1 of 1

Report

Posted: Tue Oct 20, 2009 12:01 pm
by Jairo Barbosa
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

Re: Report

Posted: Wed Oct 21, 2009 11:37 am
by Jairo Barbosa
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

Re: Report

Posted: Wed Oct 21, 2009 12:52 pm
by MauroArevalo
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

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,

Re: Report

Posted: Wed Oct 21, 2009 2:52 pm
by Armando
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

// 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 _ 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 _ 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

Re: Report

Posted: Wed Oct 21, 2009 6:11 pm
by Jairo Barbosa
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

Re: Report

Posted: Thu Apr 15, 2010 9:39 pm
by jfafive
Hola,

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

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

Saludos,

Re: Report

Posted: Fri Apr 16, 2010 11:33 am
by MauroArevalo
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

#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,

Re: Report

Posted: Fri Apr 16, 2010 7:02 pm
by jfafive
Ok,

Gracias por la información, Mauricio.

Saludos. :lol:

Re: Report

Posted: Mon Apr 18, 2011 12:08 am
by elmoiquique
alguien tiene algun ejemplo funcional con easyreport

Re: Report

Posted: Thu Sep 15, 2011 9:11 pm
by diegopolverelli
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.