Ir para conteúdo
  • Cadastre-se

Pedro E. Braga

Moderadores
  • Total de ítens

    181
  • Registro em

  • Última visita

  • Days Won

    2

Tudo que Pedro E. Braga postou

  1. Segunda vamos receber uma DR800 de um parceiro para podermos testar, mas o problema da tabela 3 é que não imprime o código de barras do SAT.
  2. Boa Tarde Daniel, Não havia percebido mas foi realizada uma alteração setando o valor "RazaoColunaFonte.Expandida := 1.714;" no create da Classe da daruma para ajustar o tamanho da fonte para impressão na DR700, retirei o mesmo e o Total ficou desalinhado na DR700, irei testar na DR800 amanhã pois nosso cliente teve problemas na internet, e posto se deixando o padrão 2 para a configuração faz com que a impressão saia corretamente na DR800 e posto o resultado assim que possível. Acredito que existe uma diferença entre os tamanho quando utilizado as opções pois na DR700 ele está aceitando até 29 colunas e na DR800 apenas 24, pelo que conversei com o suporte da Daruma utilizando o comando ESC ! 56 (que seria impressão com fonte com dobro de tamanho, dobro de largura e enfatizada) é 24 colunas nas duas
  3. Boa Tarde Daniel, Realizei o teste utilizando a nova Unit contudo o problema persiste. segue imagem utilizando o exemplo e o cupom impresso usando EscPos do SAT. Havia um problema referente a impressão do código de barras e fui obrigado a alterar o Set de caracteres da Impressora para Tabela 1, que conforme suporte da Daruma apenas nesse set aceita os comandos enviados. Mensagem Suporte Daruma: "A Tabela 1 deixa a DR800 compatível com os mesmos comandos de comunicação direta que a DR700 e a Tabela 3 deixa ela compatível com os comandos ESCPOS." PosPrinter.log
  4. Boa Tarde, Realizei alguns ajustes na impressão do comprovante ESCPOS compatibilizando com o novo Manoel, e corrigindo um problema referente a Impressora Daruma DR700. ACBrNFeDANFeESCPOS.pas Manual
  5. Boa Tarde Daniel, Segue resultado dos testes utilizando a Unit atual do repositório, irei atualizar a unit conforme passada acima e realizar os devidos testes e informo os resultados. PosPrinter.log
  6. Daniel, como não estamos com a ECF aki na empresa estou aguardando o cliente me enviar o resultado do teste que fiz com a units atuais usando o PosPrinter assim que ele me retornar posto os resultados e ai faço o teste utilizando essa nova unit.
  7. Daniel, irei realizar a impressão pelo demo que você passou e assim que o cliente me encaminha as impressões anexo aqui.
  8. Daniel solicitei o manual da DR800 ao suporte da Daruma estou aguardando retorno, mas a principio acho que não é seria esse o problemas visto que apenas esse ponto que apresenta problemas, e apenas na DR800.
  9. Daniel, está no padrão de 48 colunas, a mesma impressão funciona corretamente na DR700, segundo o pessoal da daruma é devido ao valor passado. Atualmente você naquela linha está mandando ESC ! NUL ESC W SOH Em vez de mandar tudo isso, você manda apenas (por exemplo) ESC ! 56
  10. Boa Tarde, Ao realizar a Impressão do XML anexo em uma DR800 o Valor Total está estourando a linha o mesmo cupom na DR700 não gera o problema descrito, gostaria de um auxilio referente a questão. SatCupomFiscal.pdf AD35160812840220000102590001901500000049611361.xml
  11. Boa Tarde Daniel, Realizei um Merge com base na Trunk2 Atual, além das alterações no método mencionado, existe algumas outras implementações e correções que realizamos aqui na empresa. ACBrSerial.7z
  12. Boa Tarde Daniel, realizei as alterações no método como solicitado segue em anexo. ACBrSerial.7z
  13. Daniel, entendo essa questão de compatibilidade mas temos que ver também que para escecf, bematech, epson o parâmetro é obrigatório e deixando como default acho que fica incorreto podendo gerar erros na execução do processo.
  14. Juliomar como a alteração foi pontual em uma função utilizei a versão que utilizamos, assim algumas rotinas podem realmente estar desatualizadas, mas foi verificado se a função havia alterações com base na ultima release e não havia alterações na mesma.
  15. Bom Dia Daniel, sei que faz algum tempo que solicitou segue em anexo a implementação sugerida nos fontes do "trunk2" a principal implementação é referente a função "CancelaDescontoAcrescimoItem" a qual estava implementada apenas para Daruma e protocolo EscECF o qual continha erro por não ter o tipo definido o que fazia com que não cancelava acréscimos. As Units foram testadas nos emuladores disponíveis uma Adendo é que para Epson o Desconto e cancelamento são sempre realizados para o ultimo item mesmo que passamos o parâmetro do número do item. ACBrSerial.7z
  16. Infelizmente não tenho como anexar toda a Unit, pois tenho alterações especificas pra meu sistema.
  17. Testei na Urano porem o arquivo gerado é o TDM não encontrei como gerar os arquivos independente como o eECF faz. Para Dataregis não obitive retorno do Fabricante, Para Elgin não consegui testar pois não possuo a mesma na bancada.
  18. procedure TACBrECFFiscNET.ArquivoMF_DLL(NomeArquivo: AnsiString); Var iRet : Integer; PortaSerial, ModeloECF, NumFab : AnsiString; CooIni, CooFim, ArqTmp : AnsiString ; OldAtivo : Boolean ; begin NumFab := NumSerie; ModeloECF := SubModeloECF; CooIni := '000001'; CooFim := '999999'; PortaSerial := fpDevice.Porta ; ArqTmp := ExtractFilePath( NomeArquivo ) + 'ACBrMF.MF' ; if FilesExists( ArqTmp ) then DeleteFile( ArqTmp ); if FilesExists( NomeArquivo ) then DeleteFile( NomeArquivo ); LoadDLLFunctions; OldAtivo := Ativo; try Ativo := False; if pos(fsMarcaECF, 'dataregis|termoprinter') > 0 then begin iRet := xGera_PAF( PortaSerial, ModeloECF, ArqTmp, CooIni, CooFim ); if iRet <> 0 then raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar Gera_PAF.'+sLineBreak+ 'Cod.: '+IntToStr(iRet) + ' - ' + GetErroAtoCotepe1704(iRet) )) ; if not FileExists( NomeArquivo ) then raise EACBrECFERRO.Create( ACBrStr( 'Erro na execução de Gera_PAF.'+sLineBreak+ ': "'+NomeArquivo + '" não gerado' )) end else if (fsMarcaECF = 'elgin') then begin AbrePortaSerialDLL(fpDevice.Porta, ExtractFilePath(NomeArquivo)); iRet := xElgin_LeMemoriasBinario( ArqTmp, NumFab, true ); if (iRet <> 1) then raise EACBrECFERRO.Create(ACBrStr('Erro ao executar Elgin_LeMemoriasBinario.'+sLineBreak+ 'Cod.: ' + IntToStr(iRet))) ; if not FilesExists( ArqTmp ) then raise EACBrECFERRO.Create(ACBrStr('Erro na execução de Elgin_LeMemoriasBinario.'+sLineBreak+ 'Arquivo binário não gerado!')); xElgin_FechaPortaSerial(); end else begin iRet := xDLLReadLeMemorias( PortaSerial, ArqTmp, NumFab, '1'); if iRet <> 0 then raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar DLLReadLeMemorias.' + sLineBreak + 'Cod.: '+ IntToStr(iRet) + ' - ' + GetErroAtoCotepe1704(iRet) )) ; end ; finally Ativo := OldAtivo ; if AnsiUpperCase(ArqTmp) <> AnsiUpperCase(NomeArquivo) then CopyFileTo(ArqTmp, NomeArquivo) ; //if FilesExists( ArqTmp ) then DeleteFile( ArqTmp ); end; end; procedure TACBrECFFiscNET.ArquivoMFD_DLL(NomeArquivo: AnsiString); Var iRet : Integer; PortaSerial, ModeloECF, NumFab : AnsiString; CooIni, CooFim, ArqTmp : AnsiString ; OldAtivo : Boolean ; begin NumFab := NumSerie; ModeloECF := SubModeloECF; CooIni := '000001'; CooFim := '999999'; PortaSerial := fpDevice.Porta ; ArqTmp := ExtractFilePath( NomeArquivo ) + 'ACBrMFD.MFD' ; if FilesExists( ArqTmp ) then DeleteFile( ArqTmp ); if FilesExists( NomeArquivo ) then DeleteFile( NomeArquivo ); LoadDLLFunctions; OldAtivo := Ativo; try Ativo := False; if pos(fsMarcaECF, 'dataregis|termoprinter') > 0 then begin iRet := xGera_PAF( PortaSerial, ModeloECF, ArqTmp, CooIni, CooFim ); if iRet <> 0 then raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar Gera_PAF.'+sLineBreak+ 'Cod.: '+IntToStr(iRet) + ' - ' + GetErroAtoCotepe1704(iRet) )) ; if not FileExists( NomeArquivo ) then raise EACBrECFERRO.Create( ACBrStr( 'Erro na execução de Gera_PAF.'+sLineBreak+ ': "'+NomeArquivo + '" não gerado' )) end else if (fsMarcaECF = 'elgin') then begin AbrePortaSerialDLL(fpDevice.Porta, ExtractFilePath(NomeArquivo)); iRet := xElgin_LeMemoriasBinario( ArqTmp, NumFab, true ); if (iRet <> 1) then raise EACBrECFERRO.Create(ACBrStr('Erro ao executar Elgin_LeMemoriasBinario.'+sLineBreak+ 'Cod.: ' + IntToStr(iRet))) ; if not FilesExists( ArqTmp ) then raise EACBrECFERRO.Create(ACBrStr('Erro na execução de Elgin_LeMemoriasBinario.'+sLineBreak+ 'Arquivo binário não gerado!')); xElgin_FechaPortaSerial(); end else begin iRet := xDLLReadLeMemorias( PortaSerial, ArqTmp, NumFab, '1'); if iRet <> 0 then raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar DLLReadLeMemorias.' + sLineBreak + 'Cod.: '+ IntToStr(iRet) + ' - ' + GetErroAtoCotepe1704(iRet) )) ; end ; finally Ativo := OldAtivo ; if AnsiUpperCase(ArqTmp) <> AnsiUpperCase(NomeArquivo) then CopyFileTo(ArqTmp, NomeArquivo) ; //if FilesExists( ArqTmp ) then DeleteFile( ArqTmp ); end; end;
  19. Bom Dia Daniel, não encontrei nada ainda da Dataregis e Urano para separar as memorias no arquivo mas de acordo com o pessoal da elgin o comando é esse. Elgin_LeMemoriasBinario Realiza a leitura binária das memórias do ECF, e grava em um arquivo no computador. Esta função realiza uma chamada para a função DLLReadLeMemorias da DLL leitura.dll, que envia o comando para ECF para fazer a leitura da Memória Fiscal e da Memória Fita Detalhe e gravar em uma arquivo magnético. Parâmetros: szNomeArquivo:variável STRING com o caminho e o nome do arquivo que será gravado os dados da leitura binária das memórias do ECF. szSerieECF: variável STRING com o número de série do ECF. bAguardaConcluirLeitura: variável BOLEANA que indica se a leitura deve ser executada de maneira síncrona ( a função só "libera" o processamento após o fim da geração do arquivo , ou assíncrona ( a leitura da memória é realizada em background"liberando" o processamento do sistema). Segundo o texto destacado acima, a função faz a leitura das memórias do ECF, ou seja as duas. Um dos parâmetros da Função Elgin_LeMemoriasBinario é o tipo de arquivo que ela vai salvar (.TDM, .MFD ou .MF) esse parâmetro irá gerar o formato especifico informado. Exemplo: Elgin_LeMemoriasBinario("c:\ArqMF.MF", NumSerie, True) // caminho ou diretório + nome do arquivo (aqui, você pode escolher a extensão/tipo do arquivo que deseja criar) Elgin_LeMemoriasBinario("c:\ArqMFD.MFD", NumSerie, True) Elgin_LeMemoriasBinario("c:\ArqTDM.TDM", NumSerie, True) Sendo assim para Elgin a geração do arquivo está correto mas para Urano e Dataregis ainda não consegui gerar as memorias separadas pela dll, mesmo utilizando a regra destacada pela elgin.
  20. Daniel, até o momento a unica coisa que encontrei foi metodo de geração do Binário TDM parece que não tem comando independente de geração de cada Binário. o Metodo são os Mesmos utilizados nas Funções Arquivo_DLL já implementados.
  21. Juliomar, para a Daruma, Bematech, Epson, Sweda funciona perfeitamente, já apaguei os fontes do ACBr 2 vezes e fiz o checkout do zero e mesmo acessando a Unit pelo browser conforme link postado não consigo visualizar essas alterações nessa Unit. eu consigo gerar os Arquivos descriptografados da MFD e MF que é o ATOCOTEP1704 mas os Binários não são gerados, poderia anexar a Unit aki no Post para que eu possa verificar se é algo na que minha maquina não está atualizando, Tenho apenas 1 diretorio com os Fontes do ACBr.
  22. Daniel, na ER 02.01 pede para gerar o arquivo MF e MFD Binários, para atender o requisito foram adicionados as seguentes assinaturas. Procedure ArquivoMF_DLL(NomeArquivo: AnsiString); override ; Procedure ArquivoMFD_DLL(NomeArquivo: AnsiString); override ; pois esses arquivos não podem ter filtros devem ser gerados de toda a ECF, se olha na Unit o mesmo não possui as assinaturas, assim não consigo atender ao requisito para impressoras que usam o protocolo, como Elgin, Dataregis, Urano dentre outras, estou pesquisando para encontrar a manira de implementar, mas os manuais são oriveis não tem muita informações. sobre como fazer esse download.
  23. Bom Dia Daniel, Estou utilizando o novo Repositorio a muito tempo já, inclusive acabei de realizar um update "Completed: At revision: 7635" no repositorio. e os comandos de geração para os arquivos Binários para o protocolo FiscNET não existem. Para os Testes estou utilizando uma Urano como pode ser visto na mensagem.
  24. Bom Dia, Estou enfrentando o seguinte problema ArquivoMF_DLL não implementada para a Impressora: FiscNET: URANO - URANO/1FIT LOGGER e ArquivoMFD_DLL não implementada para a Impressora: FiscNET: URANO - URANO/1FIT LOGGER na hora de gerar os Arquivos Binários utilizando o protocolo FiscNET, gostaria de saber se alguem já o implementou e poderia compartilhar, pois atualizei meus Fontes do ACBr e os comandos realmente não estão implementados nas assinaturas utilizadas.
  25. Bom Dia, Estou executando o comando PafMF_LMFC_Cotepe1704(nCRZIni, nCRZFim, sArquivoTXTMF); passando para CRZIni = 1 e CRZFim = Ultima CRZ da ECF, ArquivoTXTMF = c:\checkout\MF.TXT quando executado na Com acima da COM5 Gera erros na Daruma, em conversa com o Suporte toda geração de arquivo só é realizada quando a ECF está na COM1 até a COM5. "Erro ao executar xrGerarRelatorio_ECF_Daruma. Cod.: -1 Erro do Método." e Como o comando gerar pela CRZ encontrei um erro no Classe da Daruma. De acordo com a documentação http://www.desenvolvedoresdaruma.com.br/home/downloads/Site_2011/Help/DarumaFrameworkHelpOnline/DarumaFramework/Impressora_Fiscal/Gera%C3%A7%C3%A3o_de_Arquivos/rGerarRelatorio_ECF_Daruma.htm o Metodo utilizado quando é por CRZ deve passar Apenas 4 Casas decimais e não 6 como está atualmente. Alteração ArquivoMFD_DLL case TipoContador of tpcCRZ: begin Tipo := 'CRZ'; Inicio := IntToStrZero(ContInicial, 4); Fim := IntToStrZero(ContFinal, 4); end; tpcCOO: begin Tipo := 'COO'; Inicio := IntToStrZero(ContInicial, 6); Fim := IntToStrZero(ContFinal, 6); end; else raise EACBrECFERRO.Create(ACBrStr('Tipo de contador desconhecido, tipos válidos: CRZ, COO')); end;
×
×
  • 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.