Ir para conteúdo
  • Cadastre-se

wrmedeiros

Membros
  • Total de ítens

    225
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que wrmedeiros postou

  1. Com os fontes atuais do ACBr (01/11/2014) o componente de NFe para QR não funciona (falta as propriedades FullJustify e XLColumn). Essas propriedades só estão presentes na versão 5.02.2 (que de acordo com o site do QuickReport[1] é a última versão compatível com Delphi 2006). Pelo que vi nos fontes essas propriedades sempre estão com valores defaults (XLColumn = 0 e FullJustify = False), para compilar com meu Delphi 2006 fiz as seguitnes alterações no Notepad++: Via Notepad++ -> Localizar -> Localizar em Arquivos Localizar: XLColumn = 0 Substituir por: (vazio) Filtros: *.dfm Pasta: C:\PROJETOS\ACBR\Fontes\ACBrNFe2 Basta clicar em "Substituir nos Arquivos" Em seguida repita o mesmo procedimento para o texto: FullJustify = False Tiver tempo vou atualizar para essa versão 5.02.2, mas isso costuma dar bastante trabalho no meu ambiente, pois uso o QRTee, que é bem chatinho de instalar (dependência com TeeChart, etc.). [1] http://www.quickreport.co.uk/fixes.aspx
  2. Pessoal, A Bematech respondeu o e-mail e consegui resolver o problema. Acredito que a solução ideal seria criar uma propriedade no componente TACBrNFeDANFeESCPOS para informar o padrão de QRCode deve ser impresso (já que no ESC/POS não tem um comando padronizado para imprimir QRCode, cada fabricante está fazendo do seu jeito). Como não sou expert em criação de componentes, reutilizei uma propriedade do componente que na minha análise (rápida) não está sendo utilizado: Impressora Se o campo estiver vazio, o componente vai considerar que a impressora ligada é uma Epson (set de comandos default), se o campo estiver preenchido com a string "Bematech" (acredito que seria mais interessante algum tipo de record: tQRCodeBematech, tQRCodeDaruma, etc.) o componente vai enviar o set de comandos do QRCode no padrão Bematech. Na segunda-feira devo receber uma Daruma DR700 que compramos para NFCe, vou fazer os testes, e se necessitar de ajustes irei fazer e disponibilizar nesse mesmo tópico. Para que a impressão seja feita corretamente é necessário configurar o set de comandos "ESC/POS" via aplicativo da Bematech (Bematech User Software). procedure TACBrNFeDANFeESCPOS.GerarRodape(CortaPapel: Boolean = True; Cancelamento: Boolean = False); var qrcode : string; cCaracter:AnsiString; i, cTam1, cTam2:Integer; begin FBuffer.Add(cCmdFonteNormal+'------------------------------------------------'); FLinhaCmd := cCmdAlinhadoCentro+'Consulta via leitor de QR Code'; FBuffer.Add(FLinhaCmd); FBuffer.Add(' '); qrcode := NotaUtil.GetURLQRCode( FpNFe.ide.cUF, FpNFe.ide.tpAmb, FpNFe.infNFe.ID, DFeUtil.SeSenao(FpNFe.Dest.idEstrangeiro <> '',FpNFe.Dest.idEstrangeiro, FpNFe.Dest.CNPJCPF), FpNFe.ide.dEmi, FpNFe.Total.ICMSTot.vNF, FpNFe.Total.ICMSTot.vICMS, FpNFe.signature.DigestValue , TACBrNFe( ACBrNFe ).Configuracoes.Geral.IdToken, TACBrNFe( ACBrNFe ).Configuracoes.Geral.Token); //bematech if (FImpressora = 'Bematech') then begin //formato Bematech (http://partners.bematech.com.br/2014/09/imprimindo-qrcode-na-impressora-mp-4200-th/) //OBS: para que o QRCode seja impresso na Bematech é necessário instalar o firmware 1.6 ou superior (http://partners.bematech.com.br/2013/03/edicao-139-mp-4200-th-com-qr-code/) // essa implementação utiliza o set de comandos ESC/POS. Para habilitar na impressora utilize o aplicativo "Bematech User Software", e na aba "Configurações Adicionais" selecione // o tipo de comando "Esc/POS" for i := 1 to length(qrcode) do begin cCaracter := cCaracter + Chr(Ord(qrcode[i])); end; if (length(qrcode) > 255) then begin cTam1 := length(qrcode) mod 255; cTam2 := length(qrcode) div 255; end else begin cTam1 := length(qrcode); cTam2 := 0; end; FLinhaCmd := #27 + #97 + #1 + //esse código faz a centralização #29 + #107 + #81 + //esse é o do qr code #3 + #8 + //aqui é o tamanho do QRCode #8 + #1 + //dimensão (8) Chr(cTam1) + //resto da divisão correspondente ao tamanho do texto / 255 Chr(cTam2) + //divisão correspondente ao tamanho do texto cCaracter; //aqui começa o texto end else if (FImpressora = 'Daruma') then begin end else //default (Epson ESC/POS) begin //formato Epson ESC/POS FLinhaCmd := chr(29)+'(k'+chr(4)+chr(0)+'1A2'+chr(0)+ chr(29)+'(k'+chr(3)+chr(0)+'1C'+chr(4)+ chr(29)+'(k'+chr(3)+chr(0)+'1E0'+ chr(29)+'(k'+Int2TB(length(qrcode)+3)+'1P0'+qrcode+ chr(29)+'(k'+chr(3)+chr(0)+'1Q0'; end; FBuffer.Add(FLinhaCmd); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(cCmdFontePequena+('Protocolo de Autorização:'+Trim(FpNFe.procNFe.nProt)+' '+DFeUtil.SeSenao(FpNFe.procNFe.dhRecbto<>0,DateTimeToStr(FpNFe.procNFe.dhRecbto),''))+cCmdFonteNormal); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); FBuffer.Add(''); if CortaPapel then FBuffer.Add(cCmdCortaPapel); end; Acredito que o componente está ignorando algumas propriedades, como NumCopias, pois sempre sai 2 vias mesmo quando configurado para 1 (tentei com ViaConsumidor False mas o mesmo comportamento ocorre). Vou analisar com mais calma o código pra ver se acho onde está enviando essa segunda cópia.
  3. Daniel, Tira Bematech dessa sua lista, com a versão atual do componente ESC/POS o QRCode não é impresso (o cupom em si é impresso certinho, mas a impressora precisa está configurada como "ECC/BEMA". Se ativar ESC/POS a impressora usa uma fonte maior que só suporta 42 caracteres por linha). No momento estou testando o componente ESC/POS para imprimir o NFCe com a impressora em ESC/BEMA e fazendo os ajustes para imprimir o QRCode. O problema ocorre porque só consigo imprimir URL's com no máximo 255 caracteres... os caracteres excedentes são jogados como "texto" abaixo do QRCode. Criei um tópico sobre isso aqui: Criei um tópico no fórum "Partner" da Bematech, mas sem respostas. Estou quase comprando uma Daruma, mas pelo que vi no ESC/POS, o QRCode só é impresso corretamente na Epson.
  4. O componente ESCPOS funciona com impressoras Daruma? Com Bematech sei que não funciona, e estou a dias tentando contato com a Bematech para resolver um problema na impressão do QRCode via ESC/POS (assim que terminar mando o código atualizado do componente). O problema que estou me referindo é esse: Só consigo imprimir os 255 primeiros caracteres. Estou vendo também a compra de uma Daruma, mas só vou comprar se conseguir imprimir sem DLL.
  5. Nilton, bom dia! No demo da Bematech a URL é passada apartir de um EditText, ou seja, nem tem essa limitação de 255 caracteres de uma string comum. Antes quando eu estava testando usando variáveis eu percebi essa limitação e fiz como você mencionou, concatenei, mas dessa vez o problema é nesse parâmetro que informa quantos caracteres tem na URL. Tanto que a URL é codificada no QRCode até a 255 posição, e o resto é "impresso" como observação logo abaixo do QRCode, ou seja, a String foi enviada por completo, no entanto o Chr só considerou 255. Cheguei ao ponto de remover o Chr e colocar somente o #347, e mesmo assim a impressora "quebra" o QRCode. Tem um aplicativo da Bematech onde é feito alguns ajustes na impressora (atualização de firmware, definição de set de comandos: ESC/POS, ESC/BEMA, etc.), e nele tem um local onde é possível imprimir um QRCode de exemplo, lá eu colei essa URL com 347 caracteres e imprimiu certinho, mas os fontes desse APP não são disponibiizados. Para descobrir como eles fizeram instalei um "sniffer" de porta serial e capturei o tráfego que esse aplicativo envia, no entanto observei que eles usam ESC/BEMA em vez de ESC/POS para imprimir o QRCode, e no ESC/BEMA não é necessário informar o tamanho da URL. Alguém tem algum exemplo de como imprimir um QRCode usando ESC/BEMA?
  6. Pessoal, bom dia! Encontrei um demo no site da Bematech que mostra como imprimir o QRCode no ESC/POS: http://partners.bematech.com.br/bemacast/wp-content/uploads/downloads/2014/09/qrcode.rar Nos meus testes só consigo imprimir URL's com no máximo 255 caracteres, no entanto as URL's da NFCe costumam passar de 350 caracteres como o exemplo abaixo que peguei do manual do NFCe: http://www.nfe.se.gov.br/portal/consultarNFCe.jsp?chNFe=43120910585504000174650010000000541123456781&nVersao=100&tpAmb=1&cDest=43708379006485&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d&cIdToken=000001&cHashQRCode=80f5d4a1e4b12bc97aae0e971a61bff73270fd81 Aparentemente o CHR não permite um inteiro maior que 255: chr(length(txtMensagem.Text)) + // tamanho de caracteres correspondente ao texto Alguém sabe como contornar isso? Já tentei contato com a Bematech, mas não obtive resposta quanto ao caso.
  7. Já consegui imprimir o QRCode. ACBrNFeDANFeESCPOS.pas: //formato Bematech (http://partners.bematech.com.br/2014/09/imprimindo-qrcode-na-impressora-mp-4200-th/) FLinhaCmd := #27 + #97 + #1 + // esse código faz a centralização #29 + #107 + #81 + // esse é o do qr code #2 + #12 + #8 + #1 + // aqui é o tamanho Chr(Length(qrcode)) + // tamanho de caracteres correspondente ao texto #0 + qrcode; Fazendo dessa forma acabo quebrando a implementação anterior (Epson), mas para testes por enquanto vou deixar assim. Com essa implementação o QRCode é impresso, mas como a string é muito grande (mais de 300 caracteres), o sistema só consegue enviar uma parte da string para o QRCode (algo em torno de 120 caracteres), e os demais aparecem abaixo do qrcode em formato de texto. Acredito que o problema está no Chr(Length(qrcode)), só não faço ideia de como resolver. Com URL's menores que 120 caracteres funciona perfeitamente.
  8. Senhores, boa tarde! Configurei o modo ESC/POS na Bematech MP-4200, e estou conseguindo imprimir o DANFeNFCe pela impressora não fiscal usando o ACBrNFeDANFeESCPOS. Em um post do André observei que o componente só foi testado com Epson e DASCOM [1], e gostaria de contribuir implementando as alterações para a Bematech (MP-4200). Analisando o código em ACBrNFeDANFeESCPOS.pas vejo que não existe uma propriedade para informar que tipo de impressora está utilizando, e pelo que observo, cada impressora tem seu padrão de comandos para imprimir o QRCode (na Bematech os demais ESC's funcionaram perfeitamente, negrito, condensado, etc. exceto o QRCode, que imprimiu a "string"). Acredito que teremos que criar uma propriedade onde deve ser informado qual tipo de impressora está sendo utiilzada (Epson, Daruma, Bematech, etc., onde Epson será o default, para não quebrar o código de quem já está utilizando). O que acham? Na classe ACBrNFeDANFEClass.pas tem uma propriedade chamada "Impressora", qual a utilidade? Poderíamos utilizar essa propriedade? Por enquanto vou continuar lendo o manual e fazendo testes no Delphi para impressão do QRCode sem DLL. [1]
  9. NFCe, mas nem comecei ainda a parte de imprimir o cupom. Estava só fazendo testes com a impressora que compramos a poucos dias. Vi sobre o DANFeESCPOS e estava na minha lista de coisas para testes. De qualquer forma está pronto né? bem melhor que bater cabeça com esses comandos rsrs; Quanto a impressora, ela imprime 48 colunas perfeitamente quando mudo de ESC/POS para ESC/BEMA: https://www.dropbox.com/s/w0nh33ktqkv38yd/Bematech.png?dl=0 O ideal seria que em ESC/POS a fonte ficasse do mesmo tamanho, mas enfim, o importante é que funcionou. Obrigado pela dica do ACBrNFeDANFeESCPOS, vou testá-lo mais tarde. Abraços,
  10. Fiz uma foto do cupom usando ecfNaoFiscal pelo Demo do ACBr para vocês verem: https://drive.google.com/file/d/0B4WiOkkQli4tRkxDV21zZnozSDg/view?usp=sharing Quando a quantidade de caracteres chega a 42 por linha a impressora automaticamente joga para a próxima. Posso via ESC/POS habilitar o modo condensado (apesar que vai caber BEM MAIS que 48 caracteres por linha), mas terei que alterar o componente inteiro (e vai ficar estranho, porque a fonte padrão é grande demais, e a condensada pequena demais rsrs).
  11. Fala Nilton, beleza? Aceita sim, e estou usando como ESC/POS. O problema é que a fonte é grande, e acaba estourando o limite da linha. Por padrão o ecfNaoFiscal do ACBr considera que a impressora não-fiscal utiliza 48 caracteres, como por padrão a Bematech usa 42, sai tudo quebrado. Já tentei algumas coisas na configuração do driver (mudar fonte, etc.), mas não obtive êxito. Vou está viajando próxima semana, mas assim que voltar entro em contato com o suporte da Bematech.
  12. Pois é Dércio, gosto não se discute mesmo. Acho louvável a iniciativa de empresas como Daruma em criar DLL's para facilitar a implementação de NFCe, etc., mas gosto mais ainda de ter acesso ao código-fonte, de em erros "bizarros" ter como analisar de forma mais aprofundada o problema. Tempos atrás tive uns erros graves na emissão de NFCe (uso o UNINFe e o mesmo estava fechado "sozinho"). O pessoal da Unimake foi bem prestativo no suporte, mas o que me salvou mesmo foi ter acesso ao código-fonte e poder depurar direto pelo Visual Studio até resolver o problema. Nesses quase 13 anos de caminhada com automação sofri um bocado com essas DLL's de fabricantes de ECF, e sinceramente, se existe uma opção de não utilizá-las (indiferente de ser não-fiscal ou qualquer outra solução), prefiro ter mais trabalho no início, mas ter controle sobre o código. Sei que é impossível ter controle sobre tudo (tem o SO, tem drivers, tem hardware, etc.), mas quanto mais o controle está na sua mão, melhor. Voltando ao caso Bematech, analisando o manual do equipamento é possível encontrar os códigos para ativar o modo condensado, mas a questão inicial é porque o fabricante optou por 42 colunas em vez de 48 no modo "default". Mesmo que seja necessário utilizar a ferramenta de configuração da impressora para habilitar 48 colunas, é mais fácil que reescrever todos os módulos que estão preparados para 48 colunas (no manual ensina a ativar o modo condensado na hora de imprimir a linha, não encontrei uma forma de ativar o modo condesando de forma "defintiiva", ou seja, a cada linha impressa, antes tem que vir o código ESC para ativar o modo condensado). Imagine a situação, seu cliente no PDV 1 tem uma impressora Epson que acredito que imprime 48 colunas por padrão... no 2 ele tem uma Daruma, que aparentemente também imprime 48 colunas por padrão, aí no 3 você tem uma Bematech, e vai ter que configurar seu sistema de forma diferente para que a cada linha o modo condensado seja ativado. Sem noção isso!
  13. Aguardar a resposta da Bematech, mas já avisei aos clientes para não comprarem nenhum modelo antes de falar conosco.
  14. Pois é "tchuck", estou com esse problema. Pelo que vi no manual tem como habilitar o modo condensado, mas tem que ser enviado o código ESC a cada linha. O ideal era a impressora por padrão não usar aquela fonte "enorme" e manter o padrão que todas as impressoras não fiscais seguem (48 colunas). Ontem fiz vários testes com o modelo "ecfNaoFiscal" do demo do ACBrECF, e sai tudo quebrado devido esse problema. Fiz uma pergunta no fórum da Bematech e no AutomacaoTotal, vamos ver se respondem.
  15. Dei uma olhada rápida no manual da Diebold: http://www.diebold.com.br/mecaf/drivers/Manual%20do%20Firmware%20I4X5101PD5XX-Rev04.pdf Aparentemente não suporta QRCode. Acredito que quando você manda pelo driver ele imprime como bitmap (talvez seja esse o motivo da lentidão).
  16. Nilton, Mas via FastReport vai funcionar? essa impressora é só modo texto, acredito que esses geradores de relatório (Fast, QR, Fortes, etc.) não funcionem com elas. Já usei essas impressoras para outros fins (recibo de troca, extrato de fidelização, etc.), geralmente optava por escrever direto na porta COM usando WriteLn mesmo, mas nesse caso como tem o QRCode, tem que saber quais códigos elas utilizam (ESC). Uma pena que o dono da empresa já tinha comprado uma impressora Bematech, não terei como testar esse zip que passei acima com a Daruma.
  17. Encontrei algo que pode ajudar: http://www.desenvolvedoresdaruma.com.br/home/downloads/Site_2011/Manuais/Daruma_DR700_DR600_DR600SENHA.zip Página 7 do arquivo "Daruma_DR600-DR700.pdf": Imprime QR Code* [ESC] <129> <–Size><+Size> <Width> <Ecc> <D001> <D002> . . . <Dnnn> Size inclui os 2 bytes de controle Size ≤ 402 nnn = Size – 2 Largura do módulo (Width): 0, 4 ≤ Width ≤ 7 ( =0 para default = 5) Redundância (ECC): 0, M, Q, H ( =0 para cálculo automático) * Apenas para V.02.50.00 ou superior. Vou comprar uma e faço os ajustes no componente se for necessário.
  18. No ACBrNFeDANFeESCPOS.pas tem geração de QRCode, basta alguém que tenha a Daruma testar: qrcode := NotaUtil.GetURLQRCode( FpNFe.ide.cUF, FpNFe.ide.tpAmb, FpNFe.infNFe.ID, DFeUtil.SeSenao(FpNFe.Dest.idEstrangeiro <> '',FpNFe.Dest.idEstrangeiro, FpNFe.Dest.CNPJCPF), FpNFe.ide.dEmi, FpNFe.Total.ICMSTot.vNF, FpNFe.Total.ICMSTot.vICMS, FpNFe.signature.DigestValue , TACBrNFe( ACBrNFe ).Configuracoes.Geral.IdToken, TACBrNFe( ACBrNFe ).Configuracoes.Geral.Token); FLinhaCmd := chr(29)+'(k'+chr(4)+chr(0)+'1A2'+chr(0)+ chr(29)+'(k'+chr(3)+chr(0)+'1C'+chr(4)+ chr(29)+'(k'+chr(3)+chr(0)+'1E0'+ chr(29)+'(k'+Int2TB(length(qrcode)+3)+'1P0'+qrcode+ chr(29)+'(k'+chr(3)+chr(0)+'1Q0'; FBuffer.Add(FLinhaCmd); Enviei um e-mail para Daruma perguntando se a impressora deles suporta ESC/POS. No fórum encontrei alguns tópicos sobre o assunto, aparentemente só funciona Epson e Bematech (essa última só após atualizar o firmware da impressora).
  19. Estou pensando em comprar impressora Daruma para fazer a impressão do NFCe, mas não gostaria de usar DLL (depois de tanto trabalho para matar as malditas DLL's das ECF's, não tem sentido continuar usando as mesmas para imprimir em modo texto). Deve ter alguma forma de imprimir o QRCode sem ter que usar a DLL.
  20. Do Sitef (Software Express) é esse: https://www.dropbox.com/s/ipv2ue8qaqj8h1k/Roteiro%20Pr%C3%A9%20Homologa%C3%A7%C3%A3o_Particularidades%20Impressora%20N%C3%A3o-Fiscal_CliSiTef%20DLL.pdf?dl=0
  21. Conseguiram alguma resposta junto ao SEFAZ? Realmente a ideia de usar séries diferentes para cada PDV me parece a melhor solução. Fiquei preocupado com a questão das filiais, pois lá também vai existir um PDV 1, e com isso será utilizado a série 001, mas como é informado o CNPJ do emitente na hora de gerar, acredito que não teremos problemas (apesar de ser utilizado o mesmo certificado tanto na matriz quanto nas filiais).
  22. Show Nilton, muito obrigado, deu certo: https://www.dropbox.com/s/8doerx7e66xt5sh/ACBr_NFCe4.png?dl=0 O estranho é que no site do SEFAZ diz que essa forma de configurar o token foi descontinuada, e que agora deve ser informado “0123456789” para o CSC e o identificador “000001”. A hora do SEFAZ-AM está 1h atrasada (alguma coisa de fuso ,acredito). Tive que fazer um pequeno ajuste no GerarNFCe: var D, M, Y, H, MM, S, MS:Word; cDataHora:TDateTime; begin DecodeDateTime(Now, Y, M, D, H, MM, S, MS); H := H - 1; cDataHora := EncodeDateTime( Y, M, D, H, MM, S, MS); ... Ide.dEmi := cDataHora;
  23. Acredito ser algo no webservice do ambiente de homologação. Troquei o ambiente para "Produção" (meu CNPJ não é do AM, na pior hipótese receberia um aviso de CNPJ inválido, e foi o que aconteceu): https://www.dropbox.com/s/vvyksbdnx4hi6do/ACBr_NFCe3.png?dl=0 Alguém HOJE está conseguindo emitir via SEFAZ-AM no ambiente de homologação usando o demo do ACBr?
  24. Nilton, Testei com as 3 versões, não consigo. Até mesmo um "Status do Serviço" falha, veja: https://www.dropbox.com/s/gu7eomij68rnp7j/ACBr_NFCe1.png?dl=0 Configuração da versão: https://www.dropbox.com/s/4b5qsouulm70vfg/ACBr_NFCe2.png?dl=0 Acredito que pode ser algo no cadastro (algum dado do Emitente que não está sendo aceito no SEFAZ AM). Régys, você poderia mandar um print da sua tela de cadastro de emitente do ACBrNFe2Demo? (troco apenas o CNPJ para ficar igual ao do meu certificado e envio para ver se vai ser aceito). Se for, testo campo a campo até descobrir o motivo da negação. Conferi o certificado, está válido. Ontem atualizei a cadeia de certificados, etc. O engraçado é que via UniNFE eu testo o "Status do serviço" em Homologação e recebo o aviso de "Erro não catalogado". Em seguida mudo para "Produção", e o UniNFE mostra "Serviço em Operação".
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.