Hola Grupo !
Esta es sólo una pequeña parte del que uso para imprimir la factura.
Pero que sirve de muestra para lo que me solicitan.
Más abajo, hago la llamada al GO_CODE.PRG para hacer el código de barras
Uso la libreria de Cayetano Gómez: la BARLIB.
El mencionado programa, de él, tiene el programa GO_CODE.PRG, el cuál puse al final.
Esta librería la vengo usando perfectamente hace muchos años, hasta que empecé a usar el FWHARU.
A partir de ese momento, cuando quería imprimir el código de barras:
@25.55+x3,01.00 CM_CODE128 mcodbar1 OF oPrn mode "C"
Llamo a GO_CODE.PRG y el programa me da el siguiente error que encuentra en el go_code.prg.
Called from: source\rtl\tobject.prg => FWPDF:ERROR( 0 )
Called from: source\rtl\tobject.prg => FWPDF:MSGNOTFOUND( 0 )
Called from: source\rtl\tobject.prg => FWPDF:FILLRECT( 0 ) <--------------
Called from: go_code.prg => GO_CODE( 39 )
Called from: barlib.prg => CODE128( 34 )
Called from: barlib.prg => C_CODE128( 39 )
Called from: vta1214.prg => VTA1100PE( 634 )
No entiendo porque da ese error del fillrect(0)
Uso fwh2307
Muchas gracias !
-------------------------------------------------------------------------------------------------
#include "vta0000.ch"
#include "report.ch"
#include "barcode.ch"
#define DMPAPER_A4
REQUEST FWZEBRA
REQUEST FWHARU
*--------------------------------------
FUNCTION VTA1100PE()
*--------------------------------------
...
TPrinter():lUseHaruPDF:= .t.
xnum:=99->numero
cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,6)+".pdf"
PRINTER oprn FILE cPdfFile // <-------------------------------------------
DEFINE FONT oFnt1 NAME "Arial" SIZE 0,-18 OF oPrn
DEFINE FONT oFnt2 NAME "Arial" SIZE 0,-8 BOLD OF oPrn
DEFINE BRUSH oBrush COLOR 0
DEFINE PEN oPen1 WIDTH 5
DEFINE PEN oPen2 WIDTH 15 COLOR 7873845
DEFINE PEN oPen3 WIDTH 1 COLOR 4556678
DEFINE PEN oPen4 WIDTH 3 COLOR 3123123
#DEFINE VACIA 0
#DEFINE RELLENA 1
oPrn:setpage(9) // A4
sele 1
set order to 8
go top
zmesliq:=val(subs(1->mes_liq,1,4)+subs(1->mes_liq,6,2))
xbarra:=subs(m->wwcuit,1,2)+subs(m->wwcuit,4,8)+subs(m->wwcuit,13,1);
+xlet+strzero(xemi,4)+strzero(xnum,8)+subs(1->cae,1,14)
sele 1
set order to 8 //1
go top
seek str(xtdo,1)+xlet+str(xemi,2)+str(xnum,8)
AGE
SayBitmap(01.20,00.50,01.40,01.50,"logocoop.bmp",oPrn)
oPrn:cmSay(2.50,14.00,"FACTURA",oFnt11)
endif
oPrn:cmSay( 3.30,14.00, "Período: "+subs(1->mes_liq,6,2)+"/"+;
subs(1->mes_liq,1,4),oFnt3)
oPrn:cmSay( 3.70,14.00, "Emisión: "+dtoc(1->fec_liq),oFnt3)
oPrn:cmSay( 4.10,14.00, "Vencimiento: "+dtoc(1->fec_ven),oFnt3)
SayBitmap(03.00,08.30,05.30,03.10,"pagado.bmp",oPrn)
oPrn:cmSay( 1.20,02.60, "COOPERATIVA DE AGUA POTABLE",oFnt15)
// Nombres columnas
Linea( 07.05, 00.50, 07.05, 20.50, oPrn,oPen5) // Linea Fecha Horiz. c0
Linea( 07.60, 00.50, 07.60, 20.50, oPrn,oPen5) // Linea Fecha Horiz. c1
oPrn:cmSay( 7.20,00.50, "CODIGO",oFnt3)
oPrn:cmSay( 7.20,05.00, "DESCRIPCION",oFnt3)
// Textos recuadros
derecha (abajo)
RCAJA( oPrn, 11.10, 15.82, 18.30, 17.30, 10, 10,oPen7) // Caja
oPrn:cmSay(16.00,11.30, "El crédito fiscal discriminado en el presente",oFnt2)
RCAJA( oPrn, 11.10, 17.50, 20.00, 18.60, 10, 10, oPen5) // Caja Total a Pagar
oPrn:cmSay(17.75,11.50,"TOTAL A PAGAR",oFnt11) // 17.75,12.00
// Cobro en Cooperativa
x3:= -1.10 //-0.90 // -1.00 ////////////////
mcodbar1:= mtipo + padl(alltrim(Str(xnum,
), 8, "0")
mcodbar1:= mcodbar1 + padl(alltrim(str(mprep, 9)), 9, "0")
oPrn:cmSay(25.15+x3,01.00,"Cobro en Cooperativa",oFnt3)
@25.55+x3,01.00 CM_CODE128 mcodbar1 OF oPrn mode "C" // <------------------- Llamo a GO_CODE.PRG
oPrn:cmSay(26.45+x3-00.10,01.00,"* "+mcodbar1+" COOP *",oFnt3)
// Código QR ----
zcuit:=subs(xcui,1,2)+subs(xcui,4,2)+subs(xcui,7,3);
+subs(xcui,11,3)+subs(xcui,15,1)
nDocTipo:="80"
DEFINE CLIPBOARD oClp FORMAT TEXT
oClp:SetText( cJason )
@ 233,073 PRINT TO oPrn TEXT cJason AS BARCODE TYPE "QR-CODE" SIZE 24,24 MM // 250,165
ENDPAGE
ENDPRINT
return nil
/-----------------------------------------------------------------
function go_code( cBarra, nx,ny,oPrint,lHoRz, nColor, nWidth, nLen) // Cayetano Gómez
//-----------------------------------------------------------------
local n, oBr
if empty(nColor)
nColor := CLR_BLACK
end
default lHorz := .t.
default nWidth := 0.030 // 1/3 M/mm
default nLen := 0.8 // Cmm. 0.8
define brush oBr color nColor
// Width of Bar
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
for n:=1 to len(cBarra)
if substr(cBarra,n,1) ='1'
if lHorz
* oPrint:Box(nx,ny,nx+nLen,(ny+=nWidth))
oPrint:fillRect({nx,ny,nx+nLen,(ny+=nWidth)},oBr)
else
oPrint:Box(nx,ny,(nx+=nWidth),ny+nLen)
* oPrint:fillRect({nx,ny,(nx+=nWidth),ny+nLen},oBr)
end
else
if lHorz
ny+=nWidth
else
nx += nWidth
end
end
next
oBr:end()
return nil
Pedro L. Lavallen
San Luis (Capital), Argentina