|
| #include "hbzebra.ch" |
| #include "hbwin.ch" |
| #include "ct.ch" |
| REQUEST HB_CODEPAGE_DEWIN |
| ******************************************************************************************************************* |
| Procedure Main |
| parameter numero |
| Local import,cant,dec,idcli,cant2,numfac,cantfac,a, id1, id2,import2 |
| Local tocut := {} |
| Local to3 := {} |
| Local to2 := {} |
| Local qr2 := {} |
| Local qr1 := {} |
| tocut := hb_ValToStr(numero) |
| |
| to2 := AllTrim(SubStr(tocut,2,28)) |
| to3 := AllTrim(SubStr(tocut,31,28)) |
| id1 := AllTrim(Substr(tocut,1,1)) |
| id2 := AllTrim(Substr(tocut,30,1)) |
| |
| prn_init() |
| |
| oPrn:SetFont( "Courier New", 7, { 3, -50 } ) |
| if id1 == "a" |
| ** Formato |
| qr1 := "000201" |
| ** Metodo de inicio |
| qr1 := qr1 + "010212" |
| ** Moneda de la TX |
| qr1 := qr1 + "5303032" |
| ** Importe de la TX |
| ** numero factura + id cliente |
| numfac := SubStr(tocut,13,7) |
| numfac := AllTrim(Str(val(numfac))) |
| cantfac := AllTrim(str(len(numfac))) |
| idcli := SubStr(tocut, 6, 7) |
| idcli := AllTrim(Str(val(idcli))) |
| cant2 := AllTrim(str(len(idcli))) |
| qr1 := qr1 + "620201" |
| |
| mk_qrcode(qr1,755,397) |
| EanBarCode(oPrn,187,50,1,to2,HB_ZEBRA_FLAG_CHECKSUM) |
| oPrn:TextOutAt(500, 1600, "*" +to2+ "*") |
|
|
| endif |
| |
| if id1 == "b" |
| ** Formato |
| qr1 := "000201" |
| ** Metodo de inicio |
| qr1 := qr1 + "010212" |
| ** Moneda de la TX |
| qr1 := qr1 + "5303032" |
| ** Importe de la TX |
| ** numero factura + id cliente |
| numfac := SubStr(tocut,13,7) |
| numfac := AllTrim(Str(val(numfac))) |
| cantfac := AllTrim(str(len(numfac))) |
| idcli := SubStr(tocut, 6, 7) |
| idcli := AllTrim(Str(val(idcli))) |
| cant2 := AllTrim(str(len(idcli))) |
| qr1 := qr1 + "620201" |
| |
| EanBarCode(oPrn,187,50,1,to2,HB_ZEBRA_FLAG_CHECKSUM) |
| oPrn:TextOutAt(500, 1600, "*" +to2+ "*") |
| |
| EanBarCode(oPrn,650,423,1,to2,HB_ZEBRA_FLAG_CHECKSUM) |
| mk_qrcode(qr1,755,397) |
| oPrn:TextOutAt(3160, 4930, "*" +to2+ "*") |
| |
| endif |
| prn_exit() |
| Return |
| ******************************************************************************************************************* |
| Function mk_qrcode(ccString, posx, posy) |
| // ChecoCode for C.... |
| local qr_arr := {} |
| local i |
| for i = 1 to 5 |
| intpos := at(",",ccString) |
| t_string := substr(ccString,1,intpos-1) |
| aadd(qr_arr,t_string) |
| ccString := right(ccString,len(ccString)-intpos) |
| next i |
| qr_feld01 := ccString // Service |
| qr_feld02 := "" // Version |
| |
| qr_string := qr_feld01+chr(10)+qr_feld02+chr(10) |
| qr_string := hb_strToUTF8(qr_string,"DEWIN") |
| if len(qr_string) >= 330 |
| alert("QR Code String to long: "+str(len(qr_string))) |
| else |
| EanQRCode(oPrn,posx,posy,1.5,qr_string,HB_WIN_RGB_BLACK,HB_ZEBRA_FLAG_QR_LEVEL_M) |
| endif |
| RETURN NIL |
| ******************************************************************************************************************* |
| Function EanQRCode(coPRN, nY, nX, nWidth, nQRCODE, nColor,iFlags) |
| Local hCODE,nRET |
| Local nLineWidth:=IIF(nWidth==NIL .OR. nWidth<1,1,nWidth) |
| Local nLineHeight:=nLineWidth |
| Local nSCALE:=7.2 |
|
|
| hCODE:=hb_zebra_create_qrcode(nQRCODE,iFlags) |
|
|
| nY *= nSCALE |
| nLineWidth *= nSCALE |
|
|
| IF hCODE != NIL |
| IF hb_zebra_geterror( hCODE ) == 0 |
| IF Empty( nLineHeight ) |
| nLineHeight := 16 |
| ENDIF |
| IF hb_zebra_geterror( hCODE ) != 0 |
| RETURN HB_ZEBRA_ERROR_INVALIDZEBRA |
| Endif |
| nRET:=hb_zebra_draw( hCODE, {|x,y,w,h| coPRN:FillRect(Int( x + .5 ), Int( y + .5 ),; |
| Int( x + .5 ) + Int( w ), Int( y + .5 ) + Int( h ) + 1,nColor) },; |
| nX*nSCALE, nY, nLineWidth, nLineHeight*nSCALE ) |
| Endif |
| hb_zebra_destroy( hCODE ) |
| Endif |
| Return nRET |
| ************************************************************************************************************************* |