Elazar
Membros-
Total de ítens
45 -
Registro em
-
Última visita
-
Days Won
6
Elazar last won the day on 1 Janeiro 2019
Elazar had the most liked content!
Últimos Visitantes
1.079 visualizações
Elazar's Achievements
-
Por acaso é falha de duplicidade? Duplicidade pode acontecer quando o sefaz recebe a solicitação porem por algum motivo você não conseguiu receber a resposta. Se for este o caso você pode fazer uma consulta com o seu xml carregado no componente e ajustar as propriedades faltantes e assim salvar e imprimir.
-
Bom dia. Parece que o sefaz está com problemas, inclusive nem acessa os links pelas urls Pode testar ai... https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx Engraçado que na Disponibilidade diz que está tudo ok http://www.nfe.fazenda.gov.br/portal/disponibilidade.aspx?versao=0.00&tipoConteudo=Skeuqr8PQBY=
-
Olá, agora sim, com este novo TNFSeEnviarSincrono.TratarResposta ficou bom demais. Estava com suspeitas de por não existir a tag no xml ela voltasse a ficar em branco, já que o .protocolo estava sendo ajustado no index certo antes de receber os dados da nota, mas ficou ok. Autorização para tecnos Ok. OBS para quem estiver começando agora. Tecnos requer: FNotaServicoWebService.ACBr.Configuracoes.Geral.ConsultaLoteAposEnvio := True; OBS 2 Vou continuar vendo o restante e grito assim que surgir algum detalhe. Lembrando que a unit ACBrNFSeDANFSeFR.pas ainda precisa de ajustes. (estou anexando novamente para que alguem possa avaliar com calma) Danfse também precisa de ajustes no layout, assim que possível farei isto e disponibilizarei aqui. ACBrNFSeDANFSeFR.pas
-
Olá, pelo que olhei os fontes vai resolver! Vou fazer alguns testes e confirmo o resultado.
-
Olá, agora no final da tarde consegui fazer algumas modificações seguindo um pouco mais sua linha de raciocinio. Para que funcione com o Tecnos segue então as sugestões. ~Baseando-se -Leitura da datahora recebimento na consulta do lote enviado, sem isto o metodo extrair notas retorno vai retornar False no Result := FEnviarSincrono.Executar; -Atribuição da propriedade Protocolo durante o metodo ExtrairNotasRetorno no modo LayNfseConsultaLote; (Na segunda execução - retorno das informações da nota) (já que LayNFSeRecepcaoLoteSincrono nunca ocorrerá para o servidor Tecnos); / Retorno do GerarNfse e ConsultarLoteRps if FPLayout in [LayNFSeGerar, LayNfseConsultaLote] then FNotasFiscais.Items[ii].NFSe.Situacao := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao; FNotasFiscais.Items[ii].NFSe.Protocolo := FProtocolo; end; ACBrNFSeWebServices.pas pnfsLerListaNFSe.pas
-
Olá, boa tarde Italo. Com as alterações em pnfsLerListaNFSe.pas e pnfsNFSeR.pas o método EnviaSincrono está retornando false, e uma exception é lançada. Ainda assim o protocolo não é retornado após leitura das mensagens. function TWebServices.EnviaSincrono(ALote: String): Boolean; begin FEnviarSincrono.FNumeroLote := ALote; Result := FEnviarSincrono.Executar; //Retornando false **1 if not (Result) then FEnviarSincrono.GerarException( FEnviarSincrono.Msg ); // Alguns provedores requerem que sejam feitas as consultas para obter o XML // da NFS-e FConsSitLoteRPS.FProtocolo := FEnviarSincrono.Protocolo; FConsSitLoteRPS.FNumeroLote := FEnviarSincrono.NumeroLote; FConsLote.FProtocolo := FEnviarSincrono.Protocolo; // .Protocolo deveria estar preenchido com o protocolo da primeira chamada. if (TACBrNFSe(FACBrNFSe).Configuracoes.Geral.ConsultaLoteAposEnvio) and (Result) then begin if ProvedorToVersaoNFSe(TACBrNFSe(FACBrNFSe).Configuracoes.Geral.Provedor) = ve100 then begin Result := FConsSitLoteRPS.Executar; if not (Result) then FConsSitLoteRPS.GerarException( FConsSitLoteRPS.Msg ); end; if TACBrNFSe(FACBrNFSe).Configuracoes.Geral.Provedor = proInfisc then Result := True else Result := FConsLote.Executar; if not (Result) then FConsLote.GerarException( FConsLote.Msg ); end; end;
-
Olá, bom dia Segue xmlTecnos.zip
-
Update 1 Provedor da Tecnos tem o seguinte funcionamento 1-Envia o xml das notas 2-Retorna o recibo de processamento com o protocolo do lote (nota) 3-Envia consulta do lote com o protocolo recem recebido 4-Retorna o xml da nota (sem protocolo) ...se formos manter o padrão você precisa preencher a tag com o protocolo já recibo, esta seria a minha sugestão. Nos fontes atuais, o "FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao" no quarto passo retorna 4 - "Processado com sucesso" o qual é ajustado apenas no NotasFiscais[0], seguindo a lógica deste o protocolo deveria ser ajustado no index 0 também, não no index 1. Update 2 Comprovando o que digo... você pode verificar as duas imagens abaixo, onde descreve as situações retornadas pelo servidor. Atual.jpg, fontes acbr atual. Tecnos.jpg com a minha modificação do protocolo. Ademais, porque uso o FProtocolo? porque o FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Protocolo; (ainda no quarto passo estaria zerado porque no retorno do xml da nota ele não existe, logo precisamos manter o que já possuimos, retornado na consulta, lá no passo 2). Bom, isto é só explicando os motivos de qual eu vou continuar usando a linha que sugeri por enquanto. Update 3 Outra coisa que notei agora a pouco e vou investigar melhor em seguida é quanto a Damfse, pareçe o servidor Tecnos não está retornando uma meia duzia de campos atualmente exibidos, já cogitei uma possibilidade de implementação de um novo layout com estes ajustes.
-
Olá Porem quando isto ocorre o ii está como 1 (novoretorno = true) = LayNFSeGerar, LayNFSeRecepcaoLoteSincrono Mas quando a efetiva resposta com o xml da nota retorna o ajuste é feito no index 0 = LayNFSeGerar, LayNfseConsultaLote ***1 e o xml das notas fica sem protocolo; Sendo assim, no final da execução existem dois itens no NotasFiscais, até onde pude verificar o 1 tem protocolo e 0 sem o .Protocolo FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo e FNotaServicoWebService.ACBr.NotasFiscais.Items[1].NFSe.Protocolo. Já que o ajuste de "codigoverificação" é feito em .NFSe.CodigoVerificacao no index 0 acredito que o .Protocolo também poderia ***1 If que falei e ajusta para 0 o index onde será ajustados os dados if ((FProvedor <> proNFSeBrasil) and ((StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0)) and (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Serie = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Serie) and (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Tipo = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Tipo)) or (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID)) or ((FProvedor = proNFSeBrasil) and (StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0))) then begin NovoRetorno := False; ii := l; break; end; e o 1 ainda existe, ocasionando 2 objetos na list.
-
Olá, boa tarde Fiz uma breve comparação nos fontes, falando sobre o ACBrNFSeWebServices a primeira modificação fica ok, fica certo se todos os provedores sincronos tiverem o mesmo comportamento. Sobre a segunda modificação sugerida, acredito que seria interessante manter o preenchimento da tag protocolo de cada NFSe. Veja que Codigo de verificação é preenchido normalmente, assim poderia ser feito para o protocolo tambem. FNotasFiscais.Items[ii].NFSe.CodigoVerificacao := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.CodigoVerificacao; Minha sugestão consiste em manter esta parte assim: // Retorno do GerarNfse e ConsultarLoteRps if FPLayout in [LayNFSeGerar, LayNfseConsultaLote] then begin FNotasFiscais.Items[ii].NFSe.Situacao := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao; FNotasFiscais.Items[ii].NFSe.Protocolo := FProtocolo; end; Talvez isto seja uma exceção da Tecnos que retorna o protocolo apenas na consulta... porem a linha faz falta; Nos nossos fontes poderia ficar normalmente assim: if FNotaServicoWebService.ACBr.EnviarSincrono(FNotaServicoWebService.Numero, False) then begin sProtocolo := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo; sChave := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.CodigoVerificacao; sNumero := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Numero; sCaminhoXML := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NomeArq; .... Obrigado
-
Postei á algumas horas uma correção para o servidor Tecnos, poderia verificar se a unit lá corrige o seu problema?
-
Olá Tente verificar os arquivos de envio/resposta para ver se vem alguma coisa mas por algum motivo o componente não lê a resposta. As vezes pode ser interessante colocar os arquivos para salvar em caminhos separados e ir monitorando que muda... Um exemplo do que fiz a pouco tempo com a NFSe sPathGer := FCaminhoSistema + 'Arquivos\Temp\NFSe\PathGer\'; sPathNFSe := FCaminhoSistema + 'Arquivos\NFSe\XML\'; sPathRPS := FCaminhoSistema + 'Arquivos\NFSe\RPS\'; sPathCan := FCaminhoSistema + 'Arquivos\NFSe\CAN\'; sPathSalvar := FCaminhoSistema + 'Arquivos\NFSe\SALVAR\'; sPathPDF := FCaminhoSistema + 'Arquivos\NFSe\PDF\';
-
Olá pessoal Fiz duas pequenas modificações para utilização no servidor Tecnos. Uma delas é quanto ao Numero do protocolo, utilizado na consulta dos lotes durante o envio sincrono e outra é na Damfse referente ao código do municipio e nome do municío que está trocado. Como segue: Durante o envio do xml é retornado apenas um recibo de processamento, sendo então necessário uma consulta para obter o xml da nota. O qual pode ser feito automático pelo componente, modificando-se a propriedade abaixo (usando as correções que disponibilizo aqui funciona): FNotaServicoWebService.ACBr.Configuracoes.Geral.ConsultaLoteAposEnvio := True Correções para o comportamente de envio já trazer os xmls. Em ACBrNFSeWebServices.pas (anexo) .... if (FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.NumeroLote <> '0') then begin FProtocolo := FRetornoNFSe.Protocolo; ... // Retorno do GerarNfse e ConsultarLoteRps if FPLayout in [LayNFSeGerar, LayNfseConsultaLote] then begin FNotasFiscais.Items[ii].NFSe.Situacao := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao; FNotasFiscais.Items[ii].NFSe.Protocolo := FProtocolo; end; Com isto o envio preenche o FProtocolo (EnviarEvento) como valor retornado do recibo, e em seguida, durante a consulta, preenche a nota com o mesmo valor. O protocolo não é retornado na consulta pois não faz parte do xml da nota, porem quando se está tentando autorizar a nota é interessante salvar o protocolo para eventuais posteriores consultas já que ele não ficará em lugar algum após isto. Desta mesma forma o Protocolo pode ser obtido após a chamada do evento de EnviarSincrono, como segue este exemplo abaixo. if FNotaServicoWebService.ACBr.EnviarSincrono(FNotaServicoWebService.Lote, False) then begin sPro := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo; sXML := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NomeArq; ACBrNFSeDANFSeFR.pas ACBrNFSeWebServices.pas
-
Questão interessante esta sua, parece falha no agrupamento do fast, ou tem informação "em branco" sendo incluída, se tem um pouco de conhecimento do fast você poderia habilitar o design do fast para exibir assim que monta a página e olhar o que está acontecendo... mas ainda não vi algo assim por aqui... Para habilitar o design, coloque procure o método PrepareReport da NFe na unit ACBrNFeDANFEFR.pas Procure lá por: function TACBrNFeDANFEFR.PrepareReport(NFE: TNFe): Boolean; E após a linha CarregaDadosNFe acrescente o seguinte: if Assigned(NFE) then begin FdmDanfe.NFe := NFE; FdmDanfe.CarregaDadosNFe; FdmDanfe.frxReport.DesignReport() Rode o seu sistema novamente, quando chegar neste ponto será exibido o "designer" do Fast e você poderá fazer ajustes no layout e tentar identificar o que ocorre...