Report

Post Reply
User avatar
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Report

Post 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
User avatar
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: Report

Post 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
User avatar
MauroArevalo
Posts: 98
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia
Contact:

Re: Report

Post 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,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH 19.06 xHarbour 1.2.1, Pelles C, Fivedit, Borland 7.30
http://www.hymplus.com
Tratando de retomar la programación....
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Report

Post 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
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
Jairo Barbosa
Posts: 188
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: Report

Post 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
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Post 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,
Javier,
FWH 8.04 2008
User avatar
MauroArevalo
Posts: 98
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia
Contact:

Re: Report

Post 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,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH 19.06 xHarbour 1.2.1, Pelles C, Fivedit, Borland 7.30
http://www.hymplus.com
Tratando de retomar la programación....
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Post by jfafive »

Ok,

Gracias por la información, Mauricio.

Saludos. :lol:
Javier,
FWH 8.04 2008
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Report

Post by elmoiquique »

alguien tiene algun ejemplo funcional con easyreport
Fivewin 11.07
diegopolverelli
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Re: Report

Post 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.
Post Reply