FórumWeb: Acbrrfd Disponível No Cvs - FórumWeb

Ir para


  • (6 Páginas)
  • +
  • 1
  • 2
  • 3
  • Último »
  • Novo tópico
  • Responder

Acbrrfd Disponível No Cvs Avaliar tópico: ***** 1 Votos

#1 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 06 August 2007 - 06:07 PM

Olá pessoal,

Acabo de enviar para o CVS as modificações para a inclusão do novo componente ACBrRFD...

O componente ACBrRFD visa atender a exigência do Fisco de SP instituida com a CAT 52/07, que determina que todas as impressoras sem MFD devem criar registros de LOG (no formato semelhante ao da MFD) no disco da máquina...

O texto da CAT 52/07 e 60/07 (correção da 52) estão disponíveis na pasta ACBr\tools\RFD ( o diretório tools só é disponível para quem usa o CVS )

Para usar o componente ACBrRFD é necessário liga-lo a um ACBrECF e configurar os parâmetros com os dados da Sw.House no próprio componente... além do diretório para criação dos aquivos da RFD. Feito isso, quando o ACBrECF for ativado ele tentará ativar o componente ACBrRFD.

No primeiro processo de ativação, o diretório especificado no ACBrRFD será criado (se necessário), e tb será criado um sub-diretório com os 8 últimos dígitos do numero de Série do ECF. No diretório do ECF será criado o sub-diretório "LOG" e um subdiretório para cada mes que o ECF trabalhar...

Dentro do diretório LOG, são criados os arquivos de log do dia de movimento, que serão usados na geração final do arquivo RFD (que ocorre durante a ReduçãoZ)... O arquivo RFD será criado na pasta do Mes.

Para o ACBrRFD conseguir gerar o arquivo corretamente é necessário informar alguns dados do Contribuinte e do ECF que será controlado... Para isso, capture a Leitura da Memoria fiscal (pode ser de 1 dia apenas) e observe os dados necessários... Edite o arquivo ACBrRFD.INI dentro da pasta do ECF...

Após detectar a Marca e Modelo correto do ECF, abra o arquivo RFDID.INI e verifique os valores disponíveis, ex: BE6 = Bematech MP20 FI-II

Exemplo da estrutura dos diretórios:
C:\SuaApp
C:\SuaApp\RFD ( diretório onde fica o RFDID.INI )
C:\SuaApp\RFD\8111111.111 ( diretorio onde fica o ACBrRFD.INI )
C:\SuaApp\RFD\8111111.111\log ( arquivos de log diário )
C:\SuaApp\RFD\8111111.111\200708 ( Arquivos RFD do mes 08/2007 )
C:\SuaApp\RFD\8111111.111\200708\BE611111.787 -> Arquivo RFD de um dia

Os dados do contribuinte (Razao Social, Endereço, CNPJ, IE) podem ser detectados no cabeçalho impresso pelo ECF... O ACBrRFD tenta detectar o CNPJ e IE em alguns modelos de ECF, e se tiver sucesso já grava-os no ACBrRFD.INI

Os dados do usuário atual do ECF podem ser encontrados na Leitura da Memória Fiscal, logo após o cabeçalho do ECF na seção USUÁRIOS... Use os dados do último usuário cadastrado

Exemplo:
			  CRETTE MAQUINAS - ME			 
	PRACA CARLOS DA SILVA,34 - SALA 01 - CENTRO	 ---+
		CEP 18270-410		   MARAPE/SP			  +>-- Dados do Usuário
CNPJ 05.891.024/0001-43	  IE: 677.167.516.165	---+
06/08/07 18:32:15	  GNF:000024	 COO:000063
		   LEITURA DA MEMàRIA FISCAL			
PERÖODO DE 01/08/07  ate 06/08/07 
Contador de Rein¡cio						0005
Contador de Redu‡äes						1098
--------------REINÖCIO DE OPERA€ÇO--------------
CRO	DATA	HORA		  CRO	DATA	HORA
0001 30/08/01 18:11		  0002 30/08/01 18:11
0003 22/02/02 17:39		  0004 09/12/03 22:47
0005 08/12/06 16:23		  
--------------------USUµRIOS--------------------
Usu rio:0001  CRO:0001			30/08/01 18:11
CNPJ MODO TREINAMENTO		IE: XXXXXXXXXXXXXXX
IM: YYYYYYYYYYYYYYY
GT:										 8,00
Usu rio:0002  CRO:0003			22/02/02 17:39	  ---+
CNPJ 02.491.004/0001-45	  IE: 687.063.316.115		 +>--- Dados do Cadastro do usuário
GT:								   456.065,34	  ---+
----------------REDU€åES DIµRIAS----------------
		   Modo Fiscal - Usu rio:0002		   
CRZ  CRO	DATA   HORA			VENDA BRUTA
a=acr‚scimo iof,  c=cancelamentos, d=descontos
------------------------------------------------
			 ** C‚lula Inv lida **			  
Total do Per¡odo							0,00
------------------------------------------------
Mem¢ria Restante: 1174 dias
------------------------------------------------
19JEJ9O2 5JQKHDLT PTWV7MON 19JED6G1 5JHCD7AMJKUG
BEMATECH   MP-20 FI II ECF-IF		   VER03.30
LJ:0001 ECF:0001			 FAB:4708010810098
06/08/07 18:32:15		DDDDDDDDDDDJEIICHE BBRR
================================================


Na leitura de memoria fiscal acima, temos como dados do usuário no arquivo ACBrRFD.INI:
[ECF]
DiaMov=20070807
CROAtual=5
RFDID=BE6
VersaoAtoCotepe=PC5207 01.00.00

[CONTRIBUINTE]
Nome=CRETTE MAQUINAS - ME
CNPJ=05891024000143
IE=677167516165
Endereco=PRACA CARLOS DA SILVA,34 - SALA 01 - CENTRO
NumUsuario=0002
DataHoraCadastro=200202221739
CROCadastro=0003
GTCadastro=456065,34


Observe que campos Data (como DataHoraCadastro) devem ser cadastrados no formato YYYYMMDD e DataHora no formato: YYYYMMDDHHNNSS


#2 Membro offline   Rodrigo Ramos

  • Membro - Junior 1
  • PipPipPipPipPip
  • Grupo: Membros
  • Posts: 252
  • Cadastrado: 15-March 07

Postou 07 August 2007 - 08:19 AM

Parabens Daniel ...


#3 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 07 August 2007 - 09:15 AM

Sobre a criptografia

O ACBrRFD usa o programa de linha de comando OpenSSL para gerar o registro EAD (assinatura digital) do arquivo RFD... Para a assintaura digital precisamos de uma chave RSA de 1024 bytes...

A OpenSSL já é "nativa" na maioria das distribuições Linux.. No Windows, podemos instalar os binários do OpenSSL

NOTA: openssl.exe e suas DLLs (libssl32.dll, ssleay32.dll) precisam estar no PATH da máquina ou no mesmo diretório do seu programa

Seguindo as dicas desse site podemos rodar o comando:

openssl genrsa -out mykey.pem 1024
para gerar uma chave Privada (chamada aqui de mykey.pem)
Exemplo de chave gerada
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC1wfMDmTNXVboEGujMGi2iVoLGgMf2PnvKI0szLgm6AkCgAIrm
vQucFtsrqqieTDqGCiPiqO+ZPet+4vbe8pwJa7/o8bKoL5/Eg4Oyt0QTdOYZg+4h
g53VUtVn2mJupN9P8FCrFuKcP1sdg84+6p3mNnnqHHv/dEPouLbk3lov8wIDAQAB
AoGBAKwIDMllIdER1OS5y4oTZQn4NANKNPl/Ho+uZCjm9FHYe+51VQMb/3cXsw5b
kwlxQRtJUbnhCBbVIqaQj/VpUAGJWfHdjSaZ14dxrz82z+sMZRYq72A9C8q2wpJ9
fBCQdJDN6D2+KQp1/YZEhVWFa7dlfkQ7JO24bcyxum374pwRAkEA55zYN3GRWkZG
sKNRyugDMH7F7HJUm32ROHCAB0nIxewZ1E5YaL8zSv1jNOl+sI4eJxe8M6/vwZRO
8fm5GI/+RwJBAMjlQPuha/yOTdJBK55FfT6RQ104UYxEMFDZZfrFdHfYAk4OtJz1
V2kP7p0xfSJ1SWNcoB+VNZ6uGAQac5CyevUCQGgOq4WdXHR2hmPtvF2xB13OVxX3
99M0Av6cbKjZmX5yqNgdqtLEtELIvL2U+fpQn3No0oFWVh1eiGlmjKZgaxkCQCol
VmWz7si0PgVPIMx6fZUDuqMy7oDDyXMcuLVMeWuvCITBtwh6vBTRf9jAiiURgAz1
YK5fijk5AtbRic8gcoUCQQC1QERrFlQ4VU1YJ5/3XSbK8XBng4JKiXzDpGMVYdmk
4wYz15MOPIWrj9t1NrcDKgTKHw2UDkqGkOI4XOAnFW/h
-----END RSA PRIVATE KEY-----


Não divulgue para ninguém a sua chave Privada, caso contrário outras pessoas poderão "assinar" arquivos RFD como se fosse vc.. O ACBrRFD possui uma chave Privada interna (constante cRFDRSAKey), e ela será usada se vc não especificar nenhuma chave privada no método OnGetKeyRSA (exemplo abaixo)... Porém, por motivos de segurança é altamente recomendado que vc especifique a sua chave usando o evento OnGetKeyRSA

Para gerarmos uma chave pública baseado em uma chave Privada

openssl rsa -in mykey.pem -pubout -out pubkey.pem

( assume que a sua chave privada está em "mykey.pem", gera chave pública no arquivo "pubkey.pem" )
Exemplo de uma chave pública:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1wfMDmTNXVboEGujMGi2iVoLG
gMf2PnvKI0szLgm6AkCgAIrmvQucFtsrqqieTDqGCiPiqO+ZPet+4vbe8pwJa7/o
8bKoL5/Eg4Oyt0QTdOYZg+4hg53VUtVn2mJupN9P8FCrFuKcP1sdg84+6p3mNnnq
HHv/dEPouLbk3lov8wIDAQAB
-----END PUBLIC KEY-----

Vc pode divulgar a sua chave pública para todos (aka o fisco)... e com ela, é possível verificar se o arquivo está realmente assinado com a sua chave privada... ou seja, é possível provar se o arquivo foi ou não gerado pelo seu programa...


Exemplo de como especificar a sua própria chave ao ACBrRFD. Programa o evento OnGetKeyRSA e atribua a variável PrivateKey a String contendo a sua chave.
procedure TForm1.ACBrRFD1GetKeyRSA(var PrivateKey_RSA: String);
begin
  PrivateKey_RSA := '-----BEGIN RSA PRIVATE KEY-----' + sLineBreak +
					'MIICXQIBAAKBgQCtpPqcoOX4rwgdoKi6zJwPX9PA2iX2KxgvyxjE+daI5ZmYxcg0'+ sLineBreak +
					'NScjX59nXRaLmtltVRfsRc1n4+mLSXiWMh3jIbw+TWn+GXKQhS2GitpLVhO3A6Ns'+ sLineBreak +
					'vO1+RuP77s+uGYhqVvbD0Pziq+I2r4oktsjTbpnC7Mof3BjJdIUFsTHKYwIDAQAB'+ sLineBreak +
					'AoGAXXqwU7umsi8ADnsb+pwF85zh8TM/NnvSpIAQkJHzNXVtL7ph4gEvVbK3rLyH'+ sLineBreak +
					'U5aEMICbxV16i9A9PPfLjAfk4CuPpZlTibgfBRIG3MXirum0tjcyzbPyiDrk0qwM'+ sLineBreak +
					'e83MyRkrnGlss6cRT3mZk67txEamqTVmDwz/Sfo1fVlCQAkCQQDW3N/EKyT+8tPW'+ sLineBreak +
					'1EuPXafRONMel4xB1RiBmHYJP1bo/sDebLpocL6oiVlUX/k/zPRo1wMvlXJxPyiz'+ sLineBreak +
					'mnf37cZ9AkEAzuPcDvGxwawr7EPGmPQ0f7aWv87tS/rt9L3nKiz8HfrT6WT0R1Bh'+ sLineBreak +
					'I7lLGq4VFWE29I6hQ2lPNGX9IGFjiflKXwJBALgsO+J62QtwOgU7lEkfjmnYu57N'+ sLineBreak +
					'aHxFnOv5M7RZhrXRKKF/sYk0mzj8AoZAffYiSJ5VL3XqNF6+NLU/AvaR6kECQQCV'+ sLineBreak +
					'nY6sd/kWmA4DhFgAkMnOehq2h0xwH/0pepPLmlCQ1a2eIVXOpMA692rq1m2E0pLN'+ sLineBreak +
					'dMAGYgfXWtIdMpCrXM59AkB5npcELeGBv1K8B41fmrlA6rEq4aqmfwAFRKcQTj8a'+ sLineBreak +
					'n09FVtccLVPJ42AM1/QXK6a8DGCtB9R+j5j3UO/iL0+3'+ sLineBreak +
					'-----END RSA PRIVATE KEY-----';
end;

Por que não usar uma propriedade no componente ao invez de usar um evento ? Porque propriedades ficam gravadas no arquivo DFM/XFM e são gravadas "na integra" como recurso, dentro do executável... Com um programa como HackerResource é possível capturar o valor de qualquer propriedade ;)


Finalmente, se vc não deseja usar o OpenSSL e sim inserir as rotinas de criptografia no seu próprio código fonte, então tudo que vc tem que fazer é programar o evento: OnCalcEAD. Nesse caso, vc deve fazer a assinatura digital e informar para a variável (var EAD: String) o valor que deverá ser gravado.
Uma ótima biblioteca OpenSource capaz de gerar chaves RSA e assinar digitalmente um arquivo usando MD5+RSA é a TurboPower LockBox (tb compatível com Kylix)


#4 Membro offline   Rodrigo Ramos

  • Membro - Junior 1
  • PipPipPipPipPip
  • Grupo: Membros
  • Posts: 252
  • Cadastrado: 15-March 07

Postou 07 August 2007 - 12:58 PM

Ola Daniel , Atualizei o Componente pelo CVS , mas o Demo naum roda no meu D5 .
Na Unit ACBrRFD ele esta pedindo "PathDelim" , O Que seria isso uma variavel apenas , uma propriedade ?


Obrigado.
t+


#5 Membro offline   anfm

  • Membro - Senior 1
  • Ícone
  • Grupo: Moderador
  • Posts: 2059
  • Cadastrado: 09-March 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 07 August 2007 - 01:59 PM

Rodrigo,

PathDelim é uma constante da Unit SysUtils(Delphi 7)

const
PathDelim = {$IFDEF MSWINDOWS} '\'; {$ELSE} '/'; {$ENDIF}
DriveDelim = {$IFDEF MSWINDOWS} ':'; {$ELSE} ''; {$ENDIF}
PathSep = {$IFDEF MSWINDOWS} ';'; {$ELSE} ':'; {$ENDIF}

Ela é usada apenas para informar qual o delimitador de caminhos, pois no windows usamos \ e no linux (kylix) /

Declare estas constantes na sua unit SysUtils ou altere o ACBrMonitor para usar a própria barra \, só que se vc alterar o ACBrMonitor, toda vez que vc baixar do CVS vc terá que corrigir isto novamente.


#6 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 07 August 2007 - 06:14 PM

Vou inserir as constantes acima na unit ACBrD5.pas

Opss... elas já estão lá... faltou mesmo inserir um IFDEF para o Delphi5... corrigindo..


#7 Membro offline   Evandro Mira

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 152
  • Cadastrado: 14-June 06
  • Estado:São Paulo

Postou 08 August 2007 - 09:35 AM

O ACBrRFD já está funcional em todas as ECFs do ACBrECF?

Os arquivos serão criados nas ECFs com MFD tambem?

[]s
Evandro


#8 Membro offline   Anderson Camilo

  • Membro
  • PipPip
  • Grupo: Membros
  • Posts: 58
  • Cadastrado: 02-April 07
  • Estado:Rondônia

Postou 08 August 2007 - 09:51 AM

Bom dia

Não sei se neste post é local ideal para a pergunta, mas como estavão falando em erro e cvs aqui, vou perguntar aqui mesmo.

Eu utilizao o ACBRMonitor, porque programo em CLIPPER/XHARBOUR, então é a forma que tenho de utiliza-ló:

1- Estas atualizações de métodos e componentes, são para compilar o ACBRMonitor, ou são somente componentes e metodos para serem colocado em aplições DELPHI?.


2 - Se for para compilar gerar o ACBRMonitor.exe qual o nome projeto (.dpr) devo utilizar para compilar, e que configurações tenho que fazer?

Eu abri no DELPHI7 o projeto ACBRmonitor.dpr e logo na abertura já acusa a falta de alguns arquivos e quando tento compilar não compila.


Obrigado


Anderson Camilo


#9 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 08 August 2007 - 09:56 AM

Ver postEvandro Mira, em 08-Aug-2007, 10:35, disse:

O ACBrRFD já está funcional em todas as ECFs do ACBrECF?


A reposta correta seria que o ACBrRFD ainda não está funcionando 100%... Ainda estamos em fase de testes... Pode funcionar em todos os ECF suportados pelo ACBr, mas dependerá da implementação dos "novos métodos" para leitura dos dados da ReduçãoZ

Ver postEvandro Mira, em 08-Aug-2007, 10:35, disse:

Os arquivos serão criados nas ECFs com MFD tambem?

NAO... As impressoras MFD não devem gerar arquivo conforme a CAT 52/07 e sim conforme a CAT 17/04, no caso das MFDs, a CAT 52/07 apenas instituiu a obrigatoriedade da geração do arquivo pelo contribuinte e o backup mensal em CD-R dos arquivos gerados...

CAT 52/07 disse:

Artigo 1° - Fica o contribuinte usuário de equipamento Emissor de Cupom Fiscal - ECF obrigado a:

I - gerar arquivo digital contendo informações relativas aos documentos emitidos pelo ECF e a identificação do:

a) contribuinte usuário;
B) equipamento ECF;
c) Programa Aplicativo Fiscal - Emissor de Cupom Fiscal - PAF-ECF;

II - gravar o arquivo digital gerado em mídia ótica não regravável;
III - conservar o arquivo digital gerado pelo prazo previsto no artigo 202 do Regulamento do ICMS, aprovado pelo Decreto n° 45.490, de 30 de novembro de 2000, para disponibilização ao fisco quando solicitado.

Parágrafo único - A gravação do arquivo digital, conforme exigido no inciso II, será efetuada mensalmente, englobando informações compreendidas entre o primeiro e o último dia do mês correspondente.

Artigo 2° - O arquivo digital a que se refere o artigo 1° deverá ser gerado a cada redução Z e, em se tratando de equipamento Emissor de Cupom Fiscal - ECF:

I - com Memória de Fita-detalhe - MFD, conforme disposto no Ato Cotepe n° 17/04, de 29 de março de 2004;
II - sem Memória de Fita-detalhe - MFD, conforme leiaute constante no Anexo I desta portaria e conforme o disposto no artigo 3°.


Ou seja, para MFDs, entre em contato com o Fabricante... no caso da Bematech, parece que o utilitário WinMFD2 é capaz de gerar o arquivo


#10 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 08 August 2007 - 10:00 AM

Ver postAnderson Camilo, em 08-Aug-2007, 10:51, disse:

Não sei se neste post é local ideal para a pergunta, mas como estavão falando em erro e cvs aqui, vou perguntar aqui mesmo.

Eu utilizao o ACBRMonitor, porque programo em CLIPPER/XHARBOUR, então é a forma que tenho de utiliza-ló:

1- Estas atualizações de métodos e componentes, são para compilar o ACBRMonitor, ou são somente componentes e metodos para serem colocado em aplições DELPHI?.

O ACBrRFD será incorporado no ACBrMonitor... Estou trabalhando nisso nesse momento

Ver postAnderson Camilo, em 08-Aug-2007, 10:51, disse:

2 - Se for para compilar gerar o ACBRMonitor.exe qual o nome projeto (.dpr) devo utilizar para compilar, e que configurações tenho que fazer?

Eu abri no DELPHI7 o projeto ACBRmonitor.dpr e logo na abertura já acusa a falta de alguns arquivos e quando tento compilar não compila.

Faltou instalar os componentes ACBr... Use o package ACBr_CLX.dpk pois o ACBrMonitor usa a CLX... Veja instruções no LEIA-ME.TXT


#11 Membro offline   maiconsi

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 222
  • Cadastrado: 21-November 06
  • Sexo:Masculino
  • Estado:São Paulo

Postou 10 August 2007 - 08:30 AM

Boa dia Daniel..

Acabei os testes primeiros testes com o ACBrRFD.. cara ficou muito bom!!! gostei muito..

Mas eu acebei encontrando alguns erros. nada grave... hehehe
1º - na criação do aquivo rfdid.ini "metodo -> CriarArqRFDID" na chave [Modelos] vc esta informando o marca + modelo.. sendo que so ai so é nescessario o modelo.. eu ja fiz as segue a baixo as devidas correções:
		SL.Add('[Modelos]');
		SL.Add('AO1=AOKI 1E');
		SL.Add('AS1=ASTICK 100');
		SL.Add('AS2=ASTICK L');
		SL.Add('BE1=ECF-IF MP-20 FI');
		SL.Add('BE2=ECF-IF MP-20 FI R');
		SL.Add('BE3=ECF-IF MP-40 FI');
		SL.Add('BE4=KIT ECF-IF MP-30 FI');
		SL.Add('BE5=MP-20 FI DUAL ECF-IF');
		SL.Add('BE6=MP-20 FI II ECF-IF');
		SL.Add('BE7=MP-20 FI II R ECF-IF');
		SL.Add('BE8=MP-40 FI II ECF-IF');
		SL.Add('BE9=MP-40 FI II R ECF-IF');
		SL.Add('BEA=MP/20 FI II ECF-IF');
		SL.Add('BT1=BETHA 2E');
		SL.Add('CH1=CHRONOS-250 1E');
		SL.Add('CH2=CHRONOS-270 2E');
		SL.Add('CH3=MULTI-50110');
		SL.Add('CO1=ECF-IF CT7000-V1');
		SL.Add('CO2=ECF-IF CT7000V3');
		SL.Add('DR1=ECF-IF FS 500');
		SL.Add('DR2=ECF-IF FS2000');
		SL.Add('DR3=FS-318');
		SL.Add('DR4=FS-345');
		SL.Add('DR5=PRINT PLUS FS-335');
		SL.Add('DT1=1Q');
		SL.Add('DT2=300-EP');
		SL.Add('DT3=375-EP');
		SL.Add('DT4=950-EP');
		SL.Add('DT5=DT-4000');
		SL.Add('DT6=IF/1');
		SL.Add('DT7=IF/1N');
		SL.Add('DT8=IF/2');
		SL.Add('DA1=DIGIARTE 1');
		SL.Add('DA2=DIGIARTE 1E');
		SL.Add('DS1=1E');
		SL.Add('DI1=2001-II');
		SL.Add('EA1=PRINTER 2000 ECF-IF');
		SL.Add('EA2=PRINTER 2000 II ECF-IF');
		SL.Add('EA3=PRINTER 2000 II R ECF-IF');
		SL.Add('EA4=PRINTER 2001 ECF-IF');
		SL.Add('EA5=PRINTER 2002 II');
		SL.Add('EA6=PRINTER 2002 II ECF-IF');
		SL.Add('EL1=ECF IF 400 2E');
		SL.Add('EL2=ECF IF 500 1E');
		SL.Add('GE1=ECF-IF GP-2000');
		SL.Add('IB1=4679 3BM');
		SL.Add('IB2=4679 3BS');
		SL.Add('IB3=ECF-IF 4679-3FB');
		SL.Add('IB4=IB 20 FI II ECF-IF');
		SL.Add('IB5=IB 40 FI II ECF-IF');
		SL.Add('IB6=IB-20 FI II R ECF-IF');
		SL.Add('IO1=IONICS 1E');
		SL.Add('IP1=KIT ECF-IF/1E');
		SL.Add('IP2=KIT POS 4000 ECF-IF/1E');
		SL.Add('IP3=KIT POS 4000 ECF-IF/3E');
		SL.Add('IP4=POS 4000 1E');
		SL.Add('IP5=POS 4000 3E');
		SL.Add('IP6=POS 4000 ECF-IF/1E');
		SL.Add('IP7=POS 4000 ECF-IF/1E BR');
		SL.Add('IP8=POS 4000 ECF-IF/3E');
		SL.Add('IP9=POS 4000 ECF-IF/3E BR');
		SL.Add('IPA=POS ECF IF/2E M');
		SL.Add('IPB=POS4000 ECF-IF/1E II');
		SL.Add('IPC=POS4000 ECF-IF/3E II');
		SL.Add('ME1=ECF 1E-3001');
		SL.Add('ME2=ECF-4002');
		SL.Add('ME3=MECAF COMPACT FCR');
		SL.Add('NC1=ECF-IF 72EPS-01');
		SL.Add('NC2=ECF-IF 72EPS-02');
		SL.Add('NC3=ECF-IF-02-01');
		SL.Add('NC4=ECF-IF-03-02');
		SL.Add('NC5=ECF-IF-7141');
		SL.Add('NC6=ECF-IF-7424E2i');
		SL.Add('PR1=ECF 2001');
		SL.Add('PR2=ECF 2002');
		SL.Add('PR3=ECF 2011');
		SL.Add('PR4=ECF 2023');
		SL.Add('QL1=CASH TOP ECF-IF');
		SL.Add('QT1=EASY APF');
		SL.Add('QT2=EASY IIF');
		SL.Add('QT3=ECF-IF EASY APF');
		SL.Add('RB1=RM 1');
		SL.Add('RR1=IF ROR 1E');
		SL.Add('SC1=D PRINT');
		SL.Add('SC2=D PRINT ECF');
		SL.Add('SC3=ECF IF SCFI 1E');
		SL.Add('SC4=S PRINT');
		SL.Add('SC5=T PRINT');
		SL.Add('SC6=T PRINT-ECF');
		SL.Add('SD1=6417');
		SL.Add('SD2=SID 6459');
		SL.Add('SD3=SID 6460');
		SL.Add('SG1=FS-318');
		SL.Add('SG2=FS-345');
		SL.Add('SG3=FS367');
		SL.Add('SG4=PRINT PLUS- FS 210');
		SL.Add('SG5=PRINT PLUS-FS 100');
		SL.Add('SG6=PRINT PLUS-FS 200');
		SL.Add('SG7=PRINT PLUS-FS 200 G');
		SL.Add('SG8=PRINT PLUS-FS 215');
		SL.Add('SG9=PRINT PLUS-FS 220');
		SL.Add('SGA=PRINT PLUS-FS 300');
		SL.Add('SGB=PRINT PLUS-FS 315');
		SL.Add('SGC=PRINT PLUS-FS 320');
		SL.Add('SGD=PRINT PLUS-FS 335');
		SL.Add('SGE=PRINT PLUS-FS 350');
		SL.Add('SGF=PRINT PLUS-FS 365');
		SL.Add('SGG=PRINT PLUS-FS 370');
		SL.Add('SGH=PRINT PLUS-FS 395');
		SL.Add('SW1=IF S-7000 III');
		SL.Add('SW2=IF S-7000I');
		SL.Add('SW3=IF S-7000IE');
		SL.Add('SW4=IF S-7000II');
		SL.Add('SW5=IF S-9000I');
		SL.Add('SW6=IF S-9000IE');
		SL.Add('SW7=IF S-9000II');
		SL.Add('SW8=IF S-9000IIE');
		SL.Add('SW9=IF S-9000IIIE');
		SL.Add('TR1=TRENDS 1.0 E');
		SL.Add('UG1=UN-FI');
		SL.Add('UG2=UN-FI 2E');
		SL.Add('UN1=BR 1002-ECF');
		SL.Add('UN2=BR-20 IF2 ECF-IF');
		SL.Add('UN3=BR-40 IF2 ECF-IF');
		SL.Add('UN4=BR400-IF ECF-IF');
		SL.Add('UN5=BRB 375 ECF-IF');
		SL.Add('UN6=ECF-IF BR401-IF');
		SL.Add('UR1=ECF-IF URANO/1EFREST');
		SL.Add('UR2=ECF-IF URANO/2EFCR');
		SL.Add('UR3=KIT URANO/2EFC');
		SL.Add('UR4=URANO/1EFC');
		SL.Add('UR5=URANO/2EFC');
		SL.Add('UR6=URANO/2EFE');
		SL.Add('UR7=ZPM/1EF');
		SL.Add('YA1=ECF-IF YANCO 8000');
		SL.Add('YA2=ECF-IF YANCO8500');
		SL.Add('ZT1=1e');
		SL.Add('ZT2=2E-ECF');
		SL.Add('ZT3=ECF-IF QZ1000');
		SL.Add('ZT4=IZ 11-ECF');
		SL.Add('ZT5=IZ 21-ECF');
		SL.Add('ZT6=IZ10-ECF');
		SL.Add('ZT7=IZ20-ECF');
		SL.Add('ZT8=IZ22');
		SL.Add('ZT9=IZ41-ECF');
		SL.Add('ZTA=IZ51');
		SL.Add('ZTB=QZ 1001');
		SL.Add('ZTC=QZ1000');
		SL.Add('ZTD=QZ2000');
		SL.Add('ZP1=ZPM/1EF');
		SL.Add('ZP2=ZPM/2EFC');


2º Você esta declarou uma variavel "wTipoECF" para definir o de ECF mas não esta carregando nenhuma informação nela "vazia", eu não sei com que nós vamos preencher o esse campo mas por enquanto e so acrescentar a linha
	wTipoECF:= PadL( wTipoECF, 7);

enquanto nós não descobrimos qual o tipo do ECF...

3º Estava verificando o arquivo rzddmmaaaa.ini e percebi que se a reduçãoZ for gerada no dia seguinte os valores não batem com o impresso pela impressora!!!.. mas isso eu tenho que estudar melho para descobrir a causa disso..

4º Na geração do campo EAD com o OpenSSL eu pecebi que se o meu aplicativo estiver em um local com o nome muito extenso Ex. "C:\Arquivos de programas\C:\Arquivos de programas\Borland\Delphi7\Componentes\ACBr_0.8.6b\source\Pascal\Demo\VCL\ECFTeste\RFD" o OpenSSL não gera o arquivo encriptado.. eu achava que o OpenSSL era 16bits e criei uma função para retornar o caminho do arquivo no formato 16bits, mas não resolveu a solução foi deixar a aplicação em "C:\ECFTeste\RFD" ai funciona perfeitamente.... pode ser a função "RunCommand" nas eu não tenho certeza!!!

Bom por enquanto é so isso que eu encontrei.. mas eu ainda estou vasculhano o codigo para ver se encontro mas algum problema...

t+


#12 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 10 August 2007 - 09:22 AM

Olá Maicon,

Ver postmaiconsi, em 10-Aug-2007, 09:30, disse:

1º - na criação do aquivo rfdid.ini "metodo -> CriarArqRFDID" na chave [Modelos] vc esta informando o marca + modelo.. sendo que so ai so é nescessario o modelo.. eu ja fiz as segue a baixo as devidas correções:

Obrigado, já corrigi...

Ver postmaiconsi, em 10-Aug-2007, 09:30, disse:

2º Você esta declarou uma variavel "wTipoECF" para definir o de ECF mas não esta carregando nenhuma informação nela "vazia", eu não sei com que nós vamos preencher o esse campo mas por enquanto e so acrescentar a linha
	wTipoECF:= PadL( wTipoECF, 7);

enquanto nós não descobrimos qual o tipo do ECF...

Faltou fazer:
wTipoECF:= PadL( cRFDTipoECF, 7) ; Acabei esquecendo ;)

Ver postmaiconsi, em 10-Aug-2007, 09:30, disse:

3º Estava verificando o arquivo rzddmmaaaa.ini e percebi que se a reduçãoZ for gerada no dia seguinte os valores não batem com o impresso pela impressora!!!.. mas isso eu tenho que estudar melho para descobrir a causa disso..

Vc diz em relação a Redução Z automática ?
Acho que será necessário criarmos um novo método para capturar os DadosUltimaReducaoZ

Ver postmaiconsi, em 10-Aug-2007, 09:30, disse:

4º Na geração do campo EAD com o OpenSSL eu pecebi que se o meu aplicativo estiver em um local com o nome muito extenso Ex. "C:\Arquivos de programas\C:\Arquivos de programas\Borland\Delphi7\Componentes\ACBr_0.8.6b\source\Pascal\Demo\VCL\ECFTeste\RFD" o OpenSSL não gera o arquivo encriptado.. eu achava que o OpenSSL era 16bits e criei uma função para retornar o caminho do arquivo no formato 16bits, mas não resolveu a solução foi deixar a aplicação em "C:\ECFTeste\RFD" ai funciona perfeitamente.... pode ser a função "RunCommand" nas eu não tenho certeza!!!

Havia suspeitado algo em relação ao Path muito grande... Podemos adaptar o código para mudar o diretório a pasta do RFD, e passar os nomes dos arquivos sem o path relativo... e depois voltar ao diretório original... vou tentar corrigir...

Ver postmaiconsi, em 10-Aug-2007, 09:30, disse:

Bom por enquanto é so isso que eu encontrei.. mas eu ainda estou vasculhano o codigo para ver se encontro mas algum problema...

Obrigado pela ajuda... :yeah:


#13 Membro offline   maiconsi

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 222
  • Cadastrado: 21-November 06
  • Sexo:Masculino
  • Estado:São Paulo

Postou 10 August 2007 - 04:59 PM

Daniel eu verifiquei que quando e realizada a redução Z o contador CRZ do arquivo de redução Z esta com o valor anterior a redução Z emitida... eu ja verifiquei e vi que vc guarda as informações sobre a redução Z antes de enviar o comando para a impressora e depois volta e atualiza os campos NumCRZ, NumCOO e DataHoraEmissao, mas mesmo assim o valor que esta sendo gravado no arquivo são o de antes da redução.... :dunno:

Outra coisa é que o Metodo "LerTotaisComprovanteNaoFiscal" para a Daruma eu já havia implementado e postado no Topico correspondente.. e não foi enviado para o CVS..

Acho que precisariamos adicionar os totaliazadores..
-Cancelamentos Não Fiscais.
-Descontos Não Fiscais.
-Acrescimos Não Fiscais.

para gerar o RFD.. o que vc acha?


#14 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 11 August 2007 - 11:45 AM

Oi Maicon,

Ver postmaiconsi, em 10-Aug-2007, 17:59, disse:

Daniel eu verifiquei que quando e realizada a redução Z o contador CRZ do arquivo de redução Z esta com o valor anterior a redução Z emitida... eu ja verifiquei e vi que vc guarda as informações sobre a redução Z antes de enviar o comando para a impressora e depois volta e atualiza os campos NumCRZ, NumCOO e DataHoraEmissao, mas mesmo assim o valor que esta sendo gravado no arquivo são o de antes da redução.... :dunno:

Estranho... no emuador da Bematech MP20-FI-II funcionou... Mas acho que é seguro fazermos a leitura do NumCRZ, NumCOO do .INI e acrescentarmos +1, sem precisar ler novamente os valores do ECF (fica até mais rápido)... O que vc acha ?

Ver postmaiconsi, em 10-Aug-2007, 17:59, disse:

Outra coisa é que o Metodo "LerTotaisComprovanteNaoFiscal" para a Daruma eu já havia implementado e postado no Topico correspondente.. e não foi enviado para o CVS..

Realmente achava que estava esquecendo de algo... :cansado:

Ver postmaiconsi, em 10-Aug-2007, 17:59, disse:

Acho que precisariamos adicionar os totaliazadores..
-Cancelamentos Não Fiscais.
-Descontos Não Fiscais.
-Acrescimos Não Fiscais.
para gerar o RFD.. o que vc acha?


Mas qual seria a finalidade desses registradores ? Em qual registro eles seriam necessários ?

Muitos campos exigidos no arquivo RFD são pertinentes apenas a ECFs com MFD, mas como ECFs com MFD nunca irão gerar arquivo conforme a CAT 52/07 (e sim conforme CAT 17/04), vários deles não são necessários...

Questionei isso ao Sr. Luiz (do fisco), durante a palestra que ele ministrou na AFRAC... Ele explicou que a idéia da RFD, e fazer uma espécie de MFD em disco rígido, para ECFs que não tem MFD... A situação ideal para o fisco, seria substituir todos os ECFs matriciais por ECFs com MFD, porém eles sabem que isso é impossível... por isso tiveram a idéia de criar a RFD (Registro de Fita Detalhe)...
Entretanto, como já havia a especificação de arquivos "E" na portaria CAT 17/04, eles procuraram manter o mesmo formato para a RFD... Na reunião, ficou claro que os campos inexistentes para ECFs matriciais, devem ser "zerados"


#15 Membro offline   maiconsi

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 222
  • Cadastrado: 21-November 06
  • Sexo:Masculino
  • Estado:São Paulo

Postou 13 August 2007 - 09:12 AM

Ver postDaniel Simões, em 11-Aug-2007, 12:45, disse:

Estranho... no emuador da Bematech MP20-FI-II funcionou... Mas acho que é seguro fazermos a leitura do NumCRZ, NumCOO do .INI e acrescentarmos +1, sem precisar ler novamente os valores do ECF (fica até mais rápido)... O que vc acha ?


Daniel acho que ficaria bem melhor!!! :thumbsup:

Ver postDaniel Simões, em 11-Aug-2007, 12:45, disse:

Mas qual seria a finalidade desses registradores ? Em qual registro eles seriam necessários ?

Muitos campos exigidos no arquivo RFD são pertinentes apenas a ECFs com MFD, mas como ECFs com MFD nunca irão gerar arquivo conforme a CAT 52/07 (e sim conforme CAT 17/04), vários deles não são necessários...

Questionei isso ao Sr. Luiz (do fisco), durante a palestra que ele ministrou na AFRAC... Ele explicou que a idéia da RFD, e fazer uma espécie de MFD em disco rígido, para ECFs que não tem MFD... A situação ideal para o fisco, seria substituir todos os ECFs matriciais por ECFs com MFD, porém eles sabem que isso é impossível... por isso tiveram a idéia de criar a RFD (Registro de Fita Detalhe)...
Entretanto, como já havia a especificação de arquivos "E" na portaria CAT 17/04, eles procuraram manter o mesmo formato para a RFD... Na reunião, ficou claro que os campos inexistentes para ECFs matriciais, devem ser "zerados"


Daniel eu tinha pensado em criar esses metodos "-Cancelamentos Não Fiscais -Descontos Não Fiscais -Acrescimos Não Fiscais", pra resolver o problema do campo "OPNF" no registro E13, que na Daruma não seria possivel calcular na forma que vc esta calculando.. porque os totalizadores dos comprovantes não fiscais vinculados ficam em uma tabela auxiliar!!! Agora eu não sei se seria melhor criar um metodo "GetOPNF" no ACBrECF para realizar os calculos e entregar o valor pronto para informarmos no RFD, oque vc acha?


#16 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 13 August 2007 - 03:15 PM

Sobre o OPNF... O manual da CAT 52/07 fala sobre ele como:

"Somatório dos valores acumulados nos totalizadores relativos às Operações Não Fiscais registradas no ECF."

Não sei bem como interpretar isso... Na verdade não sei bem ao certo se o campo OPNF é necessário para ECFs matriciais, já que em nenhum deles existe um Registrador com esse valor já computado...

No ACBrRFD eu "decidi" somar o Total de todos os registradores de Comprovantes Não Fiscais... mas não sei se isso é o correto... Talvez fosse melhor nem gravarmos esse registro


#17 Membro offline   maiconsi

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 222
  • Cadastrado: 21-November 06
  • Sexo:Masculino
  • Estado:São Paulo

Postou 13 August 2007 - 04:08 PM

Ver postDaniel Simões, em 13-Aug-2007, 16:15, disse:

Sobre o OPNF... O manual da CAT 52/07 fala sobre ele como:

"Somatório dos valores acumulados nos totalizadores relativos às Operações Não Fiscais registradas no ECF."

Não sei bem como interpretar isso... Na verdade não sei bem ao certo se o campo OPNF é necessário para ECFs matriciais, já que em nenhum deles existe um Registrador com esse valor já computado...

No ACBrRFD eu "decidi" somar o Total de todos os registradores de Comprovantes Não Fiscais... mas não sei se isso é o correto... Talvez fosse melhor nem gravarmos esse registro

Daniel eu acho que vc esta fazendo certo.. o problema e que a impressora Daruma FS-345 tem tabelas de "Comprovantes Não Fiscais" individuais uma para comprovantes vinculados e outro não vinculados. o "problema neste caso" é que quando vc lista os "Comprovantes Não Fiscais" ele so retorna os comprovantes não vinculado Ex. -Sangria e +Suprimento.. eu entendo que para realizar esse calculo nos precisariamos de todos os comprovantes não fiscais..
foi dai que eu tive essa "ideia" de criar alguma metodo que retorne o OPNF ja calculado :D o que vc achar?

Este post foi editado por maiconsi: 13 August 2007 - 04:11 PM


#18 Membro offline   Daniel Simões

  • Membro - Top
  • Ícone
  • Grupo: Coordenador
  • Posts: 6909
  • Cadastrado: 15-February 05
  • Sexo:Masculino
  • Estado:São Paulo

Postou 13 August 2007 - 04:20 PM

Agora entendi o problema..... A Tabela interna de CNF Vinculados não está sendo somanda...

Acho sua idéia muito boa... Fica fácil, pois podemos escrever o método na Calsse Mãe, e apenas fazer um override nas classes filhas que tiverem alguma peculiariadade, como é o caso da Daruma...

Vou criar o método na classe mãe e enviar pro CVS, já com as mudanças no ACBrRFD..


#19 Membro offline   maiconsi

  • Membro - Junior 2
  • PipPipPipPip
  • Grupo: Membros
  • Posts: 222
  • Cadastrado: 21-November 06
  • Sexo:Masculino
  • Estado:São Paulo

Postou 13 August 2007 - 04:39 PM

Ver postDaniel Simões, em 13-Aug-2007, 17:20, disse:

Agora entendi o problema..... A Tabela interna de CNF Vinculados não está sendo somanda...

Acho sua idéia muito boa... Fica fácil, pois podemos escrever o método na Calsse Mãe, e apenas fazer um override nas classes filhas que tiverem alguma peculiariadade, como é o caso da Daruma...

Vou criar o método na classe mãe e enviar pro CVS, já com as mudanças no ACBrRFD..


Ok..
Fico aguardando....


#20 Membro offline   Sergio Guedes

  • Membro - Pleno 2
  • PipPipPipPipPipPipPip
  • Grupo: Membros
  • Posts: 447
  • Cadastrado: 06-February 06
  • Sexo:Masculino
  • Estado:Other Countries

Postou 13 August 2007 - 05:27 PM

Ver postDaniel Simões, em 13-Aug-2007, 17:20, disse:

Agora entendi o problema..... A Tabela interna de CNF Vinculados não está sendo somanda...

Acho sua idéia muito boa... Fica fácil, pois podemos escrever o método na Calsse Mãe, e apenas fazer um override nas classes filhas que tiverem alguma peculiariadade, como é o caso da Daruma...

Vou criar o método na classe mãe e enviar pro CVS, já com as mudanças no ACBrRFD..



ola amigos desculpa mais como baixo o fonte pelo CVS ?

coloquei o caminho

:pserver:anonymous@acbr.cvs.sourceforge.net:/cvsroot/acbr

mais deu erro de indereço invalido ?

abs


  • (6 Páginas)
  • +
  • 1
  • 2
  • 3
  • Último »
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)