jonatan.souza
-
Total de ítens
83 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por jonatan.souza
-
-
Amigo tenta esta rotina :
if FmPrincipal.OpenDialog.Execute then
begin
Try
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromFile(FmPrincipal.OpenDialog.FileName);
ACBrNFe1.Consultar;
except
MensagemPerso(ACBrNFe1.WebServices.Consulta.XMotivo,exclamacao);
end;
ShowMessage(ACBrNFe1.WebServices.Consulta.Protocolo);
end;
-
Di nada meu amigo, precisando estamos aí.
jonathan-augusto-muito obrigado, funcionou que uma beleza.... ficou perfeito.mksbraga-obrigado pelo retorno, mas para evitar ter que criar outro campo no banco utilizei a função do jonathan que funcionou muito bem.
Valeu, abraço
Rigotti
-
Amigo eu criei esta função, talvez te ajude :
Function ExpirarCertificadoDigital( numero_certificado : String) : Boolean;
var i : Integer;
CertStore : IStore3;
CertStoreMem : IStore3;
PrivateKey : IPrivateKey;
Certs : ICertificates2;
Cert : ICertificate2;
numce : String;
dias : Real;
acho : Boolean;
begin
Result := True;
Frm_DM.QR_Config.Open;
numce := numero_certificado;
CertStoreMem := Nil;
If CertStoreMem = NIL then begin
CertStore := CoStore.Create;
CertStore.Open(CAPICOM_CURRENT_USER_STORE, 'My', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
CertStoreMem := CoStore.Create;
CertStoreMem.Open(CAPICOM_MEMORY_STORE, 'Memoria', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
Certs := CertStore.Certificates as ICertificates2;
acho := false;
For I := 1 to Certs.Count do Begin
Cert := IInterface(Certs.Item) as ICertificate2;
if numce = Cert.SerialNumber then begin
dias := Cert.ValidToDate - Date;
acho := True;
Break; end;
end;
if not acho then
Result := True
else
if dias <= 0 then begin
Result := False;
MensagemPerso(' Certificado Dígital Exprirado em '+FormatDateTime('dd/mm/yyyy',Cert.ValidToDate),erro);
end
else
if dias <= 15 then begin
Result := True;
MensagemPerso(' ***** ATENÇÃO ***** '#13'Falta '+FloatToStr(dias)+' dia(s) para expirar o Certificado Dígital !'#13'Data para Expirar : '+FormatDateTime('dd/mm/yyyy',Cert.ValidToDate),exclamacao);
end
else
Result := True;
end;
end;
-
-
Amigo, vc tem que pedir para a contadora do seu cliente liberar a NFE no site do ciara.
-
PROBLEMA RESOLVIDO.
Vai no Internet Explorer > Ferramentas > Opções da Internet > Avançadas
Agora nas últimas linha tem as opções :
Verificar revogação de certificados do servidor* deixa desmarcado
Verificar se há certificados revogados do editor deixa desmarcado
Depoi e só da ok e pronto.
-
Já instalou a cadeia de certificado de mg em
http://portalnfe.fazenda.mg.gov.br/web_services.html
"Download da Cadeia de Certificação da SEFAZ/MG"
-
Esta ocorrendo algum erro ? qual ?
Pois comigo funciona normalmente, no caso A1 e só vc importar com Internet Explorer.
-
Eu já peguei este problema com o certificado ca caixa.
E o seguinte tem um gerenciador da caixa, abrir ele exporta o certificado para alguma pasta, depois desistale este gerenciador caixa e importa o certificado pelo internet explorer.
Ai não vai mais pedir senha.
-
Boa noite amigos,
Tem muita gente que perder o retorno da SEFAZ e fica meio perdido, pois o DANFE só fica impresso "NÃO AUTORIZADO"ou algo assim.
Primeira coisa alterar a Unit ACBrNFeWebServices
na function TNFeRecepcao.Executar: Boolean; faça :
--------------------------------------------------------------------
Cria a linha em negrito antes do comando aMsg := , conforme abaixo :
if not DirectoryExists(ExtractFilePath(Application.ExeName) +'\XML\') then
ForceDirectories(ExtractFilePath(Application.ExeName) +'\XML\');
TACBrNFe( FACBrNF
e ).NotasFiscais.Items[0].SaveToFile( ExtractFilePath(Application.ExeName) +'\XML\'+ TACBrNFe( FACBrNFe ).NotasFiscais.Items[0].NFe.infNFe.ID+'-nfe.xml' , True);
end;;
aMsg := //'Versão Leiaute : '+NFeRetorno.Versao+LineBreak+
'Ambiente : '+TpAmbToStr(NFeRetorno.TpAmb)+LineBreak+
'Versão Aplicativo : '+NFeRetorno.verAplic+LineBreak+
'Status Código : '+IntToStr(NFeRetorno.cStat)+LineBreak+
'Status Descrição : '+NFeRetorno.xMotivo+LineBreak+
'UF : '+CodigoParaUF(NFeRetorno.cUF)+LineBreak+
'Recibo : '+NFeRetorno.infRec.nRec+LineBreak+
'Recebimento : '+NotaUtil.SeSenao(NFeRetorno.InfRec.dhRecbto = 0, '', DateTimeToStr(NFeRetorno.InfRec.dhRecbto))+LineBreak+
'Tempo Médio : '+IntToStr(NFeRetorno.InfRec.TMed)+LineBreak;
--------------------------------------------------------------------
Beleza, agora toda vez que vc enviar um NFe ele vai gravar o XML completo, MAIS sem o número do protocolo, agora vamos a segunda parte :
Criar esta função,
function Retorno( chave, data_emis : String ) : Boolean; // Chave de acesso e a data de emissão da nota
var
TXM, NXM: TStringList;
begin
Result := False;
TXM := TStringList.Create; { Para carregar o xml gravado, de acordo com os comandos criado acima }
NXM := TStringList.Create; { Vai ser o novo XML com o protocolo }
If FileExists(ExtractFilePath(Application.ExeName)+'\XML\NFe'+TrazNumero(chave)+'-nfe.xml') then { se exitir o xml no diretorio }
TXM.LoadFromFile(ExtractFilePath(Application.ExeName)+'\XML\NFe'+TrazNumero(chave)+'-nfe.xml')
else begin
{ coloque a sua mensagem para o usuario }
exit; end;
Acbr.WebServices.Consulta.NFeChave := '';
Acbr.WebServices.Consulta.NFeChave := chave;
if Acbr.WebServices.Consulta.Executar then begin
Result := True;
NXM.Add( TXM.Text + ''+IfThen( Acbr.WebServices.Consulta.TpAmb = taProducao,'1','2')+''+Acbr.WebServices.Consulta.verAplic+''+
''+TrazNumero(chave)+''+
FormataDataNFERecibo(DateTimeToStr(Acbr.WebServices.Consulta.DhRecbto))+
''+Acbr.WebServices.Consulta.Protocolo+''+
''+Acbr.WebServices.Consulta.protNFe.digVal+''+
'100'+
Acbr.WebServices.Consulta.protNFe.xMotivo+'');
NXM.SaveToFile(Acbr.Configuracoes.Arquivos.PathNFe+ '\' + FormatDateTime('YYYY', StrToDate( data_emis )) + FormatDateTime('MM', StrToDate( data_emis )) + '\'+ TrazNumero(chave)+'-nfe.xml'); { salvando o novo XML com protocolo na pasta definida em Acbr.Configuracoes.Arquivos.PathNFe }
GravarRetornoNoSeuBanco( TrazNumero(chave), Acbr.WebServices.Consulta.Protocolo, codnota ); { Isto e do meu sistema, mais e uma ideia }
MensagemPerso('Retorno Localizado na SEFAZ'#13'Protocolo : '+Acbr.WebServices.Consulta.Protocolo,informacao);
NXM.Destroy;
TXM.Destroy;
end
else begin
MensagemPerso(Acbr.WebServices.Consulta.XMotivo,exclamacao);
if Acbr.WebServices.Consulta.cStat <> 100 then {se cStat for diferente de 100, e porque foi rejeitada por algum erro }
GravaErroRetornoNfe ( codnota ); { NF rejeitada na SEFAZ, esta rotina também e usada no meu sistema }
Result := False;
NXM.Destroy;
TXM.Destroy;
end;
end;
// FUNÇÕES UTILIZADA NA ROTINAS
1 -
Function FormataDataNFERecibo( data : String) : String;
begin
Result := copy(data,7,4)+'-'+copy(data,4,2)+'-'+copy(data,1,2);
Result := Result + 'T'+copy(data,12,100);
end;
Function TrazNumero( AValue: String) : String;
var
i : Integer ;
begin
Result := '' ;
for i := 1 to length(AValue) do
if (AValue in ['0'..'9']) then
Result := Result + AValue;
end;
-
-
Boa noite Amigo,
O seu problema e o seguinte, vc instalou tudo certo, mais não deve ter instalado o gerenciador do Token.
O Link para download : http://icp.caixa.gov.br/asp/downloads.asp
Vai em drivers e manuais e faça o download do "Sistema Gerenciador do Cartão - SafeSign para Windows"
que vai dar certo.
-
O comando que eu uso :
chave := Acbr.NotasFiscais.Items[0].NFe.infNFe.ID;
-
Ah, eu uso a 2.0.
Obrigado.
-
Alguem pode me ajudar ?
-
Boa tarde, gostaria de saber se a função consulta de cadastro esta funcionando, pois nunca deu certo comigo.
-
Acbr.WebServices.Consulta.NFeChave := NumeroDaChave
if Acbr.WebServices.Consulta.Executar then
Result := Acbr.WebServices.Consulta.protNFe.digVal;
-
Obrigado André pela rápida resposta.
Mais uma luta aí.
Obrigado mais uma vez.
-
Boa noite Amigos,
Alguém sabe me informar se CC-e Carta de Correção Eletrônica vai ser desenvolvida pelo Acbr ?
Obrigado pela atenção.
-
Amigo, vc falo que gravo o protocolo ?
Se gravo, faz a consulta pelo numero do recibo, no demo tem esta opção.
-
Amigos estou com um problema um pouco chato na impressão do DANFE, relacionado a logomarca. Hora a logomarca aparece no rave e outra oura não aparece. O cmd utilizado no carregamento do mesmo segue abaixo. Caso alguém já passou pelo o mesmo problema por favor poste o seu relato.
...
AcbrNFEDanfeRave1.logo := extractFileDir(Paramstr(0)) + '\logo.bmp';
...
Qual modelo de Rave vc esta utilizando ?
-
Amigo, eu modifiquei a AcbrNfeWebServices.pas.
eu grava o protocolo de envio no banco de dados, depoi eu pego este protocolo e passa ele no Alote
ficando o comando abaixo
if copy(ALote,1,2) = '9-' then begin
Self.Retorno.Recibo := copy(ALote,3,100);
if not(Self.Retorno.Executar) then
begin
TACBrNFe( FACBrNFe ).SetStatus( stNFeErro );
if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
TACBrNFe( FACBrNFe ).OnGerarLog(Self.Retorno.Msg);
GravaErroEnviarNfe ( Self.Retorno.Recibo ); // Grava retorno de erro
raise Exception.Create(Self.Retorno.Msg);
end;
Result := true;
end
else begin
if not(Self.StatusServico.Executar) then
begin
TACBrNFe( FACBrNFe ).SetStatus( stNFeErro );
if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
TACBrNFe( FACBrNFe ).OnGerarLog(Self.StatusServico.Msg);
MessageDlg('O Serviço deve estar fora do ar, favor verificar com a SEFAZ do seu estado !',mtWarning,[mbok],0);
Exit;
end;
Self.Enviar.FLote := ALote;
if not(Self.Enviar.Executar) then
begin
TACBrNFe( FACBrNFe ).SetStatus( stNFeErro );
if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
TACBrNFe( FACBrNFe ).OnGerarLog(Self.Enviar.Msg);
GravaErroEnviarNfe ( Self.Retorno.Recibo );
raise Exception.Create(Self.Enviar.Msg);
end;
if Self.Enviar.Recibo <> '' then
GravaReciboDbase(Self.Enviar.Recibo); // Grava o protocolo de envio.
TACBrNFe( FACBrNFe ).NotasFiscais.Items[0].SaveToFile( ExtractFilePath(Application.ExeName) +'\XML\'+ TACBrNFe( FACBrNFe ).NotasFiscais.Items[0].NFe.infNFe.ID+'-nfe.xml' , True);
Self.Retorno.Recibo := Self.Enviar.Recibo;
if not(Self.Retorno.Executar) then
begin
TACBrNFe( FACBrNFe ).SetStatus( stNFeErro );
if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
TACBrNFe( FACBrNFe ).OnGerarLog(Self.Retorno.Msg);
GravaErroEnviarNfe ( Self.Retorno.Recibo );
raise Exception.Create(Self.Retorno.Msg);
end;
Result := true;
end;
Quando o sistema grava o protocolo de envio e não recebe o protocolo de autorização eu chamo a função da seguinte maneira.
Begin
rec := '9-'+protocolo;
Acbr.NotasFiscais.Clear;
Acbr.NotasFiscais.LoadFromFile( ExtractFilePath(Application.ExeName)+'\XML\NFe'+TrazNumero(chave)+'-nfe.xml');
Acbr.Enviar(rec,false);
if SSGNFe.NotasFiscais.Items[0].Confirmada then begin
GravarRetorno( Acbr.Configuracoes.Arquivos.PathNFe, TrazNumero(Acbr.NotasFiscais.Items[0].NFe.infNFe.ID),Acbr.WebServices.Retorno.Protocolo, codnota);
end;
-
Já foi prorrogado - http://www.fazenda.gov.br/confaz/confaz ... 036_10.htm
Use a busca do fórum antes de postar.
Esta versão 3.0 e outro leiaute ?
Temos que atualizar o acbr ?
-
no projeto ACBr existe a pasta NFe e NF2
a NF1 pode ser emitida até que data?
ja começo instalando e programando a NF2?
Vc deve começar com a 2.0, pois a 1.0 vai ser valida ate 31/12/2010
Relação De Campos Cst E Csosn Em Diagrama
em Informações Úteis
Postado
Parabéns pela iniciativa, ficou muito bom.