#include "gclass.ch"
#include "hbclass.ch"
#include "tdolphin.ch"
#include "gmante.ch"
#include "pol.ch"
#include "harupdf.ch"
#include "tutilpdf.ch"
MEMVAR oServer, oEmpresa, p_LectorPDF
Function FacturaPdf( lAlbaran, nId, lSeleccion ,lCopia, lProforma, lCompras, lOfertas )
Local oFact
DEFAULT lCompras := .f.
DEFAULT lOfertas := .f.
with object oFact := TFacturaPDF():Create()
:lAlbaran := lAlbaran
:lCompras := lCompras
:lOfertas := lOfertas
:lSeleccion := lSeleccion
:lProforma := lProforma
:New( nId, NIL, lCopia )
:Print()
:End( .T. )
if !empty( p_LectorPDF )
hb_ProcessRun( p_LectorPDF + " "+ :Directory + :cFile + ".pdf" )
else
if "WINDOWS" $ Upper( Os() )
hb_ProcessRun( getEnv( "COMSPEC" ) + " /c " + " start " + :Directory + :cFile + ".pdf" )
else
winexec( "evince " + " " + :Directory + :cFile + ".pdf" )
endif
endif
end
return nil
/*********************************************************************
Ejemplo de impresion de una factura.
*********************************************************************/
CLASS TFacturaPDF FROM TIMPRIMEPDF
DATA nEndBody INIT 23 // Limite donde tiene que llegar las lineas de la factura
DATA lAlbaran INIT .F. // Albaran , si es .F., se tratará de una factura
DATA lCompras INIT .F. // Albaran de Compra
DATA lOfertas INIT .F. // Oferta de Compra
DATA lProforma INIT .F. // Si es una factura proforma
DATA lCabecera INIT .T. // Cabecera en todas las paginas
DATA lCopia,nVeces // Si queremos copias
DATA nCopies INIT 1 // y cuantas copias quiero del original
DATA nID // ID que identifica a un albaran, factura, o compra
DATA lSeleccion INIT .F. // False := Serie A , True = Serie B
DATA Directory INIT "./pdfs/" // "./pdfs/"
DATA cFile
DATA nTotal INIT 0
DATA oData
DATA oSlave
DATA oCliente
METHOD Create( ) INLINE Self
METHOD New( cFile )
METHOD Reset()
METHOD Print()
METHOD Body()
METHOD Plantilla( nLinea )
METHOD Separator( nSpace, lBody )
METHOD Headers()
METHOD Footers() VIRTUAL
METHOD CompLinea( nSuma )
METHOD Lineas( nIdAlbaran )
METHOD LineasFac() VIRTUAL
METHOD Copia()
METHOD MEMO()
METHOD CajaTotal()
ENDCLASS
*********************************************************************
METHOD New( nID, cFile, lCopia ) CLASS TFacturaPDF
DEFAULT lCopia := .F.
::lCopia := lCopia
// Si quiero copias , las que quiero mas el original.
if ::lCopia
::nCopies += 1 // ::nCopies + 1 := El + 1 es por el original + nCopies
endif
if empty( cFile )
if ::lAlbaran
if ::lCompras
if ::lOfertas
cFile := "Oferta_"+alltrim( CStr( nID )) // Es una oferta
else
cFile := "Pedido_Compra_"+alltrim( CStr( nID )) // Es una compra
endif
else
cFile := "Albaran_"+alltrim( cStr( nID ))
endif
else
if ::lProforma
cFile := "Factura_PROFORMA_"+alltrim( CStr(nID ) )
else
cFile := "Factura_"+alltrim( CStr(nID ) )
endif
endif
endif
::cFile := cFile + "_" + cValtoChar( oEmpresa:Ejercicio )+ iif( ::lCopia, "_copia", "" ) + iif( ::lSeleccion, "B","")
::nID := nID
Super:New( ::Directory + ::cFile + ".pdf" )
RETURN Self
*********************************************************************
METHOD Print() CLASS TFacturaPDF
Local cQry, cQryCliente, oError
Local lResult := .T.
cQryCliente := [ select cli.nombre as nombre , val.texto as valoracion, pago.descripcion as fpago, pago.idpago as idpago, cli.dias, cli.proveedor, codproveedor, ]+;
[ cli.nif, cli.direccion, cli.direccion2, cli.direccion3, cli.direccion4, textopago, iban, entidad, oficina, dc, cuenta ]+;
[ from cliente cli ] +;
[ left join valoracion val on val.idvalor = cli.idvalor ] +;
[ left join fpago pago on pago.idpago = cli.fk_idpago ] +;
[ where cli.idcliente= ]
if ::lAlbaran // Empezamos por si es un albaran
if ::lCompras
if ::lOfertas
cQry := [ select a.id_oferta as idoferta , a.total as total, a.fecha as fecha, fk_idempresa , fk_idcliente , plazo] +;
[ from oferta a ] +;
[ where fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and id_oferta = ]
else
cQry := [ select a.id_compra as idcompra , a.total as total, a.fecha as fecha, fk_idempresa , fk_idcliente , plazo] +;
[ from compra a ] +;
[ where fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and id_compra = ]
endif
else
cQry := [ select a.id_albaran as idalbaran , a.total as total, a.fecha as fecha, a.fk_factura as factura ,fk_idempresa , fk_idcliente ] +;
[ from albaran a ] +;
[ where fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and id_albaran = ]
endif
try
if ::lCompras
::oData := oServer:Query( cQry + CStr( ::nId ) ) // Datos de Compra
else
::oData := oServer:Query( cQry + CStr( ::nId ) + " and seleccion=" +ClipValue2SQL( ::lSeleccion ) ) // Datos del Albaran
endif
::oCliente := oServer:Query( cQryCliente + CStr( ::oData:fk_idcliente ) ) // Datos del Cliente
catch oError
lResult := .F.
MsgAlert( oError:Description + hb_osnewline() + cQry, "Alerta" )
end
else
cQry := [ select a.id_factura as idfactura , base, iva, total, fecha, vto, descripcion_pago as fpago, ]+;
[ fk_idempresa , fk_idcliente ] +;
[ from factura a ] +;
[ where fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and id_factura = ]
try
::oData := oServer:Query( cQry + CStr( ::nId ) + " and seleccion=" +ClipValue2SQL( ::lSeleccion ) ) // Datos del Albaran
::oCliente := oServer:Query( cQryCliente + CStr( ::oData:fk_idcliente ) ) // Datos del Cliente
::oCliente:FPago := ::oData:fPago // La de la factura.
catch oError
lResult := .F.
MsgAlert( oError:Description + hb_osnewline() + cQry, "Alerta" )
end
endif
if lResult
::Reset()
::Headers()
::Body()
::Footers()
if ::lCopia
::Copia()
endif
endif
RETURN NIL
*********************************************************************
METHOD Headers() CLASS TFacturaPDF
*********************************************************************
Local ctexto
::Plantilla( 9 )
if ::lAlbaran
UTILPDF ::oUtil 1,1.5 IMAGE "./gui/logotipo.jpg" SIZE 8,5 JPG
else
UTILPDF ::oUtil 1,1.5 IMAGE "./gui/logotipo.jpg" SIZE 8,5 JPG
endif
UTILPDF ::oUtil 1.5,6.5 IMAGE "./gui/imageiso.png" SIZE 4,2.5 // IMAGEISO
UTILPDF ::oUtil LINEA 4.064,10.54 TO 4.064,11.00
UTILPDF ::oUtil LINEA 4.064,10.54 TO 4.464,10.54
UTILPDF ::oUtil LINEA 4.064,19.04 TO 4.064,19.50 // up der hor
UTILPDF ::oUtil LINEA 4.064,19.50 TO 4.464,19.50 // up der vert
UTILPDF ::oUtil LINEA 8.428,10.54 TO 8.428,11.00
UTILPDF ::oUtil LINEA 8.028,10.54 TO 8.428,10.54
UTILPDF ::oUtil LINEA 8.428,19.04 TO 8.428,19.50
UTILPDF ::oUtil LINEA 8.028,19.50 TO 8.428,19.50
IF ::lAlbaran //2.2
if ::lCompras
if ::lOfertas
UTILPDF ::oUtil 7.0,1.5 SAY "OFERTA" FONT ::aFonts[10] SIZE 15
else
UTILPDF ::oUtil 7.0,1.5 SAY "PEDIDO" FONT ::aFonts[10] SIZE 15
endif
else
UTILPDF ::oUtil 7.0,1.5 SAY "ALBARAN" FONT ::aFonts[10] SIZE 15
endif
ELSE
IF ::lProforma
UTILPDF ::oUtil 7.0,1.5 SAY "FACTURA PROFORMA" FONT ::aFonts[10] SIZE 15
ELSE
UTILPDF ::oUtil 7.0,1.5 SAY "FACTURA" FONT ::aFonts[10] SIZE 15
ENDIF
ENDIF
IF ::lProforma
UTILPDF ::oUtil 7.5,1.5 SAY "NUMERO: P/"+ CStr( ::nID ) FONT ::aFonts[10] SIZE 13
ELSE
UTILPDF ::oUtil 7.5,1.5 SAY "NUMERO:"+ CStr( ::nID ) FONT ::aFonts[10] SIZE 13
ENDIF
UTILPDF ::oUtil 8.0,1.5 SAY "Fecha:"+ Fecha( ::oData:Fecha ) FONT ::aFonts[10] SIZE 13
if !Empty( ::oCliente:CodProveedor )
UTILPDF ::oUtil 8.5,1.5 SAY "Proveedor N: " + CStr( ::oCliente:codproveedor ) FONT ::aFonts[10]
endif
UTILPDF ::oUtil 5.0,11 SAY ::oCliente:Nombre FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 5.5,11 SAY ::oCliente:Direccion FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 6.0,11 SAY ::oCliente:Direccion2 FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 6.5,11 SAY ::oCliente:Direccion3 FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 7.0,11 SAY ::oCliente:Direccion4 FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 7.8,15 SAY "N.I.F/D.N.I: " + ::oCliente:NIF FONT ::aFonts[10] SIZE 10
if !::lAlbaran // Si no es un albaran
if empty( ::oCliente:TextoPago )
UTILPDF ::oUtil 25.5,1.75 SAY ::oCliente:FPago FONT ::aFonts[10] SIZE 12 //oDbf:Fpago
else
UTILPDF ::oUtil 24.70,4.75 SAY alltrim( ::oCliente:TextoPago ) FONT ::aFonts[2] SIZE 9
UTILPDF ::oUtil 26,1.6 SAY ::oCliente:Iban FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 26,3.2 SAY ::oCliente:Entidad FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 26,4.8 SAY ::oCliente:Oficina FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 26,6.3 SAY ::oCliente:DC FONT ::aFonts[10] SIZE 10
UTILPDF ::oUtil 26,7.4 SAY ::oCliente:Cuenta FONT ::aFonts[10] SIZE 10
endif
UTILPDF ::oUtil 26,10.75 SAY cValtoChar( ::oData:Vto ) FONT ::aFonts[10] SIZE 12 //oDbf:Vto
UTILPDF ::oUtil 26,13.60 SAY cValtoChar( ::oData:Base ) FONT ::aFonts[10] SIZE 12 //oDbf:Base
UTILPDF ::oUtil 26,15.60 SAY cValtoChar( ::oData:Iva ) FONT ::aFonts[10] SIZE 12 //oDbf:Iva
UTILPDF ::oUtil 26,17.80 SAY cValtoChar( ::oData:Total ) FONT ::aFonts[10] SIZE 12 //oDbf:Total
endif
if ::lAlbaran
cTexto := "Tu Empresa a piñon....."
UTILPDF ::oUtil 22, 0.5 SAY cTexto FONT ::aFonts[10] SIZE 7 ROTATE 90
UTILPDF ::oUtil 27.5,1.5 SAY "A estos precios se ha de sumar el I.V.A" FONT ::aFonts[1] SIZE 10
else
cTexto := "Sociedad Inscrita en el Registro Mercantil de Barcelona."+;
" Tomo XXXX, Inscripcion 1."
UTILPDF ::oUtil 22,0.5 SAY cTexto FONT ::aFonts[10] SIZE 7 ROTATE 90
endif
RETURN NIL
*********************************************************************
METHOD Body() CLASS TFacturaPDF
*********************************************************************
Local oAlbaran, oError, cQry
::nLinea := 10.5 // Comenzamos de nuevo lineas de albaran
if ::lAlbaran
::Lineas( ::nId )
else
// Lineas de albaranes
cQry := [ select id_albaran as idalbaran from albaran ] +;
[ where fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and fk_factura = ]
try
oAlbaran := oServer:Query( cQry + CStr( ::nId ) + " and seleccion=" +ClipValue2SQL( ::lSeleccion ) + " order by id_albaran" ) // Datos del Albaran
catch oError
MsgAlert( oError:Description + hb_osnewline() + cQry, "Alerta" )
end
while !oAlbaran:Eof()
::Lineas( oAlbaran:idalbaran )
oAlbaran:Skip()
end while
endif
RETURN Nil
*********************************************************************
METHOD Plantilla( nLinea ) CLASS TFacturaPDF
*********************************************************************
Local nFila := 1
Local cTexto
if ::lAlbaran
UTILPDF ::oUtil BOX nLinea,1.5 TO nLinea + 1,13.25 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255) // Primera caja descripcion
else
UTILPDF ::oUtil BOX nLinea,1.5 TO nLinea + 1,3 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)
UTILPDF ::oUtil BOX nLinea,3 TO nLinea + 1,13.25 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)
endif
UTILPDF ::oUtil BOX nLinea,13.25 TO nLinea + 1,14.8 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)// FILLRGB (171/255),205/255,244/255
UTILPDF ::oUtil BOX nLinea,14.8 TO nLinea + 1,17 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)
UTILPDF ::oUtil BOX nLinea,17 TO nLinea + 1,19.5 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)
if ::lAlbaran
UTILPDF ::oUtil BOX nLinea+1,1.5 TO 24.0,19.5 STROKE SIZE 0.1
else
UTILPDF ::oUtil BOX nLinea+1,1.5 TO 24.0,19.5 STROKE SIZE 0.1
UTILPDF ::oUtil LINEA nLinea+1,3 TO if(::lAlbaran,26.5,24),3 WITDH 0.5
endif
UTILPDF ::oUtil LINEA nLinea+1,13.25 TO 24,13.25 WITDH 0.1
UTILPDF ::oUtil LINEA nLinea+1,14.8 TO 24,14.8 WITDH 0.1
UTILPDF ::oUtil LINEA nLinea+1,17.0 TO 24,17 WITDH 0.1
nLinea += .25
if ::lAlbaran
*UTILPRN ::oUtil nLinea + 0.25,1.65 SAY "Pedido" FONT oFnt
else
UTILPDF ::oUtil nLinea + 0.25,1.65 SAY "Albaran" FONT ::aFonts[2] SIZE 9
endif
UTILPDF ::oUtil nLinea + 0.25,5 SAY "Descripcion / Operaciones " FONT ::aFonts[5] SIZE 10
UTILPDF ::oUtil nLinea + 0.25,13.3 SAY "Cantidad" FONT ::aFonts[5] SIZE 9
UTILPDF ::oUtil nLinea + 0.25,15 SAY "Precio U." FONT ::aFonts[5] SIZE 9
UTILPDF ::oUtil nLinea + 0.25,17.5 SAY "Totales" FONT ::aFonts[5] SIZE 10
IF !::lAlbaran
UTILPDF ::oUtil BOX 24.2,1.5 TO 26.5,19.5 STROKE SIZE 0.1
UTILPDF ::oUtil BOX 24.2,1.5 TO 25.0,19.5 STROKE SIZE 0.1 FILLRGB (171/255),(218/255),(248/255)
UTILPDF ::oUtil LINEA 24.2,13.25 TO 26.5,13.25 WITDH 0.1
UTILPDF ::oUtil LINEA 24.2,17 TO 26.5,17 WITDH 0.1
UTILPDF ::oUtil 24.70,1.75 SAY "Forma de Pago:" FONT ::aFonts[2] SIZE 10
if !empty( ::oCliente:textopago )
//TODO: Dibujar cajas de entidad bancaria
UTILPDF ::oUtil LINEA 25,2.8 TO 26.5,2.8 WITDH 0.1
UTILPDF ::oUtil LINEA 25,4.5 TO 26.5,4.5 WITDH 0.1
UTILPDF ::oUtil LINEA 25,6.0 TO 26.5,6.0 WITDH 0.1
UTILPDF ::oUtil LINEA 25,7.0 TO 26.5,7.0 WITDH 0.1
UTILPDF ::oUtil LINEA 24.2,10.5 TO 26.5,10.5 WITDH 0.1
UTILPDF ::oUtil LINEA 25.55,1.5 TO 25.55,10.5 WITDH 0.1
// AQUI
UTILPDF ::oUtil 25.5,1.6 SAY "IBAN" FONT ::aFonts[2] SIZE 9
UTILPDF ::oUtil 25.5,3.0 SAY "Entidad" FONT ::aFonts[2] SIZE 9
UTILPDF ::oUtil 25.5,4.6 SAY "Oficina" FONT ::aFonts[2] SIZE 9
UTILPDF ::oUtil 25.5,6.3 SAY "DC" FONT ::aFonts[2] SIZE 9
UTILPDF ::oUtil 25.5,7.4 SAY "N.Cuenta" FONT ::aFonts[2] SIZE 9
else
UTILPDF ::oUtil 24.70,1.75 SAY "Forma de Pago:" FONT ::aFonts[2] SIZE 10
endif
UTILPDF ::oUtil 24.70,10.75 SAY "Vencimiento" FONT ::aFonts[2] SIZE 10
UTILPDF ::oUtil 24.70,13.75 SAY "Base" FONT ::aFonts[2] SIZE 10
UTILPDF ::oUtil 24.70,15.75 SAY "I.V.A" FONT ::aFonts[2] SIZE 10
UTILPDF ::oUtil 24.70,17.75 SAY "TOTAL" FONT ::aFonts[2] SIZE 12
ENDIF
IF ::lAlbaran
UTILPDF ::oUtil BOX 24.2,1.5 TO 25.8,10.5
if ::lCompras
if ::lOfertas
else
UTILPDF ::oUtil 25,2.0 SAY _UTF_8( "- PLAZO DE ENTREGA : " + Str( ::oData:Plazo, 3 ) + " dias" )
endif
else
UTILPDF ::oUtil 25,2.0 SAY "- PLAZO DE ENTREGA : " + Str( 30, 3 ) + " dias"
endif
UTILPDF ::oUtil 25.5,2.0 SAY "- DEVOLVER COPIA COMO ACUSE DE RECIBO"
ENDIF
Return nil
**********************************************************************************
**********************************************************************************
METHOD Separator( nSpace, lBody ) CLASS TFacturaPDF
IF ::nLinea >= ::nEndBody
::Eject()
::nLinea := 10.5
::Headers()
::Footers()
ELSEIF Super:Separator( nSpace )
::Headers()
::Footers()
ENDIF
Return NIL
*******************************************************************************
/* Funcion que nos comprueba si tenemos que realizar una pagina nueva
nLinea > 26 Si es mayor de 26 cms ( A4 )
nSuma := La caja de total tiene el final de linea en la linea 27*/
*******************************************************************************
METHOD CompLinea( nSuma ) CLASS TFACTURAPDF
DEFAULT nSuma := 0
IF If( ::lAlbaran,::nLinea >= ( 23.5 + nSuma ), ::nLinea >=( 23.5 +nSuma ) ) .OR. ::nLinea < 5 // nLinea < 4 para la caja del total
::nLinea := 10.5
::AddPage() // Nueva Pagina
if ::lCabecera // Si queremos cabecera en todas las paginas
::nLinea := 10.5
::Headers( )
::Footers()
endif
return .t.
ENDIF
Return .F.
*******************************************************************************
/* Reseteamos valores */
*******************************************************************************
METHOD Reset() CLASS TFACTURAPDF
::nLinea := 10.5 // Comenzamos de nuevo lineas de albaran
::nTotal := 0 // Empezamos a totalizar
Return Nil
*******************************************************************************
/* Cuando es una copia Rev2 */
*******************************************************************************
METHOD Copia() CLASS TFACTURAPDF
Local oFont
Local cCopia := "ALBARAN ES COPIA"
if ::lCopia //.AND. ::nVeces >= 2
if ::lAlbaran
if ::lCompras
if ::lOfertas
cCopia := "OFERTA ES COPIA"
else
cCopia := "PEDIDO ES COPIA"
endif
endif
else
cCopia := "FACTURA ES COPIA"
endif
UTILPDF ::oUtil if(::lAlbaran,27.3,28.5),; //25,22
if(::lAlbaran,1.5,1.5) ; //.5,1
SAY cCopia FONT ::aFonts[10] SIZE 52 COLOR RGB (200/255),(200/255),(200/255)
endif
return NIL
*******************************************************************************
// Lineas de Albaran Cliente
*******************************************************************************
METHOD Lineas( nIdAlbaran ) CLASS TFACTURAPDF
Local cQry
static nAlbaran := 0
if ::lCompras
if ::lOfertas
cQry := [ SELECT descripcion,cantidad,precio_u,precio_t FROM lineas_oferta where fk_idoferta = ] + CStr( nIdAlbaran ) +;
[ and fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) +[ order by idlinea ]
else
cQry := [ SELECT descripcion,cantidad,precio_u,precio_t FROM lineas_compra where fk_idcompra = ] + CStr( nIdAlbaran ) +;
[ and fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) +[ order by idlinea ]
endif
else
cQry := [ SELECT descripcion,cantidad,precio_u,precio_t FROM lineas_albaran where fk_idalbaran = ] + CStr( nIdAlbaran ) +;
[ and fk_idempresa=] + CStr( oEmpresa:IdEmpresa ) + [ and seleccion=] + ClipValue2SQL( ::lSeleccion ) + [ order by idlinea ]
endif
::oSlave := oServer:Query( cQry )
while !::oSlave:Eof()
if ::lAlbaran
::nFila := 4.1
else
if !Empty( nIdAlbaran ) .AND. nAlbaran != nIdAlbaran
UTILPDF Self:oUtil Self:nLinea,1.65 SAY StrZero( nIdAlbaran,6 ) FONT ::aFonts[1] SIZE 9
nAlbaran := nIdAlbaran
endif
::nFila := 4.1
endif
if ::lAlbaran
UTILPDF ::oUtil Self:nLinea,1.6 SAY ::oSlave:Descripcion FONT ::aFonts[1] SIZE 9
else
UTILPDF ::oUtil Self:nLinea,3.1 SAY ::oSlave:Descripcion FONT ::aFonts[1] SIZE 9
endif
if !Empty( ::oSlave:Cantidad )
UTILPDF ::oUtil Self:nLinea,::nFila+9.4 SAY Str( ::oSlave:Cantidad,5 ) FONT ::aFonts[1] SIZE 9
endif
if !Empty( ::oSlave:Precio_U )
UTILPDF ::oUtil Self:nLinea,Self:nFila+10.65 SAY Str( ::oSlave:Precio_U,10,2 ) FONT ::aFonts[1] SIZE 9
endif
if !Empty( ::oSlave:Precio_T )
UTILPDF ::oUtil Self:nLinea,::nFila+12.9 SAY Str( ::oSlave:Precio_T,11,2 ) FONT ::aFonts[1] SIZE 9
::nTotal += ::oSlave:Precio_T
endif
::nLinea += .5 ; ::CompLinea()
::oSlave:Skip()
end while
// La ultima linea no debe de ser visualizada.!!! Para factura( albaranes) Mirar
// METHOD LineasFac()
//17/06/2002
IF ::lAlbaran
IF !::oSlave:Eof()
::nLinea += .5 ; ::CompLinea()
UTILPDF ::oUtil LINEA ::nLinea,1.5 TO ::nLinea, 19.5 //PEN ::oPen
::nLinea += .5 ; ::CompLinea()
ENDIF
ENDIF
::nLinea += 0.25 ; ::CompLinea( )
IF ::lAlbaran
::nLinea += 0.75 ; ::CompLinea( )
::CajaTotal()
ENDIF
nAlbaran := 0 //11-07-02 Reinicializamos para el siguiente albaran.
RETURN NIL
*******************************************************************************
// Dibujamos caja del Total
*******************************************************************************
METHOD CajaTotal() CLASS TFACTURAPDF
IF ::lAlbaran .AND. ::nTotal > 0
::nLinea -= 0.75 // Volvemos para atras para dibujar caja total
IF ::oSlave:LastRec() > 0
::CompLinea( 1 )
UTILPDF ::oUtil BOX ::nLinea,13.25 TO ::nLinea + 1,14.8
UTILPDF ::oUtil BOX ::nLinea,14.8 TO ::nLinea + 1,19.5
UTILPDF ::oUtil Self:nLinea+.6,13.4 SAY "Total" FONT ::aFonts[2] SIZE 12
UTILPDF ::oUtil Self:nLinea+.6,15.62 SAY Str( ::nTotal,11,2 ) FONT ::aFonts[2] SIZE 14
ENDIF
ENDIF
Return Nil
*******************************************************************************
* Impresion del MEMO de las descripciones ALbaran/ Factura
*******************************************************************************
METHOD MEMO( cText ) CLASS TFACTURAPDF
Local cLinea,nLineas,oFont
FOR nLineas := 1 TO MLCOUNT( cText, 56 ) //53
cLinea := MEMOLINE( cText, 56, nLineas )
if ::lAlbaran
UTILPDF ::oUtil Self:nLinea,2 SAY cLinea FONT ::aFonts[1]
else
UTILPDF ::oUtil Self:nLinea,3.2 SAY cLinea FONT ::aFonts[1]
endif
::nLinea += .5 ; ::CompLinea( .5 )
NEXT
Return NIL
/* Fecha en Spanish para clipper 5.3 English */
Static Func Fecha( dDate )
Local cMes
DO CASE
CASE Month(dDate) == 1 ; cMes := "Enero"
CASE Month(dDate) == 2 ; cMes := "Febrero"
CASE Month(dDate) == 3 ; cMes := "Marzo"
CASE Month(dDate) == 4 ; cMes := "Abril"
CASE Month(dDate) == 5 ; cMes := "Mayo"
CASE Month(dDate) == 6 ; cMes := "Junio"
CASE Month(dDate) == 7 ; cMes := "Julio"
CASE Month(dDate) == 8 ; cMes := "Agosto"
CASE Month(dDate) == 9 ; cMes := "Septiembre"
CASE Month(dDate) == 10; cMes := "Octubre"
CASE Month(dDate) == 11; cMes := "Noviembre"
CASE Month(dDate) == 12; cMes := "Diciembre"
ENDCASE
Return ( Str(Day(dDate),2)+" "+ cMes +" del "+Str(Year(dDate),4) )