*** encabezado de la factura ******
PP=fopen( "lpt2",12)
comando = "i01" + " Cliente: " + left(mdenom ,30)
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx= FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
PP=fopen( "LPT2",12)
comando = "i02" + "C.I./R.I.F. : " + left(mrif,18)
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx=FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
PP=fopen( "LPT2",12)
comando = "i03" + "Direccion: " + left(mdirec,18)
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx=FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
******* imprime item factura ****
select 4
go botto
mrecno=recno()
go top
if mrecno>1
=inkey(.5)
else
=inkey(1)
endif
PP=fopen( "LPT2",12)
xtasa=mtasa
DO WHILE .NOT. EOF()
MPRECIO=pvp
mcant=CANTIDAD
mdescri=DESCRIP
if isv="N"
mtasa=" "
else
mtasa=xtasa
endif
*************** item factura********
** " " EXCENTO
** "!" TASA A
** '"' TASA B
** "#" TASA C
cara=CHR(34)
comando= mtasa+right("0000000000"+alltrim(str(mprecio*100)),10) ;
+ right("00000000"+alltrim(str(mcant*1000)),8) ;
+ left(mdescri+space(40),40)
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando )
xxx= FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
if mrecno>1
=inkey(.5)
else
=inkey(1)
endif
PP=fopen( "LPT2",12)
SKIP
ENDDO
**** IMPRIME SUB TOTAL ****
pp=FCLOSE(PP)
PP=fopen( "LPT2",12)
comando = "3"
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx=FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
****DESCUENTO
*PP=fopen( "LPT2",12)
*comando="p"+"-"+"0300"
*lrc_comando= lrc( comando + chr(3))
*tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
*xxx= FWRITE(PP, tramaCompleta )
*pp=FCLOSE(PP)
*=inkey(1)
***** IMPRIME TIPO DE PAGO ******
PP=fopen( "LPT2",12)
comando="1"+right("0000"+alltrim(str(fp)),2)
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx= FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
PP=fopen( "LPT2",12)
**** CIERRA LA FACTURA ******
comando = "101"
lrc_comando= lrc( comando + chr(3))
tramaCompleta= chr(2) + comando + chr(3) + chr(lrc_comando)
xxx=FWRITE(PP, tramaCompleta )
pp=FCLOSE(PP)
*////////////////////// FIN
FUNCTION Xd0bit
PARAMETER Bitno, A
PRIVATE Remainder, I, Highord
Highord = INT(IIF(A>1,LOG(A)*1.442695041,0))
IF Bitno>Highord
RETURN .F.
ENDIF
FOR I = 0 TO Highord
IF I=Bitno
RETURN IIF(IIF(A=1,1,MOD(A,2))=1,.T.,.F.)
ENDIF
IF A=0
RETURN .F.
ENDIF
A = INT(A/2)
NEXT
return a
FUNCTION BITXOR
PARAMETER A, B
IF INT(A)#A .OR. INT(B)#B
?? CHR(7)
WAIT WINDOW "XOR error: arguments must be integers!"
RETURN -1
ENDIF
PRIVATE Retval, Highord, I
Retval = 0
Highord = ;
MAX(INT(IIF(A>1,LOG(A)*1.442695041,0)),INT(IIF(B>1,LOG(B)*1.442695041,0)))
FOR I = 0 TO Highord
Retval = Retval+IIF(Xd0bit(I,A)#Xd0bit(I,B),2**I,0)
NEXT
RETURN Retval
*/*/*/*/*/*/*/* FUNCIONES LISTA PARA USAR
FUNCTION LRC
parameter cadena
a=left( cadena,1)
a_asc= asc(a)
for t= 2 to len(cadena)
b= substr( cadena,t,1)
b_asc= asc(b)
acumulado= bitxor( a_asc, b_asc )
a_asc= acumulado
endfor
return acumulado