jorgehenrique
Membros-
Total de ítens
42 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que jorgehenrique postou
-
Tarja "nf-E Cancelada" Usando Acbrdanferl (Fortes Reports )
jorgehenrique replied to jorgehenrique's tópico in ACBrNFe
Por favor, algum moderador ou usuario com permissão de escrita no SVN, poderia testar e commitar estas alterações para o ACBrDANFeRL? Se não vai ser dureza toda vez ter que alterar... Obrigado!! -
Pergunta: Será que com o SAT/CF-e ainda continuará toda essa burrocracia de trocentas homologações, cartas de fianças, declarações, avalistas, enfim, uma parafernalha danada só pra não deixar "o lojinha de Salim" cabritar impostos????
-
Eu só guardo o XML da NF-e e dos eventos. Esses aí são montados na hora de fazer a comunicação com os webservices, isto é, pedido de recepção de NF-e, pedido de inutilização, etc (são os que começam com "ped-'). Eles também são usados pro componente saber o resultado destes pedidos, se a NF-e foi autorizada, rejeitada, se o pedido de inutilização foi homologado, etc (são os que terminam com "proc-'). Particularmente não vejo necessidade de guardar estes XMLs. Mas são muito úteis durante o processo de desenvolvimento e implantação de um sistema de NF-e desenvolvido com o ACBr. Logo mais tudo testado e resolvido, nem deixo a propriedade para salvar arquivos de respostas ativada. Att
-
Tarja "nf-E Cancelada" Usando Acbrdanferl (Fortes Reports )
um tópico no fórum postou jorgehenrique ACBrNFe
Pessoal, boa noite. O componente ACBrNFeDANFeRL ainda não havia sido implementado a tarja "NF-e CANCELADA" através da propriedade ACBrNFeDANFeRL.NFeCancelada:=True. Atualizei o componente hoje a tarde e reparei que ainda não havia sido resolvido esta questão para o Frotes. Pois bem. Utilizo Fortes Reports em minhas aplicações há um bom tempo e ainda nem penso quando vou migrar para Rave ou Fast Reports. Talvez no futuro, mas agora não dá devido a falta de tempo, por isso, implementei a propriedade NFeCancelada para o Fortes. Gostaria que os colegas que usam o Fortes testassem e, se estiver tudo correto fazer, o upload para o SVN. Testei aqui em produção e deu tudo certo. Quando a propriedade ACBrNFeDANFeRL.NFeCancelada for TRUE, a tarja "NF-e CANCELADA" irá aparecer, bem como o componente passará a respeitar a propriedade ACBrNFeDANFE.ProtocoloNFe, isto é, deixei da mesma forma como foi aplicado aos outros componentes de DANFE (Rave e Quick Reports), passando a exibir o protocolo de cancelamento atribuído. As alterações foram aplicadas tanto na unit ACBrNFeDANFeRLRetrato.pas quanto na ACBrNFeDANFeRLPaisagem.pas. Seguem as units alteradas. Espero ter contribuído com o projeto ACBr e ajudado os colegas. Att Jorge Henrique ACBrNFeDANFeRL.zip ACBrNFeDANFeRL.zip -
Pessoal, O tópico parece estar meio esquecido, mas está acontecendo isso comigo hoje aqui em MG. Porém, minha pergunta seria: Este código de rejeição 642 não tem a ver com as implementações que fizeram referente a uso indevido dos webservices? Pelo que eu tinha lido há um tempo atrás, as SEFAZes iriam limitar o consumo dos webservices, passando a aplicar tempos mínimos entre uma operação e outra para evitar programas executando em loop, como haviam explicado no manual de uso indevido, existiam aplicações que conseguiam realizar 300/400 ou mais consultas por minuto. Explicaram tbm que iriam, de início colocar o espaço de 1 minuto entre uma operação e outra, depois passariam para 3, até chegar em 10 minutos. Isto tudo para se evitar sobrecarga dos servidores deles. Será que não tem a ver com isso? Obrigado.
-
Pessoal, Desculpem-me se o post é repetido mas não encontrei nada relacionado à minha dúvida. Instalei o ACBrNFSeDANFSeRL (DANFSE para o Fortes Reports), porem quando carrego um XML de exemplo no componente e mando imprirmir, obtenho o erro EConvertError('' is not a valid floating point value. Baixei uma versão trial do QuickReport 5 e o mesmo XML funciona perfeitamente, aparece o DANFSe sem msg de erro alguma, com os campos devidamente preenchidos. Uso Delphi XE e estou testando o componente com o demo do ACBrNFSe. Alguem que usa o Fortes ou que saiba o que está acontecendo, poderia me dar uma ajudinha?? Obrigado.
-
Não sei se estou falando besteira, mas não seria o caso de vc especificar o layout correto, no caso CNAB240 ou CNAB400??
-
Pessoal, sei que o post já é antigo, mas com a versão mais recente do ACBrBoleto, função LerRetorno(), me deparei com o seguinte na linha 524, da unit ACBrCaixaEconomica.pas: if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or (rConta <> OnlyNumber(Cedente.CodigoCedente))) then raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido')); Porém, atribuo os valores as propriedades da conta corrente no componente ACBrBoleto, desta forma: //O usuario seleciona a C/C num ComboBox, então configuro o ACBrBoleto para aquela C/C Boleto.Cedente.Agencia:=Trim(cds_contacorrenteAGENCIA.AsString); Boleto.Cedente.Conta:=Trim(cds_contacorrenteCONTA.AsString); Boleto.Cedente.CodigoCedente:=Trim(cds_contacorrenteCODCEDENTE.AsString); Acontece que eu passo para o componente ACBrBoleto, apenas os digitos de 1..9, isto é, sem zeros a esquerda. Debugando a unit, vi que na propriedade Agencia, vem com 5 digitos e, no meu caso, com 2 zeros a esquerda. Meu problema é que não sei como o usuário irá cadastrar suas contas correntes no sistema, não sei se ele informará no campo agencia o valor "163", "0163" ou "00163". Por isso, tenho uma exceção de que a agencia\conta informada não é a mesma do arquivo de retorno. O que eu fiz foi alterar esse código para: if (not LeCedenteRetorno) and ((Trim(IntToStr(StrToInt(rAgencia))) <> Trim(IntToStr(StrToInt(OnlyNumber(Cedente.Agencia))))) or (Trim(IntToStr(StrToInt(rConta))) <> Trim(IntToStr(StrToInt(OnlyNumber(Cedente.CodigoCedente)))))) then raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido')); Isto é, retirando os zeros e comparando apenas os digitos válidos. Sei que não ficou bonitp, mas se valer a dica alguem poderia alterar a unit e colocar uma forma melhor de não termos problemas com esses zeros. Obrigado.
-
Como interceptar EACBrNFeException p/exibir outra Mensagem?
jorgehenrique replied to FocusRJ's tópico in ACBrNFe
Olá amigo. Sei que o tópico já está morto e enterrado, mas li seu post e consegui uma solução para o caso da duplicidade. Pode ser que ainda ajude vc ou outras pessoas, portanto vou postar o que eu fiz: // Tento enviar a NFe Try ACBrNFe1.Enviar(Lote); // Vc controla os lotes a sua maneira, pode usar 0 se quiser Except on E: Exception do // Erro begin if (Pos('Duplicidade', E.Message)<>0) then // Pego a exceção pela mensagem de erro e nao pelo cStat, pq nao vem preenchido begin // Ai eh soh tratar o procedimento de duplicidade. No meu caso, consulto a NFe para ter os dados de recibo e dps // gravo no meu banco de dados, mas pode-se tratar da maneira que quiser. MessageBox(Handle,'O sistema da SEFAZ informa que a nota fiscal XXXXXXXX' está em duplicidade! O sistema irá consultar os dados de entrega e em seguida marcá-la como TRANSMITIDA.'), 'Informação', MB_ICONINFORMATION); if (ACBrNFe1.Consultar) then // Faça seu tratamento de duplicidade aqui!! else raise Exception.Create('Nota fiscal em duplicidade. Falha na tentativa de recuperar os dados da NF-e...') end else begin raise Exception.Create(E.Message); // Aqui existe essa exception para os outros erros. end; end; End; Isto está funcionando perfeitamente pra mim. Acontece as vezes, de o webservices de retorno de consulta demorar a responder se a nota foi autorizada ou não, aí o ACBr não complementa o XML com os dados de autorização, o que leva o usuário a acreditar que a nota não foi transmitida. O usuário, então, clica no botão "Enviar NFe" novamente e aparece o erro de duplicidade. A solução é, quando enviar a NFe novamente e gerar a exceção, pegar a msg de duplicidade e tratá-la. Espero ter ajudado. [ ] 's -
Oi Juliana! Agora está tudo entendido! Vou baixar os manuais no svn e dar uma olhada. Muito obrigado pela sua resposta. Jorginho
-
Bom, creio que se eu colocar aqui o que fiz no meu sistema, vc não poderá aproveitar nada ou quase nada, visto que campos, tabelas, etc, são diferentes do seu jeito de programar. Mas posso te passar um roteiro, pq a leitura de arquivo de retorno é relativamente simples: 1o - Preencha os dados do banco e da conta corrente no ACBrBoleto; 2o - Setar as propriedades DirArqRetorno e NomeArqRetorno, com o local e nome do arquivo que deverá ser lido; 3o - Execute o método LerRetorno; 4o - Vc pode pegar os valores lidos nas propriedades do ACBrBoleto. Segue a forma que usei: for I:=0 to Boleto.ListadeBoletos.Count-1 do begin with Boleto.ListadeBoletos.Objects do begin cds_receber_retr.Insert; cds_receber_retrNUMDOCTO.AsString:=NumeroDocumento; cds_receber_retrNOSSONRO.AsString:=NossoNumero; cds_receber_retrREFERENCIA.AsString:=Referencia; cds_receber_retrSEUNRO.AsString:=SeuNumero; cds_receber_retrUSOBANCO.AsString:=UsoBanco; cds_receber_retrSACADO.AsString:=Sacado.NomeSacado; cds_receber_retrCGCCPF.AsString:=Sacado.CNPJCPF; cds_receber_retrVALORDOCTO.AsCurrency:=ValorDocumento; cds_receber_retrDATVENCTO.AsDateTime:=Vencimento; cds_receber_retrNUMPARCELA.AsInteger:=Parcela; cds_receber_retrQTDPARCELA.AsInteger:=TotalParcelas; if (DataDocumento<>StrToDate('30/12/1899')) then cds_receber_retrDATADOCUMENTO.AsDateTime:=DataDocumento; if (DataOcorrencia<>StrToDate('30/12/1899')) then cds_receber_retrDATARECEBIMENTO.AsDateTime:=DataOcorrencia; if (DataProcessamento<>StrToDate('30/12/1899')) then cds_receber_retrDATAPROCESSAMENTO.AsDateTime:=DataProcessamento; if (DataCredito<>StrToDate('30/12/1899')) then cds_receber_retrDATACREDITO.AsDateTime:=DataCredito; if (DataAbatimento<>StrToDate('30/12/1899')) then cds_receber_retrDATABATIMENTO.AsDateTime:=DataAbatimento; if (DataDesconto<>StrToDate('30/12/1899')) then cds_receber_retrDATADESCONTO.AsDateTime:=DataDesconto; if (DataProtesto<>StrToDate('30/12/1899')) then cds_receber_retrDATAPROTESTO.AsDateTime:=DataProtesto; if (DataBaixa<>StrToDate('30/12/1899')) then cds_receber_retrDATABAIXA.AsDateTime:=DataBaixa; if (DataMoraJuros<>StrToDate('30/12/1899')) then cds_receber_retrDATAJUROS.AsDateTime:=DataMoraJuros; cds_receber_retrDESPESACOBRANCA.AsCurrency:=ValorDespesaCobranca; cds_receber_retrVALORABATIMENTO.AsCurrency:=ValorAbatimento; cds_receber_retrVALORDESCONTO.AsCurrency:=ValorDesconto; cds_receber_retrVALORIOF.AsCurrency:=ValorIOF; cds_receber_retrVALOROUTDESP.AsCurrency:=ValorOutrasDespesas; cds_receber_retrVALOUTROSCRED.AsCurrency:=ValorOutrosCreditos; cds_receber_retrPERJUROS.AsFloat:=PercentualMulta; cds_receber_retrVALORJUROS.AsCurrency:=ValorMoraJuros; cds_receber_retrTOTALRECEBIDO.AsCurrency:=ValorRecebido; cds_receber_retrESPECIE.AsString:=EspecieDoc; cds_receber_retrCARTEIRA.AsString:=Carteira; cds_receber_retrINSTR1.AsString:=Instrucao1; cds_receber_retrINSTR2.AsString:=Instrucao2; cds_receber_retrMSG.AsString:=Mensagem.Text; cds_receber_retrREJEICAO.Value:=DescricaoMotivoRejeicaoComando.Text; if (Aceite=atSim) then cds_receber_retrACEITE.AsString:='S' else cds_receber_retrACEITE.AsString:='N'; end; cds_receber_retr.Post; end; Depois disso vc pode fazer algumas implementações interessantes como imprimir uma lista do retorno, baixar o título através do nosso numero ou seu numero, etc. Vai da sua imaginação. Espero ter ajudado. Jorge Henrique
-
Pessoal, Sou um pouco novo no mundo dos boletos, cobrança bancária e afins e tenho algumas dúvidas com algumas propriedades. Por exemplo, a propriedade OcorrenciaOriginal.Tipo, podemos especificar nela 'toRemessaRegistrar'. Mas se nessa propriedade estamos enviando para o banco uma instrução pedindo o registro do título, pra que servem as propriedades Instrução 1 e Instrução 2? Elas são usadas no envio da remessa ou no tratamento do arquivo de retorno? Ou em ambos? Elas tem alguma relação com a propriedade OcorrenciaOriginal.Tipo? Gostaria de saber mais especificamente quando usar essas 3 propriedades (OcorrenciaOriginal.Tipo, Instrucao 1 e Instrucao 2). Ah e tbm, a propriedade OcorrenciaOriginal.Tipo, ela é setada no arquivo de retorno pra gente saber oq aconteceu com determiado titulo ou só conseguimos obter esta informação pela propriedade DescricaoMotivoRejeicaoComando? Obrigado, Jorge Henrique
-
Recentemente fiz a leitura do arquivo de retorno para a CEF e Bradesco. Creio que o BB seja da mesma forma. Mas, especificamente falando, o que vc está precisando?
-
Boa noite, Juliana. Eu tenho vários arquivos de retorno. Se vc precisar de alguns, me contate em PVT: [email protected]. Já testei a leitura do retorno da CEF e do Bradesco. Comigo está funcionando, apesar de pequenos bugs, mas está satisfatório. E aproveitando a oportunidade, gostaria de saber qual a diferença entre CobCaixa e Sicob. A CEF tem esses 2 layouts mas na pratica não entendo o motivo de existirem, já que outros bancos não possuem isso. Obrigado, Jorge Henrique.
-
Consegui fazer funcionar. Não havia entendido que era necessário preencher os dados do cedente, conta, banco, layout, etc antes de ler o retorno. Pensei que somente de abrir o arquivo, o ACBrBoleto já saberia estes parametros. Mas foi só setar corretamente e deu tudo certo. Obrigado.
-
Ok, Juliana. Então, no caso a CEF não funciona ainda? Obrigado, Jorge Henrique
-
Boa tarde galera. Estou tentando ler um arquivo de retorno, mas sempre aparece pra mim a msg: Leitura do arquivo Retorno em 400 colunas não implementada no banco Caixa Economica Federal. Já troquei por outros bancos pra testar e essa msg persiste. Estou com o ACBrBoleto atualizado. Baixei a ultima versão a semana passada pelo SVN. Alguem pode me ajudar com esse problema ou realmente não foi implementado leitura do arquivo de retorno no ACBrBoleto ainda? Att Jorginho