Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    644
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. Mantenedores: Na procedure abaixo, não existe o parametro para atender a função usada no final do procedimento, que é a FiltrarTextoXML(FOpcoes.FRetirarEspacos, ConteudoProcessado, FOpcoes.FRetirarAcentos) procedure wCampo(const Tipo: TpcnTipoCampo; ID, TAG: string; const min, max, ocorrencias: smallint; const valor: variant; const Descricao: string = ''; ParseTextoXML : Boolean = True; Atributo: String = ''); Essa função FiltrarTextoXML, a assinatura dela, tem um parâmetro default = True, que causa um salto de linha nas informações complementares no danfe - mesmo que eu não queira essas quebras.. Pergunta: Não seria interessante colocar esse parâmetro true no caso de informação complementar se eu quiser? *************************************************************************************************** minha resposta ***************** Solução encontrada por enquanto: (note que eu pus a minha quebra...) InfAdic.InfAdFisco := ''; ListaDeStrings.Text := IBDSPai.FieldByName('INF_COMPLEMENTAR_NF').AsWideString; for I := 0 to ListaDeStrings.Count - 1 do begin S := ListaDeStrings; S := S + ';'; ListaDeStrings := S; end; ListaDeStrings.Text := AcbrUtil.ChangeLineBreak(ListaDeStrings.Text, ' '); ListaDeStrings.Text := StringReplace(ListaDeStrings.Text, ' ', ' ', [rfReplaceAll]); InfAdic.InfCpl := ListaDeStrings.Text;
  2. Eu hoje, 28/12/15, ao testar com um produto isento, não gerou as tags, devido o teste, pelo que consta no manual, o grupo deve quando: - Operação Interestadual (idDest=2) e - Operação com Consumidor Final (indFinal=1) e - Operação com Não Contribuinte (indIEDest=9) e - Não é operação de prestação de serviços (não existe tag “ISSQN”). Para mim se o estado exigir valores para o CST icms =41 seria um despautério (mais 1).
  3. Mas CST=10 para consumidor final ? E com destaque de ST ? Sei lá, acho que ST é contribuinte apenas.... a partilha ao meu ver é uma ST camuflada... Depois de deparar com o erro: mudei para <indFinal>1</indFinal> e passou. é tanta tag redundante que as vezes esquecemos uma.
  4. é justamente por isso ítalo, não sei quando o usuário cancelou um processo, ou computador desligou no ato da transmissão, ou pior, se ele foi no pacote de ida e não voltou, seja por motivo do mais simples, como a internet perder conexão na hora, então, ao tentar transmitir sempre verifico, se tem ele já ativo na sefaz, simplesmente gravo o protocolo e finalizo o processo ali mesmo, caso contrário aciono o envio do lote. é tudo uma questão de não confiar no usuário - trem danado para zicar as coisas. Lembre-se, ainda estou enebriado de internet ruim aqui.
  5. Na verdade, acontece isso sempre, basta debugar (Meu cenário Rad Studio XE2). Não sei todos aqui tem o habito de antes de iniciar o envio de um lote de consultar se existe o recibo para a chave. Pois o envio no meu caso só vai se retornar 217 no status da consulta. É justamente nesse momento que ocorre o erro.
  6. Alguém já deparou com esse erro? Na minha maquina funciona, a que desenvolvo, e outras 2 não: Segue erro: org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed. Isso acontece ao consultar NFS-e por RPS e no envio de lote. Problema resolvido: Ginfes.ini desatualizado: faltavam as linhas: [ConsNFSeRps] IncluiEncodingCab=0 IncluiEncodingDados=0
  7. Quem fez uso desse artifício, com Trunk2 não mais precisa do evento frxPDFExport_NFSe_BeginExport. Faça o teste antes.
  8. Ao debugar, identifiquei o problema no procedimento abaixo, olhe o trecho em vermelho. Segue trecho e código fonte alterado procedure NotaFiscal.Assinar(Assina: Boolean); var XMLStr: String; XMLUTF8: AnsiString; Leitor: TLeitor; CNPJEmitente, CNPJCertificado: String; begin // VErificando se pode assinar esse XML (O XML tem o mesmo CNPJ do Certificado ??) CNPJEmitente := OnlyNumber(NFSe.Prestador.CNPJ); CNPJCertificado := OnlyNumber(TACBrNFSe(TNotasFiscais(Collection).ACBrNFSe).SSL.CertCNPJ); // verificar somente os 8 primeiros digitos, para evitar problemas quando // a filial estiver utilizando o certificado da matriz {if Copy(CNPJEmitente, 1, 8) <> Copy(CNPJCertificado, 1, 8) then raise EACBrNFSeException.Create('Erro ao Assinar. O XML informado possui CNPJ diferente do Certificado Digital' );} // Gera novamente, para processar propriedades que podem ter sido modificadas XMLStr := GerarXML; // XML já deve estar em UTF8, para poder ser assinado // XMLUTF8 := ConverteXMLtoUTF8(XMLStr); FXMLOriginal := XMLUTF8; with TACBrNFSe(TNotasFiscais(Collection).ACBrNFSe) do begin if Assina then FXMLAssinado := SSL.Assinar(String(XMLUTF8), 'Rps', Configuracoes.Geral.ConfigGeral.Prefixo3 + 'InfRps') else FXMLAssinado := FXMLOriginal; // FXMLOriginal := FXMLAssinado; Leitor := TLeitor.Create; try leitor.Grupo := FXMLAssinado; NFSe.signature.URI := Leitor.rAtributo('Reference URI='); NFSe.signature.DigestValue := Leitor.rCampo(tcStr, 'DigestValue'); NFSe.signature.SignatureValue := Leitor.rCampo(tcStr, 'SignatureValue'); NFSe.signature.X509Certificate := Leitor.rCampo(tcStr, 'X509Certificate'); finally Leitor.Free; end; if Configuracoes.Arquivos.Salvar then Gravar(CalcularNomeArquivoCompleto(), ifThen(Assina, FXMLAssinado, FXMLOriginal)); end; end; Outro ponto que do meu ponto de vista está com problema, trata-se do retorno da consulta, as variaveis i e ii foram usadas de forma indiscriminada, incrementou a variavel para um colletion, e usou em outro, com isso as vezes a consulta retorna erro de List of bounds (-1). Segue unit ACBrNFSeWebServices.pas devida apreciação do moderador ACBrNFSeNotasFiscais.pas ACBrNFSeWebServices.pas
  9. O trecho da unit ACBrDFeCapicom, quando passa na função, XmlEstaAssinado() não deveria ter um exit ? Pois quando o xml já assinado é submetido novamente está gerando um erro desconhecido na linha: // Assinando com MSXML e CryptoLib // signedKey := xmldsig.sign(dsigKey, $00000002); << Erro aqui if (signedKey = nil) then raise EACBrDFeException.Create('Assinatura Falhou.'); Segue trecho do código para analise: function TDFeCapicom.Assinar(const ConteudoXML, docElement, infElement: String): String; var PosIni, PosFim: integer; URI, AXml, TagEndDocElement, XmlAss: String; xmldoc: IXMLDOMDocument3; xmldsig: IXMLDigitalSignature; dsigKey: IXMLDSigKey; signedKey: IXMLDSigKey; PrivateKey: IPrivateKey; begin CoInitialize(nil); try CarregarCertificadoSeNecessario; AXml := ConteudoXML; XmlAss := ''; if not XmlEstaAssinado(AXml) then begin URI := ExtraiURI(AXml); TagEndDocElement := '</' + docElement + '>'; AXml := copy(AXml, 1, PosLast(TagEndDocElement, AXml) - 1); AXml := AXml + SignatureElement(URI, False) + TagEndDocElement; end;
  10. já temos 2 relatos do mesmo problema. Cartao A3 - conseguiu achar uma solucao ?
  11. Juliomar: Segue unit com uma variavel que foi esquecida de colocar. Ao enviar o e-mail o pdf para anexar, com isso esqueci de colocar o NFSe.IdentificacaoRps.Serie somado do numero da NFS-e. ACBrNFSeDANFSeFR.pas
  12. Juliomar: Mais um datamodule que necessita ser removido do projeto ACBr, senão vai ser essa dor de cabeça pelo resto da vida. E além de remover, tem que colocar o objeto sendo instanciado no carregar do componente, nada de ficar pregado na tela. Mesmo trabalho que enviei para vocês dias atrás da NFS-e....
  13. Comecei fazer no meu software, o MDF-e, é mais um ponto a ser removido o Datamodule... Moderador, poderia eu mexer e enviar o código fonte alterado ?
  14. Um outro detalhe: o instalador vai ter que ser ajustado, acabei de testar aqui. Se eu puder mexer nele também e mandar...
  15. Nao entendi Juliomar, essas units foram as que sobraram, apos retirar as chamadas delas. Na verdade é o TDatamodule isso dai. seria isso seu questionamento ?
  16. Funcao de consulta de lote por RPS com erro também, ao terminar de consulta destroi a componente com o retorno que veio do webservice, segue codigo fonte comentado 2 linhas. ACBrNFSeWebServices.pas
  17. Esqueci de mencionar, pode deletar as units ACBrNFSeDANFSeFRDM.dfm e ACBrNFSeDANFSeFRDM.pas
  18. A alteração está correta, e como já estou em um ponto que é usado para o envio de e-mail, o trecho abaixo é chamado na função: procedure NotaFiscal.EnviarEmail(sPara, sAssunto: String; sMensagem: TStrings; EnviaPDF: Boolean; sCC: TStrings; Anexos: TStrings); Trecho com problema no nome do pdf gerado: if (EnviaPDF) then begin if Assigned(DANFSE) then begin DANFSE.ImprimirDANFSEPDF(FNFSe); NomeArq := PathWithDelim(DANFSE.PathPDF) + NumID + '-nfse.pdf'; AnexosEmail.Add(NomeArq); end; end; Uma sugestão boba, que coloquem essa procedure DANFSE.ImprimirDANFSEPDF(FNFSe); como funcao, e nela retorne o nome do arquivo pdf salvo. Para piorar ainda mais a coisa, no ato de gerar o pdf na unit relativa ao fast report, colocaram isso, que pode mudar o nome do pdf, logo, ao enviar o e-mail não vai encontrar o arquivo. with TACBrNFSe(ACBrNFSe).NotasFiscais.Items do begin if TACBrNFSe(ACBrNFSe).Configuracoes.Arquivos.NomeLongoNFSe then NomeArqXML := GerarNomeNFSe(UFparaCodigo(NFSe.PrestadorServico.Endereco.UF), NFSe.DataEmissao, NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj, StrToIntDef(NFSe.Numero, 0)) else NomeArqXML := NFSe.Numero; end; E então, qual a sugestão ? Código fonte testado impressão no Ginfes. Qualquer problema notifique-me. ACBrNFSeDANFSeFR.pas
  19. Embora voce tenha aceitado a correção, o que acha de não existir esse datamodule e sim apenas uma unit com a classe, e os TFields removidos e criados em tempo de execução? Eu mudaria isso e enviaria, nunca mais daria problema de propriedade em dfm.
  20. Estou utilizando as versoes 4.13.15 do fast report e atualizado para 5.2.3 Porem, ao abrir o programa apresenta a mensagem de erro de Property Transparency not found no componente TFrxPDFExport. Como solução, alterei na criação do datamodule para instanciar esses 2 componentes manual. São eles TFrxReport e TFrxPDFExport. Com isso, não dá falta de propriedade não gravada no dfm. Todas as propriedades foram setadas no evento Create do form. Segue codigo fonte para analise e apreciação. ACBrNFSeDANFSeFRDM.dfm ACBrNFSeDANFSeFRDM.pas
  21. segue fonte comentado para analise, se possivel ACBrNFSeWebServices.pas
  22. Antonio Gomes

    funcao sem scopo

    A função abaixo da unit ACBrNFSeWebServices, sem conteúdo, não poderia ser removida? Pois o uso da mesma gera violação de acesso. se for usado variáveis carregadas por ela após. O segundo overload está correto. function TWebServices.ConsultaLoteRps(ANumLote, AProtocolo: String; const CarregaProps: boolean): Boolean; begin (* if CarregaProps then begin FConsLote.FCNPJ := ''; FConsLote.FIM := ''; end; FConsLote.FNumeroLote := ANumLote; FConsLote.FProtocolo := AProtocolo; Result := FConsLote.Executar; if not (Result) then FConsLote.GerarException( FConsLote.Msg ); *) end;
  23. Antonio Gomes

    Ginfes - Trunk2

    Alguns fontes ao finalizar o acesso ao serviço, no meu caso, consulta de nfse por rps, de acordo com essa funcao abaixo - Logo apos eu consultar eu nao posso ter acesso a lista de notas ? procedure TNFSeConsultarNfseRPS.FinalizarServico; begin inherited FinalizarServico; if Assigned(FRetornoNFSe) then FreeAndNil(FRetornoNFSe); end; Sempre utilizei do retorno da consulta para atualizar os dados da minha nota, pois esse provedor acontece de perder conexao, então sempre consulto antes para saber se existe a nota, e pego o retorno em ACBrNFSe1.WebServices.ConsNFSeRps.RetornoNFSe.ListaNFSe.CompNFSe.Count esse problema tem como ser resolvido ? Eu comentei as linhas: if Assigned(FRetornoNFSe) then FreeAndNil(FRetornoNFSe);
×
×
  • 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...