• 0
Jéter Rabelo Ferreira

Geração De Arquivo Magnético Convênio 115/03

Pergunta

Olá.

 

Tenho um cliente (Provedor de Internet) que me solicitou que as NF's dele fossem emitidas "eletronicamente".

 

Pesquisando, verificamos que as empresas prestadoras de serviço de Energia e Telecomunicações são abrangidas pelo Convênio 115/03.

 

Esse convênio, entre outras coisas, dá a  possibilidade da empresa emitir NF's "eletrônicamente", que podem ser impressas em folha A4 e  etc, obedecendo poucas regras.

 

Uma dessas regras é que sejam gerados (4) arquivos textos contendo os dados dessas notas.

 

Partindo dessa premissa, desenvolvi um componente para faz a geração desses arquivos, o mesmo é composto de apenas uma unit.

 

Depois desse discurso, vai minha pergunta: Estou disposto a doar esse componente para o ACBr. Há interesse? 

 

Atenciosamente..

Compartilhar este post


Link para o post
Compartilhar em outros sites

270 respostass a esta questão

Recommended Posts

  • 0

Boa tarde pessoal!

Ao tentar validar (utilizei validador 3.0) um arquivo do tipo M.001 me retornou o seguinte erro:

Quantidade de bytes do arquivo Cadastro (846) não é múltiplo de 289. A 1ª linha do arquivo Destinatário deve conter 287 caracteres seguidos de CR + LF, totalizando 289 bytes por linha.

Segue em anexo o meu arquivo

Alguém já passou por isso?

Obrigado pela atenção!

MG02728850000136210011704N01M.001

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
1 hora atrás, Dercide Alvarez disse:

@LeoSlander

Esse arquivo é o mestre, o erro é no de destinatarios.

Dercide.

Realmente, estou fazendo errado.

Obrigado pela atenção!

O arquivo mestre está gerando igual ao do destinatários.

Sabe me dizer o que pode estar ocorrendo?

Editado por LeoSlander
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
1 hora atrás, LeoSlander disse:

Boa tarde pessoal!

Ao tentar validar (utilizei validador 3.0) um arquivo do tipo M.001 me retornou o seguinte erro:

Quantidade de bytes do arquivo Cadastro (846) não é múltiplo de 289. A 1ª linha do arquivo Destinatário deve conter 287 caracteres seguidos de CR + LF, totalizando 289 bytes por linha.

Segue em anexo o meu arquivo

Alguém já passou por isso?

Obrigado pela atenção!

MG02728850000136210011704N01M.001

Manda o arquivo de Cadastros pra gente ver

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Segue o arquivo.

Como é de teste esta com a advertência nas três linhas que contém o arquivo, pois os registros são para CPF.

grato pela atenção!

MG02728850000136210011703N01M.001

Na Unit uFrmACBrConvenio115_PRN possui a função SalvarPDF

segue função:

procedure TFrmACBrConvenio115_PRN.SalvarPDF;
begin
  DoAddDataSet;
  { TODO : implementar }
end;

Esta função não esta salvando a impressão em PDF?

Para salvar utilizei:
procedure TFrmACBrConvenio115_PRN.SalvarPDF;
begin
  DoAddDataSet;
  { TODO : implementar }
  RlReport.SaveToFile('diretorio\nomearquivo.pdf'); //salva o PDF
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Como informou LeoSlander, todos os CPFs aparecem como advertência. Mesmo não impedindo a transmissão, convencer o cliente e o contador disso já é outra conversa.

 

Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          3, campo: 01, posições:   1 a  14, conteúdo:[00015206585831]
 
Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          4, campo: 01, posições:   1 a  14, conteúdo:[00008022441902]
 
Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          6, campo: 01, posições:   1 a  14, conteúdo:[00005968230967]

PR08890343000180210011703N01M.001

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
4 horas atrás, Douglas Luiz Rodrigues disse:

Como informou LeoSlander, todos os CPFs aparecem como advertência. Mesmo não impedindo a transmissão, convencer o cliente e o contador disso já é outra conversa.

 

Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          3, campo: 01, posições:   1 a  14, conteúdo:[00015206585831]
 
Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          4, campo: 01, posições:   1 a  14, conteúdo:[00008022441902]
 
Advertência: 154 - CNPJ numericamente inválido
         Arquivo: Mestre, registro:          6, campo: 01, posições:   1 a  14, conteúdo:[00005968230967]

PR08890343000180210011703N01M.001

Você está informando que o campo 1 (CNPJ/CPF) é CNPJ para todos os clientes.

Esses erros aí são de clientes com CPF e você informou o valor "1", na coluna 222 do arquivo Mestre. Deveria informar o valor "2" (Pessoa Física)

Segue manual:

5.2.4.5. Campo 23 - Identificar o tipo de informação contida no campo 1, preenchendo com o dígito “1” se o conteúdo for um CNPJ ou com o dígito “2” se o conteúdo for um CPF. Em se tratando de pessoa jurídica não obrigada à inscrição no CNPJ, preencher com o dígito “3”, se for pessoa física não obrigada ao CPF, preencher com o dígito “4”; 

Editado por orlandobrz

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Saudações, amigos!

Estava comparando o Convênio 115-03 com o componente ACBr e percebi que o componente não trata os valores negativos corretamente.

Pelo que entendi, os valores de descontos nas Notas devem ser informados como ítens da Nota Fiscal e com valor negativo.

Segue parte do Convênio que fala sobre a questão da formatação de números:

4.2.1. Numérico (N), sem sinal, não compactado, alinhado à direita, suprimidos quaisquer caracteres não numéricos, com as posições não significativas preenchidas com zeros. Os valores negativos serão representados com o sinal negativo na primeira posição do campo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Em 13/04/2017 at 11:15, Dercide Alvarez disse:

Verifique o formato do CNPJ no mestre.

Advertência não impede a transmissão.

O ideal é sempre postar o arquivo e a linha do erro.

 

Dercide.

ola amigo , como faço para emitir uma nota modelo 21 com o acbr , e quais programas eu preciso para validar e enviar essa nota ?

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Em 2017-4-28 at 20:57, Rangel Assis disse:

ola amigo , como faço para emitir uma nota modelo 21 com o acbr , e quais programas eu preciso para validar e enviar essa nota ?

 

Boa noite,

Eu tenho um gerador próprio para emissão da nota modelo 21, mas o ACBr tem uma demo que você poderá se basear.

Quanto aos aplicativos e manuais necessários podem serem baixados do link abaixo :

https://portal.fazenda.sp.gov.br/servicos/nf-comunicacao-energia/paginas/sobre.aspx

 

Dercide.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Boa Tarde Senhores, ao tentar gerar um arquivo do ano passado ocorria uma exceção do tipo de assinante inválido, identifiquei que o problema esta em um if else, segue a baixo correção para o mesmo: 

    if Ano < 2017 then begin
      if FMestre.TipoAssinanteAte201612 = tac111None then
        raise Exception.Create('Tipo de assinante inválido para a Nota Fiscal: ' + IntToStr(FMestre.NumeroNF) +
                               ' - Cliente: ' + FMestre.Destinatario.CodigoConsumidor + '/' + FMestre.Destinatario.RazaoSocial);
    end else begin
      if FMestre.TipoAssinante = tac1182None then
        raise Exception.Create('Tipo de assinante inválido para a Nota Fiscal: ' + IntToStr(FMestre.NumeroNF) +
                               ' - Cliente: ' + FMestre.Destinatario.CodigoConsumidor + '/' + FMestre.Destinatario.RazaoSocial);
    end;

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Pessoal, acho que encontrei um erro.

function TACBrConvenio115Mestre.RegistroEAssinatura(AVersaoAnterior: Boolean): TConvenio115AssinaturaMD5;

.....

begin
    SRec := SRec +
          {23} IntToStr(Ord(IndicadorPessoa) + 1) +
          {24} _GetTab11_8_2 +
          {25} '00' + // Telecomunicação é 00
          {26} PadLeft(NumeroTelefonePrincipal, 12) +
          {27} PadLeft(OnlyNumber(FCnpjEmitente), 14, '0') +
          {28} PadRight(NumeroFaturaComercial, 20) +
          {29} PadLeft(TiraPontos(FormatFloat('#,##0.00', OutrosValores)), 12, '0') +    /////  DEVERIA SER ValorFaturaComecial
          {30} DataLeituraAnterior +
          {31} DataLeituraAtual +
          {32} PadRight('', 50) +
          {33} PadRight('', 8, '0') +
          {34} PadRight(Observacoes, 30) +
          {33} PadRight('', 5);
  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está agora destravado para futuros posts.