Ir para conteúdo
  • Cadastre-se

Luiz Eduardo Bodo

Membros
  • Total de ítens

    45
  • Registro em

  • Última visita

Posts postados por Luiz Eduardo Bodo

  1. Em 04/12/2023 at 10:22, Italo Giurizzato Junior disse:

    Bom dia Luiz,

    Faça um teste de envio de um lote com 2 RPS para ver se vai ocorrer algum erro.

    Boa tarde Italo, a agili me retornou com a seguinte resposta

    Citar

    Estava todo fora do layout, Por isso não conseguia, pede para verificar esse por gentileza

    <?xml version="1.0" encoding="UTF-8"?>
    <GerarNfseEnvio xmlns="http://www.agili.com.br/nfse_v_1.00.xsd">
    <UnidadeGestora>03238672000128</UnidadeGestora>
        <DeclaracaoPrestacaoServico>
            <IdentificacaoPrestador>
                <ChaveDigital>88c04eedc238223dd15a2576b7e9bb02</ChaveDigital>
                <CpfCnpj>
                    <Cnpj>40866985000157</Cnpj>
                </CpfCnpj>
                <InscricaoMunicipal>1516</InscricaoMunicipal>
            </IdentificacaoPrestador>
            <Rps>
                <IdentificacaoRps>
                    <Numero>1000000</Numero>
                    <Serie>85</Serie>
                    <Tipo>-2</Tipo>
                </IdentificacaoRps>
                <DataEmissao>2023-09-29</DataEmissao>
            </Rps>
            <DadosTomador>
                <IdentificacaoTomador>
                    <CpfCnpj>
                        <Cpf>69385165100</Cpf>
                    </CpfCnpj>
                </IdentificacaoTomador>
                <RazaoSocial>Jackson Goncalves Pessoa</RazaoSocial>
                <LocalEndereco>1</LocalEndereco>
                <Endereco>
                    <TipoLogradouro>RUA</TipoLogradouro>
                    <Logradouro>RUA ST CATARINA</Logradouro>
                    <Numero>69</Numero>
                    <Bairro>MORADA NOVA</Bairro>
                    <Municipio>
                        <CodigoMunicipioIBGE>5103353</CodigoMunicipioIBGE>
                        <Descricao>Confresa</Descricao>
                        <Uf>MT</Uf>
                    </Municipio>
                    <Pais>
                        <CodigoPaisBacen>1058</CodigoPaisBacen>
                        <Descricao>BRASIL</Descricao>
                    </Pais>
                    <Cep>78652000</Cep>
                </Endereco>
                <Contato>
                    <Telefone>66984042574</Telefone>
                    <Email>[email protected]</Email>
                </Contato>
            </DadosTomador>
            <RegimeEspecialTributacao>
                <Codigo>-5</Codigo>
            </RegimeEspecialTributacao>
            <OptanteSimplesNacional>1</OptanteSimplesNacional>
            <OptanteMEISimei>0</OptanteMEISimei>
            <ISSQNRetido>0</ISSQNRetido>
            <ItemLei116AtividadeEconomica>17.01</ItemLei116AtividadeEconomica>
            <ExigibilidadeISSQN>
                <Codigo>-1</Codigo>
            </ExigibilidadeISSQN>
            <MunicipioIncidencia>
                <CodigoMunicipioIBGE>5106778</CodigoMunicipioIBGE>
            </MunicipioIncidencia>
            <ValorServicos>1.00</ValorServicos>
            <ValorDescontos>0.00</ValorDescontos>
            <ValorPis>0.00</ValorPis>
            <ValorCofins>0.00</ValorCofins>
            <ValorInss>0.00</ValorInss>
            <ValorIrrf>0.00</ValorIrrf>
            <ValorCsll>0.00</ValorCsll>
            <ValorOutrasRetencoes>0.00</ValorOutrasRetencoes>
            <ValorBaseCalculoISSQN>1.00</ValorBaseCalculoISSQN>
            <ValorISSQNCalculado>0.05</ValorISSQNCalculado>
            <ValorDeducaoConstCivil>0.00</ValorDeducaoConstCivil>
            <ValorLiquido>1.00</ValorLiquido>
            <ListaServico>
                <DadosServico>
                    <Discriminacao>EXPRESS 1001</Discriminacao>
                    <ItemLei116>123.45</ItemLei116>
                    <Quantidade>1.0000</Quantidade>
                    <ValorServico>1.00</ValorServico>
                    <ValorDesconto>0.00</ValorDesconto>
                </DadosServico>
            </ListaServico>
            <Versao>1.00</Versao>
        </DeclaracaoPrestacaoServico>
    </GerarNfseEnvio>

     

    Disseram que este seria o XML correto a ser enviado.

  2. 34 minutos atrás, Italo Giurizzato Junior disse:

    Luiz,

    Anexa o XML que esta sendo gerado e enviado, quem sabe eles acham onde estamos errando.

    Italo, fiz o sugerido enviei o erro com o xml anexado, estou aguardando o retorno (lento) deles.

    Olhando a documentação que me foi enviada vi que o modo de envio é assincrono, troquei o modo de envio que antes eu tinha deixado meUnitario, agora setei para meAutomatico e agora esta me retornando a seguinte mensagem que anexei abaixo.

    Caso possa me ajudar, muito obrigado desde já. vou deixar o xml de teste anexado também.

    Semttulo.png.77568d656b4211cf9d3988830096b0ec.png

     

    5123114086698500015756000000000000001-rps.xml

  3. 58 minutos atrás, carlessoflu disse:

    Fiz uma função rápida que funciona em Delphi 7. Quem quiser usar é só alterar para os campos que usam.

    procedure TFCon_CNPJ.btnConsultarClick(Sender: TObject);
    var
      I: Integer;
      aHTTP : TACBrHTTP;
      Resposta : TStringList;
      URL : string;
    begin
      aHTTP := TACBrHTTP.Create(nil);
      try
        aHTTP.HTTPSend.Clear;
        aHTTP.TimeOut := 10000;                            
        URL := 'https://www.receitaws.com.br/v1/cnpj/'+F0Menu.TiraCaractere(EditCNPJ.Text)+'';
        
        try
          aHTTP.HTTPMethod('GET', URL);
          Resposta := TStringList.Create;
          try
            Resposta.Text := Trim(aHTTP.RespHTTP.Text);
    
            if Trim(LerCampo(Resposta,'nome')) = '' then
               application.messagebox(pchar('CNPJ não encontrado.'),'Atenção',mb_iconinformation)
            else
               begin
                 EditTipo.text        := LerCampo(Resposta,'tipo');
                 EditAbertura.text    := LerCampo(Resposta,'abertura');
                 EditRazaoSocial.Text := LerCampo(Resposta,'nome');
                 EditPorte.Text       := LerCampo(Resposta,'porte');
                 EditFantasia.text    := LerCampo(Resposta,'fantasia');
                 EditEndereco.text    := LerCampo(Resposta,'logradouro');
                 EditNumero.text      := LerCampo(Resposta,'numero');
                 EditComplemento.text := LerCampo(Resposta,'complemento');
                 EditBairro.text      := LerCampo(Resposta,'bairro');
                 EditCidade.text      := LerCampo(Resposta,'municipio');
                 EditUF.text          := LerCampo(Resposta,'uf');
                 EditCEP.text         := StringReplace(LerCampo(Resposta,'cep'),'.','',[rfReplaceAll]);;
                 EditSituacao.text    := LerCampo(Resposta,'situacao');
                 EditEmail.text       := LerCampo(Resposta,'email');
                 EditTelefone.text    := LerCampo(Resposta,'telefone');
               end;
          finally
            Resposta.Free;
          end;
        except
          on e: EACBrHTTPError do
          begin
            if pos('429',e.Message) > 0 then
               begin
                 application.messagebox(pchar('Você excedeu o máximo de 3 consultas por minuto. Tente novamente mais tarde.'),'Atenção',mb_iconerror);
               end
            else
               application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror);
          end;
          on e: exception do
          begin
            application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror);
          end;
        end;
      finally
        aHTTP.Free;
      end;

    A função para ler os campos:

    function TFCon_CNPJ.LerCampo(Texto: TStringList; NomeCampo: String): String;
    var
      i : integer;
      linha, coluna1, coluna2: String;
    begin
      Result := '';
      for i := 0 to Texto.Count-1 do
      begin
        linha := uppercase(Trim(Texto[i]));
        NomeCampo := uppercase(NomeCampo);
    
        coluna1 := copy(linha,1,pos(':',linha)-1); //pegar o texto antes do :
        coluna1 := StringReplace(Trim(coluna1),'"','',[rfReplaceAll]); //remover as aspas duplas "
    
        if coluna1 = NomeCampo then
        begin
          coluna2 := Trim(copy(linha,pos(':',linha)+1,length(linha))); //pegar o texto depois dos :
          coluna2 := StringReplace(Trim(coluna2),'"','',[rfReplaceAll]);  //remover as aspas duplas "
          coluna2 := StringReplace(Trim(coluna2),',','',[rfReplaceAll]);  //remover a virgula ,
          Result := coluna2;
          break;
        end;
      end
    end;

     

    Obrigado por compartilhar lembrando que a receitaws não e uma fonte oficial, podendo conter divergências nos dados

  4.  

    18 minutos atrás, Orlando Dantas disse:

    Eu havia testado essa API e algumas outras em um CNPJ que havia tido alterações recentes, e todas estavam me trazendo os dados antigos, a única que me trouxe os dados corretamente foi a CNPJÁ, que tem a opção de consulta Cache onde você obtêm os dados da base deles, e tem a opção ONLINE que é feita a busca dos dados na hora na receita federal, com a opção de já trazer a I.E. também, observando que a opção ONLINE é paga, mas eles têm planos bem em conta.

    obrigado pela dica Orlando, vou dar uma olhada.

    • Curtir 1
  5. 9 minutos atrás, Alexandre de Paula disse:

    Só uma observação... www.receitaws.com.br não é oficial no sentido de ser uma fonte governamental.

    é um serviço particular que oferece uma opção gratuita com limitação de quantidade de consultas e não é na base do governo, podendo existir divergencias das informações.

    Obrigado por esclarecer, realmente não tinha me atentado a este fato, de fato na base de dados da receitaws tem um atraso de pelo 1 mes em alguns cnpj que consultei aqui, mas nao sei se a data de atualizacao da base deles é realmente sincronizada com a receita federal.

    mas é funcional até certo ponto.

  6. Sim utilizando a API free oficial, esta funcionando perfeitamente, de ontem pra hoje dei uma melhorada nela, encapsulando. segue a unit.

     

    Fiz uma função para chamar.

    function TfrmPessoas.ConsultarCNPJ(const CNPJ: string): TCNPJInfo;
    begin
      Result := TCNPJInfo.Create;
    
      try
        Result.Consultar(CNPJ);
      except
        on E: Exception do
        begin
          // Trate as exceções, se necessário.
          ShowMessage('Erro ao consultar CNPJ: ' + E.Message);
          Result.Free; // Libere a instância em caso de erro.
          Result := nil; // Defina o resultado como nulo em caso de erro.
        end;
      end;
    end;
    // MODO DE USAR...
    InfoCNPJ := ConsultarCNPJ(DM.TiraPontos(txtDocumento.Text)); // Substitua pelo CNPJ desejado.
    if InfoCNPJ.Achou = 'Sim' then
      begin
      // achou 
      end
      else
      // não achou...

    espero ter ajudado, qualquer duvida ou melhorias é bem vinda...

    CNPJInfo.pas

    • Curtir 1
  7. Estava dando uma fuçada aqui, no exemplo colocando os dados inválidos, o erro aparece indicando o que esta inválido, a partir  do momento que eu preencho tudo corretamente, ai ele já volta para este erro que estou tendo.

    Fui deixando inválido quase todos os campos para saber se era algum campo que estava com problema de preenchimento, mas não achei nenhum campo inválido.

    Informações do Retorno:

    Requisição
    Ambiente: 1
    Cidade  : Sao Jose do Xingu/MT
    Provedor: Agili Versão: 1.00
     
    Método Executado: Gerar NFSe
     
    Parâmetros de Envio
    Numero do Lote: 1
     
    Parâmetros de Retorno
    Data de Envio : 30/12/1899
    Numero do Prot:
    Numero da Nota:
    Link          :
    Código Verif. :
    Sucesso       : False
     
    Erro(s):
    Código  : Erro
    Mensagem: Erro ao tentar gerar NFS-e => Value cannot be null.
    Parameter name: source
    Correção: Erro deve ser corrigido para poder gerar a NFS-e com os dados informados.
    ---------
    Código  : X203
    Mensagem: Não foi retornado nenhuma NFSe.
    Correção:
    ---------
     
    NFS-e Numero....: 1
    Cod. Verificacao:
    Prestador.......: ANTONIA CAVALCANTE DE MELO SILVA
    Tomador.........: Jakson Goncalves Pessoa

     

  8. 2 horas atrás, Italo Giurizzato Junior disse:

    Luiz, 

    Acabei de fazer um teste usando o programa exemplo do componente, veja o resultado:

    Envio no modo Unitário:

    Requisição
    Ambiente: 1
    Cidade  : Sao Jose do Xingu/MT
    Provedor: Agili Versão: 1.00
     
    Método Executado: Gerar NFSe
     
    Parâmetros de Envio
    Numero do Lote: 1
     
    Parâmetros de Retorno
    Data de Envio : 30/12/1899
    Numero do Prot: 
    Numero da Nota: 
    Link          : 
    Código Verif. : 
    Sucesso       : False
     
    Erro(s):
    Código  : E10
    Mensagem: Não foi possível autenticar com o CNPJ informado para a unidade gestora (Prefeitura).
    Correção: Corrija o CNPJ informado na TAG 'UnidadeGestora' e tente novamente.

    Envio no modo Assíncrono (lote com 2 Rps):

    Requisição
    Ambiente: 1
    Cidade  : Sao Jose do Xingu/MT
    Provedor: Agili Versão: 1.00
     
    Método Executado: Enviar Lote
     
    Parâmetros de Envio
    Numero do Lote: 2
     
    Parâmetros de Retorno
    Data de Envio : 30/12/1899
    Numero do Prot: 
    Numero da Nota: 
    Link          : 
    Código Verif. : 
    Sucesso       : False
     
    Erro(s):
    Código  : E10
    Mensagem: Não foi possível autenticar com o CNPJ informado para a unidade gestora (Prefeitura).
    Correção: Corrija o CNPJ informado na TAG 'UnidadeGestora' e tente novamente.

    Pela mensagem de erro que você esta recebendo, pode ser que algum campo não esta sendo alimentado.

    Por outro lado, os erros que eu recebi é de se esperar uma vez que passei dados invalidos.

    Italo, verifiquei o exemplo de cima abaixo, cheguei até a dar um CTRL+C + CTRL+V no meu projeto com o exemplo mas o erro continua, talvez eu esteja fazendo confusão na hora de gerar.

    Atualmente nos provedores que atendo, estou fazendo da seguinte forma.

    // Alimento a NFS-e com uma função, validando os dados.

    // Feito isso faço a emissão desta forma.

     DM.NFSE.Emitir(qryNFSeNumero_LOTE.AsString,meAutomatico,False);
     ChecarResposta(tmRecepcionar);

    E depois verifico via webservice o retorno.

     

    Agora no provedor Agili é desta forma? trocando o meAutomatico por meUnitário? ou tem alguma mudança a mais que eu nao estou fazendo.

    Na hora de checar a resposta, devo utilizar o tmRecepcionar? eu acho que estou pecando nesta parte.

×
×
  • 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.