*************************************** * TITULO : EXTRATO DO S@T FISCAL * * DATA : 08/09/2015 * * PROGRAMA : DEMO.PRG * * COMENTARIO : IMPRESSAO DO EXTRATO * * DIREITOS : INFO2000 SISTEMAS * * CLIENTE -->: ### TODOS ### * * COMPILAR COM HARBOUR OU (X)HARBOUR * * OU AINDA CLIPPER * *************************************** FUNCTION MAIN() LOCAL I := 0, xIMP := GetDefaultPrinter() LOCAL xARQUIVO := STRZERO( HB_RANDOMINT( 100000, 99999999 ), 8, 0 ) +".TXT" SET PRINTER TO &xARQUIVO SET CONSOLE OFF SET PRINT ON SET DEVICE TO PRINT SET MARGIN TO 0 SETPRC( 0, 0 ) * IMP_Cabecalho() ** @ PROW()+1,0 SAY "#|COD|DESC|QTD|UN|VL UN R$|(VLTR R$)*|VL ITEM R$" @ PROW()+1,0 SAY REPLI( "-", 48 ) I++ @ PROW()+1,0 SAY STRZERO( I, 3, 0 ) @ PROW(),4 SAY "123456" @ PROW(),18 SAY "TESTE DE PRODUTO" @ PROW()+1,05 SAY "1,000" @ PROW(),15 SAY "X" @ PROW(),20 SAY TRANSF( 10, "@E 999,999.99" ) @ PROW(),30 SAY TRANSF( 10, "@E 999,999,999.99" ) * IMP_TOTAIS() ** SETPRC(0,0) SET PRINT OFF SET CONSOLE ON SET PRINTER TO * * Imprimo na impressora com a função abaixo win_printfileraw( xIMP, xARQUIVO ) RETURN NIL /* IMPRIME O CABELHO DO EXTRATO */ STATIC FUNCTION IMP_CABECALHO() * @ PROW(),0 SAY PADC( "NOME FANTASIA", 48 ) @ PROW(),0 SAY CHR(27)+'W'+CHR(1) && ATIVA EXPANDIDO @ PROW()+1,0 SAY PADC( "RAZAO SOCIAL", 25 ) @ PROW(),0 SAY CHR(27)+'W'+CHR(0) && DESATIVA EXPANDIDO @ PROW()+1,0 SAY PADC( "RUA UM NRO. 2", 48 ) @ PROW()+1,0 SAY PADC( "SAO PAULO - SP", 48 ) @ PROW()+1,0 SAY PADC( "CNPJ: 11111111111 IE: 22222222", 48 ) @ PROW()+1,0 SAY REPLI( "-", 48 ) * @ PROW()+1,0 SAY PADC( "Extrato No: 123456" , 48 ) @ PROW()+1,0 SAY PADC( "CUPOM FISCAL ELETRONICO - SAT", 48 ) * @ PROW()+1,0 SAY REPLI( "-", 48 ) @ PROW()+1,0 SAY "CPF/CNPJ do Consumidor: " @ PROW()+1,0 SAY REPLI( "-", 48 ) RETURN NIL /* IMPRIME OS TOTAIS DO EXTRATO */ STATIC FUNCTION IMP_TOTAIS() @ PROW()+1,0 SAY "TOTAL R$ " + TRANSF( 10, "@E 9,999,999.99" ) * @ PROW()+1,0 SAY "Dinheiro" @ PROW(),26 SAY TRANSF( 10, "@E 999,999,999.99" ) * @ PROW()+1,0 SAY REPLI( "-", 48 ) * @ PROW(),0 SAY CHR(27)+'G' && ATIVA NEGRITO @ PROW()+1,0 SAY PADC( "SAT No. 987654321", 48 ) * @ PROW()+1,0 SAY PADC( DTOC( DATE() ) +" - "+ TIME(), 48 ) @ PROW(),0 SAY CHR(27)+'H' && DESATIVA NEGRITO * @ PROW(),0 SAY CHR(15) && ATIVA CONDENSADO @ PROW()+2,0 SAY PADC( "3514 1146 3772 2200 3730 5990 0000 4630 0011 5817 9941", 56 ) @ PROW(),0 SAY CHR(18) && DESATIVA CONDENSADO ** QRCODE8() ** @ PROW()+1,0 SAY PADC( "OBRIGADO PELA PREFERENCIA", 48 ) @ PROW()+1,0 SAY REPLICATE( "-", 48 ) @ PROW()+1,0 SAY PADC( "www.info2000sistemas.com.br", 48 ) @ PROW()+8,0 SAY "" RETURN NIL ** * FUNCAO PARA IMPRIMIR O QRCode 8cm ** STATIC FUNCTION QRCODE8( QUAL, cXML ) ** * STRING com a linha de dados do QRCode - juntando as variáveis acima separadas pelo pipe. * Exemplo: "35141146377222003730599000004630001158179941|20141105134922|10.00|61694805808|m+4o8FY1lig1zcy6VU3t7INVwE6kiA/ykLXKDFZfb9gu0g4wl3Fk2HYaRhSt8G+yk9mP/R65m3R7V2IO8CxnmO1oVtlamB6UKA+UZZqDNEqtYlhQzLySNzMG0thaNMZsq5RxmQ3eQLPw8LLez3MqWvUveFXNSSq6AGEX2+KOdavteo3K2L06SQoVIjwkmcgRzqhfHP3y8t2wfr1nw/WAnaCF9ZY/K4dTykk3hsXcan/MKCTBlcSOhNgSh3sdsQHpl2w2tmbLBsYBLFkuvKlwzHarNJQ1RfRznGdojHglQH1KVtbAUXKke54pdRt3JL7nJlR+Lbmtd2tjcT2vRyTepw==" ** LOCAL x_TmStp := "20141105134922" LOCAL x_Chave := "35141146377222003730599000004630001158179941" LOCAL x_Valor := "10.00" LOCAL x_CNPJ := "" LOCAL x_Ass := "m+4o8FY1lig1zcy6VU3t7INVwE6kiA/ykLXKDFZfb9gu0g4wl3Fk2HYaRhSt8G+yk9mP/R65m3R7V2IO8CxnmO1oVtlamB6UKA+UZZqDNEqtYlhQzLySNzMG0thaNMZsq5RxmQ3eQLPw8LLez3MqWvUveFXNSSq6AGEX2+KOdavteo3K2L06SQoVIjwkmcgRzqhfHP3y8t2wfr1nw/WAnaCF9ZY/K4dTykk3hsXcan/MKCTBlcSOhNgSh3sdsQHpl2w2tmbLBsYBLFkuvKlwzHarNJQ1RfRznGdojHglQH1KVtbAUXKke54pdRt3JL7nJlR+Lbmtd2tjcT2vRyTepw==" LOCAL x_URL_QrCode, iTamanho, iLow, iHigh x_URL_QrCode = x_Chave+"|"+x_TmStp+"|"+x_Valor+"|"+x_CNPJ+"|"+x_Ass ** /* BYTES PARA COMPOR O QRCODE */ iTamanho := Len( x_URL_QrCode ) + 3 iLow := MOD( iTamanho, 256 ) iHigh := iTamanho / 256 && Em Harbour/Clipper não temos DIV() por isso fiz assim ok @ PROW(),0 SAY CHR(27) + "j1" && Para centralizar os códigos de barras e o "QR Code" @ PROW()+2,0 SAY CHR(27) + "b" + CHR(5) + CHR(2) + CHR(60) + CHR(1) + SUBSTR( x_Chave, 1, 22 ) + CHR(0) @ PROW()+1,0 SAY CHR(27) + "b" + CHR(5) + CHR(2) + CHR(60) + CHR(1) + SUBSTR( x_Chave,23, 22 ) + CHR(0) @ PROW()+1,0 SAY CHR(27) + CHR(129) + CHR(iLow)+CHR(iHigh) + CHR(3) + CHR(0) + x_URL_QrCode @ PROW(),0 SAY CHR(27) + "j0" && Volta a justificar à esquerda Return Nil ** * FINAL DO PROGRAMA DEMO.PRG **