Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3296 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á 3296 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...
The popup will be closed in 10 segundos...