Ir para conteúdo
  • Cadastre-se

Elazar

Membros
  • Total de ítens

    45
  • Registro em

  • Última visita

  • Days Won

    6

Tudo que Elazar postou

  1. 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.
  2. 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=
  3. 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
  4. Olá, pelo que olhei os fontes vai resolver! Vou fazer alguns testes e confirmo o resultado.
  5. 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
  6. 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;
  7. Olá, bom dia Segue xmlTecnos.zip
  8. 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.
  9. 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.
  10. 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
  11. Postei á algumas horas uma correção para o servidor Tecnos, poderia verificar se a unit lá corrige o seu problema?
  12. 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\';
  13. 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
  14. Não é problema no componente. Foi uma falha de lógica no preenchimento das tags.
  15. 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...
  16. Desculpa se a pergunta for meio boba, mas já tentou reiniciar o computador?
  17. Entendi que a tag tem o mesmo nome, mas estão em locais diferentes e são informações diferentes, isto parece um erro de lógica no seu fonte... Por acaso você usa o with para fazer o preenchimento? Indico você fazer uso de uma variável para servir de ponteiro para a estrutura de notas de referencias e assim evitar ao máximo o uso do with; Ex: var FRef : TNFrefCollectionItem; ... FNFe.Ide.nNF := FNumero; //O numero da sua nota ... //Testa se tem alguma nota para incluir // loop (pois pode incluir mais que uma) FRef := FNFe.Ide.NFref.Add; //lembre fazer um case para saber o tipo nota referenciada e adicionar usando a VAR da FRef que aponta para a tag correta. FRef.RefNF.nNF := FNotaReferencia.Numero;
  18. Tem uma property para aparecer o dialog de impressão (escolha de impressora por exemplo) use : Danfe.ShowDialog := True;
  19. Você está com o mesmo problema? Veja se os seus schemas estão ok...
  20. Não sei se é só no exemplo que postou aqui, mas todos os campos precisam estar informados com os valores da Nota de Produtor. Por exemplo, UF 0 (Zero)??? Precisa ter um código de estado válido ali... um código referente ao estado conforme o município onde foi registrado o bloco/talão de notas de produtor. CNPJ/CPF ""??? Precisa preencher com o CPF do dono do bloco... E assim, vai, preenche todos os campos RefNFP que sua nota fiscal vai autorizar.
  21. Olá, também recordo deste problema ao atualizar para o Trunk 2 Mas é bem fácil de resolver 1) Se você instala o ACBr, veja se o no libray path ou seach path do seu projeto está o caminho ...\acbr\acbrdfe\acbrnfe\ Lá tem dois arquivos, um .res e um .ini necessários para o seu projeto 2) Se usa em run-time, basta adicionar estes dos também ao seu projeto;
  22. Elazar

    Separar PDF por mês

    Até agora não vi nenhuma. Mas sinceramente, seria melhor você salvar tudo em um lugar só. Facilite a vida do seu cliente, você tem este poder... hehe Que tal criar uma função no seu sistema para achar os arquivos xml/pdf para o usuário? crie uma função no seu sistema, onde ele por exemplo digitando o numero ou selecionando um nota você salva o XML/PDF para ele, onde ele quiser com um dialogo. Ou ainda, se for algo para enviar os arquivos para o contador, onde preferem separados as notas de todo um ano ou intervalo de meses, sugiro você pode fazer um "Select" na sua base, pela data de emissão das notas e com base nesta criar os diretórios já lá no pen-drive ou local que o cliente indicar para copiar já organizando por datas. Poderia usar as funções FormatDateTime e ForceDirectoriespara afim montar o diretório de destino dos arquivos, barbada! sLocalBackup := sBase + FormatDateTime('yyyy\mm\', aData); ForceDirectories(sLocalBackup); CopyFile(sLocalXML + sArquivoXML, sLocalBackup + sArquivoXML, False); Facilite a vida do seu cliente, além de que as vezes dá medo só de ver a imperícia de alguns usuários em usar o gerenciador de arquivos;
  23. Tire todos os botões fechar do seu sistema na próxima versão que ninguém mais vai perguntar! Sem ofensa, não sei porque o pessoal ainda continua programando botões "fechar" "sair" nas telas dos sistemas. Estranho mais ainda ver o botão Fechar logo mais abaixo do X da janela.
  24. Na consultar a situação de uma nota vem a autorização da nota com todos os seus eventos registrados, se isto for suficiente para o que você precisa!
  25. Se visualmente quer mostrar para o usuário que a NFe foi cancelada você pode trocar a opção NFeCancelada para True, mas como já citado não é recomendado mudar o xml... isto seria útil em uma rotina de consulta apenas para lembrar o usuário de que a nota já está cancelada. NotaWebService.ACBr.NotasFiscais.Clear; NotaWebService.ACBr.NotasFiscais.LoadFromFile(sCaminhoXML); NotaWebService.ACBr.DANFE.MostrarPreview := True; NotaWebService.ACBr.DANFE.NFeCancelada := True; NotaWebService.ACBr.DANFE.ImprimirDANFE; Acredito que uma boa prática é ao visualizar uma nota, já mostrar por primeiro o último status da mesma, se por exemplo a mesma estiver cancelada exibir primeiro o recibo de cancelamento.
×
×
  • 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.