Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao gerar Sped Pis/Cofins


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

Recommended Posts

Boa Tarde...  

Estou com cliente novo, Posto de Combustivel, media de 6.000 NFC-e´s mensais...

Tive o mesmo problema ontem... só consegui resolver mudando as variaveis de Variant para Currency...

Mudei esta parte do fonte (Linhas 410 a 452):

 

  //REGISTRO C175: REGISTRO ANALÍTICO DO DOCUMENTO (CÓDIGO 65)

  TRegistroC175 = class
  private
    fALIQ_COFINS       : Currency;
    fALIQ_COFINS_QUANT : Currency;
    fALIQ_PIS          : Currency;
    fALIQ_PIS_QUANT    : Currency;
    fCFOP              : string;
    fCOD_CTA           : string;
    fCST_COFINS        : TACBrSituacaoTribCOFINS;
    fCST_PIS           : TACBrCstPis;
    fINFO_COMPL        : string;
    fQUANT_BC_COFINS   : Currency;
    fQUANT_BC_PIS      : Currency;
    fVL_BC_COFINS      : Currency;
    fVL_BC_PIS         : Currency;
    fVL_COFINS         : Currency;
    fVL_DESC           : Currency;
    fVL_OPR            : Currency;
    fVL_PIS            : Currency;
  public

    property CFOP                 : string  read fCFOP                  write fCFOP;
    property VL_OPR               : Currency read fVL_OPR                write fVL_OPR;
    property VL_DESC              : Currency read fVL_DESC               write fVL_DESC;
    property CST_PIS              : TACBrCstPis read fCST_PIS           write fCST_PIS;
    property VL_BC_PIS            : Currency read fVL_BC_PIS             write fVL_BC_PIS;
    property ALIQ_PIS             : Currency read fALIQ_PIS              write fALIQ_PIS;
    property QUANT_BC_PIS         : Currency read fQUANT_BC_PIS          write fQUANT_BC_PIS;
    property ALIQ_PIS_QUANT       : Currency read fALIQ_PIS_QUANT        write fALIQ_PIS_QUANT;
    property VL_PIS               : Currency read fVL_PIS                write fVL_PIS;
    property CST_COFINS           : TACBrSituacaoTribCOFINS   read fCST_COFINS write fCST_COFINS;
    property VL_BC_COFINS         : Currency read fVL_BC_COFINS          write fVL_BC_COFINS;
    property ALIQ_COFINS          : Currency read fALIQ_COFINS           write fALIQ_COFINS;
    property QUANT_BC_COFINS      : Currency read fQUANT_BC_COFINS       write fQUANT_BC_COFINS;
    property ALIQ_COFINS_QUANT    : Currency read fALIQ_COFINS_QUANT     write fALIQ_COFINS_QUANT;
    property VL_COFINS            : Currency read fVL_COFINS             write fVL_COFINS;
    property COD_CTA              : string  read fCOD_CTA               write fCOD_CTA;
    property INFO_COMPL           : string  read fINFO_COMPL            write fINFO_COMPL;
  end;

  /// Registro C175 - Lista

Segue arquivo modificado para testes...

É só colocar ele na pasta do acbr, Fontes\ACBrTXT\ACBrSPED\ACBrSPEDPisCofins e dar um Build no seu projeto....

Para mim funcionou 100%, gerei o mes 10/2018 e 11/2018... + ou - 9000 NFC-es, e Importei no Validador do SPED Pis;Cofins

Usei o arquivo do ACBr, At Revision 16047.

E Validador Pis/Cofins 3.0.1...

 

ACBrEPCBloco_C.pas

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Whattzap: (66) 99695-4979

email: vanderleim[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 08/12/2018 at 17:49, infomatte disse:

Tive o mesmo problema ontem... só consegui resolver mudando as variaveis de Variant para Currency...

Mudei esta parte do fonte (Linhas 410 a 452): 

Olá Vanderlei, muito obrigado pela sugestão.

Infelizmente não podemos aplicar ela desse jeito. Isso faria com que o componente parasse de antender toda a legislação.
Precisamos do tipo Variant ou algum dispositivo semelhante pois esse registro podem ser tanto zero como vazios. Para entender um pouco melhor porque usamos Variant, talvez queira ver esse tópico aqui:

Então a melhor saída é verificar exatamente qual o problema. Se puder apresentar como alimentar o componente para apresentar o erro teríamos como reproduzir e corrigir.

Ainda não nos passaram um modo de reproduzir o problema, preferencialmente usando o exemplo do ACBrSPEDPISCOFINS. Pode nos ajudar nesse sentido?

  • 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

4 horas atrás, EMBarbosa disse:

Olá Vanderlei, muito obrigado pela sugestão.

Infelizmente não podemos aplicar ela desse jeito. Isso faria com que o componente parasse de antender toda a legislação.
Precisamos do tipo Variant ou algum dispositivo semelhante pois esse registro podem ser tanto zero como vazios. Para entender um pouco melhor porque usamos Variant, talvez queira ver esse tópico aqui:

Então a melhor saída é verificar exatamente qual o problema. Se puder apresentar como alimentar o componente para apresentar o erro teríamos como reproduzir e corrigir.

Ainda não nos passaram um modo de reproduzir o problema, preferencialmente usando o exemplo do ACBrSPEDPISCOFINS. Pode nos ajudar nesse sentido?

Boa Tarde... 

Obrigado EMBarbosa...

Esqueci de expor essa questão na minha resposta... foi uma solução temporária que encontrei para resolver meu caso...

No decorrer da semana vou voltar aos testes utilizando o arquivo original com Tipo Variant... tenho pouca experiencia com Classes, mas se conseguir localizar o que estou fazendo de errado na alimentação do Registro C175, volto a reportar...

Mais uma vez, obrigado...

  • Curtir 1

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Whattzap: (66) 99695-4979

email: vanderleim[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores
Agora, infomatte disse:

Boa Tarde... 

Obrigado EMBarbosa...

Esqueci de expor essa questão na minha resposta... foi uma solução temporária que encontrei para resolver meu caso...

No decorrer da semana vou voltar aos testes utilizando o arquivo original com Tipo Variant... tenho pouca experiencia com Classes, mas se conseguir localizar o que estou fazendo de errado na alimentação do Registro C175, volto a reportar...

Mais uma vez, obrigado...

Se você puder dar um exemplo de como reproduzir o erro, creio que seja muito fácil corrigir.

  • Curtir 2

[]'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

6 minutos atrás, EMBarbosa disse:

Se você puder dar um exemplo de como reproduzir o erro, creio que seja muito fácil corrigir.

Vou tentar simular o erro no DEMO... assim que terminar, posto o fonte com a simulação...

  • Curtir 2

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Whattzap: (66) 99695-4979

email: vanderleim[email protected]

Link para o comentário
Compartilhar em outros sites

3 horas atrás, EMBarbosa disse:

Se você puder dar um exemplo de como reproduzir o erro, creio que seja muito fácil corrigir.

Boa Tarde...

Vidinha difícil essa de programador....

 

Estava passando os valores desta forma:

VL_OPR     := NFCeProduto.FieldByName('Total').Value;
VL_DESC  :=  NFCeProduto.FieldByName('Desconto').Value;

Pelo que entendi, desta forma, quanto o valor é redondo (R$ 60,00), para o componente passa 60, constatei isso dando showmessage( FloatToSTR(NFCeProduto.FieldByName('Total').Value));... ai, não vai casa decimal para o componente...

Mudei para:

VL_OPR     := StrToFloat(FormatCurr('0.00',NFCeProduto.FieldByName('Total').Value));
VL_DESC  := StrToFloat(FormatCurr('0.00',NFCeProduto.FieldByName('Desconto').Value));

"Vualá"... 100% funcional... sem mexer em nada no ACBr...

 

Havia incluido assim no DEMO do ACBR..

                  with RegistroC175New do   //Inicio Adicionar os Itens:
                  begin
                     VL_OPR           := 50;
                     VL_DESC          := 0;
.........

Neste caso, não foi virgula, mas gera normalmente

mas assim, VL_OPR     := NFCeProduto.FieldByName('Total').Value;, não vai...

 

Só peço desculpas por tirar o tempo do pessoal experiente do fórum... Coisas simples, mas a falta de atenção em muito nos atrapalha as vezes...

 

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Whattzap: (66) 99695-4979

email: vanderleim[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores
34 minutos atrás, infomatte disse:

NFCeProduto.FieldByName('Total').Value

Eu sugiro você evitar esse método FieldByName ao máximo. Ele é muito lento e dificulta a manutenção do código.

Com respeito ao erro, provavelmente o compilador converteu para string ou algum outro formato. E daí eu o erro mencionado:

Em 30/11/2018 at 17:44, Andre Luiz Ucella disse:

Parametro "Value" não possui um valor numérico

 

  • Curtir 2

[]'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

3 horas atrás, EMBarbosa disse:

Eu sugiro você evitar esse método FieldByName ao máximo. Ele é muito lento e dificulta a manutenção do código.

Com respeito ao erro, provavelmente o compilador converteu para string ou algum outro formato. E daí eu o erro mencionado:

 

Obrigado...

Tenho clientes que a base ultrapassa a casa dos 3gb, onde a maior tabela em quantidade de registros beira 2,5 milhoes de registros... bancos de dados sendo alimentados desde 2009... 

Até o momento, não sentimos lentidão em nenhum processo...

Mas, se não for pedir muito, qual é sua sugestão para substituição do FieldByName?

 

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Whattzap: (66) 99695-4979

email: vanderleim[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores
11 horas atrás, infomatte disse:

Tenho clientes que a base ultrapassa a casa dos 3gb, onde a maior tabela em quantidade de registros beira 2,5 milhoes de registros... bancos de dados sendo alimentados desde 2009...  

Até o momento, não sentimos lentidão em nenhum processo... 

Mas, se não for pedir muito, qual é sua sugestão para substituição do FieldByName? 

Depende muito de cada caso. Se você não estiver fazendo um loop muito grande talvez não perceba a perda de performance.

Mas pode ser que você não tenha percebido porque nunca mediu.

Algo útil é usar campos estáticos, (aqueles que você clica com o botão direito e manda adicionar em tempo de design), se existirem. Outra sugestão é criar variáveis que vão conter o campo.

Existem muitos artigos sobre FieldByName em Delphi, como esse que você citou.

Eu particularmente gosto desses, onde no segundo há algumas sugestões menos ou mais invasivas:

https://www.delphitools.info/2010/11/30/fieldbyname-or-why-a-profiler-is-your-friend/

https://web.archive.org/web/20170530222831/http://delphi.about.com/od/database/ss/faster-fieldbyname-delphi-database.htm

 

 

  • Curtir 2

[]'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

  • Este tópico foi criado há 1934 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.