Ir para conteúdo
  • Cadastre-se

dev botao

arquivo SEF pernambuco.


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

Recommended Posts

Quando utilizo o programa analisador de arquivo texto (SEF2/SEFAZ-PE) ele dar um erro:

 

Cannot open file "c:\configuracao.xml". O sistema não pode encontrar  o arquivo especificado.

 

Já mudei para pasta onde está instalado o programa, mas continua o erro.

 

Como resolvo isso? Obrigado.

Editado por krammers
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

 

Você instalou o SefazNet tb?

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

Estou tendo problemas com o acbrSEFII alguém consegui validar? 

 

No Bloco_0 Registro_030 as Propriedades que deveriam conter valores inteiros estão sendo convertidas com valores errados acredito que seja na conversão dos tipos enumerados em alguns casos funciona em outros não!

Editado por edvaniojancy
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

 

Quais parâmetros e quais valores foram informados ao componente ?

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Todos do Registro_030 onde temos que informar Sim ou Não tipo PRF_LMC, PRF_RV, PRF_RI, IND_RT quando coloco exNao os valores ficam errados!

Por favor, dê um exemplo de valor errado como a Juliana pediu acima para que possamos reproduzir.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Subi uma correção para o SVN na Revisão  5899.
Pelo que vi está tudo certo.
Poderia testar e reportar qualquer problema?
Obrigado.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Subi uma correção para o SVN na Revisão  5899.

Pelo que vi está tudo certo.

Poderia testar e reportar qualquer problema?

Obrigado.

Boa tarde, em primeiro lugar abrigado com essa atualização foi corrigido mas apos o teste o problema também está ocorrendo no registro E025 na propriedade IND_PETR.

 

Exemplo:

RegistroE025 := nil;
wRegistroE025 := wRegistroE020.RegistroE025.New(wRegistroE020);


with wRegistroE025 do
begin
  IND_PETR     := 1;
end;

 |E025|8158,74|0,00|1652|0,00||0,00|0,00|0,00|0,00|8158,74|0,00|0,00|0,00||31121899||

 

Arquivo em Anexo:

SEF.txt

Editado por edvaniojancy
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde, em primeiro lugar abrigado com essa atualização foi corrigido mas apos o teste o problema também está ocorrendo no registro E025 na propriedade IND_PETR.

 

Exemplo:

RegistroE025 := nil;
wRegistroE025 := wRegistroE020.RegistroE025.New(wRegistroE020);


with wRegistroE025 do
begin
  IND_PETR     := 1;
end;

 |E025|8158,74|0,00|1652|0,00||0,00|0,00|0,00|0,00|8158,74|0,00|0,00|0,00||31121899||

 

 

Subi uma correção para o SVN na Revisão  5906. Aproveitei para corrigir o campo seguinte também.

Pelo que vi está tudo certo.

Favor testar e reportar qualquer problema.

Obrigado.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Subi uma correção para o SVN na Revisão  5906. Aproveitei para corrigir o campo seguinte também.

Pelo que vi está tudo certo.

Favor testar e reportar qualquer problema.

Obrigado.

 

Boa tarde, esses erros foram corrigidos mas encontrei mais dois erros nas propriedades:

With RegistroE080New do
begin
   IND_TOT = 0;
   NUM_MR = 2;
end;

|E080||2D|02011900|03082013|2501,00|152,50|0,00|0,00|0,00|SP10|0|2348,50|0,00|0,00|0,00|2348,50||

 

A propriedade IND_TOT esta em braco e a NUM_MR esta com valor incorreto era pra ser 2.

Link para o comentário
Compartilhar em outros sites

  • Consultores

olá edvaniojancy,

 

Subi suas alterações para o SVN na Revisão  5913.

Pelo que vi está tudo certo.

Favor testar e reportar qualquer problema.

Obrigado.

 

   Mas vou lhe explicar qual é o problema, e talvez você mesmo possa me ajudar nas próximas correções.

   O que acontece é que o método LFill é sobrecarregado (overloaded) para vários tipos de parâmetros. O compilador então fica confuso quando encontra um parâmetro inteiro e acaba chamando o método para data.

   Para corrigir basta que nós acabemos com a ambiguidade no método. No caso do LFill isso é facilmente corrigido passando o segundo parâmetro para o método.

   Como fazer isso no caso dos registros do SEF2? Veja como exemplo o caso acima onde corrigi o registro E080.

 

   Primeiro você precisa localizar o método que escreve o registro que é geralmente chamado WriteRegistroXXXX. No nosso caso o método é o WriteRegistroE080, que se encontra na unit ACBrSEF2_BlocoE_1.pas linhas a partir da 1052 na revisão atual. Veja a parte importante dele abaixo:

procedure TBloco_E.WriteRegistroE080(RegE001: TRegistroSEFE001);
var
  intFor : Integer;
  RegE080: TRegistroSEFE080;
begin
   for intFor := 0 to RegE001.RegistroE080.Count - 1 do
   begin
      RegE080 := TRegistroSEFE080(RegE001.RegistroE080.Items[intFor]);
      with RegE080 do
      begin
         Add( LFill('E080')         +
              LFill(IND_TOT)        +
              LFill(COD_MOD)        +
              LFill(NUM_MR)         +
              LFill(DT_DOC)         +
              LFill(VL_BRT,2)       +
....
 

   Segundo localize a definição deste registro no manual do SEF2 e veja o tamanho do campo analisado. No nosso caso, as definições deste registro se encontram no arquivo SEF II - LFPD 06 - SEF_LA-ICMS.xlsx conforme imagem abaixo e o tamanho do IND_TOT é 1 e o do NUM_MR não está definido.

post-196-0-24907100-1380056411_thumb.jpg

   Terceiro, de posse dessas informações basta alterar o método WriteRegistroXXXX adicionando à chamada do LFill o parâmetro que estava faltando. Veja abaixo:

 

procedure TBloco_E.WriteRegistroE080(RegE001: TRegistroSEFE001);
var
  intFor : Integer;
  RegE080: TRegistroSEFE080;
begin
   for intFor := 0 to RegE001.RegistroE080.Count - 1 do
   begin
      RegE080 := TRegistroSEFE080(RegE001.RegistroE080.Items[intFor]);
      with RegE080 do
      begin
         Add( LFill('E080')         +
              LFill(IND_TOT, 1)     +
              LFill(COD_MOD)        +
              LFill(NUM_MR, Length(inttostr(NUM_MR)) +
              LFill(DT_DOC)         +
              LFill(VL_BRT,2)       +

Note que no caso do NUM_MR eu acabei usando um artifício (Length(inttostr(NUM_MR)) para descobrir em run-time o tamanho do campo visto que o método LFill não aceitaria uma indefinição do tamanho.

Se você, ou qualquer outra pessoa, encontrar mais desses erros, pode corrigir conforme explicado e anexar o arquivo alterado aqui. Isso vai dar mais agilidade para o processo.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

olá edvaniojancy,

 

Subi suas alterações para o SVN na Revisão  5913.

Pelo que vi está tudo certo.

Favor testar e reportar qualquer problema.

Obrigado.

 

   Mas vou lhe explicar qual é o problema, e talvez você mesmo possa me ajudar nas próximas correções.

   O que acontece é que o método LFill é sobrecarregado (overloaded) para vários tipos de parâmetros. O compilador então fica confuso quando encontra um parâmetro inteiro e acaba chamando o método para data.

   Para corrigir basta que nós acabemos com a ambiguidade no método. No caso do LFill isso é facilmente corrigido passando o segundo parâmetro para o método.

   Como fazer isso no caso dos registros do SEF2? Veja como exemplo o caso acima onde corrigi o registro E080.

 

   Primeiro você precisa localizar o método que escreve o registro que é geralmente chamado WriteRegistroXXXX. No nosso caso o método é o WriteRegistroE080, que se encontra na unit ACBrSEF2_BlocoE_1.pas linhas a partir da 1052 na revisão atual. Veja a parte importante dele abaixo:

procedure TBloco_E.WriteRegistroE080(RegE001: TRegistroSEFE001);
var
  intFor : Integer;
  RegE080: TRegistroSEFE080;
begin
   for intFor := 0 to RegE001.RegistroE080.Count - 1 do
   begin
      RegE080 := TRegistroSEFE080(RegE001.RegistroE080.Items[intFor]);
      with RegE080 do
      begin
         Add( LFill('E080')         +
              LFill(IND_TOT)        +
              LFill(COD_MOD)        +
              LFill(NUM_MR)         +
              LFill(DT_DOC)         +
              LFill(VL_BRT,2)       +
....
 

   Segundo localize a definição deste registro no manual do SEF2 e veja o tamanho do campo analisado. No nosso caso, as definições deste registro se encontram no arquivo SEF II - LFPD 06 - SEF_LA-ICMS.xlsx conforme imagem abaixo e o tamanho do IND_TOT é 1 e o do NUM_MR não está definido.

attachicon.gifSEF2_E080_tamanhos.jpg

   Terceiro, de posse dessas informações basta alterar o método WriteRegistroXXXX adicionando à chamada do LFill o parâmetro que estava faltando. Veja abaixo:

 

procedure TBloco_E.WriteRegistroE080(RegE001: TRegistroSEFE001);
var
  intFor : Integer;
  RegE080: TRegistroSEFE080;
begin
   for intFor := 0 to RegE001.RegistroE080.Count - 1 do
   begin
      RegE080 := TRegistroSEFE080(RegE001.RegistroE080.Items[intFor]);
      with RegE080 do
      begin
         Add( LFill('E080')         +
              LFill(IND_TOT, 1)     +
              LFill(COD_MOD)        +
              LFill(NUM_MR, Length(inttostr(NUM_MR)) +
              LFill(DT_DOC)         +
              LFill(VL_BRT,2)       +

Note que no caso do NUM_MR eu acabei usando um artifício (Length(inttostr(NUM_MR)) para descobrir em run-time o tamanho do campo visto que o método LFill não aceitaria uma indefinição do tamanho.

Se você, ou qualquer outra pessoa, encontrar mais desses erros, pode corrigir conforme explicado e anexar o arquivo alterado aqui. Isso vai dar mais agilidade para o processo.

 

 

OK,  muito obrigado pela ajuda a partir de agora farei como explicado caso encontre mais algum desses erros e enviarei os arquivos corrigidos para agilizar o processo.

Editado por edvaniojancy
Link para o comentário
Compartilhar em outros sites

  • Consultores

OK,  muito obrigado pela ajuda a partir de agora farei como explicado caso encontre mais algum desses erros e enviarei os arquivos corrigidos para agilizar o processo.

Se puder fazê-lo vai ser de muito ajuda. Obrigado pelas contribuições até agora.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Se puder fazê-lo vai ser de muito ajuda. Obrigado pelas contribuições até agora.

Bom dia EMBarbosa, foi encontrado mais alguns erros e a necessidade de fazer uma alteração na na unit de conversão segue arquivo em anexo para analise, também adicionei os arquivos do eDOC e SefII gerados depois das correções. 

 

Foi detectado um erro nos totalizadores das linhas dos registros do bloco 9900 a 9999.

 

SEF 2.rar

Editado por edvaniojancy
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

 

As alterações estão no svn.

 

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Pessoal, sou novato em ACBR, descobri por conta do E-doc

 

estou com o svn na revision 5931, quando vou compilar o projeto exemplo do SEF2 (EDOC), esta dando erro em fDT_DOC      : TDate; o erro é ACBrSEF2_BlocoE.pas(248): Undeclared identifier: 'TDate'

 

Onde se encontra esta classe TDate? como resolvo esta dependencia?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá JulioMar e outros

 

O erro que comentei acima ocorre no arquivo \ACBr\Fontes\ACBrSEF2\ACBrSEF2_BlocoE.pas, o que fiz para corrigir foi acrescentar nesta classe a uses Controls. e o arquivo compilou tranquilamente

 

Há alguns erros nos arquivo de exemplo do SEF2, na maioria dos casos são erro de conversões de tipo. Mais comentando as variáveis que estão com esses erros o exemplo compila e roda de boa

 

Não sei como funciona as alterações no SVN, mais quem puder colocar a uses Controls, no Arquivo já ajudaria bastante, principalmente para alguém que esta começando como eu

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • 3 semanas depois ...
  • Este tópico foi criado há 3604 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.