Jump to content

Delphi Enterprise 
pela METADE DO PREÇO

botao_delphi.png

 

 

tp_550_logo.png Homologação ACBr Apresenta:
Nova  Impressora
TP-550

botao_saibamais.png

 

 

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Andre Luiz Ucella

Erro ao gerar Sped Pis/Cofins

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

Recommended Posts

Pessoal boa tarde,

Estou começando a gerar Sped com o Acbr e comecei pelo Pis/Cofins, porem quando vai executar o comando ACBrSPEDPisCofins.SaveFileTXT esta me retornando  - Parametro "Value" não possui um valor numérico.

alguém já pegou isso ?

 

 

Share this post


Link to post
Share on other sites

bom dia..andre. tudo bem?

para melhor ajudar, voce tem como passar o comando que voce fazendo..

e outra coisa.. debug essa parte do programa para ver se ele realmente esta levando algum valor.

blz..

Share this post


Link to post
Share on other sites

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

Fone: (93) 3502-2228

msn: [email protected]

email: [email protected]

Share this post


Link to post
Share on other sites
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?

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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...

  • Like 1

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Fone: (93) 3502-2228

msn: [email protected]

email: [email protected]

Share this post


Link to post
Share on other sites
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.

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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...

  • Like 2

VANDERLEI MATTE

INFOMATTE Sistemas e Consultoria

Distrito de Castelo de Sonhos - Altamira / PA

Fone: (93) 3502-2228

msn: [email protected]

email: [email protected]

Share this post


Link to post
Share on other 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

Fone: (93) 3502-2228

msn: [email protected]

email: [email protected]

Share this post


Link to post
Share on other sites
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

 

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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

Fone: (93) 3502-2228

msn: [email protected]

email: [email protected]

Share this post


Link to post
Share on other sites
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

 

 

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other sites
  • Este tópico foi criado há 532 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...