Ir para conteúdo
  • Cadastre-se

dev botao

Ato Cotepe 2.01 Requisito Vii Item 4 Arq Mf Binario


Roberio
  • Este tópico foi criado há 3600 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores

São diferentes:

  • Arquivo MF = Arquivo Memória Fiscal
  • Arquivo MFD = Arquivo Memória Fiscal Detalhe

 

Existem dois métodos no ACBrECF para gerar os arquivo:

  ACBrECF1.ArquivoMFD_DLL(<Path arquivo (ex: c:\minhapasta\arquivo_mfd.bin)>); // este é um overload de outro método já existente
  ACBrECF1.ArquivoMF_DLL(<Path arquivo(ex: c:\minhapasta\arquivo_mf.bin)>);

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Passei um tempo em outros projetos, e voltei agora para o paf, e ví que o método ArquivoMFD_DLL

com esse parâmetro(apenas para o path) não estava aparecendo, fui ver o por que, e ví que o projeto

ainda estava hospedado na SourceForge, deu certo, coloquei o caminho svn://svn.code.sf.net/p/acbr/code/trunk

e atualizou. Valeu Régys.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Só mais uma dúvida, não é mais necessário que o Arquivo MFD, tenham as opções por data ou COO, não é isso?

Ou seja, sempre vai gerar de todo o movimento. Certo?

 

 

Por enquanto é isso mesmo, não existe nada no ato cotepe ainda explicando, eles somente pedem para gerar o arquivo, se analisar, sempre a MF e MFD é baixada toda para a máquina para depois gerar o arquivo por período em cima dela, o que fizeram foi remover a última parte.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Por favor leia atentamente a lei, são duas coisas diferentes, uma é gerar o binário, outra é gerar o arquivo txt com mesmo nome e com a assinatura do binário dentro dele.,

Use o ACBrEAD para gerar o registro EAD e grave ele dentro de um arquivo com mesmo nome e extensão:

 

Segue exemplo:

var
  PathArquivo: String;
  EAD: String;
  Arquivo: TStringList;
begin
  Espera('Aguarde gerando arquivo MF...');
  try
    // path onde o arquivo vai ser gravado, acerte para sua necessidade
    PathArquivo := 'c:\dirapp\dirarquivos\' + FormatDateTime('"ArqMFD_"yyyymmddhhmmss".bin"', NOW);

    // gerar o arquivo no path montado acima
    ACBrECF.ArquivoMFD_DLL(PathArquivo);

    // calcular primeiro o EAD e guardar para usar depois
    EAD := ACBrEAD.CalcularEADArquivo(PathArquivo);

    // assinar o arquivo, feito a pedido da homologadora
    ACBrEAD.AssinarArquivoComEAD(PathArquivo, True);

    // criar o arquivo txt com o registro EAD dentro dele
    Arquivo := TStringList.Create;
    try
      Arquivo.Text := 'EAD' + EAD;
      Arquivo.SaveToFile(ChangeFileExt(PathArquivo, '.TXT'));
    finally
      Arquivo.Free;
    end;
  finally
    FecharEspera;
  end;
end;

Observação: Os homologadores da Polimig me pediram para assinar o arquivo binário criado também, por isso da redundância.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Essa confusão é normal, ao meu entendimento devemos gerar o arquivo binário é um arquivo txt de mesmo nome com a assinatura, mas alguns homologadores pediram para assinar o arquivo binário também, particularmente acho isso errado pois mesmo removendo o EAD o arquivo vai ser inutilizado por ser binário.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Passei um tempo em outros projetos, e voltei agora para o paf, e ví que o método ArquivoMFD_DLL

com esse parâmetro(apenas para o path) não estava aparecendo, fui ver o por que, e ví que o projeto

ainda estava hospedado na SourceForge, deu certo, coloquei o caminho svn://svn.code.sf.net/p/acbr/code/trunk

e atualizou. Valeu Régys.

 

Anderson, não estou conseguindo obter os fontes atualizados. Você disse que setou o repositório como "svn://svn.code.sf.net/p/acbr/code/trunk" porém não tem o ACBrFramework nesse repositório, tive que subir um nível, indicando o repositório apenas como "svn://svn.code.sf.net/p/acbr/code/". Dessa forma obtive os seguintes diretórios: 

 - ACBrFramework

 - branches

 - tags

 - tools

 - trunk

 

Porém o fonte do framework que está no diretório ACBrFramework/ACBrFramework não contém essa atualização do "ECF_ArquivoMFD_DLL(const ecfHandle: PECFHandle; const path : pChar)" e sim uma função que pede mundos e fundos para gerar o binário (ECF_ArquivoMFD_DLL(const ecfHandle: PECFHandle; const DataInicial, DataFinal: double; const Arquivo : pChar ;const Documentos: array of Integer; const QTD_DOC, Finalidade : Integer)) 

Link para o comentário
Compartilhar em outros sites

Em que parte do projeto está a implementação das chamadas à dll's nativas das impressoras? Como faço para gerar a dll pelo Lazarus? Porque o meu PAF-ECF é em Java mas de repente posso editar o framework aqui e gerar a dll (o que importa para o meu PAF). Vou homologar com uma Epson e as funções da dll do fabricante são:

EPSON_Obter_Arquivo_Binario_MF(String caminho);

EPSON_Obter_Arquivo_Binario_MFD(String caminho);

Link para o comentário
Compartilhar em outros sites

Olá Régys e demais colegas, estou implementando a er 2.01 e mesmo lendo o tópico não consegui fazer funcionar, uso ecf daruma fs 700 mach2 e estou com esse código:

Var CaminhoArquivo : String;

begin

    CaminhoArquivo := ExtractFilePath(Application.ExeName)+'Arquivos PAF\ARQUIVO MF '+SoNumeros(FormatDateTime('dd/mm/yyyy',Date)) + SoNumeros(TimeTostr(Time))+'.txt';
    ACBrECF1.ArquivoMFD_DLL(CaminhoArquivo);

Com esse código acima retorna a seguinte mensagem:

Procedure: ArquivoMFD_DLL não implementada para a Impressora: Daruma

 

Se mudar a chamada ao acbrecf conforme abaixo:

ACBrECF1.ArquivoMF_DLL(CaminhoArquivo);

Retorna....:
Erro ao executar rEfetuarDownloadMF_ECF_Daruma.

Cod.: -1 Erro do Método.

 

Estou com o acbr atualizado semana passada, mesmo assim já estou atualizando novamente, pelo requisito deve ser o segundo comando, mas tem essa resposta do método.

Obrigado desde já.

Rafa
 

Link para o comentário
Compartilhar em outros sites

Aproveitando o embalo, apaguei a pasta fontes do acbr pra garantir, baixei ela novamente, do zero, ficou tudo novo, recompilei, atualizei as dlls da daruma na pasta do aplicativo, na pasta system 32, e syswow64 (uso server 2008 r2 64bits) mesmo assim não funcionou, acessei www.desenvolvedoresdaruma.com.br e baixei o exemplo da daruma em delphi xe com fontes, abri o fonte e ví que está lá o seguinte comando: //R_FISCAL_rGerarMF_ECF_Daruma.show();  hoje pela manhã vou ligar na daruma e ver se eles dão uma ajudinha e posto aqui a resposta deles

Isso significa que nem a dll está implementada pelo que vejo, então como os nobres coletas estão fazendo pra atender esse requisito?

Obrigado desde já a todos que ajudarem.

Rafa

Link para o comentário
Compartilhar em outros sites

Pessoal, conversei bastante com o suporte daruma, eles me passaram que tem já implementado a rotina dentro da dll, a Isadora me passou a dll atualizada com data do dia 26/08/2013, baixei ontem a noite o acbr novo e lá está com data de 04/06/2013, acredito que tenha que atualizar no repositório do acbr, fiz o teste com o aplicativo da daruma e funcionou, gerou o arquivo mf tanto binario como txt também. A rotina passada é a seguinte:

SRelatorio := 'MF'

STipo := DATAM

SInicio := '01/03/2014'

SFim := '08/03/2014'

Int_Retorno := rGerarRelatorio_ECF_Daruma(sRelatorio,sTipo,sInicio,sFim);

 

Gostaria de saber como anda essa rotina com as outras ecf's e qual a ideia pra fazer funcionar.

Rafa

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Moderadores

Olá,

 

A DLL da bematech já disponibiliza a função para gerar o Arq.MF e Arq.MDF em binário?

Pois só consegui gerá-los no formato texto...

 

O Arq.MF e Arq.MFD são gerados sempre binários, por favor leia todo o post, isso já foi discutido.

Inclusive já foram mostrados os comandos para a geração de ambos os menus fiscais.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • 3 meses depois ...

Olá,

 

Verificando o forum, não encontrei uma maneira para gerar o ArqMF e ArqMFD via ACBr em formato legível.

Compreendo que hoje gera o binário dos arquivos e um TXT com a assinatura.

Mas na UnoChapecó, os homologadores estão solicitando os dois arquivos, o binário e o em TXT, de forma legível e assinado.

 

Alguém conhece o método para extração destas informações?

Desde já obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

 

4. “Arq. MF”, para comandar a gravação de arquivo eletrônico no formato binário com dados extraídos da MF do ECF, no mesmo subdiretório onde está instalado o PAF-ECF, devendo o programa aplicativo informar o local da gravação e assiná-lo digitalmente criando um arquivo TXT com mesmo nome contendo uma linha com o registro tipo EAD especificado no requisito XXXI. Observação: Para atender necessidades do estabelecimento usuário, o PAF-ECF poderá conter rotina destinada a comandar a conversão do arquivo binário em formato texto (TXT).

 

5. “Arq. MFD”, para comandar a gravação de arquivo eletrônico no formato binário com dados extraídos da MFD do ECF, no mesmo subdiretório onde está instalado o PAF-ECF, devendo o programa aplicativo informar o local da gravação e assiná-lo digitalmente criando um arquivo TXT com mesmo nome contendo uma linha com o registro tipo EAD especificado no requisito XXXI. Observação: Para atender necessidades do estabelecimento usuário, o PAF-ECF poderá conter rotina destinada a comandar a conversão do arquivo binário em formato texto (TXT).

 

 

Veja, primeiramente é opcional, eles não podem te obrigar, você pode ou não implementar.

 

Não existe arquivo MF e MFD de forma legível, somente binário.

 

Existe o espelho da MFD, que nada mais é do que o espelho do que foi impresso e pode ser gerado pelo comando PafMF_EspelhoMFD.

Existe também o comando PafMF_Cotepe1704 que gera o arquivo com toda a movimentação da impressora fiscal para o período informado.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Então Régys,

 

Concordo com você que não podem obrigar, mas o argumento é que já tiveram problemas com outras empresas,

por ter feito somente os arquivos em binário.

 

Conforme diz o texto é "opcional" efetuar a conversão, mas não é o entendido por deles.

 

Sendo que em outro software que homologuei a 1 semana, tive que gerar os dois arquivos.

Só que na quele software, não uso ACBr.

 

Vou efetuar testes com as funções que você postou. 

 

Obrigado pelo retorno.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Utiliza-se o eECFc para validar a assinatura do arquivo, o problema é o arquivo binário, o texto diz claramente que se deve gerar ele e um arquivo txt a parte contendo a assinatura, o eECFc não consegue validar dessa forma, e assinar o arquivo binário torna-o inválido, então o que o pessoal que homologa geralmente faz e validar todos os arquivos primeiro e deixar o binário por último, se você passar em todos está correto, se não, você já é barrado no primeiro erro.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Bom dia,

 

Régys,

 

Verificando a função que você postou, PafMF_Cotepe1704, não localizei porem encontrei a: PafMF_MFD_Cotepe1704

Só que como o nome diz, ele gera o arquivo como MFD, e não como MF. Conforme texto abaixo.

 

Outa coisa, verifiquei a função ArquivoMF_DLL, porem o arquivo gerado vem com caracteres especiais.

 

Gerando o arquivo via DLL, na verdade convertendo ele, o formato vem correto:

 

E01BE050875610000029413 ECF-IF BEMATECH            MP-2100 TH FI       01.01.00  20081216154806BE011111111111111MF 000001000422200001012014051601.01.43AC1704 01.00.00
E02BE050875610000029413 MP-2100 TH FI       1111111111111111111111111111                                                                                                                                                                2009022011401300000100000000005852775901
E05BE050875610000029413 MP-2100 TH FI       1111111111111120090220110150QWERTYUIOP
E06BE050875610000029413 MP-2100 TH FI       1111111111111120090220110150 R  
E08BE050875610000029413 MP-2100 TH FI       1111111111111167600812181092      
E09BE050875610000029413 MP-2100 TH FI       00000120090220114013S
 

 

Você sabe me dizer se tem algum meio de fazer a conversão do binário para o TXT como a DLL da bema 

faz.?

 

 

Obrigado desde já.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia

Não existe como a gente fazer pois é algo especifico do fabricante, você tem que alterar o método que é utilizado para gerar o MF e MFD e depois chamar a conversão com a dll , você tem que mapear a função da dll no load delas dentro da classe e depois só retornar o nome dos dois arquivos gerados!

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3600 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.