Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Bom dia,

Estou com problemas alguns dias para validar os arquivos gerados pelo componente ACBrConvenio115. Os arquivos são gerados aparentemente sem nenhum problema, mas quando vou utilizar o Validador 3.00e ele dá mensagem de erro (imagem em anexo).

Segue abaixo o conteúdo do fonte para Delphi 7 que estou utilizando.

with convenio115 do
  begin
    SalvarEm := qrconfig.fieldbyname('CN115_CAMINHO_ARQUIVOS').asstring;

    UF := qrconfig.fieldbyname('cn115_uf').AsString;
    Serie := qrnotafiscal.fieldbyname('c115_serie').asstring;
    Ano := NumeroInteiro(formatdatetime('yyyy',qrnotafiscal.fieldbyname('c115_emissao').AsDateTime));
    Mes := NumeroInteiro(formatdatetime('mm',qrnotafiscal.fieldbyname('c115_emissao').AsDateTime));
    CnpjEmitente := sonumero(qrconfig.fieldbyname('cn115_cnpj').AsString);
    Modelo := NumeroInteiro(qrnotafiscal.fieldbyname('c115_modelo').AsString);
  end;

N:=0;

while not qrnotafiscal.eof do
  begin
    if (qrnotafiscal.FieldByName('c115_emissao').AsDate>Periodo1) and (qrnotafiscal.FieldByName('c115_emissao').AsDate<Periodo2) then
      begin
        with Convenio115 do
          begin
            OMestre := TACBrConvenio115Mestre.Create;
            OMestre.Destinatario.CnpjCpf := EspacosDireita(sonumero(qrcliente.fieldbyname('doc1').AsString),14);
            OMestre.Destinatario.InscricaoEstadual := EspacosDireita(sonumero(qrcliente.fieldbyname('doc2').AsString),14);
            OMestre.Destinatario.RazaoSocial := EspacosDireita(qrcliente.fieldbyname('razaosocial').AsString,35);
            OMestre.Destinatario.Logradouro := EspacosDireita(qrcliente.fieldbyname('endereco').AsString,45);
            OMestre.Destinatario.Numero := EspacosDireita(qrcliente.fieldbyname('numero').AsString,5);
            OMestre.Destinatario.Complemento := EspacosDireita(qrcliente.fieldbyname('complemento').AsString,15);
            OMestre.Destinatario.CEP := EspacosDireita(qrcliente.fieldbyname('cep').AsString,8);
            OMestre.Destinatario.Bairro := EspacosDireita(qrcliente.fieldbyname('bairro').AsString,15);
            OMestre.Destinatario.Municipio := EspacosDireita(qrcliente.fieldbyname('cidade').AsString,30);
            OMestre.Destinatario.UF := EspacosDireita(qrcliente.fieldbyname('uf').AsString,2);
            OMestre.Destinatario.Telefone := EspacosDireita(qrcliente.fieldbyname('fone1').AsString,10);
            OMestre.Destinatario.CodigoConsumidor := IntToStr(qrcliente.fieldbyname('codigo').asinteger);

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='A' then
              OMestre.TipoAssinante:=tac1182None;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='B' then
              OMestre.TipoAssinante:=tac11182Comercial;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='C' then
              OMestre.TipoAssinante:=tac11182Industrial;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='D' then
              OMestre.TipoAssinante:=tac11182PessoaFisicaResidencial;;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='E' then
              OMestre.TipoAssinante:=tac11182ProdutorRural;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='F' then
              OMestre.TipoAssinante:=tac11182AdmPublicaEstadualConvICMS107_95;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='G' then
              OMestre.TipoAssinante:=tac11182PrestServicoTelecomConvIcms17_13;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='H' then
              OMestre.TipoAssinante:=tac11182MissoesDiplomConvIcms158_94;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='I' then
              OMestre.TipoAssinante:=tac11182Igrejas;

            if qrnotafiscal.FieldByName('C115_TIPO_ASSINANTE').AsString='J' then
              OMestre.TipoAssinante:=tac11182Outros;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='A' then
              OMestre.TipoUtilizacao:=pc112None;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='B' then
              OMestre.TipoUtilizacao:=pc112Telefonia;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='C' then
              OMestre.TipoUtilizacao:=pc112ComunicacaoDados;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='D' then
              OMestre.TipoUtilizacao:=pc112TVAssinatura;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='E' then
              OMestre.TipoUtilizacao:=pc112ProvimentoAcessoInternet;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='F' then
              OMestre.TipoUtilizacao:=pc112Multimidia;

            if qrnotafiscal.FieldByName('C115_TIPO_UTILIZACAO').AsString='G' then
              OMestre.TipoUtilizacao:=pc112Outros;

            OMestre.DataEmissao := qrnotafiscal.fieldbyname('c115_emissao').AsDateTime;
            OMestre.Modelo := NumeroInteiro(qrnotafiscal.fieldbyname('c115_modelo').AsString);
            OMestre.Serie := qrnotafiscal.fieldbyname('c115_serie').AsString;
            OMestre.NumeroNF := NumeroInteiro(qrnotafiscal.fieldbyname('c115_numero').AsString);
            OMestre.ValorTotal := qrnotafiscal.fieldbyname('C115_VALOR_TOTAL').AsFloat;
            OMestre.ICMS_BaseCalculo := qrnotafiscal.fieldbyname('C115_BASE_CALCULO').AsFloat;
            OMestre.ICMS_Valor := qrnotafiscal.fieldbyname('C115_VALOR_ICMS').AsFloat;
            OMestre.IsentosNaoTributadas := qrnotafiscal.fieldbyname('C115_ISENTOS_ICMS').AsFloat;
            OMestre.OutrosValores := qrnotafiscal.fieldbyname('C115_OUTROS_ICMS').AsFloat;
            OMestre.AnoMesRefencia := FormatDateTime('yymm',qrnotafiscal.fieldbyname('c115_emissao').asdatetime); // AAMM

            qritens.Refresh;
            qritens.First;

            A:=0;

            While not qritens.Eof do
              begin
                A:=A+1;

                ODetalhe := TACBrConvenio115Item.Create;
                ODetalhe.CFOP := qritens.fieldbyname('C115D_CFOP').AsString;
                ODetalhe.Item := A;
                ODetalhe.CodigoServico := IntToStr(qrservico.fieldbyname('srcodigo').AsInteger);
                ODetalhe.DescricaoServico := qrservico.fieldbyname('srdescricao').AsString;
                ODetalhe.Unidade := qritens.fieldbyname('C115D_MEDIDA').AsString;
                ODetalhe.ClassificacaoItem := qritens.fieldbyname('C115D_CLASSIFICACAO').AsString;
                ODetalhe.QtdeContratada := qritens.fieldbyname('C115D_CONTRATADA').asfloat;
                ODetalhe.QtdePrestada := qritens.fieldbyname('C115D_PRESTADA').asfloat;
                ODetalhe.ValorTotal := qritens.fieldbyname('C115D_VALOR_TOTAL').asfloat;
                ODetalhe.Desconto := 0;
                ODetalhe.AcrescimosDespAcessorias := 0;

                ODetalhe.ICMSBaseCalculo := qritens.fieldbyname('C115D_BASE_CALCULO').AsFloat;
                ODetalhe.ICMSValor := qritens.fieldbyname('C115D_VALOR_ICMS').AsFloat;
                ODetalhe.ICMSAliquota := qritens.fieldbyname('C115D_ALIQUOTA').AsFloat;

                ODetalhe.IsentoNaoTributados := qritens.fieldbyname('C115D_ISENTOS_ICMS').AsFloat;

                ODetalhe.OutrosValores := qritens.fieldbyname('C115D_OUTROS_ICMS').AsFloat;

                ODetalhe.AnoMesApuracao := FormatDateTime('yymm',qrnotafiscal.fieldbyname('c115_emissao').asdatetime); // AAMM
                OMestre.Detalhes.Add(ODetalhe);

                qritens.Next;
              end;

            Mestre.Add(OMestre);

            if TamanhoString(qrnotafiscal.fieldbyname('c115_md5').AsString)=0 then
              begin
                chavemd5:=Convenio115.Mestre[0].AutenticacaoDocumentoFiscal;

                qrnotafiscal.Edit;
                qrnotafiscal.fieldbyname('c115_md5').AsString:=chavemd5;
                qrnotafiscal.Post;
                qrnotafiscal.CommitUpdates;
              end;

            N:=N+1;
          end;
      end;

    qrnotafiscal.Next;
  end;

Convenio115.Gerar;
 

Imagem_do_Erro_Validador_300e.png

  • Daniel Simoes changed the title to Convênio 115/03 - Erro na validação dos dados
  • Administradores
Postado

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Bom dia.

Pelo visto falta  caractere no arquivo.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 !!

  • Membros Pro
Postado

Sim, eu entendi isto também.

Porém este tipo de arquivo que o convênio gera é complicadissimo pois é uma compactação de arquivos diferente dos compactadores padrão, ou seja, ao meu ver é quase impossível ler o conteudo gerado pelo componente.

Eu já analisei o meu código e revisei diversas vezes e não conseguiu encontrar a razão.

  • Consultores
Postado
45 minutos atrás, Juliano Otaviano Barreto disse:

Sim, eu entendi isto também.

Porém este tipo de arquivo que o convênio gera é complicadissimo pois é uma compactação de arquivos diferente dos compactadores padrão, ou seja, ao meu ver é quase impossível ler o conteudo gerado pelo componente. 

Eu já analisei o meu código e revisei diversas vezes e não conseguiu encontrar a razão.

A princípio tinha achado que poderia ser uma desatualização do componente. Mas olhando o manual do arquivo e o código, eu não encontrei nada que aparentemente geraria essa diferença apontada pelo validador.

Poderia por favor me mandar o arquivo que você está tentando validar?

  • 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.
  • Consultores
Postado
3 horas atrás, Juliano Otaviano Barreto disse:

É um arquivo ASCII. Basta abrir no Notepad++, Visual Studio Code, bloco de notas, ou qualquer editor de texto.

  • 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.
  • Consultores
  • Solution
Postado

O arquivo destinatário ("MG22843710000116211  1905N01D.001"), parece que está incompleto mesmo. Veja o conteúdo:

66259110000261ISENTO        00000000                           00                                           00360               38930000                                                           12                        20190509211  000000001     929E54F4C44D3857748F1E529498E44E

Não tem dados de razão social, endereço, código de município, etc...

Você precisa verificar se no seu banco de dados esses dados existem e depois se estão sendo informados ao componente.

Uma coisa que notei agora no seu código é que você está usando funções para colocar espaços a direita. Como aqui:

5 horas atrás, Juliano Otaviano Barreto disse:

while not qrnotafiscal.eof do
  begin
    if (qrnotafiscal.FieldByName('c115_emissao').AsDate>Periodo1) and (qrnotafiscal.FieldByName('c115_emissao').AsDate<Periodo2) then
      begin
        with Convenio115 do
          begin
            OMestre := TACBrConvenio115Mestre.Create;
            OMestre.Destinatario.CnpjCpf := EspacosDireita(sonumero(qrcliente.fieldbyname('doc1').AsString),14);
            OMestre.Destinatario.InscricaoEstadual := EspacosDireita(sonumero(qrcliente.fieldbyname('doc2').AsString),14);
            OMestre.Destinatario.RazaoSocial := EspacosDireita(qrcliente.fieldbyname('razaosocial').AsString,35);

Não é necessário fazer isso. O componente já faz os tratamentos de tamanhos de campos na hora de gerar os arquivos.

  • 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.
  • Membros Pro
Postado

Eu fiz este tratamento de tamanho na tentativa de garantir o tamanho correto... porque já faz um pá de dias que estou penando nesta rotina.

Vou retirar e ver o que acontece.

Obrigado ao amigo que falou que dá para abrir com o notepad, eu não tinha experimentado isto.

  • Curtir 1
  • Este tópico foi criado há 1990 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.

The popup will be closed in 10 segundos...