Ir para conteúdo
  • Cadastre-se

peterson161

Membros
  • Total de ítens

    407
  • Registro em

  • Última visita

  • Days Won

    7

Tudo que peterson161 postou

  1. Pelo que entendi, nesta máquina a sua aplicação funciona com o certificado da Caixa e com o da Certisign não, certo ? Sendo assim, seria interessante instalar o certificado da Certisign em outra máquina, para ver se dá o mesmo erro com a sua aplicação. Eu também uso certificado da Certisign e tive um problema similar ao seu, que foi solucionado após reinstalar o Windows, depois de eu ter constatado que o problema era com a máquina e não com a instação do certificado. Fiz esta constatação instalando o mesmo certificado em outra máquina e rodou perfeitamente. Assim eu tive certeza que o problema era com a instalação do Windows.
  2. Tente instalar o certificado em outra máquina. Talvez o problema seja especifíco com o seu Windows.
  3. O componente gera um XML separado para a carta de correção com o nome de: 1101103512056192272000010755000000003090161053680501-ProcEventoNFe.xml
  4. Tente fazer igual à rotina do botão 'btnCarregarXMLEnviar' do Demo: ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(dmg.NFEmpresaENVIO.AsString + '\' + vNotasFiscais[I].XMLName); ACBrNFe1.NotasFiscais.GerarNFe; ACBrNFe1.Enviar(1,True);
  5. \Pacotes\Delphi\ACBrNFe2\ACBrNFeDanfeRVCodeBase.dpk
  6. Página 39 do Manual de Orientação: Mensagem de erro: 610 - Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF. (NT 2011/005) Se NF-e de Saída (tpNF=1): -Total do vNF (id:W16) difere do somatório de: (+) vProd (id:W07) ==> 8.00 (-) vDesc (id:W10) ==> 0.00 (+) vST (id:W06) ==> 0.00 (+) vFrete (id:W08) ==> 0.00 (+) vSeg (id:W09) ==> 0.00 (+) vOutro (id:W15) ==> 0.00 (+) vII (id:W11) ==> 0.00 (+) vIPI (id:W12) ==> 0.00 (+) vServ (id:W18) ==> 8.00 Então: vNF (id:W16) ==> 16.00 Mensagem de erro do arquivo XML: Total da NF difere do somatorio dos Valores compoe o valor Total da NF. (vNF informado: 8.00, vNF calculado: 16.00) (Ou você pode eliminar o vServ)
  7. Procure no Google por "rave_be_5_0_8.exe" e instale esta versão.
  8. Hum... lendo novamente, estou tendo a mesma impressão... foi mal. Então, Alexandre, me desculpe.
  9. O componente é excelente, é o melhor que você poderá encontrar por aí. Pergunto: Por que não não gerar seus XML's por ele ? Sem contar que seriam gerados da maneira correta.
  10. Seus XML's estão errados. Você colocou a informação: "xmlns="http://www.portalfiscal.inf.br/nfe" em todos os grupos, enquanto que deveria ser colocada apenas uma vez no grupo :
  11. 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: 1
  12. 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.
  13. Fabio, para consultar NF-e de terceiros, tente informar somente a chave de acesso, sem carregar o XML por completo: ACBrNFe1.WebServices.Consulta.NFeChave := varChave; ACBrNFe1.WebServices.Consulta.Executar; varInfoProtocolo := ACBrNFe1.WebServices.Consulta.Protocolo; varInfoMotivo := ACBrNFe1.WebServices.Consulta.XMotivo; varInfoStat := IntToStr(ACBrNFe1.WebServices.Consulta.cStat); varInfoDataHora := DateTimeToStr(ACBrNFe1.WebServices.Consulta.DhRecbto);
  14. Limpe o componente (ACBrNFe1.NotasFiscais.Clear), carregue a nota (ACBrNFe1.NotasFiscais.LoadFromFile) e depois utilize: Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44)
  15. Uma saída que eu utilizei com um amigo foi compartilhar a porta USB da máquina que tem o certificado A3, com o programa "USB Over Network 4.3". Funciona perfeitamente até hoje. A desvantagem é que o programa não deixa a porta USB funcionar na máquina do certificado. Mas até aí tudo bem porque somente os outros micros da rede emitiam nota e acessavam o mesmo certificado A3 do servidor.
  16. Página 102 do Manual de Orientação do Contribuinte, versão 5.00: 7.7 Padrões de Caracteres (Tipos de Fontes) Todos os caracteres deverão estar impressos na fonte Times New Roman ou na fonte Courier New. A impressão dos dados variáveis feitas por Impressoras de Impacto (Matricial e de Linha) deverá estar entre 10 e 17 CPP (Caracteres por Polegada).
  17. A pasta PathPDF está nas propriedades do componente DANFE.
  18. Camila, o João se referiu ao componente Danfe feito em Rave via código, sem arquivo ".rav". Por isso o nome "Rave Code Base". Atualize seu Rave. Baixe-o em http://www.4shared.com/file/z-w6vsEI/rave_be_5_0_8.html O componente Danfe está na pasta do componente ACBr: "\Pacotes\Delphi\ACBrNFe2\ACBrNFeDanfeRVCodeBase.dpk". Instale-o, faça os testes e reporte para nós.
  19. Aparentemente é isso mesmo.
  20. ACBrNFe1.Configuracoes.Certificados.Senha := ****
  21. Poste o XML que é enviado/retornado e a sua rotina de envio da CC-e
  22. Me passou pela cabeça: No rotina de gerar um XML de NF-e acho que você deve dar um "Clear" antes, certo ? Será que quando você conserta o erro você repete a mesma rotina de geração e com isso um novo "Clear" é dado e ocorre alguma falta de atualização em algum outro local do sistema ?
  23. Muito simples. Carregue o componente com as notas de 100 a 350 e depois mande imprimir: ACBrNFe1.NotasFiscais.Imprimir;
×
×
  • 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.