Ir para conteúdo
  • Cadastre-se

dev botao

Quebra de Linha - CCe de NFe


Ver Solução Respondido por Diego Foliene,

Recommended Posts

Ola!

- Criado componente acbr e setado a quebra de linha:

FACBrNFe1.Configuracoes.WebServices.QuebradeLinha := sLineBreak;

ou  (o resultado é o mesmo)

FACBrNFe1.Configuracoes.WebServices.QuebradeLinha := '\r\n';

 

E vou tentar emitir a CCe (Carta de Correção de NFe), sempre substitui a quebra de linha por ';'

Debugando cheguei em alguns lugares.

procedure TNFeEnvEvento.DefinirDadosMsg; (unit ACBrNFeWebServices.pas)

 

Executa a linha

EventoNFe := TEventoNFe.Create;

No create chama o CreateOptions (herdado de TACBrXmlWriter), que por usa vez chama o TACBrXmlWriterOptions.Create que faz o seguinte:

constructor TACBrXmlWriterOptions.Create;
begin
  inherited;

  FIdentarXML := False;
  FFormatoAlerta := 'TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.'; // Vide comentário em wAlerta
  FRetirarEspacos := True;
  FRetirarAcentos := True;
  FSuprimirDecimais := False;
  FSomenteValidar := False;
  FDecimalChar := '.';
  FQuebraLinha := ';';
end;

 

Ou seja, no Create ele substitui a quebra de linha, ignorando a quebra de linha previamente configurada.

Atualizei o componente hoje pela manhã (rev. 35098) na esperança de resolver o problema mas sem sucesso.

 

Existe alguma forma de contornar isto? esqueci alguma configuração?

 

 

 

 

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde!

Estou verificando esta questão.

Fornecerei um parecer neste tópico na medida que for descobrindo mais informações. #TK-5866-2

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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
1 hour ago, MarcosRWeimer said:

Bom Dia!

 

Conseguiu simular?

Bom dia!

Sim, foi possível reproduzir o problema.

Estou atuando em uma correção para o mesmo.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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
  • Solution

Enviei ao SVN nas revisions 35102 e 35103 ajustes visando corrigir o problema.

Por favor, queira atualizar seus fontes, reinstalar o ACBr para realizar novos testes e reportar qualquer problema.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Boa Tarde!

 

Será que faltou fazer o commit de alguma coisa?

Cleaning ok
Compiling package C:\componentes\ACBr\Pacotes\Delphi\ACBrDFe\ACBrNFe\ACBr_NFe.dpk
"C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dcc32.exe" "C:\componentes\ACBr\Pacotes\Delphi\ACBrDFe\ACBrNFe\ACBr_NFe.dpk"
Embarcadero Delphi for Win32 compiler version 35.0
Copyright (c) 1983,2022 Embarcadero Technologies, Inc.
C:\componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\ACBrNFeNotasFiscais.pas(3830) Error: E2003 Undeclared identifier: 'QuebraLinha'
C:\componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\ACBrNFeWebServices.pas(2498) Fatal: F2063 Could not compile used unit 'ACBrNFeNotasFiscais.pas'
Compilation failure
Erro ao compilar o pacote "ACBr_NFe.dpk".
Abortando... Ocorreram erros na compilação dos pacotes.

 

Editado por MarcosRWeimer

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

Prezados boa tarde. Estou tentando instalar a revisão 35103 mas não está instalando. Apaguei a pasta e fiz o update de toda de todas as units novas. Apresenta os erros abaixo no log:
C:\Componentes\XE\ACBR\Fontes\ACBrComum\ACBrUtil.FilesIO.pas(586) Warning: W1000 Symbol 'FileAge' is deprecated

C:\Componentes\XE\ACBR\Fontes\ACBrDFe\ACBrNFe\ACBrNFeNotasFiscais.pas(3830) Error: E2003 Undeclared identifier: 'QuebraLinha'
C:\Componentes\XE\ACBR\Fontes\ACBrDFe\ACBrNFe\ACBrNFeWebServices.pas(2498) Fatal: F2063 Could not compile used unit 'ACBrNFeNotasFiscais.pas'
Compilation failure
Erro ao compilar o pacote "ACBr_NFe.dpk".
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde @MarcosRWeimer e @NovoRJ.

Por favor, atualizem seus fontes e façam um novo teste.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Sem sucesso.

Instalou corretamente.

 

Setei a quebra de linha com sLineBreak (\r\n)

Ao enviar o evento rejeita por causa da quebra de linha no xCorrecao, se faço a substituição do sLineBreak por ';' (replace na string mesmo, mantendo a configuração da quebra de linha no componente) autoriza a CCe porem na impressão não quebra a linha.

 

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Consultores
8 minutes ago, NovoRJ said:

Resolvido. Instalou. Está aparecendo erro na pcnEnvEventoNFe para compilar. Vi que mudou. Tem algum roteiro para mudar nos sistemas? Tem que atualizar os schemas para adequar às últimas alterações?

@NovoRJ, por favor, veja este tópico:

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Algumas considerações:

 

1 - Se seto a quebra de linha como \r\n ou sLineBreak ao enviar para o sefaz rejeita a CCe

2 - Se faço um replace no xCorrecao para trocar a quebra de linha por ; autoriza, porem a impressão sai tudo na mesma linha

3 - Se não altero a quebra de linha, no XML envia | no lugar da quebra de linha e na impressão ocorre tudo corretamente

 

image.thumb.png.0a52f69a12f06162e0cae338b489ec0c.png

 

image.png.955f84bcc6ff76dcf8eb70cc584d73be.png

Editado por MarcosRWeimer

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Consultores
1 hour ago, MarcosRWeimer said:

Conforme a postagem acima, de minha parte, considero que o problema está solucionado

Mas a config de quebra de linha foi respeitada?

Apenas para garantir que estamos falando do mesmo caso.

Quando você mencionou seu problema, eu fiz um teste de emissão de uma carta de correção, onde na propriedade xCorrecao eu alimentei desta foram:

xCondUso := 'Teste do envio de carta de correcao com'+sLineBreak+'quebra'+sLineBreak+'de'+sLineBreak+'linha';

e vi que independente do valor que colocava em TWebServicesConf.QuebraDeLinha, ele sempre gerava meu XML com:

<xCorrecao>Teste do envio de carta de correcao com ;quebra ;de ; linha</xCorrecao>

Depois de aplicada a correção mencionada nas revisions, ele passou a substituir o sLineBreak pelo caractere de quebra  de linha que eu defini.

Isso não está ocorrendo para você?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Ola!

 

xCondUso := 'Teste do envio de carta de correcao com'+sLineBreak+'quebra'+sLineBreak+'de'+sLineBreak+'linha';

 

com o parâmetro de quebra de linha:

FACBrNFe1.Configuracoes.WebServices.QuebradeLinha := sLineBreak;

 

Desta maneira não funciona, se deixo padrão a quebra de linha com | ou com ; funciona

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia!

1 hour ago, MarcosRWeimer said:

Ola!

 

xCondUso := 'Teste do envio de carta de correcao com'+sLineBreak+'quebra'+sLineBreak+'de'+sLineBreak+'linha';

 

com o parâmetro de quebra de linha:

FACBrNFe1.Configuracoes.WebServices.QuebradeLinha := sLineBreak;

 

Desta maneira não funciona, se deixo padrão a quebra de linha com | ou com ; funciona

Entendi.

Mas para este caso, o comportamento me parece estar correto. Veja como é a rotina que faz a substituição:

function ChangeLineBreak(const AText: String; const NewLineBreak: String = ';'): String;
begin
  Result := AText;
  if Trim(Result) <> '' then
  begin
    // Troca todos CR+LF para apenas LF
    Result := StringReplace(Result, CRLF, LF, [rfReplaceAll]);

    // Se existe apenas CR, também troca os mesmos para LF
    Result := StringReplace(Result, CR, LF, [rfReplaceAll]);

    { Agora temos todas quebras como LF... Se a Quebra de linha final for
      diferente de LF, aplique a substituição }
    if NewLineBreak <> LF then
      Result := StringReplace(Result, LF, NewLineBreak, [rfReplaceAll]);
  end
end;

Fazendo um teste aqui em meu ambiente com o valor sLineBreak definido na configuração de quebra de linha, quando a string entra na rotina e também quando sai ela tem o valor:

'Teste do envio de carta de correcao com '#$D#$A'quebra '#$D#$A'de '#$D#$A' linha'

E eu recebo a seguinte validação de:

Quote

Project ACBrNFe_Exemplo.exe raised exception class EACBrNFeException with message 'Falha na validação dos dados do Evento:  --> 1839 - Element '{http://www.portalfiscal.inf.br/nfe}xCorrecao': [facet 'pattern'] The value 'Teste do envio de carta de correcao com
quebra
de  
linha' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.

Mesma coisa se utilizo o #13 e utilizando o #10 o NewLineBreak tem o mesmo valor de LF.

Portanto, você precisa definir um caractere específico para que seja feita a substituição mesmo.

Ai pode ser o ; o | \r\n ou qualquer outro caractere ou sequência de caracteres que julgar fazer mais sentido.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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
3 hours ago, MarcosRWeimer said:

Tem outro problema nesta questão das opções da CCe.

FACBrNFe.Configuracoes.Geral.RetirarAcentos := False;

 

No momento de gerar a CCe:

image.thumb.png.7c17c2e6f27ab42fd88d5380a9f295f6.png

 

Boa tarde.

Vamos verificar.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Fiz alguns testes, mas não enfrentei o mesmo comportamento.

No momento em que cai na linha do FiltrarTextoXML o RetirarAcentos está respeitando o que eu defini.

Por favor, verifique em sua rotina se essa configuração não é alterada em nenhum momento posteriormente a está definição e antes de entrar nas rotinas internas do componente para gerar o XML.

Debugue a rotina a partir do break-point indicado no print usando o step-into e veja se o valor passado coincide com o que definiu:
image.png

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Você definiu false para a propriedade? Se sim, entendo que o comportamento está correto.

Acompanhe o valor da propriedade de veja como ele fica posteriormente.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Bom dia!

 

image.thumb.png.0e9c4c31afbef330d81bb283dffa94b5.png

 

Veja que ali está marcando para retirar os acentos, sobrescrevendo a configuração.

Depois dependendo do evento seta FALSE, mais uma vez ignorando a configuração. Se os 2 eventos em questão não aceitam ok, mas qual o sentido de setar para retirar os acentos ignorando a configuração?

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

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.