Ir para conteúdo
  • Cadastre-se

dev botao

Sped ECF Disponibilizado do Trunk2


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

Recommended Posts

*Aguarde um pouco para baixar os arquivos, está com erro ao gerar, estou corrigindo-os e posto novamente

 

Segue os blocos X e Y, com os métodos para criar cada um no mesmo padrão dos outros blocos, com os contadores dos outros blocos.

Os blocos, U e T apenas para poder gerar.

 

 

 

 

 

 

 

 

Editado por arielguareschi
Erro encontrado.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Segue Bloco P.

1) Criados métodos "RegistroxxxNEW"

2) Os registros P300, P400, P500 estavam como listas mas pelo manual a ocorrência é única, dessa forma, observando os outros Sped, alterei os mesmos

3) Testei e está compilando, agora creio que a classe já pode ser alimentada com dados para gerar o registro, isso ainda não testei mas irei fazer hoje

Então falta os arquivos

:( agora com arquivos ...

ACBrECFBloco_P.pas

ACBrECFBloco_P_Class.pas

Link para o comentário
Compartilhar em outros sites

*Postando de novo com as correções.

Segue os blocos X e Y, com os métodos para criar cada um no mesmo padrão dos outros blocos, com os contadores dos outros blocos.

Os blocos, U e T apenas para poder gerar.

ACBrECFBloco_U_Class.pas

 

ACBrECFBloco_T_Class.pas

ACBrECFBloco_Y.pas

ACBrECFBloco_Y_Class.pas

ACBrSpedECF.pas

 

ACBrECFBloco_X.pas

ACBrECFBloco_X_Class.pas

Editado por arielguareschi
Correção do arquivo X
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Segue Bloco P.

1) Criados métodos "RegistroxxxNEW"

2) Os registros P300, P400, P500 estavam como listas mas pelo manual a ocorrência é única, dessa forma, observando os outros Sped, alterei os mesmos

3) Testei e está compilando, agora creio que a classe já pode ser alimentada com dados para gerar o registro, isso ainda não testei mas irei fazer hoje

Então falta os arquivos

:( agora com arquivos ...

ACBrECFBloco_P.pas

ACBrECFBloco_P_Class.pas

Está no SVN as alterações

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

  • Moderadores

*Postando de novo com as correções.

Segue os blocos X e Y, com os métodos para criar cada um no mesmo padrão dos outros blocos, com os contadores dos outros blocos.

Os blocos, U e T apenas para poder gerar.

ACBrECFBloco_U_Class.pas

 

ACBrECFBloco_T_Class.pas

ACBrECFBloco_Y.pas

ACBrECFBloco_Y_Class.pas

ACBrSpedECF.pas

 

ACBrECFBloco_X.pas

ACBrECFBloco_X_Class.pas

Está no SVN para que possam trabalhar mas!

por favor queira seguir o padrão dos fontes do ACBr!

depois terei que voltar pois tem indentações erradas no código!

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

boa tarde Pessoal fui gerar um arquivo para teste e validação, encontrei dois problemas,

um no campo Registro0020New.IND_QTE_SCP que não sei o pq mesmo informando a quantidade de 4 ele grava uma qtd absurda de 03011900

outro é o registro Registro0035, que mesmo sendo informado não é gerado no arquivo.

infelizmente não manjo muito para ajudar a arrumar isto.

Link para o comentário
Compartilhar em outros sites

boa tarde Pessoal fui gerar um arquivo para teste e validação, encontrei dois problemas,

um no campo Registro0020New.IND_QTE_SCP que não sei o pq mesmo informando a quantidade de 4 ele grava uma qtd absurda de 03011900

outro é o registro Registro0035, que mesmo sendo informado não é gerado no arquivo.

infelizmente não manjo muito para ajudar a arrumar isto.

Bom dia Carlos,

Onde escreve o arquivo altere a função Lfill que deve estar assim

lfill(IND_QTD_SCP) -> lfill(IND_QTD_SCP, 1) 

pois ele esta interpretando como data.

Link para o comentário
Compartilhar em outros sites

bom dia o IND_QTE_SCP deu certo, agora só não estou entendendo o pq não esta gravando o Registro0035, sendo que está sendo alimentado.

e vi o trecho que escreve, aparentemente esta feito tb.

procedure  TBloco_0.WriteRegistro0035;
var intfor : Integer;
begin
  if Assigned(FRegistro0035) then
  begin
    for intfor := 0 to  fRegistro0035.Count - 1 do
      begin
         with FRegistro0035.Items[intfor] do
         begin
                Add( LFill('0035') +
                     LFill(COD_SCP) +
                     LFill(NOME_SCP) );
           FRegistro0990.QTD_LIN_0 := FRegistro0990.QTD_LIN_0 + 1;
         end;
      end;
     FRegistro0035Count := FRegistro0035Count + Registro0035.Count;
  end;
end;
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia!

Alguém que está diretamente envolvido com o Projeto ECF poderia informar quais os registros faltam ?

o componente já atende a todos?

Pergunto pois não estou utilizando ele

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

sobre o registro0035, fiz um ajuste no meu aqui e agora funcionou.

ficou assim :procedure  TBloco_0.WriteRegistro0035;
var intfor : Integer;
begin
  if Assigned(Registro0001.Registro0035) then
  begin
    for intfor := 0 to  Registro0001.Registro0035.Count - 1 do
      begin
         with Registro0001.Registro0035.Items[intfor] do
         begin
                Add( LFill('0035') +
                     LFill(COD_SCP) +
                     LFill(NOME_SCP) );
           FRegistro0990.QTD_LIN_0 := FRegistro0990.QTD_LIN_0 + 1;
         end;
      end;
     FRegistro0035Count := FRegistro0035Count + Registro0001.Registro0035.Count;
     Registro0001.Registro0035.Clear;
  end;
end;
onde está Registro0001.Registro0035 estava FRegistro0035

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Qual o motivo de ter a linha

  end;
  FRegistro0020.IND_QTE_SCP := 0;
end;

e esse trecho?

procedure  TBloco_0.WriteRegistro0035;
var intfor : Integer;
begin
  if Assigned(Registro0001.Registro0035) then
  begin
    for intfor := 0 to  Registro0001.Registro0035.Count - 1 do
      begin
         with Registro0001.Registro0035.Items[intfor] do
         begin
                Add( LFill('0035') +
                     LFill(COD_SCP) +
                     LFill(NOME_SCP) );
           FRegistro0990.QTD_LIN_0 := FRegistro0990.QTD_LIN_0 + 1;
         end;
      end;
     FRegistro0035Count := FRegistro0035Count + Registro0001.Registro0035.Count;
     Registro0001.Registro0035.Clear;
  end;
end;

esse clear

      end;
     FRegistro0930Count := FRegistro0930Count + Reg0001.Registro0930.Count;
     Reg0001.Registro0930.Clear;
  end;
end;

e zerar

            LFill(QTD_LIN_0,0) );
       QTD_LIN_0 := 0;
     end;
  end;

 

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

  • Membros Pro

Os blocos X e Y estavam com implementação erradas dos create / destroy e a memória não era devidamente liberada --> memory leak. Foi efetuada a correção, vou dar uma olhada nos outros blocos, tem alguns com problema também.

ACBrECFBloco_X.pas

ACBrECFBloco_X_Class.pas

ACBrECFBloco_Y.pas

ACBrECFBloco_Y_Class.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Os blocos X e Y estavam com implementação erradas dos create / destroy e a memória não era devidamente liberada --> memory leak. Foi efetuada a correção, vou dar uma olhada nos outros blocos, tem alguns com problema também.

ACBrECFBloco_X.pas

ACBrECFBloco_X_Class.pas

ACBrECFBloco_Y.pas

ACBrECFBloco_Y_Class.pas

Você tem arquivos diferentes em seu micro!!!!

porque remover os overloads?

percebeu que por exemplo esse evento abaixo é chamado no overload da classe pai?

e assim não precisa ficar distribuindo free em diversos locais?

procedure TBloco_Y.LiberaRegistros;
begin
   inherited;

   FRegistroY001.Free;
   FRegistroY990.Free;
end;

o que tu passou aqui está removendo as referencias da classe pai que já faz a liberação e no caso é você que está com os arquivos diferentes!

observe o arquivo ACBrSped.pas de seu micro e do svn! e tente entender ele!

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

  • Membros Pro

Estou fazendo com base no que tem no SpedPisCofins que creio tem as modificações corretas para estarem no Trunk2. Esse por exemplo é o que está no ACBrEPCBloco_M_Class.

"    procedure CriaRegistros;
    procedure LiberaRegistros;
  public
    constructor Create ;                                      /// Create
    destructor  Destroy; override;                            /// Destroy
    procedure LimpaRegistros;"

 

Quanto a atualização fiz antes de começar as alterações ....

Talvez fosse o caso de criar uma unit template para que pudéssemos ter como referência. De qualquer forma antes, com o overload, estava dando memory leak e agora não. Como fazer então ?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa noite, tentei baixar e não consegui, voce poderia me passar o endereço por favor.

Está no svn! trunk2

já migrou ? senão migrou sugiro começar logo

Estou fazendo com base no que tem no SpedPisCofins que creio tem as modificações corretas para estarem no Trunk2. Esse por exemplo é o que está no ACBrEPCBloco_M_Class.

"    procedure CriaRegistros;
    procedure LiberaRegistros;
  public
    constructor Create ;                                      /// Create
    destructor  Destroy; override;                            /// Destroy
    procedure LimpaRegistros;"

 

Quanto a atualização fiz antes de começar as alterações ....

Talvez fosse o caso de criar uma unit template para que pudéssemos ter como referência. De qualquer forma antes, com o overload, estava dando memory leak e agora não. Como fazer então ?

Sim pode se basear ma já prestou atenção que expliquei? tentou abrir os fontes? os demais colegas conseguiram entender!

na unit que falei já possui os métodos descritos e os  mesmos chamando dentro de cada .. por isso existe um overload (um pouco de orientação a objeto)!

então sugiro olhar o código dos colegas, seus arquivos não serão subidos, se estiver com vazamento de memória é por que o arquivo que mencionei não está devidamente atualizado!

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á 2835 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.