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. 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
  2. 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.
  3. Daniel, irei realizar a impressão pelo demo que você passou e assim que o cliente me encaminha as impressões anexo aqui.
  4. 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.
  5. 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
  6. 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
  7. 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
  8. Boa Tarde Daniel, realizei as alterações no método como solicitado segue em anexo. ACBrSerial.7z
  9. 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.
  10. 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.
  11. 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
  12. Infelizmente não tenho como anexar toda a Unit, pois tenho alterações especificas pra meu sistema.
  13. 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.
  14. 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;
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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;
  22. Daniel, os arquivos eram deletados antes da chamada do metodo, então acho que essa possibilidade é excluida. Uma ideia é solicitar ao pessoal que tenha epson para realizarem os teste, para Maiores detalhes o Ambiente utilizado foi Windows 7 64bits, + ACBr Atualizado + DLL interfaceepson_v3_5_0_win32 pois a aplicação é 32.
  23. Boa Tarde Daniel, Da forma que estava o metodo ao chamar a função ACBrECF1.ArquivoMF_DLL(c:\PAF\arquivo_mf.bin); retornava erro de comunicação, ai verificando outros comandos na propria classe vi que ele cria um arquivo temporario, realizei a implementação usando o arquivo temporario e não ocorreu mais erro de comunicação, fiz o teste usando o proprio demo do ACBrECF o qual adicionei o comando. Agora não sei explicar qual a diferença entre eles mas sei que funcionou perfeitamente sem erros, o mesmo ocorria com o comando PafMF_ArqMF.
  24. Seque Anexo Arquivo com a Correção da Geração do Arquivo Binario MF. ACBrECFEpson.zip
  25. Sim Regys, pelo que testei na Daruma - Bematech e Urano as mesmas geram os arquivos normalmente quando passo apenas uma barra no caminho do arquivo.
×
×
  • 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.