Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Deve ter sido feito em uma do Delphi superior a sua.

Abra esse arquivo e vc vai receber em tempo de desing (projeto) essa mensagem.

Ignore-a e salve. Ai irá funcionar.

Postado

Entendi Italo, mas é por isso mesmo que falei que se colocar StrToIntDef resolvera, afinal nao estariamos mudando nada, so previndo que ocorresse um erro.

Afinal StrtoInt e StrToIntDef fazem a mesma coisa. Nao é verdade? A diferenca é que se alguem nao gerará nenhuma mensagem de erro.

Italo não estou conseguindo consultar por periodo. 

"ConsultarNfseEnvio" nao entendi direito, mas parece que não é reconhecido pelo ABRASF . Será que nao deveriamos utilizar "ConsultarNfseServicoPrestadoEnvio" ? . Modifiquei aqui mas gera um erro de recebimento do XML. 

Postado

No Demo da NFS-e eu consigo enviar um RPS e fazer, em ato contínuo, a consulta desse RPS e tenho o retorno que foi recebido aguardando o processamento. Ou seja, usar o botão "Gerar e Enviar Lote" e na sequência o botão "Consultar Lote".

 

Mas, se eu fechar tudo, e vou direto na consulta da situação do RPS, botão "Consultar Lote" tenho um erro:

 

"Estrtutura do xml recebido incorreta, java.xml.bind.MarshalException - with linked exception: [org.xml.sax.SAXParseException: cvc-length-valid: value '' with length '14' for type 'tsCnpj'.]

 

Anteriormente, com o mesmo Lote e Protocolo, como disse, fiz a consulta sem erros. Quando tento entrar no Demo e só fazer a consulta acontece essa mensagem.

Postado

Segue o xml de consulta:

 

<?xml version="1.0" encoding="UTF-8"?>
-<soapenv:Envelope xmlns:xd="http://www.w3.org/2000/09/xmldsig#" xmlns:ws="http://ws.issweb.fiorilli.com.br/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/>-<soapenv:Body>-<ws:consultarSituacaoLoteRps>-<ConsultarSituacaoLoteRpsEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">-<Prestador>-<CpfCnpj><Cnpj>01001001000113</Cnpj></CpfCnpj><InscricaoMunicipal>1.000.10</InscricaoMunicipal></Prestador><Protocolo>339</Protocolo></ConsultarSituacaoLoteRpsEnvio><username>01001001000113</username><password>123456</password></ws:consultarSituacaoLoteRps></soapenv:Body></soapenv:Envelope>

E  o xml de retorno:

 

<?xml version="1.0"?>
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">-<soap:Body>-<ns3:consultarLoteRpsResponse xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://ws.issweb.fiorilli.com.br/" xmlns:ns2="http://www.abrasf.org.br/nfse.xsd">-<ns2:ConsultarLoteRpsResposta><ns2:Situacao>0</ns2:Situacao>-<ns2:ListaMensagemRetorno>-<ns2:MensagemRetorno><ns2:Codigo>L4</ns2:Codigo><ns2:Mensagem>Estrutura do xml recebido incorreta. javax.xml.bind.MarshalException - with linked exception:[org.xml.sax.SAXParseException: cvc-length-valid: Value '' with length = '0' is not facet-valid with respect to length '14' for type 'tsCnpj'.].</ns2:Mensagem><ns2:Correcao>Valide as tags do xml antes de enviar.</ns2:Correcao></ns2:MensagemRetorno></ns2:ListaMensagemRetorno></ns2:ConsultarLoteRpsResposta></ns3:consultarLoteRpsResponse></soap:Body></soap:Envelope>
 
Postado

No seu fonte essa função de consulta ja tem o parâmetro 3 e 4, CNPJ e IE respectivamente? To achando que esse fonte é antigo. Você forçou a atualização do ACBr pelo novo endereço do SNV?

Postado

Pois é, o CNPJ até tem, com inscrição municipal, número do protocolo, usuário e senha (que estão no manual para homologação). Quando você entra diretamente para consultar o RPS acontece isso, parece que falta o valor do CNPJ para o xml, considerando a resposta dele. 

Postado

Italo não tou conseguindo gerar corretamento o xML para "ConsultarNfseServicoPrestadoEnvio' segundo a Fiorilli é essa funcao para consultar por periodo.

Sõ que o componente nao informa os dados do tomador. Pode me ajudar ?

Se agente fizer isso ja daria pra comecar a efetivamente comecar a aplicacao.

Postado

Quando coloquei a Tag <Pagina></Pagina> na unit "pnsfNFSeG" no método "Gera_DadosMsgConsNFSe"  após "'PeriodoEmissao>" ai validou o XML e recebi retorno com as NFSe geradas nesse periodo.

Precisamos saber quais os provedores que precisam dessa TAG além do padrão ABRASF.

A pergunta é. Se cada página vem no maximoi 10 notas, como faremos pra consultar todas no período?

Postado

Certo meu amigo. Obrigado. Sem o tomador funcionou. Sem a tag realmente não rodou. 

Agora quando formos consultar um periodo , é certo que teremos varias paginas, mas não sabemos quantas páginas.

Como faremos para consultar todas as NFSe geradas no periodo? Temos como saber qtas paginas temos para consultar?

Postado
Postado
- Italo as seguintes mudancas foram realizadas:
 
1) function TProvedorFiorilli.Gera_TagI(Acao: TnfseAcao; Prefixo3, Prefixo4,
  NameSpaceDad, Identificador, URI: String): AnsiString;
begin
 case Acao of
   acRecepcionar: Result := '<' + Prefixo3 + 'EnviarLoteRpsEnvio' + NameSpaceDad;
   acConsSit:     Result := '<' + Prefixo3 + 'ConsultarSituacaoLoteRpsEnvio' + NameSpaceDad;
   acConsLote:    Result := '<' + Prefixo3 + 'ConsultarLoteRpsEnvio' + NameSpaceDad;
   acConsNFSeRps: Result := '<' + Prefixo3 + 'ConsultarNfseRpsEnvio' + NameSpaceDad;
   acConsNFSe:    Result := '<' + Prefixo3 + 'ConsultarNfseServicoPrestadoEnvio' + NameSpaceDad; // ** linha modificada
   acCancelar:    Result := '<' + Prefixo3 + 'CancelarNfseEnvio' + NameSpaceDad +
                             '<' + Prefixo3 + 'Pedido>' +
                              '<' + Prefixo4 + 'InfPedidoCancelamento' +
                                 DFeUtil.SeSenao(Identificador <> '', ' ' + Identificador + '="' + URI + '"', '') + '>';
   acGerar:       Result := '<' + Prefixo3 + 'GerarNfseEnvio' + NameSpaceDad;
   acRecSincrono: Result := '<' + Prefixo3 + 'EnviarLoteRpsSincronoEnvio' + NameSpaceDad;
 end;
end;
 
 
2) function TProvedorFiorilli.Gera_TagF(Acao: TnfseAcao; Prefixo3: String): AnsiString;
begin
 case Acao of
   acRecepcionar: Result := '</' + Prefixo3 + 'EnviarLoteRpsEnvio>';
   acConsSit:     Result := '</' + Prefixo3 + 'ConsultarSituacaoLoteRpsEnvio>';
   acConsLote:    Result := '</' + Prefixo3 + 'ConsultarLoteRpsEnvio>';
   acConsNFSeRps: Result := '</' + Prefixo3 + 'ConsultarNfseRpsEnvio>';
   acConsNFSe:    Result := '</' + Prefixo3 + 'ConsultarNfseServicoPrestadoEnvio>'; // *** essa linha foi modificada
   acCancelar:    Result := '</' + Prefixo3 + 'Pedido>' +
                            '</' + Prefixo3 + 'CancelarNfseEnvio>';
   acGerar:       Result := '</' + Prefixo3 + 'GerarNfseEnvio>';
   acRecSincrono: Result := '</' + Prefixo3 + 'EnviarLoteRpsSincronoEnvio>';
 end;
end;
 
3) function TProvedorFiorilli.GeraEnvelopeConsultarNFSe ficou assim:
 result := '<?xml version="1.0" encoding="utf-8"?>'+
           '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" '+
                             'xmlns:ws="http://ws.issweb.fiorilli.com.br/" '+
                             'xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> ' +
           '<soapenv:Header/>' +
              '<soapenv:Body>' +
                '<ws:consultarNfseServicoPrestado>' +   // **** essa linha modificada
                    DadosMsg +
                    DadosSenha +
                 '</ws:consultarNfseServicoPrestado>' +  // **** essa linha modificada
              '</soapenv:Body>' +
           '</soapenv:Envelope>';
 
4) function TProvedorFiorilli.GetSoapAction(Acao: TnfseAcao; NomeCidade: String): String;
const
begin
 case Acao of
   acRecepcionar: Result := urlsoap + 'recepcionarLoteRps';
   acConsSit:     Result := urlsoap + 'consultarSituacaoLoteRps';
   acConsLote:    Result := urlsoap + 'consultarLoteRps';
   acConsNFSeRps: Result := urlsoap + 'consultarNfsePorRps';
   acConsNFSe:    Result := urlsoap + 'consultarNfseServicoPrestado'; // **** essa linha modificada
   acCancelar:    Result := urlsoap + 'cancelarNfse';
   acGerar:       Result := urlsoap + 'gerarNfse';
   acRecSincrono: Result := urlsoap + 'recepcionarLoteRpsSincrono';
 end;

 

Foi estado e funcionando. 

Postado

Boa tarde.

 

Italo enviei pro seu email a informacao que o pessoal da FIORILLI me enviou em relacao a quantidade de paginas.

Na verdade vou enviar pra vc novamente o anexo da lista de NFe.

Se você olhar bem , verá que no fim do xml tem uma TAG chamada "PROXIMAPAGINA". Se ela for maior que a pagina enviada para consulta é sinal que teremos que fazer outra consulta com o numero da outra pagina. Vou enviar pro seu email a copia do XML.

  • Consultores
Postado

Boa tarde Abinoan,

 

Recebi o seu e-mail, e já providenciei as alterações no componente.

 

Agora ao realizar uma Consulta de NFSe vai ser possível informar o numero da página, informação esta necessária para realizar a consulta quando o provedor for Fiorilli e fintelISS.

 

A sintaxe da função agora é:

 

    function ConsultarNFSe(ACnpj, AInscricaoMunicipal: String; 

                                           ADataInicial, ADataFinal: TDateTime;

                                           NumeroNFSe: String = '';
                                           APagina: Integer = 1): Boolean;

 

 

Favor atualizar os fontes e testar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Bom dia, estava com dificuldades para fazer a consulta do RPS, mas agora está blz. Na verdade, faltava a informação do CNPJ e IM. 

 

Agora, tem alguém que pode me ajudar no seguinte: Preciso gravar a data e número do protocolo em meu banco de dados. Como posso fazer?

 

Abs,

Postado

Italojr, no código abaixo, precisei acrescentar o provedor Fiorilli para que funcionasse corretamente.

 

function TWebServices.Envia(ALote: String): Boolean;
begin
 self.Enviar.FNumeroLote := ALote;


 Result := Self.Enviar.Executar;


 if not (Result)
  then begin
   if Assigned(TACBrNFSe( FACBrNFSe ).OnGerarLog)
    then TACBrNFSe( FACBrNFSe ).OnGerarLog(Self.Enviar.Msg);
   if Self.Enviar.Msg <> ''
    then raise Exception.Create(Self.Enviar.Msg)
    else raise Exception.Create('Erro Desconhecido!')
  end;


 if (TACBrNFSe( FACBrNFSe ).Configuracoes.WebServices.ConsultaLoteAposEnvio) and (Result) then
 begin
   Self.ConsSitLote.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.Cnpj;
   Self.ConsSitLote.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.InscricaoMunicipal;
   Self.ConsSitLote.Protocolo          := Self.Enviar.Protocolo;


   Self.ConsLote.Protocolo := Self.Enviar.Protocolo;


   if not (TACBrNFSe( FACBrNFSe ).Configuracoes.WebServices.Provedor in [profintelISS, proSaatri, proISSDigital, proFiorilli])
    then begin
     Result := Self.ConsSitLote.Executar;


     if not (Result)
      then begin
       if Assigned(TACBrNFSe( FACBrNFSe ).OnGerarLog)
        then TACBrNFSe( FACBrNFSe ).OnGerarLog(Self.ConsSitLote.Msg);
       raise Exception.Create(Self.ConsSitLote.Msg);
      end;
    end;


   Result := Self.ConsLote.Executar;


   if not (Result)
    then begin
     if Assigned(TACBrNFSe( FACBrNFSe ).OnGerarLog)
      then TACBrNFSe( FACBrNFSe ).OnGerarLog(Self.ConsLote.Msg);
     raise Exception.Create(Self.ConsLote.Msg);
    end;
 end;
end;

Acho interessante que, depois de análise, seja definido para o componente definitivamente.

 

Abs,

 

  • Consultores
Postado

Bom dia Carlos,

 

Estranho, o provedor Fiorilli, não possui o webservice para consultar a situação do lote?

 

Pois acrescentando o proFiorilli na lista como você fez ele deixa de consultar a situação do lote.

 

Você tentou usar o EnviarSincrono em vez do Enviar?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Sim, essa consulta posterior ao envio me retorna uma mensagem do provedor com o protocolo e data. No caso do EnvioSincrono não consegui enviar. Me retorna uma mensagem meio misturada com o XML.

 

Vou fazer novamente e colar a mensagem aqui.

 

Abs,

Postado

Pelo método enviar:

 

Mensagem:

"Numero do Lote: 100

Recebimento: 16/07/2013 11:13:30

Protocolo: 350

Provedor: Fiorilli"

 

Logo depois, o componente dispara uma consulta:

"Código Erro: E178

Mensagem: Lote aguardando processamento

Correção: O lote de RPS correspondente ao protocolo informado foi recebido pela Prefeitura, mas ainda não foi processado.

Provedor: Fiorilli"

 

Caso eu não usar o nome do provedor naquele IF tenho um erro durante a consulta e o sistema interrompe nesse erro.

 

Para completar, nessa mesma situação, já tive um retorno do provedor no dia posterior, com a validação do RPS, inclusive com os erros que deveriam ser corrigidos no RPS.

 

Pelo metodo EnviaSincrono tenho uma mensagem dizendo que a estrutura do XML não está correta, para validar as tags, etc...

 

Abs,

  • Este tópico foi criado há 3210 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.