Ir para conteúdo
  • Cadastre-se

Marcos Gerene

Membros
  • Total de ítens

    532
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Marcos Gerene postou

  1. Boa tarde, Estamos na mesma situação, e fiquei com medo de comentar como o pessoal disse acima pois como é uma classe que mexe com todos os DFes poderia quebrar NFe, CTe, MDFe e outros...
  2. Bom dia Ítalo, Eu até imaginava isso por isso fiz a pergunta se já estava funcional, mas na dúvida achei melhor perguntar. Obrigado, Marcos
  3. Bom dia Ítalo, Tentei novamente e tive esse retorno Porém ao tentar novamente (apertei o mesmo botão de novo) não tive nenhum problema, e o retorno veio certo... Fechei o sistema, fechei o Delphi abri de novo exclui o executável recompilei... e o primeiro erro não aconteceu novamente, em 4 pesquisas todas retornaram ok (segunda imagem). Tomei como decisão ignorar o erro (primeira imagem) por não conseguir reproduzir ele novamente. Muito obrigado, Marcos
  4. Boa noite, tudo bem? Quem é o tomador (quem está contratando) do serviço ? Se o tomador for o Destinatário que também é de Maranhão (assim como o emitente), por mais que a carga faça uma viagem interestadual o CFOP deve ser iniciado em 5.
  5. Boa tarde Ítalo, Segue os arquivos 35151164144330000214570010000000061000000067-sit.xml 35151164144330000214570010000000061000000067-sit-soap.xml
  6. Boa tarde a todos, tudo bem? Tenho duas dúvidas, 1. Como faço no trunk2 para pegar o retorno cancelado de uma NFS-e? No trunk eu fazia assim: NFSe.ConsultarNFSeporRps( ...parâmetros... ); if (NFSe.NotasFiscais.Items[0].NFSe.Status = srCancelado) then begin //Se entrar aqui está cancelado... end; Porém no trunk2 o Status sempre retorna como srNormal. Isto ainda não está funcional ou mudou mesmo? 2. Quando cancelo uma NFSe fazia a mesma coisa, usava esse IF com o status para saber se cancelou. Mudei para o código abaixo, está certo? if (NFSe.CancelarNFSe(...)) then begin //Se entrar aqui é certeza que cancelou? end; PS: Estou usando o provedor GINFES. 35-nfse.xml 29001-comp-nfse.xml 29001-comp-nfse-soap.xml 29001-con-nfse-rps.xml 29001-con-nfse-rps-soap.xml Obrigado, Marcos
  7. Boa tarde, Programou seu sistema em cima do Demo? Se for existe uma função chamada LoadXML que faz esse processo. Comente a função ou simplesmente grave o arquivo com um nome único, tipo código do usuário logado ou algo assim.
  8. Boa tarde, tudo bem? Tente transmitir com 6932. http://contadores.cnt.br/cfop/6932-prestacao-de-servico-de-transporte-iniciada-em-unidade-da-federacao-diversa-daquela-onde-inscrito-o-prestador.html
  9. Boa tarde a todos, Ao tentar mandar imprimir uma DANFS-e antes de transmitir para o cliente "validar os dados" o sistema apresentava erro (vazio não é um valor inteiro). Debuguei e notei que existe uma "variável" (atributo) chamado "Numero" que se refere ao número da NFS-e porém este não vem preenchido ainda (está em branco). A classe ACBrNFSeDANFSeRLRetrato faz 2 vezes este procedimento: FormatFloat('00000000000' , StrToFloat(Numero)); em rlbCabecalhoBeforePrint e rlbTomadorBeforePrint, porém como o campo número ainda é vazio o StrToFloat() da erro. Fiz uma simples alteração nos dois lugares para: FormatFloat('00000000000' , StrToFloatDef(Numero, 0)); que soluciona o "problema" sem modificar qualquer estrutura. Segue o .pas em anexo caso seja realmente aceita a alteração. ACBrNFSeDANFSeRLRetrato.pas
  10. Me desculpa Ítalo, mas não está na pasta esse arquivo que você pediu.... tenho somente estes: -cte.xml, -ped-sit.xml e -ped-sit-soap.xml
  11. Bom dia Ítalo, Uso um certificado A1, como devo preencher o certificado no componente? Como devo configurar ArquivoPFX, DadosPFX, NumeroSerie... não consegui fazer funcionar somente preenchendo o número de série (como faço na NF-e). Ps: Uso capicom.
  12. Bom dia Ítalo, Segue arquivo -sit.xml e -sit-soap.xml. 35151164144330000214570010000000061000000067-ped-sit.xml 35151164144330000214570010000000061000000067-ped-sit-soap.xml
  13. Boa dia Ítalo, Nós já temos o certificado que emitimos devido ao SAT porém simplesmente não usávamos por não haver necessidade. O meu "problema" na verdade pode ser sanado facilmente só usando o certificado, mas eu criei o tópico porque encontrei esse particularidade, mas se isso pode "quebrar" a estrutura planejada por um benefício muito baixo entendo a "não alteração" (não é viável). Obrigado, Marcos
  14. Boa tarde Ítalo, Eu já havia debugado, mas fiz o que pediu e o erro ocorre em Cte.Consultar; E se debugar no CTE.Consultar ocorre em TratarResposta dentro de ACBrCTeWebServices mais precisamente nesta linha: XML := AProcCTe.Gerador.ArquivoFormatoXML; E o erro disparado vem de LerXml em pcteCTeR logo no segundo IF... function TCTeR.LerXml: Boolean; var ok: Boolean; i, j, i01, i02, i03, i04: Integer; sCST, Aspas: String; begin Leitor.Grupo := Leitor.Arquivo; if Pos('versao="', Leitor.Arquivo) <> 0 then Aspas := '"' else Aspas := ''''; CTe.infCTe.Id := Leitor.rAtributo('Id='); if OnlyNumber(CTe.infCTe.Id) = '' then raise Exception.Create('Não encontrei o atributo: Id'); //-> dispara esse exception ..... Isto só ocorre com XMLs que acabei de gerar e não transmiti, se fizer com um XML já transmitido o erro não ocorre. Xml em questão: 35151164144330000214570010000027891824512321-cte.xml
  15. Bom dia novamente Ítalo, Refiz o teste de diversas formas, o erro só acontece quando eu consulto um XML que eu tenho certeza que ainda não foi transmitido (acabei de gerar), se eu gero um XML, transmito e consulta o erro não acontece. Att, Marcos
  16. Bom dia Ítalo, Segue o trecho do código. procedure ConsultaConhecimento(Chave : String); var Arquivo:String; begin Arquivo := ExtractFilePath(Application.ExeName)+'CTe\'+FormatFloat('0000',FrmPrincipal.QryEmpresaAtiva.FieldByName('EMP_CODIGO').AsInteger)+'\XML\'+Chave+'-cte.XML'; FrmPrincipal.Protocolo := ''; FrmPrincipal.StatusCTE := ''; if FileExists(Arquivo) then begin CTE.Conhecimentos.Clear; CTE.Conhecimentos.LoadFromFile(Arquivo); CTE.Consultar; FrmPrincipal.Protocolo := CTE.WebServices.Consulta.Protocolo; FrmPrincipal.StatusCTE := CTE.WebServices.Consulta.XMotivo; end; Close; end;
  17. Bom dia Ítalo, tudo bem? Na empresa em que eu trabalho (a própria software house) usamos o SimplISS e até pouco tempo atrás nem havia certificado emitido para nós, emitimos somente para o SAT quando este foi lançado. Ainda hoje a máquina do financeiro que faz as NFS-e não tem o certificado instalado pois não emitimos NF-e, somente a NFS-e. Att, Marcos
  18. Boa tarde a todos, Migrei hoje o componente do ACBr para o trunk2 e estou testando o CTe. Ao tentar consultar um CT-e (que ainda não foi transmitido, isso é certeza) em ambiente de homologação tenho o seguinte erro: Não encontrei o atributo: id. Segue em anexo os XMLs. O erro ocorre no comando Executar da Unit ACBrDFeWebServices na linha Result := TratarResposta; Att, Marcos 35151164144330000214570010000027881195194004-ped-sit.xml 35151164144330000214570010000027881195194004-cte.xml
  19. Boa tarde Ítalo, Fiz a alteração que me passou e a que eu tinha dito no outro post, porém agora a exceção ocorre em ACBrDFeCapicomDelphiSoap procedure TDFeCapicomDelphiSoap.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); var CertContext: ICertContext; PCertContext: Pointer; ContentHeader: String; begin CertContext := Certificado as ICertContext; CertContext.Get_CertContext(integer(PCertContext)); with FpDFeSSL do begin if not InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, SizeOf(CERT_CONTEXT)) then raise EACBrDFeException.Create('Erro ao ajustar INTERNET_OPTION_CLIENT_CERT_CONTEXT: ' + IntToStr(GetLastError)); if trim(ProxyUser) <> '' then if not InternetSetOption(Data, INTERNET_OPTION_PROXY_USERNAME, PChar(ProxyUser), Length(ProxyUser)) then raise EACBrDFeException.Create('Erro ao ajustar INTERNET_OPTION_PROXY_USERNAME: ' + IntToStr(GetLastError)); if trim(ProxyPass) <> '' then if not InternetSetOption(Data, INTERNET_OPTION_PROXY_PASSWORD, PChar(ProxyPass), Length(ProxyPass)) then raise EACBrDFeException.Create('Erro ao ajustar INTERNET_OPTION_PROXY_PASSWORD: ' + IntToStr(GetLastError)); ContentHeader := Format(ContentTypeTemplate, [FMimeType+'; charset=utf-8']); HttpAddRequestHeaders(Data, PChar(ContentHeader), Length(ContentHeader), HTTP_ADDREQ_FLAG_REPLACE); end; FIndyReqResp.CheckContentType; end; Na linha CertContext.Get_CertContext(integer(PCertContext)); ocorre um Acess Violation. Obrigado pela atenção
  20. Boa tarde a todos, Este post gerou outro: Caso alguém esteja acompanhando é mais fácil ir para este novo link. Obrigado a todos, Marcos
  21. Marcos Gerene

    ACBRDFeWebServices

    Boa tarde, Hoje de manhã fiz um post por esbarrar num problema com o NFSe usando o provedor do SimplISS. Nesse post até propus uma solução no fonte para esse problema, mas conforme fui avançando notei que toda a parte de "consumo" do webservice do NFSe está "em cima" do ACBrDFeWebService e este faz N validações do certificado. O problema é que o SimplISS não exige certificado o que faz com que eu não consiga enviar absolutamente nada para o webservice. Abaixo está a função EnviarDados do ACBrDFeWebServices todas minhas requisições passaram por ela e ela por si só exige informações do certificado. procedure TDFeWebService.EnviarDados; Var Tentar, Tratado: Boolean; begin { Sobrescrever apenas se necessário } FPRetWS := ''; FPRetornoWS := ''; { Verifica se precisa converter o Envelope para UTF8 antes de ser enviado. Entretanto o Envelope pode já ter sido convertido antes, como por exemplo, para assinatura. Se o XML está assinado, não deve modificar o conteúdo } if not XmlEstaAssinado(FPEnvelopeSoap) then FPEnvelopeSoap := ConverteXMLtoUTF8(FPEnvelopeSoap); Tentar := True; while Tentar do begin Tentar := False; Tratado := False; if FPConfiguracoes.Certificados.VerificarValidade and (FPDFeOwner.SSL.CertDataVenc < Now) then raise EACBrDFeException.Create('Data de Validade do Certificado já expirou: '+ FormatDateBr(FPDFeOwner.SSL.CertDataVenc)); try FPRetornoWS := FPDFeOwner.SSL.Enviar(FPEnvelopeSoap, FPURL, FPSoapAction, FPMimeType); except if Assigned(FPDFeOwner.OnTransmitError) then FPDFeOwner.OnTransmitError( FPDFeOwner.SSL.HTTPResultCode, FPDFeOwner.SSL.InternalErrorCode, FPURL, FPEnvelopeSoap, FPSoapAction, Tentar, Tratado) ; if not (Tentar or Tratado) then raise; end; end; { Resposta sempre é UTF8, ParseTXT chamará DecodetoString, que converterá de UTF8 para o formato nativo de String usada pela IDE } FPRetornoWS := ParseText(FPRetornoWS, True, True); end; Existe algo que eu possa fazer? Estou pensando da forma correta (uso o componente a um bom tempo, mas fui tentar "entender" ele recentemente)? Att, Marcos
  22. function TACBrNFSe.Enviar(ALote: String; Imprimir: Boolean): Boolean; var i: Integer; begin if NotasFiscais.Count <= 0 then GerarException(ACBrStr('ERRO: Nenhum RPS adicionado ao Lote')); if NotasFiscais.Count > 50 then GerarException(ACBrStr('ERRO: Conjunto de RPS transmitidos (máximo de 50 RPS)' + ' excedido. Quantidade atual: ' + IntToStr(NotasFiscais.Count))); if (NotasFiscais.ACBrNFSe as TACBrNFSe).Configuracoes.Geral.ConfigAssinar.RPS then NotasFiscais.Assinar(Configuracoes.Geral.ConfigAssinar.RPS); Result := WebServices.Envia(ALote); if DANFSE <> nil then begin for i:= 0 to NotasFiscais.Count-1 do begin if NotasFiscais.Items[i].Confirmada and Imprimir then NotasFiscais.Items[i].Imprimir; end; end; end; Dessa forma deu certo, porém no WebServices.Envia(ALote) apareceu "número do certificado não encontrado". O SimplISS não tem certificado, devo fazer essa correção para onde der esse erro e postar meus .pas ou o modo que estou pensando/fazendo está errado?
  23. Boa tarde ALA, O SimplISS não utiliza certificado, somente um usuário e senha, justamente por isso tentei setar o campo .SSL.CetCNPJ porém o mesmo é ReadOnly. No .ini do SimplISS note que não deve ser assinado nada: ; No grupo abaixo é definido se o XML do RPS deve ser assinado ou não ; se o Lote deve ser assinado ou não ; e se o GerarNFSe deve ser assinado ou não ; o Campo URI faz parte da assinatura no caso da Digifred ele não deve ser informado ; É definido também quais tipos de acessos devem ser assinados ; 0 = False / 1 = True (se True então assina) [Assinar] RPS=0 Lote=0 URI=0 Recepcionar=0 ConsSit=0 ConsLote=0 ConsNFSeRps=0 ConsNFSe=0 Cancelar=0 Gerar=0 RecSincrono=0 Substituir=0 Existe alguma propriedade que pegue essa informação (se deve assinar o RPS)? Porque se existir é só alterar o método "Enviar". function TACBrNFSe.Enviar(ALote: String; Imprimir: Boolean): Boolean; var i: Integer; begin if NotasFiscais.Count <= 0 then GerarException(ACBrStr('ERRO: Nenhum RPS adicionado ao Lote')); if NotasFiscais.Count > 50 then GerarException(ACBrStr('ERRO: Conjunto de RPS transmitidos (máximo de 50 RPS)' + ' excedido. Quantidade atual: ' + IntToStr(NotasFiscais.Count))); if (ASSINAR_RPS) then // -> Atualmente não existe esse IF NotasFiscais.Assinar(Configuracoes.Geral.ConfigAssinar.RPS); Result := WebServices.Envia(ALote); if DANFSE <> nil then begin for i:= 0 to NotasFiscais.Count-1 do begin if NotasFiscais.Items[i].Confirmada and Imprimir then NotasFiscais.Items[i].Imprimir; end; end; end; Att, Marcos
  24. Bom dia a todos, Estou migrando para o trunk2, atualmente usando o SimplISS (que já tem o .ini criado). Ao tentar transmitir um RPS, na procedure de Assinar do ACBrNFSeNotasFiscais estou tendo um problema nesse trecho: // 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' ); Notei que a propriedade .SSL.CetCNPJ não estava preechida e tentei preencher de forma manual mas não consegui, porém vale lembrar que o SimplISS não usa certificado, ele requer somente um usuário e senha (diferente do Ginfes, por exemplo). Existe alguma configuração que eu não fiz para que este problema seja ignorado? Att, Marcos
  25. Bom dia Daniel, Eu estava "instalando" o trunk2 ainda então quando fui compilar tinha algumas units que usavam os xxxUtil.pas e fui comentando eles no uses e colocando os pxxxConversaoXxx.pas no lugar e o software compilou, vou começar hoje a testar os meus fontes com o trunk2. NF-e, SAT, SPED acredito que eu testo hoje. Obrigado pela ajuda, Marcos
×
×
  • 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.