Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 20-12-2012 em todas as áreas
-
Os arquivos estão dentro da pasta: ACBr\Exemplos\ACBrNFe2\Delphi\Report Basta copiar para o diretorio da sua aplicação por exemplo, e informar o caminho do arquivo na propriedade "RavFile" do componente ACBrDANFERave. Lembrando que somente o componentes ACBrDANFERaveCB e ACBrDANFEFR possuem implementada a carta de correção. No caso do ACBrDANFERaveCB não precisa setar nenhum arquivo nem copiar nada, é tudo feito por código.1 ponto
-
Regys Na M O S C A +.+ Muito obrigado pela vossa existência. Espero que essa frase se encaixo para todos que estiverem lendo Muiiiiiiiiito boooooooas Fesssssssta a todos e que o Papai Noel seja presenteado com a maior felicidade do Mundo, pois graças a Deus e o nosso esforço, tivemos um excelente ano de trabalho. Finalmente a informatica está se encaixando em seu devido grau de importância. abraço a todos e boas festas. Marcelo Narezzi e Familia1 ponto
-
Preencha os campos da NFe e use os comandos abaixo: ACBrNFe1.NotasFiscais.GerarNFe; ACBrNFe1.NotasFiscais.Items[0].Alertas; Verifique o conteúdo da propriedade ACBrNFe1.NotasFiscais.Items[0].Alertas.1 ponto
-
Boa Noite dataol Desculpe...realmente essa função é quando a sefaz te retorna...mas o link que o leandroaoa passou vai ser util...uma pena que eu deixei recado e o roberto (no linK) não retornou mais a msg. Qualquer noticia...avisa1 ponto
-
E o resultado final fica mais ou menos assim: ******************************************************************************************* AMBIENTE: 2 - Homologação ******************************************************************************************* ------------------------------------------------------------------------------------------- => Enviando lote de nota(s) fiscal(is) ------------------------------------------------------------------------------------------- 25/05/2012 09:34:11 103 - Lote recebido com sucesso Recibo nº 351000062026233 ------------------------------------------------------------------------------------------- => Consultando recibo nº 351000062026233 ------------------------------------------------------------------------------------------- Nota fiscal Número do protocolo Status da NF-e ----------- ----------------------------------- --------------------------------------- 000.000.057 135120003247292 25/05/2012 09:34:11 100 - Autorizado o uso da NF-e ------------------------------------------------------------------------------------------- => Imprimindo DANFE (1 via de cada) ------------------------------------------------------------------------------------------- Nota fiscal Cliente ----------- ---------------------------------------------------------------------------- 000.000.057 NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL ------------------------------------------------------------------------------------------- Quantidade de DANFES impressos: 2 ------------------------------------------------------------------------------------------- => Iniciando o envio do e-mail da nota fiscal para seu destinatário ------------------------------------------------------------------------------------------- Quantidade de notas fiscais no lote: 1 Quantidade de notas fiscais autorizadas e/ou canceladas: 1 ------------------------------------------------------------------------------------------- => Enviando e-mail da nota fiscal (Envio nº 1 de 1) ------------------------------------------------------------------------------------------- Nota fiscal: 000.000.057 Cliente: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FI Preparando mensagem Anexando arquivo XML da NF-e Anexando arquivo PDF do DANFE Conectando-se ao servidor SMTP: smtp.jbrt.com.br ... => Conectado! Enviando e-mail para o destinatário: [email protected] E-mail enviado ------------------------------------------------------------------------------------------- => Fim do envio de e-mails ------------------------------------------------------------------------------------------- Quantidade de e-mails enviados: 1 ------------------------------------------------------------------------------------------- => Iniciando o envio do e-mail da fatura para o departamento financeiro ------------------------------------------------------------------------------------------- Responsável pelo departamento financeiro: PETERSON Quantidade de faturas: 1 ------------------------------------------------------------------------------------------- => Enviando e-mail da fatura (Envio nº 1 de 1) ------------------------------------------------------------------------------------------- Fatura: 000.000.057 Sacado: CONFECÇÕES CAEDU LTDA Preparando mensagem Conectando-se ao servidor SMTP: smtp.jbrt.com.br ... => Conectado! Enviando e-mail para: [email protected] E-mail enviado ------------------------------------------------------------------------------------------- => Fim do envio de e-mails ------------------------------------------------------------------------------------------- Quantidade de emails enviados: 11 ponto
-
Basicamente todos os dados do XML eu gravo no Banco de dados, inclusive o XML completo. Vou te passar trechos do meu sistema para você ver como eu gravo no Banco de Dados. O Componente nos retorna os resultados da Sefaz e o sistema os exibe em memo chamado MemoStatus: Envio de lote. Neste envio já recebemos o número do recibo: function TF_StatusEnvioNFe.EnvioNFe: Boolean; var i: Integer; begin try MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' => Enviando lote de nota(s) fiscal(is)'); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); F_Menu.ACBrNFe1.NotasFiscais.Assinar; F_Menu.ACBrNFe1.NotasFiscais.Valida; F_Menu.ACBrNFe1.WebServices.Enviar.Lote := FNFe.FEnvio.FNumLote; F_Menu.ACBrNFe1.WebServices.Enviar.Executar; FInfoRecibo := F_Menu.ACBrNFe1.WebServices.Enviar.Recibo; FInfoStat := IntToStr(F_Menu.ACBrNFe1.WebServices.Enviar.cStat); FInfoMotivo := F_Menu.ACBrNFe1.WebServices.Enviar.xMotivo; FInfoDataHora := DateTimeToStr(F_Menu.ACBrNFe1.WebServices.Enviar.dhRecbto); MemoStatus.Lines.Add(' ' + FInfoDataHora + ' ' + FInfoStat + ' - ' + FInfoMotivo); if F_Menu.ACBrNFe1.WebServices.Enviar.cStat = 103 then begin for i := 0 to (F_Menu.ACBrNFe1.NotasFiscais.Count - 1) do begin qryNfiscal.Close; qryNfiscal.SQL.Clear; qryNfiscal.SQL.Add('SELECT tbl_NOTA_FISCAL.*, ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT FROM ' + 'tbl_NOTA_FISCAL LEFT OUTER JOIN tbl_EMITENTE ' + 'ON tbl_NOTA_FISCAL.ID_EMIT_NF = ' + 'tbl_EMITENTE.ID_EMIT ' + 'WHERE tbl_NOTA_FISCAL.NUM_NF = ' + IntToStr(F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Ide.nNF) + ' AND ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT = ' + F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Emit.CNPJCPF); qryNfiscal.Open; qryNfiscal.Edit; qryNFiscal.FieldByName('SITUACAO_NF').Value := 1; qryNFiscal.FieldByName('NUM_RECIBO_NF').Value := FInfoRecibo; qryNFiscal.Post; end; MemoStatus.Lines.Add(' Recibo nº ' + FInfoRecibo); MemoStatus.Lines.Add(' '); Result := True; end else begin Disponivel; Result := False; end; except on E: Exception do begin MemoStatus.Lines.Add(' '); MemoStatus.Lines.Add(' ERRO: Não foi possível enviar o lote de NF-e'); MemoStatus.Lines.Add(' MOTIVO: ' + E.Message); Disponivel; end; end; end; Com o número do recibo em nosso poder, fazemos a consulta dele para saber o resultado do processamento das notas fiscais contidas no lote: function TF_StatusEnvioNFe.ConsultaReciboNFe: Boolean; var sRecibo: String; i: Integer; begin try if FAcao = taEnvioNFe then sRecibo := F_Menu.ACBrNFe1.WebServices.Enviar.Recibo else sRecibo := FNFe.FConsultaRecibo.FNumRecibo; MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' => Consultando recibo nº ' + sRecibo); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); F_Menu.ACBrNFe1.WebServices.Retorno.Recibo := sRecibo; F_Menu.ACBrNFe1.WebServices.Retorno.Executar; MemoStatus.Lines.Add(' Nota fiscal Número do protocolo Status da NF-e'); MemoStatus.Lines.Add(' ----------- ----------------------------------- ---------------------------------------'); for i := 0 to (F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Count - 1) do begin FInfoDataHora := DateTimeToStr(F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].dhRecbto); FInfoProtocolo := F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].nProt; FInfoStat := IntToStr(F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].cStat); FInfoMotivo := F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].xMotivo; FInfoNotaFiscal := Copy(F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].chNFe, 26, 3) + '.' + Copy(F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].chNFe, 29, 3) + '.' + Copy(F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].chNFe, 32, 3); // Grava as informações recebidas pela Sefaz no banco de dados if FAcao = taEnvioNFe then begin qryNfiscal.Close; qryNfiscal.SQL.Clear; qryNfiscal.SQL.Add('SELECT tbl_NOTA_FISCAL.*, ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT FROM ' + 'tbl_NOTA_FISCAL LEFT OUTER JOIN tbl_EMITENTE ' + 'ON tbl_NOTA_FISCAL.ID_EMIT_NF = ' + 'tbl_EMITENTE.ID_EMIT ' + 'WHERE tbl_NOTA_FISCAL.NUM_NF = ' + IntToStr(F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Ide.nNF) + ' AND ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT = ' + F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Emit.CNPJCPF); qryNfiscal.Open; qryNfiscal.Edit; qryNFiscal.FieldByName('CHAVE_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.procNFe.chNFe; case F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.procNFe.cStat of 100: qryNFiscal.FieldByName('SITUACAO_NF').Value := 2; 110: qryNFiscal.FieldByName('SITUACAO_NF').Value := 3; end; qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value := FInfoProtocolo; qryNFiscal.FieldByName('DH_PROT_AUTO_NF').Value := FInfoDataHora; qryNFiscal.FieldByName('XML_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[i].XML; if F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.procNFe.cStat > 200 then //in [100, 110] then begin qryNFiscal.FieldByName('SITUACAO_NF').Value := 0; qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value := ''; qryNFiscal.FieldByName('DH_PROT_AUTO_NF').Value := ''; end; qryNfiscal.Post; end; if FAcao = taConsultaNFe then begin qryNfiscal.Close; qryNfiscal.SQL.Clear; qryNfiscal.SQL.Add('SELECT tbl_NOTA_FISCAL.*, ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT FROM ' + 'tbl_NOTA_FISCAL LEFT OUTER JOIN tbl_EMITENTE ' + 'ON tbl_NOTA_FISCAL.ID_EMIT_NF = ' + 'tbl_EMITENTE.ID_EMIT ' + 'WHERE tbl_NOTA_FISCAL.NUM_NF = ' + IntToStr(F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Ide.nNF) + ' AND ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT = ' + F_Menu.ACBrNFe1.NotasFiscais.Items[i].NFe.Emit.CNPJCPF); qryNfiscal.Open; qryNfiscal.Edit; case F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].cStat of 100: begin // Autorizada qryNFiscal.FieldByName('SITUACAO_NF').Value := 2; if qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value > '' then else begin qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value := FInfoProtocolo; qryNFiscal.FieldByName('DH_PROT_AUTO_NF').Value := FInfoDataHora; end; qryNFiscal.FieldByName('XML_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[i].XML; end; 110: begin // Denegada qryNFiscal.FieldByName('SITUACAO_NF').Value := 3; if qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value > '' then else begin qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value := FInfoProtocolo; qryNFiscal.FieldByName('DH_PROT_AUTO_NF').Value := FInfoDataHora; end; qryNFiscal.FieldByName('XML_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[i].XML; end; 101: begin // Cancelada qryNFiscal.FieldByName('SITUACAO_NF').Value := 5; if qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value = '' then else begin qryNFiscal.FieldByName('NUM_PROT_CANC_NF').Value := FInfoProtocolo; qryNFiscal.FieldByName('DH_PROT_CANC_NF').Value := FInfoDataHora; end; qryNFiscal.FieldByName('XML_CANC_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[i].XML; end else begin qryNFiscal.FieldByName('SITUACAO_NF').Value := 0; qryNFiscal.FieldByName('NUM_PROT_AUTO_NF').Value := ''; qryNFiscal.FieldByName('DH_PROT_AUTO_NF').Value := ''; qryNFiscal.FieldByName('XML_NFE').Value := ''; end; end; // case F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[i].cStat qryNfiscal.Post; end; // if FAcao = taConsultaNFe // Fim da gravação no banco de dados. MemoStatus.Lines.Add(' ' + FInfoNotaFiscal + ' ' + FInfoProtocolo + ' ' + FInfoDataHora + ' ' + FInfoStat + ' - ' + FInfoMotivo); end; // for i := 0 to (F_Menu.ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Count - 1) MemoStatus.Lines.Add(' '); Result := True; except on E: Exception do begin MemoStatus.Lines.Add(' '); MemoStatus.Lines.Add(' ERRO: Não foi possível consultar o recibo'); MemoStatus.Lines.Add(' MOTIVO: ' + E.Message); Disponivel; Result := False; end; end; // try end; Se precisar cancelar uma nota: function TF_StatusEnvioNFe.CancelamentoNFe: Boolean; var i, iCaracteres, iCaractereAtual: Integer; begin try MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' => Cancelando NF-e com chave de acesso nº ' + FNFe.FCancelamento.FChaveNFe); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); if F_Menu.ACBrNFe1.NotasFiscais.Count > 0 then begin F_Menu.ACBrNFe1.WebServices.Cancelamento.NFeChave := FNFe.FCancelamento.FChaveNFe; F_Menu.ACBrNFe1.WebServices.Cancelamento.Justificativa := FNFe.FCancelamento.FJustificativa; F_Menu.ACBrNFe1.WebServices.Cancelamento.Protocolo := FNFe.FCancelamento.FProtocolo; F_Menu.ACBrNFe1.WebServices.Cancelamento.Executar; FInfoProtocolo := F_Menu.ACBrNFe1.WebServices.Cancelamento.Protocolo; FInfoMotivo := F_Menu.ACBrNFe1.WebServices.Cancelamento.xMotivo; FInfoStat := IntToStr(F_Menu.ACBrNFe1.WebServices.Cancelamento.cStat); FInfoDataHora := DateTimeToStr(F_Menu.ACBrNFe1.WebServices.Cancelamento.DhRecbto); iCaracteres := Length(FNFe.FCancelamento.FJustificativa) div 57; if iCaracteres = 0 then MemoStatus.Lines.Add(' Justificativa: ' + FNFe.FCancelamento.FJustificativa) else begin iCaractereAtual := 0; for i := 1 to (iCaracteres + 1) do begin iCaractereAtual := iCaractereAtual + 57; MemoStatus.Lines.Add(' Justificativa: ' + Copy(FNFe.FCancelamento.FJustificativa, (iCaractereAtual - 56), iCaractereAtual)); end; end; if FInfoStat <> '101' then begin Disponivel; MemoStatus.Lines.Add(' '); Result := False; end else begin MemoStatus.Lines.Add(' Status...: ' + FInfoStat + ' - ' + FInfoMotivo); MemoStatus.Lines.Add(' Protocolo: ' + FInfoProtocolo + ' ' + FInfoDataHora); qryNfiscal.Close; qryNfiscal.SQL.Clear; qryNfiscal.SQL.Add('SELECT tbl_NOTA_FISCAL.*, ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT FROM ' + 'tbl_NOTA_FISCAL LEFT OUTER JOIN tbl_EMITENTE ' + 'ON tbl_NOTA_FISCAL.ID_EMIT_NF = ' + 'tbl_EMITENTE.ID_EMIT ' + 'WHERE tbl_NOTA_FISCAL.NUM_NF = ' + IntToStr(F_Menu.ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.nNF) + ' AND ' + 'tbl_EMITENTE.CPF_CNPJ_EMIT = ' + F_Menu.ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF); qryNfiscal.Open; qryNfiscal.Edit; qryNFiscal.FieldByName('SITUACAO_NF').Value := 5; qryNFiscal.FieldByName('NUM_PROT_CANC_NF').Value := FInfoProtocolo; qryNFiscal.FieldByName('DH_PROT_CANC_NF').Value := FInfoDataHora; qryNFiscal.FieldByName('JUSTIF_CANC_NF').Value := FNFe.FCancelamento.FJustificativa; qryNFiscal.FieldByName('XML_CANC_NFE').Value := F_Menu.ACBrNFe1.NotasFiscais.Items[0].XML; qryNFiscal.Post; MemoStatus.Lines.Add(' '); Result := True; end; end else begin Result := False; end; if Result = False then begin MemoStatus.Lines.Add(' ERRO: Não foi possível cancelar a NF-e'); MemoStatus.Lines.Add(' MOTIVO: ' + IntToStr(F_Menu.ACBrNFe1.WebServices.Cancelamento.cStat) + ' - ' + F_Menu.ACBrNFe1.WebServices.Cancelamento.xMotivo); Exit; end; except on E: Exception do begin MemoStatus.Lines.Add(' '); MemoStatus.Lines.Add(' ERRO: Não foi possível cancelar a NF-e'); MemoStatus.Lines.Add(' MOTIVO: ' + E.Message); Disponivel; Result := False; end; end; end; Basicamente é esse o procedimento que eu faço.1 ponto