Impressora Fiscal
Moderador: Moderadores
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Impressora Fiscal
Pessoal, bom dia!
Tenho um sistema em clipper ERP e agora alguns clientes vão precisar colocar impressora fiscal. Porém nunca desenvolvi nada para impresso fiscal.
Preciso começar do zero!
Alguém pode me dar uma ajuda. Além do desenvolvimento, preciso saber também com relação ao fisco. Preciso de autorização da Delegacia Fiscal?
Quem poder me ajudar fico grato!
Tenho um sistema em clipper ERP e agora alguns clientes vão precisar colocar impressora fiscal. Porém nunca desenvolvi nada para impresso fiscal.
Preciso começar do zero!
Alguém pode me dar uma ajuda. Além do desenvolvimento, preciso saber também com relação ao fisco. Preciso de autorização da Delegacia Fiscal?
Quem poder me ajudar fico grato!
Piter Galdiano
Programador Clipper
Programador Clipper
Bom, com relação ao fisco, aconselho o amigo a procurar o contador do seu cliente. Não que aqui não consiga informações confiáveis. Nem é esse o caso. É que se o contador informar algo errado, a bomba explodirá na mão dele e não na sua.
Com relação à impressora em si, acho bem provável que ela se comunique via serial. Se for assim, certamento você cairá sobre a CATools que tem se mostrado muito boa pra esse tipo de comunicação. E é simples também. Mas dê uma busca no fórum. Por esses dias já conversamos muito por aqui sobre comunicação serial.
Com relação à impressora em si, acho bem provável que ela se comunique via serial. Se for assim, certamento você cairá sobre a CATools que tem se mostrado muito boa pra esse tipo de comunicação. E é simples também. Mas dê uma busca no fórum. Por esses dias já conversamos muito por aqui sobre comunicação serial.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Dércio_Luiz_Zanatta
- Usuário Nível 3

- Mensagens: 153
- Registrado em: 11 Jan 2006 15:37
- Localização: Ibirubá - RS
Caro amigo..
Impressora fiscal é algo muito simples. Não tem nada de complicado.
Todas as marcas de ecf possuem um suporte muito bom para desenvolvedor. Sugiro que vc acesse a página do fabricante para esclarecer suas dúvidas. Tenho certeza que, seja qual for o fabricante, vc consigirá desenvolver sem problemas.
Mas se mesmo assim tiver alguma dúvida, prende o grito ai..
Eu já desenvolvi para quase todas as marcas de Ecf existentes.. Posso te ajudar no que estiver ao meu alcance...
Um abraço
Impressora fiscal é algo muito simples. Não tem nada de complicado.
Todas as marcas de ecf possuem um suporte muito bom para desenvolvedor. Sugiro que vc acesse a página do fabricante para esclarecer suas dúvidas. Tenho certeza que, seja qual for o fabricante, vc consigirá desenvolver sem problemas.
Mas se mesmo assim tiver alguma dúvida, prende o grito ai..
Eu já desenvolvi para quase todas as marcas de Ecf existentes.. Posso te ajudar no que estiver ao meu alcance...
Um abraço
Boa noite,
A ECF usa porta serial, quanto ao fisco cada estado tem que ter uma autorização para aquele estado, que difere de um estado para outro, solicite informação no fisco do seu estado.
Daruma pode ser usado o OBServer pelo windows criando TXT para enviar e receber resposta da ECF ou conexão direta pela serial.
Bematech - pode usar a DLL no windows criando TXT para enviar e receber resposta da ECF ou BEMAFI.EXE pelo DOS.
Cada fabricante tem suporte no seu site, existem outros como SCHALTER/YANCO/CORICO/SWEDA e muitas outras que não lembra agora
Daruma - http://www.desenvolvedoresdaruma.com.br ... fault.html
Bematech - http://www.bematech.com.br/suporte/dwn_fisc.asp
qualquer duvida é so postar
--------------------------------------
o sucesso é construido a noite
A ECF usa porta serial, quanto ao fisco cada estado tem que ter uma autorização para aquele estado, que difere de um estado para outro, solicite informação no fisco do seu estado.
Daruma pode ser usado o OBServer pelo windows criando TXT para enviar e receber resposta da ECF ou conexão direta pela serial.
Bematech - pode usar a DLL no windows criando TXT para enviar e receber resposta da ECF ou BEMAFI.EXE pelo DOS.
Cada fabricante tem suporte no seu site, existem outros como SCHALTER/YANCO/CORICO/SWEDA e muitas outras que não lembra agora
Daruma - http://www.desenvolvedoresdaruma.com.br ... fault.html
Bematech - http://www.bematech.com.br/suporte/dwn_fisc.asp
qualquer duvida é so postar
--------------------------------------
o sucesso é construido a noite
Impressora fiscal - ECF
Caro amigo, sou lacrador de ECF e todos deram respostas corretas principalmente a do nosso amigo dbsh. Realmente cada estado trata com particularidades diferentes, acredite se quiser o estado de S.P. ainda é o mais maleável. Realmente é fácil porém um tanto trabalhos desenvolver um bom sistema integrado com ECF.
Aqui fica uma dica para todos, procurem saber sobre a portaria CAT52, ela diz que devemos guardar as transações feitas pelo ECF em mídia digital não regravavel em um formato específico.
Um abraço a todos.
Aqui fica uma dica para todos, procurem saber sobre a portaria CAT52, ela diz que devemos guardar as transações feitas pelo ECF em mídia digital não regravavel em um formato específico.
Um abraço a todos.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
A Sweda tem um tal de dos2win também.dbsh escreveu:Daruma pode ser usado o OBServer pelo windows criando TXT para enviar e receber resposta da ECF ou conexão direta pela serial.
Bematech - pode usar a DLL no windows criando TXT para enviar e receber resposta da ECF ou BEMAFI.EXE pelo DOS.
Todos funcionam de forma parecida: uma porcaria.
Use comunicação direta e se valha do fato de você estar no DOS, por que no Windows não é possível. Se quiser usar DLL, mude a plataforma do programa.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Re: Impressora fiscal - ECF
Existe um tópico chamado "cupom fiscal" tratando essencialmente disso.Bisteca escreveu:Aqui fica uma dica para todos, procurem saber sobre a portaria CAT52, ela diz que devemos guardar as transações feitas pelo ECF em mídia digital não regravavel em um formato específico.
Um abraço a todos.
Parace mais difícil do que é. Quem ja tem o costume de guardar tudo que rola no sistema, não vai ter trabalho. O mais chatinho é a assinatura, que dado o tamanho da exigênica, num é nada.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Bota chato nisso. E ainda ter que ficar esperando a chave pública da receita. Não encontrei nenhum outro programa (linha de comando) pra testar a RSA.O mais chatinho é a assinatura
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
pedro.carvalho
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 07 Ago 2007 16:23
- Localização: vitoria-es
pessoal, aproveitando o topico. essa eh minha primeira mensagem.
estou numa sinuca de bico aqui, nunca programei mas estou estudando para, tenho algum conhecimento em dot net e java mas nao conheco nada das funcoes do clipper.
no entanto o pessoal largou uma ardua tarefa (aka bomba) na minha mao.
e o lance é o seguinte:
- o preco da vaca eh 120,
- mas tem um porém, 20 nao eh 100
brincadeiras a parte, o codigo diz que para abrir uma cupom fiscal eu faço isso:
ElseIf WCFG_IMPF == "2" // Bematech
mabre :=chr(27)+chr(251)+"00|"+chr(27)
mRet := _Envia(mAbre,1)
ok esse eh o codigo para impressora bematech algum modelo que eu nao sei.
mas para o modelo que eu quero, bema MP-2100 TH FI , o BEMAFI32.chm diz o seguinte:
Bematech_FI_AbreCupom
Exemplo:
// Exemplo em Delphi
cCPF := '11.111.111-11';
iRetorno := Bematech_FI_AbreCupom( pchar( cCPF ) );
ou
iRetorno := Bematech_FI_AbreCupom( pchar( '' ) );
como que eu posso adequar isso ao meu codigo ?
pensei em
ElseIf WCFG_IMPF == "99" // Bematech mp 2100 th fi
mabre :=Bematech_FI_AbreCupom(chr(27)+chr(251)+"00|"+chr(27))
mRet := _Envia(mAbre,1)
mas depois vi que nao da pra importar a dll no sistema..... entao........
eh, conto com a boa vontade de voces.
obrigado.
estou numa sinuca de bico aqui, nunca programei mas estou estudando para, tenho algum conhecimento em dot net e java mas nao conheco nada das funcoes do clipper.
no entanto o pessoal largou uma ardua tarefa (aka bomba) na minha mao.
e o lance é o seguinte:
- o preco da vaca eh 120,
- mas tem um porém, 20 nao eh 100
brincadeiras a parte, o codigo diz que para abrir uma cupom fiscal eu faço isso:
ElseIf WCFG_IMPF == "2" // Bematech
mabre :=chr(27)+chr(251)+"00|"+chr(27)
mRet := _Envia(mAbre,1)
ok esse eh o codigo para impressora bematech algum modelo que eu nao sei.
mas para o modelo que eu quero, bema MP-2100 TH FI , o BEMAFI32.chm diz o seguinte:
Bematech_FI_AbreCupom
Exemplo:
// Exemplo em Delphi
cCPF := '11.111.111-11';
iRetorno := Bematech_FI_AbreCupom( pchar( cCPF ) );
ou
iRetorno := Bematech_FI_AbreCupom( pchar( '' ) );
como que eu posso adequar isso ao meu codigo ?
pensei em
ElseIf WCFG_IMPF == "99" // Bematech mp 2100 th fi
mabre :=Bematech_FI_AbreCupom(chr(27)+chr(251)+"00|"+chr(27))
mRet := _Envia(mAbre,1)
mas depois vi que nao da pra importar a dll no sistema..... entao........
eh, conto com a boa vontade de voces.
obrigado.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Cara,
A lógica do ELSEIF está correta.
Já quanto ao CHM, ele só cobre o desenvolvimento via DLL, e no seu caso você está precisando enviar via porta serial com comunicação direta.
O comndo em sí eu num tenho como te passar agora, mas posso garantir que é muito simples e bem parecido com o outro modelo. Me parece que na Bematech tem um byte auxiliar que é o dígito menos significativo da soma dos dígitos dos dois últimos caracteres (ACHO que é isso).
Não sei se fui claro. Ligue no suporte da bematech que eles te enviam por e-mail um PDF que explica como montar o comando. Se não conseguir, qualquer coisa amanhã com mais calma tento te passar essa string completa.
Mas o esquema é esse mesmo, você vai precisar passar os chr(27)+chr(xx)+chr(yy) para esta função _send que já existe no seu código.
Falou!
A lógica do ELSEIF está correta.
Já quanto ao CHM, ele só cobre o desenvolvimento via DLL, e no seu caso você está precisando enviar via porta serial com comunicação direta.
O comndo em sí eu num tenho como te passar agora, mas posso garantir que é muito simples e bem parecido com o outro modelo. Me parece que na Bematech tem um byte auxiliar que é o dígito menos significativo da soma dos dígitos dos dois últimos caracteres (ACHO que é isso).
Não sei se fui claro. Ligue no suporte da bematech que eles te enviam por e-mail um PDF que explica como montar o comando. Se não conseguir, qualquer coisa amanhã com mais calma tento te passar essa string completa.
Mas o esquema é esse mesmo, você vai precisar passar os chr(27)+chr(xx)+chr(yy) para esta função _send que já existe no seu código.
Falou!
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
-
pedro.carvalho
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 07 Ago 2007 16:23
- Localização: vitoria-es
Boa Noite,
Extrai de parte do meu sistema de ERP em Clipper, não deu para testar, qualquer problema e so postar, talves demore um pouco para responder, este exemplo serve para ter uma ideia de como funciona a ECF Bematech com bemafi.exe
Exemplo de como usar:
Extrai de parte do meu sistema de ERP em Clipper, não deu para testar, qualquer problema e so postar, talves demore um pouco para responder, este exemplo serve para ter uma ideia de como funciona a ECF Bematech com bemafi.exe
Exemplo de como usar:
Código: Selecionar todos
Function Test()
MP_Send( 6 ) //leitura X
MP_Send( 5 [, "data e hora"] ) //redução Z, opcional apenas para matricial
MP_Send( 8, "datainicial e datafinal" ) //leitura memoria fiscal
MP_Send( 0 ) abrir cupom fiscal
MP_Send( 22, "25" ) //abre gaveta
RETU .T.
Código: Selecionar todos
STATIC UltRetorno := ""
STATIC UltStatus := ""
STATIC Erro := .f.
FUNCTION MP_Send( cCommand, cPar )
LOCA cBuffers := ""
IF cCommand = NIL
cCommand := ""
ENDIF
IF VALTYPE( cCommand ) = "N"
cCommand := STRZERO( cCommand, IIF( cCommand > 99, 3, 2 ) )
ENDIF
cBuffers := CHR( 27 ) + CHR( 251 ) + cCommand + '|' + cPar ;
+ IIF( EMPTY( cPar ), '', '|' ) + CHR( 27 )
/* evia sequencia de bytes para impressora */
RETU MP_Write( cBuffers )
FUNCTION MP_Write( Comando )
LOCAL nHandle
RUN( "del bemafi.cmd >NUL" )
RUN( "del status.txt >NUL" )
RUN( "del retorno.txt >NUL" )
nHandle := FCREATE( "BEMAFI.CMD" )
FWRITE( nHandle, @Comando, LEN( Comando ) )
FCLOSE( nHandle )
Run( "bemafi.exe" )
//SwpRunCmd( "bemafi.exe" )
//pega o retorno
IF !MP_Read()
RETU .F.
ENDIF
RETU !MP_Erro()
FUNCTION MP_Read()
LOCAL nHandle := 0
LOCAL cStatus := ""
LOCAL xx := 0
LOCAL nTam := 0
LOCAL Retorno := ""
Erro := .F.
UltStatus := ""
UltRetorno := ""
IF !FILE( "STATUS.TXT" )
Erro := .T.
RETU .F.
ENDIF
IF FILE( "RETORNO.TXT" ) //retorna informação solicitada
nHandle := FOPEN( "RETORNO.TXT" )
nTam := FSEEK( nHandle, 0, 2 )
FSEEK( nHandle, 0, 0 )
Retorno := SPACE( nTam )
FREAD( nHandle, @Retorno, nTam )
FCLOSE( nHandle )
UltRetorno := Retorno
ENDIF
nHandle := FOPEN( "STATUS.TXT" )
nTam := FSEEK( nHandle, 0, 2 )
FSEEK( nHandle, 0, 0 )
cStatus := SPACE( nTam )
FREAD( nHandle, @cStatus, nTam )
FCLOSE( nHandle )
UltStatus := cStatus
RETU .T.
FUNCTION MP_Erro()
LOCA Bit_Ack := 0
LOCA Bit_St1 := 0
LOCA Bit_St2 := 0
LOCA Bit_Flag := 0
LOCA lErro := .t.
IF Empty(UltStatus)
RETU .T.
ENDIF
Bit_Ack := VAL( SUBSTR( UltStatus, 1, 3 ) )
//Tratamento do Ack ou NAk
IF Bit_ACK = 6
Bit_St1 := VAL( SUBSTR( UltStatus, 4, 3 ) )
BIt_St2 := VAL( SUBSTR( UltStatus, 7, 3 ) )
BIt_Flag := VAL( SUBSTR( UltStatus, 10, 3 ) )
lErro := ( EMPTY( Bit_St1 ) .or. Bit_St1 = 2 .or. Bit_St1 = 64 )
lErro := lErro .and. EMPTY( Bit_St2 )
lErro := lErro .and. ( EMPTY( Bit_Flag ) .or. Bit_Flag <> 128 )
lErro := !lErro
ENDIF
RETURN lErro
Function MP_GetErro()
RETU Erro
Function MP_GetRetorno()
RETU UltRetorno
Function MP_GetStatus()
RETU UltStatus
