Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 09/25/2020 in Posts

  1. 1 point
    Não posso deixar de comentar lol, tenho isto a funcionar precisamente em Delphi e c/ o Zxing já ha algum tempo (e não sou o único), e agora estou a fazer esta treta em modo texto directo, mas não meti aqui o código. O Bruno, não só mete o componente, como mete o código em Delphi, como ainda se disponibiliza pra fazer em outras Linguagens sendo que no site do ZXing está lá para outras LPs, portanto a "papinha" toda feita lol ainda pergunta se quer a papinha mais fria ou mais quente ... e agora gostaria de saber onde andam os criticos do Bruno aquando da FE-AP ??? lol
  2. 1 point
    Só em Dezembro é que é preciso comunicar as nossas séries á AT, e eles devolvem-te um código para colocares no teu source code. até lá, é esperar, comer tremoços e beber finos.
  3. 1 point
    uses DelphiZXingQRCode; Procedure GravarDocumento ou ImprimirDocumento; var CodigoQR:String; ... ... ... begin Ao gravar documento ou antes de imprimir: //obter código unico //ainda estou a aguardar informação adicional sobre o pedido do ATCUD CodigoQR:=copy(AnsiReverseString(IntToStr(IBDOCS.fieldbyname('ID').Asinteger*4)),1,4); CodigoQR:=CodigoQR+IBDOCS.fieldbyname('SERIE').AsString; CodigoQR:=CodigoQR+copy(IntToStr(NumeroDocumento*2),5,9); //criar os campos para gerar o QRCode. //A NIF do emitente * //B NIF do adquirente * //C País do adquirente * //D Tipo de documento * //E Estado do documento * //F Data do documento * //G Identificação única do documento * //H ATCUD * //I1 Espaço fiscal * //I2 Base tributável isenta de IVA * //I3 Base tributável de IVA à taxa reduzida * //I4 Total de IVA à taxa reduzida * //I5 Base tributável de IVA à taxa intermédia * //I6 Total de IVA à taxa intermédia * //I7 Base tributável de IVA à taxa normal * //I8 Total de IVA à taxa normal * //J1 Espaço fiscal * //J2 Base tributável isenta * //J3 Base tributável deIVA à taxa reduzida * //J4 Total de IVA à taxa reduzida * //J5 Base tributável de IVA à taxa intermédia * //.. //... //... //.... //..... //etc.... //N Total de impostos * //O Total do documento com impostos * //Q 4 carateres do Hash * //R Nº do certificado * StringCodigo:='A:NIFEMISSOR*'; StringCodigo:=StringCodigo+'B:'+IBDocs.FieldByName('NRCONTRIBUINTE').AsString+'*'; StringCodigo:=StringCodigo+'C:PT*'; if TIPODOCUMENTO='FACTURA SIMPLIFICADA' then StringCodigo:=StringCodigo+'D:FS*'; if TIPODOCUMENTO='NOTA DE CREDITO' then StringCodigo:=StringCodigo+'D:NC*'; if TIPODOCUMENTO='RECIBO' then StringCodigo:=StringCodigo+'D:RE*'; //ETC... StringCodigo:=StringCodigo+'E:N*'; StringCodigo:=StringCodigo+'F:'+FORMATDATETIME('YYYYMMDD',IBDocs.FieldByName('DATADOC').AsDateTime)+'*'; StringCodigo:=StringCodigo+'G:'+IBDOCS.fieldbyname('INICIAISDOC').AsString + ' ' + IBDOCS.FIELDBYNAME('SERIE').AsString + '/' + IBDOCS.fieldbyname('NDOC').asstring+'*'; StringCodigo:=StringCodigo+'H:'+IBDocs.FieldByName('CODLOJA').AsString +'-'+IBDocs.FieldByName('NDOC').AsString+'*'; StringCodigo:=StringCodigo+'I1:PT*'; ibquery1.close; ibquery1.SQL.clear; ibquery1.SQL.add( 'select ROUND(TOTAISIVA1,2), ROUND(TOTAISIVA2,2), ROUND(TOTAISIVA3,2), ROUND(TOTAISIVA4,2) FROM DOCS WHERE tipodoc=:TIPODOC AND ndoc=:NDOC'); ibquery1.parambyname('TIPODOC').AsString := TIPODOCUMENTO; ibquery1.parambyname('NDOC').AsInteger := NumeroDocumento; ibquery1.open; while NOT ibquery1.eof do begin if ibquery1.FieldByName('IVA').AsInteger=6 then begin StringCodigo:=StringCodigo+'I3:'+FloatToStr(ibquery1.FieldByName('TOTALSEMIVA').AsFloat)+'*'; StringCodigo:=StringCodigo+'I4:'+FloatToStr(ibquery1.FieldByName('TOTALIVA').AsFloat)+'*'; end; if ibquery1.FieldByName('IVA').AsInteger=13 then begin StringCodigo:=StringCodigo+'I5:'+FloatToStr(ibquery1.FieldByName('TOTALSEMIVA').AsFloat)+'*'; StringCodigo:=StringCodigo+'I6:'+FloatToStr(ibquery1.FieldByName('TOTALIVA').AsFloat)+'*'; end; if ibquery1.FieldByName('IVA').AsInteger=23 then begin StringCodigo:=StringCodigo+'I7:'+FloatToStr(ibquery1.FieldByName('TOTALSEMIVA').AsFloat)+'*'; StringCodigo:=StringCodigo+'I8:'+FloatToStr(ibquery1.FieldByName('TOTALIVA').AsFloat)+'*'; end; ibquery1.Next; end; StringCodigo:=StringCodigo+'N:'+FloatToStr(RoundNExtend(IBDOCS.FieldByName('TOTALIVA').AsFloat,2))+'*'; StringCodigo:=StringCodigo+'O:'+FloatToStr(RoundNExtend(IBDOCS.FieldByName('TOTALGERAL').AsFloat,2))+'*'; StringCodigo:=StringCodigo+'Q:'+copy(IBDocs.FieldByName('PRINTHASH').AsString,1,4)+'*'; //CODIGO HASH StringCodigo:=StringCodigo+'R:'+CodigoCertificado+'*'; // VOSSO NUMERO DE CERTIFICADO StringCodigo:=StringCodigo+'S:NU;'+FloatToStr(RoundNExtend(IBDOCS.FieldByName('TOTALGERAL').AsFloat,2)); StringCodigo:=StringReplace(StringCodigo,',','.',[rfReplaceAll]); UpdateQRCode(StringCodigo,CodigoQR); //Isto vai-vos criar o BMP com o QRCode. //Depois só têm que grava-lo numa BD, e no CrystalReports, adicionar o campo dessa BD. +/- ISTO UPDATE DOCS SET IMAGEMQRCODE=FILESTREAM(C:\PASTATEMPORARIA\QRCODE\XXXXXXXXX.BMP Procedure TDataModule1.UpdateQRCode(Texto,Codigo:String); var QRCode: TDelphiZXingQRCode; //Gratuito é só ir buscar á net. Row, Column: Integer; Scale: Double; QRCodeBitmap: TBitmap; ImageQR:TImage; begin try ImageQR:=TImage.Create(self); QRCodeBitmap := TBitmap.Create; QRCode := TDelphiZXingQRCode.Create; QRCode.Data := Texto; QRCode.Encoding := TQRCodeEncoding(0); QRCode.QuietZone := 1; QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns); for Row := 0 to QRCode.Rows - 1 do begin for Column := 0 to QRCode.Columns - 1 do begin if (QRCode.IsBlack[Row, Column]) then begin QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack; end else begin QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite; end; end; end; ImageQR.Canvas.Brush.Color := clWhite; ImageQR.Canvas.FillRect(Rect(0, 0, ImageQR.Width, ImageQR.Height)); if ((QRCodeBitmap.Width > 0) and (QRCodeBitmap.Height > 0)) then begin if (ImageQR.Width < ImageQR.Height) then begin Scale := ImageQR.Width / QRCodeBitmap.Width; end else begin Scale := ImageQR.Height / QRCodeBitmap.Height; end; ImageQR.Canvas.StretchDraw(Rect(0, 0, Trunc(Scale * QRCodeBitmap.Width), Trunc(Scale * QRCodeBitmap.Height)), QRCodeBitmap); end; ImageQR.Picture.SaveToFile('C:\PASTATEMPORARIA\QRCode\'+Codigo+'.bmp'); QRCode.Free; QRCodeBitmap.Free; except end; end; Delphi Se precisarem para outras linguagens de programação, mandem msg.
  4. 1 point
    Penso que não dá para fazer com uma fonte, posso estar muito enganado, mas o que há é caracter a caracter, ou seja "FT" terias 2 códigos QR 1 para o "F" e outro para o "T". Tens que usar uma livraria que te crie os códigos nos reports ou uma que gere uma imagem e inseres nos documentos quando estiveres a imprimir, ou se usares impressoras térmicas, ESC/POS. Estive a testar os exemplos do manual, na minha impressora de 58mm e o 1º exemplo da FT, consigo imprimir mas depois não consigo ler o que lá está, todas as aplicações que usei dão erro ao ler aquilo, hoje é dia de testar na de 80mm
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.