-
Total de ítens
25 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
Bruno Siqueira's Achievements
-
Implementação do suporte ao evento e112130 no componente ACBrNFe
Bruno Siqueira replied to Bruno Siqueira's tópico in ACBrNFe
Bom dia @everson.turossi, só agora que eu entendi o que você quis dizer com homologação. Eu havia validado o envio e recebimento desse evento na SEFAZ e estou apenas aguardando pela avaliação da turma do ACBr e o respectivo merge para o trunk. -
Implementação do suporte ao evento e112130 no componente ACBrNFe
Bruno Siqueira replied to Bruno Siqueira's tópico in ACBrNFe
Bom dia @everson.turossi, ainda estou aguardando por isso! -
Implementação do suporte ao evento e112130 no componente ACBrNFe
um tópico no fórum postou Bruno Siqueira ACBrNFe
Bom dia, Segue em anexo as modificações realizadas nas units ACBrNFe.EnvEvento.pas, ACBrNFe.EventoClass.pas e ACBrNFeWebServices.pas, onde foram implementadas as classes responsáveis pela geração do XML do evento e112130 (Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedor), adicionando assim o suporte necessário no componente ACBrNFe. A alteração se fez necessária pois, ao tentar emitir o evento e112130, o componente ACBrNFe não estava gerando a estrutura do XML para esse evento, o que ocasionava falha no processamento e impedimento do envio. Obrigado! ACBrNFeWebServices.pas ACBrNFe.EnvEvento.pas ACBrNFe.EventoClass.pas -
Ajuste na unit pcnConversaoNFe.pas para suportar cancelamento genérico de eventos
um tópico no fórum postou Bruno Siqueira ACBrNFe
Boa tarde, Segue em anexo a modificação realizada na unit pcnConversaoNFe.pas, onde foi adicionado o suporte à função SchemaEventoToStr para que esta retorne corretamente o enumerado e110001, correspondente ao XSD de cancelamento genérico. Essa alteração foi necessária porque, ao enviar um evento de cancelamento genérico, o ACBr não estava identificando o layout XSD adequado, resultando em falha no processamento do evento. Obrigado! pcnConversaoNFe.pas- 1 reply
-
- 3
-
-
Obrigado pela resposta rápida, Juliomar! Eu também tenho mantido o fonte atualizado. E a cada update que faço, envolve muita expectativa! No entanto, não tenho ideia se existe um projeto "Jira" que poderiamos consultar as demanda que estão em andamento no ACBr no momento. Particularmente, isso seria de muita utilidade caso existisse pois poderíamos ter uma visão melhor do que está em andamento e em que parte nós poderíamos contribuir sem ter trabalho simultâneo na mesma coisa com outros colaboradores. De qualquer forma, qualquer atualização é bem vinda! Muito obrigado!
-
Boa tarde, Estou trabalhando na implementação dos novos eventos da NF-e relacionados a reforma tributária. E notei que aparentemente o ACBrNFe ainda não está totalmente preparado para enviar os novos eventos: 112110, 112120, 112130, 112140, 112150, 211110, 211120 , 211124, 211128, 211130, 211140, 211150, 212110, 212120, 412120, 412130, 110001. Então, gostaria de saber se as mudanças para adequação dos eventos estão em alguma fase de desenvolvimento, pois algumas coisas já foram integradas na ultima versão do ACBr. Talvez esteja relacionado a tarefa: ACBR-8146. Qualquer atualização sobre esse assunto será muito apreciada! Obrigado!
-
@Daniel Simoes, por algum motivo não consegui editar o último post, então resolvi posta uma nova resposta... O motivo pelo qual precisamos adicionar a transação à lista é justamente pelo fato de uma das transações não ter sido adicionada. Observe que se tiver duas transações pendentes com o mesmo número de DocumentoVinculado a rotina cancela ambos logo no processamento do primeiro arquivo e adiciona os dados desse primeiro arquivo a lista. Contudo a segunda transação não é adicionada a lista apesar de ter sido cancelada através do processamento do primeiro arquivo que possui o mesmo DocumentoVinculado e com isso a lista que deveria conter dois registros tem apenas um. Dessa forma quando implemento o evento OnDepoisCancelarTransacoes uma rotina para listar as transações canceladas, apenas uma transação é exibida sendo que na verdade houveram duas transações canceladas. Agora respondendo diretamente seu questionamento, na verdade a transação em questão não foi de fato encontrada em RespostasCanceladas[I], o que foi encontrada foi a primeira transação cancelada que contem o mesmo DocumentoVinculado. Se essa segunda transação não for adicionada conforme sugestão, a lista RespostasCanceladas não vai possuir todas as transações canceladas. Exemplo: * Realizo uma venda de 100,00; Passo a primeira transação SiTef de 40,00 no cartão de credito MasterCard; A transação é aprovada e fica pendente de confirmação; Passo a segunda transação SiTef de 60,00 no cartão Visa; A transação é aprovada e fica pendente de confirmação; Encerro a aplicação antes de confirmar as transações pendentes; Abro novamente a aplicação; Inicializo o TEF; A rotina CancelarTransacoesPendentesClass processa os cancelamentos das transações pendentes; Ambas as transações são canceladas corretamente; O evento OnDepoisCancelarTransacoes retorna apenas uma das transações canceladas no argumento RespostasCanceladas; Qualquer dúvida, estou a disposição;
-
@Daniel Simoes É justamente pelo fato da transação não ter sido adicionado anteriormente. Observe que se tiver duas transações pendentes com o mesmo número de DocumentoVinculado a rotina cancela ambos logo no processamento do primeiro arquivo e o adiciona a lista. Contudo a segunda transação não é adicionada pelo pois já foi cancelado anteriormente e possui o mesmo DocumentoVinculado e com isso a lista que deveria conter dois registros tem apenas um. Dessa forma quando implemento o evento OnDepoisCancelarTransacoes para listar as transações canceladas, apenas 1 é exibido sendo que foram 2 transações canceladas.
-
Boa tarde! Com a rotina de SITEF preparada para cancelar transações pendentes ao inicializar o TEF, observei que se existirem mais de uma transação pendente para o mesmo DocumentoVinculado, as transações são devidamente canceladas, contudo, a lista de RespostasCanceladas não está sendo preenchida com todas as transações que foram canceladas pela rotina. Com isso, no evento OnDepoisCancelarTransacoes não é possível usar o argumento RespostasPendentes para dar um feedback para o operador sobre quais transações o sistema acabou de cancelar, pois neste caso o argumento retorna uma lista incompleta. Sugiro efetuar o seguinte ajuste (que está colorido de azul) no método a seguir: procedure TACBrTEFDClass.CancelarTransacoesPendentesClass; Var ArquivosVerficar : TStringList ; RespostaCancela : TACBrTEFDResp ; RespostasCanceladas : TACBrTEFDRespostasPendentes ; I, Topo : Integer; JaCancelado : Boolean ; ArqMask : String; begin GravaLog( Name +' CancelarTransacoesPendentesClass '); ArquivosVerficar := TStringList.Create; RespostasCanceladas := TACBrTEFDRespostasPendentes.create(True); try ArquivosVerficar.Clear; RespostasCanceladas.Clear; { Achando Arquivos de Backup deste GP } ArqMask := TACBrTEFD(Owner).PathBackup + PathDelim + 'ACBr_' + Self.Name + '_*.tef' ; FindFiles( ArqMask, ArquivosVerficar, True ); { Vamos processar primeiro os CNCs e ADMs, e as Não Confirmadas } I := ArquivosVerficar.Count-1 ; Topo := 0 ; while I > Topo do begin Resp.LeArquivo( ArquivosVerficar[ I ] ); if (pos(Resp.Header, 'CNC,ADM') > 0) or (not Resp.CNFEnviado) then begin ArquivosVerficar.Move(I,Topo); Topo := Topo + 1; end else I := I - 1 ; end; { Adicionando Arquivo de Resposta deste GP (se ainda não foi apagado) } if FileExists( ArqResp ) then ArquivosVerficar.Add( ArqResp ); { Enviando NCN ou CNC para todos os arquivos encontrados } while ArquivosVerficar.Count > 0 do begin if not FileExists( ArquivosVerficar[ 0 ] ) then begin ArquivosVerficar.Delete( 0 ); Continue; end; Resp.LeArquivo( ArquivosVerficar[ 0 ] ); { Verificando se essa Resposta já foi cancela em outro arquivo } JaCancelado := False ; I := 0 ; while (not JaCancelado) and (I < RespostasCanceladas.Count) do begin if (RespostasCanceladas[I] is TACBrTEFDRespTXT) or (Tipo = gpVeSPague) then begin with RespostasCanceladas[I] do begin JaCancelado := (Resp.Rede = Rede) and (Resp.NSU = NSU) and (Resp.Finalizacao = Finalizacao) and (Resp.ValorTotal = ValorTotal) ; end; end else begin with RespostasCanceladas[I] do begin JaCancelado := (Resp.DocumentoVinculado = DocumentoVinculado) ; // Se a resposta já foi cancelada em outro arquivo, adiciona a lista de respostas canceladas para que no evento // OnDepoisCancelarTransacoes a lista retornada no argumento RespostasCanceladas esteja devidamente preenchida com todas transações canceladas. if JaCancelado then begin RespostaCancela := CriarResposta( Tipo ); RespostaCancela.Assign( Resp ); RespostasCanceladas.Add( RespostaCancela ); end; end; end; Inc( I ) ; end; if not JaCancelado then begin { Criando cópia da Resposta Atual } RespostaCancela := CriarResposta( Tipo ); RespostaCancela.Assign( Resp ); { Enviando NCN ou CNC } try with TACBrTEFD(Owner) do begin if Assigned( OnAntesCancelarTransacao ) then try OnAntesCancelarTransacao( RespostaCancela ) ; except { Nao deixa exceptions em OnAntesCancelarTransacao interromper } end; end; if Resp.CNFEnviado and (Resp.Header <> 'CHQ') then begin if not CNC then raise EACBrTEFDErro.Create('CNC nao efetuado') ; end else NCN; DeleteFile( ArquivosVerficar[ 0 ] ); ArquivosVerficar.Delete( 0 ); { Adicionando na lista de Respostas Canceladas } RespostasCanceladas.Add( RespostaCancela ); except end; end else begin DeleteFile( ArquivosVerficar[ 0 ] ); ArquivosVerficar.Delete( 0 ); end; end; with TACBrTEFD(Owner) do begin if Assigned( OnDepoisCancelarTransacoes ) then OnDepoisCancelarTransacoes( RespostasCanceladas ); { TEF Auttar deve emitir msg apenas no Final de todos Desfazimentos } if Tipo = gpTefAuttar then if RespostasCanceladas.count > 0 then DoExibeMsg( opmOK, 'Transação TEF não Efetuada Reter o Cupom Fiscal!' ) ; end; finally ArquivosVerficar.Free; RespostasCanceladas.Free; end; end;
-
Informação "DocumentoVinculado" é necessario para TEF com NFCe ?
Bruno Siqueira replied to luciano_f's tópico in Dúvidas sobre TEF
Boa tarde Jean! Conseguiu descobrir se essa variável pode ser gerada randomicamente ou se a SiTef define algum tipo de preenchimento especifico quando se utiliza NFC-e? -
Dúvida sobre registro de pagamentos TEF SiTEF para emissão de NFC-e
um tópico no fórum postou Bruno Siqueira Dúvidas sobre TEF
Boa tarde, Estou implementado o ACBRTEFD "usando apenas o SiTef" em um emissor de NFC-e que mais se parece com um sistema de Pedido de Vendas do que um PDV. Nesta automação comercial, o único documento fical que pode ser emitido é o NFC-e. A documentação que da Soft Express que estou usando é: SiTef - Interface Simplificada com a aplicação(VRS-228).pdf e notei que está bem direcionada as rotinas de emissão de ECF, bem como acontece com o componente ACBr totalmente baseado em emissão de ECF. Como não conheço a rotina ECF estou tendo algumas dúvidas que acredito a comunidade vai conseguir me ajudar. Observando o post seguinte consegui entender algumas coisa e já estou simulando o EstadoECF mas o que ficou meio confuso é como preencher os valores correspondentes a variável RetornoECF. Vou tentar explicar melhor através de um exemplo: 1. Crio uma venda no valor total: 100,00, 2. Realizo sequencialmente os seguintes registros de pagamentos: 2.1. Forma de pagamento DINHEIRO, valor: 10,00 - Refere-se a um pagamento registrado nessa venda que não foi feito por TEF 2.2. Forma de pagamento CARTÃO, valor: 30,00 - Logo após informar o valor do pagamento em cartão, executo a função CRT passando valor: 30,00 - Internamente será executada a função VerificarTransacaoPagamento passando o valor: 30,00 e será apurado SaldoRestante retornado qual valor: ??? - ineSubTotal: Qual o valor correto para RetornoECF? - ineTotalAPagar: Qual o valor correto para RetornoECF? 2.3. Forma de pagamento DINHEIRO, valor: 5,00 - Refere-se a outro pagamento registrado nessa venda que não foi feito por TEF 2.4. Forma de pagamento CARTÃO, valor: 40,00 - Logo após informar o valor do pagamento em cartão, executo a função CRT passando valor: 40,00 - Internamente será executada a função VerificarTransacaoPagamento passando o valor: 40,00 e será apurado SaldoRestante retornado qual valor: ??? - ineSubTotal: Qual o valor correto para RetornoECF? - ineTotalAPagar: Qual o valor correto para RetornoECF? 2.5. Forma de pagamento DINHEIRO, valor: 15,00 - Refere-se a mais um pagamento registrado nessa venda que não foi feito por TEF 3. Envio a NFC-e para SEFAZ; - Caso seja autorizada executo o método: ImprimirTransacoesPendentes - Caso seja rejeitada executo o método: CancelarTransacoesPendentes 4. Os dados abaixo foram retirados do arquivo CliSiTef.log, gostaria de saber se essas informações são coletadas pela SiTef ou se diz respeito apenas ao componente ACBR: -- 11/09 12:40:54:808 - InfoECF: ineEstadoECF -- 11/09 12:40:54:808 - Ret: V -- 11/09 12:40:54:809 - InfoECF: ineSubTotal -- 11/09 12:40:54:809 - Ret: 100 -- 11/09 12:40:54:809 - InfoECF: ineTotalAPagar -- 11/09 12:40:54:809 - Ret: 20 Obs: A minha automação não utiliza ACBR para fazer envio de NFCe.
