-
Total de ítens
178 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Ademir P. Voigt postou
-
Olá Juliana, sobre as modificações do Boleto com Fatura sugeridas por Paulo Henrique de Castro, ainda não foram avaliadas? Acredito que muitos estão precisando esta opção, inclusive nós e será uma grande contribuição para a ferramenta.
-
Veja se consegue algo com isso que usamos aqui. São ideias... Porem, fazemos isso usando o XML baixado manualmente do site do sefaz. Pois não encontramos uma forma de atualizar o XML local baseado somente no meotodo: ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(ArquivoXML, False); ACBrNFe1.Consultar; ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(ArquivoXML); for n := 0 to ACBrNFe1.NotasFiscais.Count - 1 do begin with ACBrNFe1.NotasFiscais.Items[n].NFe do begin Application.ProcessMessages; NFeNumeroXML := IntToStr(Ide.nNF); SerieXML := IntToStr(Ide.serie); CNPJRemXML := Emit.CNPJCPF; RemXML := Emit.xNome; ValorXML := FormatFloat('###,###,##0.00', total.ICMSTot.vNF); ValorTotalNF := FormatFloat('###,###,##0.00', MyQrNFevalor_total_nota.AsFloat); CNPJDestXML := Dest.CNPJCPF; DestXML := Dest.xNome; Application.ProcessMessages; // informar o numero caso ainda não estiver postado no banco de dados - ADEMIR 05/01/2016 InputQuery('NÚMERO NF', 'Informe o Número da NF a ser corrigido:', NumeroEsperado); if NFeNumeroXML <> NumeroEsperado then begin ShowMessage('Número da NFe no XML incompatível' + #13 + 'Número XML: ' + NFeNumeroXML + #13 + 'Número NF: ' + NumeroEsperado); abort; end else begin ShowMessage('Número da NFe OK'); end; Application.ProcessMessages; if SerieXML <> MyQrNFeserie.AsString then begin ShowMessage('Série da NFe no XML incompatível' + #13 + 'Série XML: ' + SerieXML + #13 + 'Série NF: ' + MyQrNFeserie.AsString); abort; end else begin ShowMessage('Série da NFe OK'); end; Application.ProcessMessages; if CNPJRemXML <> SomenteNumeros(MyQrNFeemit_cnpj.AsString) then begin ShowMessage('CNPJ do Emitente da NFe no XML incompatível' + #13 + 'CNPJ Emitente XML: ' + CNPJRemXML + #13 + 'CNPJ Emitente NF: ' + MyQrNFeemit_cnpj.AsString); if Application.MessageBox ('Pode conter erro de codificação de caractéres ' + #13 + 'INFORME O ERRO AO SUPORTE. Deseja prosseguir?', 'ATENÇÃO', MB_YESNO + MB_ICONQUESTION) = IDYES then begin ShowMessage('CNPJ do Emitente da NFe confirmado pelo Usuário'); end else begin abort; end; end else begin ShowMessage('CNPJ do Emitente da NFe OK'); end; Application.ProcessMessages; if RemXML <> MyQrNFeemit_nome.AsString then begin ShowMessage('Emitente da NFe no XML incompatível' + #13 + 'Emitente XML: ' + RemXML + #13 + 'Emitente NF: ' + MyQrNFeemit_nome.AsString); if Application.MessageBox ('Pode conter erro de codificação de caractéres ' + #13 + 'INFORME O ERRO AO SUPORTE. Deseja prosseguir?', 'ATENÇÃO', MB_YESNO + MB_ICONQUESTION) = IDYES then begin ShowMessage('Emitente da NFe confirmado pelo Usuário'); end else begin abort; end; end else begin ShowMessage('Emitente da NFe OK'); end; Application.ProcessMessages; if ValorXML <> ValorTotalNF then begin ShowMessage('Valor Total da NFe no XML incompatível' + #13 + 'Valor Total XML: ' + ValorXML + #13 + 'Valor Total NF: ' + MyQrNFevalor_total_nota.AsString); if Application.MessageBox ('Pode conter erro de codificação de caractéres ' + #13 + 'INFORME O ERRO AO SUPORTE. Deseja prosseguir?', 'ATENÇÃO', MB_YESNO + MB_ICONQUESTION) = IDYES then begin ShowMessage('Valor Total da NFe confirmado pelo Usuário'); end else begin abort; end; end else begin ShowMessage('Valor Total da NFe OK'); end; Application.ProcessMessages; if CNPJDestXML <> SomenteNumeros(MyQrNFedest_cnpj.AsString) then begin ShowMessage('CNPJ do Destinatário da NFe no XML incompatível' + #13 + 'CNPJ Desttinatário XML: ' + CNPJDestXML + #13 + 'CNPJ Desttinatário NF: ' + MyQrNFedest_cnpj.AsString); if Application.MessageBox ('Pode conter erro de codificação de caractéres ' + #13 + 'INFORME O ERRO AO SUPORTE. Deseja prosseguir?', 'ATENÇÃO', MB_YESNO + MB_ICONQUESTION) = IDYES then begin ShowMessage ('CNPJ do Destinatário da NFe confirmado pelo Usuário'); end else begin abort; end; end else begin ShowMessage('CNPJ do Destinatário da NFe OK'); end; Application.ProcessMessages; if (DestXML <> MyQrNFedest_nome.AsString) and (DestXML <> 'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL') then begin ShowMessage('Destinatário da NFe no XML incompatível' + #13 + 'Destinatário XML: ' + DestXML + #13 + 'Destinatário NF: ' + MyQrNFedest_nome.AsString); // Em alguns casos os nomes são aparentemente iguais // por isso coloquei o Application.MessageBox para poder prosseguir // isso se o nome for igual - ADEMIR 17/11/2016 if Application.MessageBox ('Pode conter erro de codificação de caractéres ' + #13 + 'INFORME O ERRO AO SUPORTE. Deseja prosseguir?', 'ATENÇÃO', MB_YESNO + MB_ICONQUESTION) = IDYES then begin ShowMessage('Destinatário da NFe confirmado pelo Usuário'); end else begin abort; end; end else begin ShowMessage('Destinatário da NFe OK'); end; end; end; end else begin Application.ProcessMessages; ShowMessage('Arquivo: ' + ArquivoXML + #13 + ' não encontrado!'); abort; end; // caso ocorram bem as validações, sistema continua - ADEMIR 08/09/2016 ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(ArquivoXML, False); ACBrNFe1.Consultar; MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetornoWS); memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetornoWS); LoadXML(MemoResp, WBResposta); LoadConsulta201(ACBrNFe1.WebServices.Consulta.RetornoWS); memoLog.Lines.Add(''); memoLog.Lines.Add('CONSULTA DE NFe'); memoLog.Lines.Add(' '); memoLog.Lines.Add('Versão da Aplicação Sefaz: ' + ACBrNFe1.WebServices.Consulta.verAplic); memoLog.Lines.Add('UF NFe: ' + IntToStr(ACBrNFe1.WebServices.Consulta.cUF)); memoLog.Lines.Add('Código do Status: ' + IntToStr(ACBrNFe1.WebServices.Consulta.cStat)); memoLog.Lines.Add('Descrição do Motivo: ' + ACBrNFe1.WebServices.Consulta.xMotivo); memoLog.Lines.Add('Protocolo: ' + ACBrNFe1.WebServices.Consulta.Protocolo); memoLog.Lines.Add('Chave: ' + ACBrNFe1.WebServices.Consulta.NFeChave); memoLog.Lines.Add('Recebimento: ' + DateToStr(ACBrNFe1.WebServices.Consulta.dhRecbto)); if Copy(ACBrNFe1.WebServices.Consulta.NFeChave, 26, 9) = FormatFloat('000000000', ProximoNumero) then begin if (ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat = 100) then begin conteudoXML := TStringList.Create; MyTbStatus.Active := True; MyTbStatus.Insert; MyTbStatusnotasfiscais_id.AsString := MyQrNFeid.AsString; MyTbStatuscod_status.AsString := IntToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat); MyTbStatusrecibo.AsString := ACBrNFe1.WebServices.Retorno.Recibo; MyTbStatusprotocolo.AsString := ACBrNFe1.NotasFiscais.Items[0] .NFe.procNFe.nProt; MyTbStatuschave.AsString := ACBrNFe1.NotasFiscais.Items[0] .NFe.procNFe.chNFe; MyTbStatusdata.AsDateTime := ACBrNFe1.NotasFiscais.Items[0] .NFe.procNFe.dhRecbto; MyTbStatusdescr_status.AsString := ACBrNFe1.NotasFiscais.Items[0] .NFe.procNFe.xMotivo; MyTbStatuslote.Value := vNumLote; MyTbStatususuario_id.AsInteger := frmSenha.MyQrUsuariosusu_sis_id.AsInteger; Ano := IntToStr(YearOf(date)); mesinteiro := MonthOf(date); mes := FormatFloat('00', mesinteiro); anomes := Ano + mes; if FilesExists(ArquivoXML) then begin conteudoXML.LoadFromFile(ArquivoXML); MyTbStatusxml.AsString := conteudoXML.Text; end else begin ShowMessage('Arquivo: ' + ArquivoXML + ' não encontrado!'); end; // apaga arquivo temp XML -ADEMIR 30/06/2015 if FilesExists(PathWithDelim(ExtractFileDir(Application.ExeName)) + NomeArquivoXMLTemp + '.xml') then begin DeleteFile(PathWithDelim(ExtractFileDir(Application.ExeName)) + NomeArquivoXMLTemp + '.xml'); end; NomeArquivoXMLTemp := ''; MyTbStatus.Post; MyQrStatus.Active := False; MyQrStatus.Params.ParamValues['pNotaFiscal'] := MyQrNFeid.AsInteger; MyQrStatus.Active := True; conteudoXML.Free; MyTbStatus.Active := False; end else begin ShowMessage('Status não está confirmado como Autorização de uso!'); PostMessage(Self.handle, WM_CLOSE, 0, 0); abort; end;
-
Isso, pq eu guardo o XML no banco de dados, depois gero ele em disco para transmitir exatamente como foi em nodo offline. Ele não pode sofrer alteração alguma. Ao invez de mandar o ABCR gerar o XML, eu só carrego o componente: if MyQrNFetipoemissao.AsString = 'contingencia' then begin ACBrNFe1.NotasFiscais.LoadFromString(MyQrNFexmloffline.AsString); ACBrNFe1.NotasFiscais.GerarNFe; end else begin GerarNFe(vAux); end;
-
Eu faço assim para NFe: ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpEmis := teContingencia; ACBrNFe1.Configuracoes.Geral.FormaEmissao := teContingencia; e assim para NFCe: ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpEmis := teOffLine; ACBrNFe1.Configuracoes.Geral.FormaEmissao := teOffLine;
-
Se tem internet emite normal. A ideia é não deixar cliente nem transporte esperando na porta da empresa. Dai vc usa contingencia
-
Olha esse posto do André Ferreira de Moraes que é fera aqui do ACBR: http://anfm.blogspot.com.br/2014/09/como-usar-o-novo-ambiente-de.html Pode ser papel comum mesmo
-
D Isso mesmo, porem, quando emite ela e imprime novamente, continua saindo impresso a TARJA da contingência que no RS é SVC-RS. Minha duvida é se faz mal isso ou não.
-
Offiline é NFCe, contigencia é NFe Ambas são distintas.
-
NFe no caso.
-
Já verificamos isso também. Em todos os clientes é a mesma coisa. Vou acionar a Bematech mais uma vez. Obrigado Juliomar.
-
Não duvido Juliomar, mas para a Bematech, no atendimento a desenvolvedores, disseram que o driver está correto. Tivemos inclusive uma acesso remoto por parte deles. Vc usa, ou sabe de algum driver que possamos testar?
-
Sugestao de Correção Retorno Sicredi
Ademir P. Voigt replied to Ademir P. Voigt's tópico in ACBrBoleto
Obrigado! -
Bom dia! Tenho a seguinte situação em todos os clientes que usam Bematech MP-4200 TH Aleatoriamente sai impresso usando o componente ACBrNFeDANFCeFortes com fonte normal, e em outros momentos a fonte muda de tamanho. No 0800 da bematech fizemos de tudo mas não resolveu. Nós tem um recibo(também em Fortes) que sai impresso na mesma impressora após venda a prazo e nunca tivemos problema. Imagem em anexo
-
Dê uma olha aqui: http://ip.sysfar.com.br/manual_sysfar/Manual.html?ErrosNFE.html
-
Pessoal me ajudem aí: Vamos supor a seguinte situação: Estou sem internet, e sendo assim, acabo tendo que emitir a NFe em contingência. Sai a DANFE impressa com a tarde da contingência, data e hora... tudo certinho. Eu guardo esse XML no banco de dados pois será ele que irei usar para emitir a NFe quando minha internet voltar ao normal. Pois li que o XML não pode sofrer alterações. Quando a internet volta, eu carrego o XML no componente e envio ao Sefaz. O Sefaz aceita, consta no xml o protocolo e autorização de uso etc. Daí eu imprimo a DANFE novamente, mas continua saindo a tarja de que foi emitida em contingencia. Isso é normal ou devo informar algo ao componente ACBR, nesse caso, para que a DANFE sejá impressa de forma que não saia essa tarja?
-
Arce, isso foi resolvido pelo ACBR no dia 17/02/2016. Inclusive cedi o meu certificado ao Regys para que pudesse efetuar os testes e fazer as alterações. Desde então, está tudo OK. Eu não precisei mexer no meu sistema, só atualizei o ABCR no Trunk 2
-
Pessoal, bom dia! Ulmos dias, o Sicredi vem devolvendo arquivos de retorno com falhas conforme aquivo de retorno em anexo. Nas colunas que se referem aos MotivoRejeicaoComando, deveria vir somente 00, mas tem casos que vem em branco. Dai temos erro de Not valid Integer Value. Da pra resolver assim no arquivo ACBrBancoSicredi.pas na linha 652 onde rodam os demais motivos da mesma linha: Está assim no arquivo original do ACBR: if CodMotivo <> '00' then //Após o 1º motivo os 00 significam que não existe mais motivo begin .... end; Coloque assim com dois caracteres em branco e não tem mais nada pra alterar: if (CodMotivo <> '00') and (CodMotivo <> ' ') then //Após o 1º motivo os 00 significam que não existe mais motivo begin .... end; Onde o CodMotivo <> ' ' ignora caso esses motivos vierem com dois caracteres em branco. Gostaria que se possível subissem essa alteração para o SNV. Em anexo: retonro e ACBrBancoSicredi.pas. Também temos clientes recebendo a situação H4 - Alteração de carteira. Não achei um local especifico para tal. Seria possível incluir isso no processamento de retorno para que nao fique em "Outros motivos"? 00078922.CRT ACBrBancoSicredi.pas
-
Erro ao buscar Arquivo de Retorno - SICREDI
Ademir P. Voigt replied to Athos Desenvolvimento's tópico in ACBrBoleto
Pessoal, bom dia! Da pra resolver assim no arquivo ACBrBancoSicredi.pas na linha 652 onde rodam os demais motivos da mesma linha: Está assim no arquivo original do ACBR: if CodMotivo <> '00' then //Após o 1º motivo os 00 significam que não existe mais motivo begin .... end; Coloque assim com dois caracteres em branco e não tem mais nada pra alterar: if (CodMotivo <> '00') and (CodMotivo <> ' ') then //Após o 1º motivo os 00 significam que não existe mais motivo begin .... end; Onde o CodMotivo <> ' ' ignora caso esses motivos vierem em branco. Ou aguardamos o Sicredi resolver. -
Juliomar, eu pego o erro e trato ele, porem, hj ocorreu um caso em um cliente ref um erro que eu ainda não tratava. Não posso simplesmente emitir ofline caso ocorra um except, devo emitir offline somente em caso de falta de internet. Se for outro problema, acredito que dev resolver internamente, pois depois, ao enviar a NFCe para o sefaz, devo usar o mesmo XML(por isso que guardo o XML no banco de dados). Eu trato da seguinte forma: try ACBrNFe1.Configuracoes.Geral.FormaEmissao := teNormal; ACBrNFe1.Enviar(vNumLote, False, True); ACBrNFeDANFCeCupom.ViaConsumidor := True; // em caso de erro, emitir em OffLine // NFCe ficará em posição para enviar ao SEFAZ mais tarde except on E: Exception do begin if (Copy(E.Message, Pos('Erro HTTP:', E.Message), 10) = 'Erro HTTP:') or (Copy(E.Message, Pos('O nome ou o endereço do servidor não pôde ser resolvido', E.Message), 55) = 'O nome ou o endereço do servidor não pôde ser resolvido') then begin imprimo offline end else // se o erro não for falta de internet begin frmAlertasUsuarios.ExibirAlerta('FORM | MONITOR NFE', 'ERRO', 'Ocorreu o seguinte Erro: ' + #13, E.Message); frmAlertasUsuarios.ShowModal; Existe uma forma de o próprio componente ACBRNFe testar a conexão? ou outro meio eficaz?
-
Meios de Pagto Dados Ultima Reducao Z
Ademir P. Voigt replied to Ademir P. Voigt's tópico in ACBrSerial
Vou tentar fazer no eventos antes e novamente um depois da redução e depois fazer um merge para comparar os dados. Retorno aqui os resultados. -
Meios de Pagto Dados Ultima Reducao Z
Ademir P. Voigt replied to Ademir P. Voigt's tópico in ACBrSerial
Eu achei, é um Lazarus... to abrindo pro partes no delphi -
Meios de Pagto Dados Ultima Reducao Z
Ademir P. Voigt replied to Ademir P. Voigt's tópico in ACBrSerial
Isaque, isso server para o que preciso DadosUltimaReducaoZ? no site do Regys, eu encontrei um exemplo que é o que eu uso, mas sem retorno de dados: // MEIOS DE PAGAMENTO ****************************************************** for I := 0 to ReducaoZ.MeiosDePagamento.Count - 1 do begin with ReducaoZ.MeiosDePagamento do begin Indice Descricao PermiteVinculado Data TipoDoc end; end; -
Meios de Pagto Dados Ultima Reducao Z
Ademir P. Voigt replied to Ademir P. Voigt's tópico in ACBrSerial
No demo do ecf tem, mas não me mostra como obter os meios de pagamento. Vou tentar com o monitorPlus e retorno aqui procedure TForm1.DadosUltimaReduoZ1Click(Sender: TObject); Var AIni : TMemIniFile ; AStringList : TStringList ; Resp : String ; AVal : Double ; ADate : TDateTime ; AStr : String ; begin Resp := ACBrECF1.DadosUltimaReducaoZ ; mResp.Lines.Add( 'Dados da Ultima Redução Z' + sLineBreak + Resp ); AStringList := TStringList.Create ; AIni := TMemIniFile.Create( 'DadosUltimaReducaoZ.ini' ) ; try AStringList.Text := Resp ; AIni.SetStrings(AStringList); // Lendo a Data do Movimento ADate := AIni.ReadDateTime('ECF','DataMovimento', 0) ; ShowMessage('Data do Movimento'+sLineBreak+DateToStr(ADate)); // Lendo o NumCOOInicial AStr := AIni.ReadString('ECF','NumCOOInicial', '') ; ShowMessage('COO Inicial'+AStr); // Lendo a Venda Bruta: AVal := AIni.ReadFloat('Totalizadores','VendaBruta', 0) ; ShowMessage('Venda Bruta'+sLineBreak+FormatFloat('0.00',AVal)); finally AIni.Free ; AStringList.Free ; end ; AtualizaMemos ; end; Não tenho acesso ao ACBRMonitorPLUS. É componente pago né? -
Pessoal, Bom dia! Minha dificuldade é a seguinte em uma Impressora fiscal Bematech MP 4000 TH F1: Referente ao Procedimento DadosUltimaReducaoZ, estou tendo problemas em dois casos bem isolados para armazenar os dados da redução Z para fins de sped fiscal: Em Meios de Pagameto também não obtenho resultado algum: // MEIOS DE PAGAMENTO ****************************************************** MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamento.Active := true; for I := 0 to ReducaoZ.MeiosDePagamento.Count - 1 do begin with ReducaoZ.MeiosDePagamento[I] do begin MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamento.Insert; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoreducao_id. AsInteger := MyTbReducoesid.AsInteger; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoIndice.AsString := Indice; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoDescricao.AsString := Descricao; if PermiteVinculado = true then begin MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoPermiteVinculado. AsInteger := 1; end else begin MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoPermiteVinculado. AsInteger := 0; end; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoData. AsDateTime := Data; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamentoTipoDoc.AsString := TipoDoc; MyTbecf_dados_reducao_ecf_dados_reducao_meiosdepagamento.Post; end; end; Existe alguma outra forma de conseguir os dados das formas de pagamento?