Ir para conteúdo
  • Cadastre-se

paulocsc

Membros
  • Total de ítens

    75
  • Registro em

  • Última visita

Posts postados por paulocsc

  1. Olá a todos, eu já vi que alguns softwares salva o retorno da NFC-e em um TXT (log) para que não se faça preciso esta emitindo a mensagem de erro em tela, por exemplo eu tentar emitir uma NFC-e se acorrer erro de NCM ele transmite a NFC-e em contingencia e grava no TXT o retorno do erro e o numero da NFC-e isso é feito a mão ou é alguma função do próprio ACBR ?

  2. 6 horas atrás, BigWings disse:

    Precisa corrigir, gerar novamente o XML, assinar, validar, enviar o XML completo...

    O que destaquei antes são os campos que formam a chave, se você mudar algum desses campos, a chave muda.

    Campos que formam a chave de acesso: CNPJ do emitente, data e hora de emissão, modelo, série e número da nota, código numérico (cNF), tipo de emissão (tpEmis).

    fiz e deu tudo certinho só um detalhe que achei muito estranho, uma situação estou passando a informação de hora, ide.hSaiEnt e mesmo assim a tag da NFC-e esta saíndo assim <dhEmi>2020-12-29T00:00:00-03:00</dhEmi>, só se eu estiver errado e que essa tag não deve ser preenchida e a tag de ide.dEmi é a que se refere a tag do XML <dhEmi>2020-12-29T00:00:00-03:00</dhEmi>

  3. 4 minutos atrás, BigWings disse:

    Precisa corrigir, gerar novamente o XML, assinar, validar, enviar o XML completo...

    O que destaquei antes são os campos que formam a chave, se você mudar algum desses campos, a chave muda.

    Campos que formam a chave de acesso: CNPJ do emitente, data e hora de emissão, modelo, série e número da nota, código numérico (cNF), tipo de emissão (tpEmis).

    Muito obrigado ficou bastante claro, inclusive você respondeu a outra duvida minha que era o que fazia com a sequencia de chave era gerada, show, já comecei aqui vou ajustar, acho que vai da certo, depois eu venho aqui pra informar se foi concluído !

  4. 59 minutos atrás, BigWings disse:

    O NCM do item não altera a chave de acesso.

    Então basta gerar novamente o XML corrigindo apenas a informação que causou a rejeição, no caso o NCM, e enviar.

    Mantendo todos os demais dados, data e hora de emissão, código númerico (cNF), tipo de emissão como contingência...

    entendi, no caso então só preciso enviar, Data e Hora, Numero da NFCe, cNF, tipo em contingencia, preciso enviar mais alguma coisa ? e eu continuou a gerar, assinar e valida NFC-e num é isso ? 

  5. Pessoa minha grande duvida é como enviar uma contingência com a mesma chave de acesso ? pra entender o que ocorre por exemplo foi feito uma venda e no PDV existiu um PRODUTO COM NCM que não existe e a nota foi transmitida em contingência, eu salvo tudo no Banco de dados, data, hora, chave, numero da NFC-e... quando eu vou reenviar eu tenho que ajustar o produto e reenviar a NFC-e com a mesma chave, como isso funciona, qual a logica que devo utilizar ? posso recuperar todos os dados da nota e reenviar ? minha duvida é e a chave de acesso vai alterar ?

  6. 1 minuto atrás, BigWings disse:

    Sim.

    O componente já grava o XML do evento completo com o nome *-procEventoNFe.xml.

    Só precisa estar ativada a configuração para salvar arquivos.

    entendi, eu tenho como tbm criar uma pasta pra os eventos tipo eu coloquei a opção de salvar por ano/mes posso coloca tbm dentro de uma pasta ano/mes evento ? 

    se sim o componente já faz pra mim ou tenho que criar na mão ?

  7. 13 minutos atrás, FabianoCunha disse:

    Paulo, acho que pode fazer em apenas um método. Colocando dentro dele um IF, pois se já deu erro na emissão normal e para não ficar sem tirar a nota para o cliente, você vai fazer emissão  em off-line. Mas depois em um segundo momento você vai ter que fazer a transmissão da Off-line, pois se deu erro de rede ou time out, vai ter que rodar novamente o envio da off-line para a sefaz. 

    entendi, ficou claro pra mim toda essa questão, o meu maior problema ta no codigo, quando eu faço o IF e pra alterar o tipo de emissão pra OFFLine e que coloco as Tag dentro do meu IF da um erro de preencher a 'UF'  só que já foi preenchida anterior mente e não tem nem um metodo de limpar o componente então na logica não tem nem um problema de tenta enviar sem preencher novamente. meu if ficou assim:

     

      if (ACBrNFCe1.WebServices.Enviar.cStat <> 100) and (ACBrNFCe1.WebServices.Enviar.cStat <> 539) then
                   begin

                      ACBrNFCe1.NotasFiscais.Add.NFe.ide.tpEmis    := teOffLine; //StrToTpEmis(ok, normalouContingencia);
                      ACBrNFCe1.NotasFiscais.Add.NFe.Ide.xJust     := 'Erro Tecnico NFC-e Contigencia';
                      ACBrNFCe1.NotasFiscais.Add.NFe.ide.dhCont    := now();

                      ACBrNFCe1.NotasFiscais.GerarNFe;
                      ACBrNFCe1.NotasFiscais.Assinar;
                      ACBrNFCe1.NotasFiscais.Validar;

                     

                      nchave := copy(ACBrNFCe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
                      ACBrNFCe1.NotasFiscais.Imprimir;

                      editarNFCeEmCONTINGENCIA;
                      salvarPagamentos;
                   end;

     

  8. 13 minutos atrás, BigWings disse:

    Não tem diferença no método, apenas quando você carrega o XML o ACBr pode preencher o número do protocolo com os dados do arquivo, enquanto no cancelamento por chave você deve informar o protocolo explicitamente.

    Tem também uma opção pra atualizar o XML após o cancelamento com o cStat de cancelado, isso hoje não é o correto, pois está alterando o XML, mas alguns ainda usam por comodidade na integração com softwares contábeis.

    então posso fazer de uma maneira ou de outra e não habilitar no componente a atualização do XML após o cancelamento né isso ? agora eu tenho como gerar o retorno em XML automaticamente pra justamente saí no envio pra a contabilidade ?

  9. 17 minutos atrás, FabianoCunha disse:

    Paulo, Bom dia! 

    Essa estratégia de qualquer erro de retorno, mudar para off-line e fazer a impressão e transmissão em seguida, deve ser avaliada com critério, pois se for erro de preenchimento ou alguma validação da sefaz, mesmo ao fazer a transmissão em off-line a sefaz vai recusar a nota. E se essa nota já tiver sido entregue para algum cliente é preciso trocar a nota com o cliente.  Eu evito o que posso de fazer emissão de nota OFF-line.

    Da forma que esta fazendo, entendo que você deve preencher as duas propriedades no próprio componente, mudar a forma de emissão, assinar e gravar o xml no banco de dados e fazer a impressão das duas cópias. 

    E depois você precisa fazer a transmissão dessa nota a sefaz. E para fazer essa transmissão é da maneira que eu falei no post acima.  

    Primeiramente muito obrigado pro sua orientação realmente é muito importante tratar essa situação com cuidado e realmente entendo perfeitamente o que você me disse por isso que estou tendo o cuidado por exemplo se for me retornado o erro 539 -> (erro nota já enviada com outro numero de XML) essa NFC-e não seja impressa em contingencia pra se evitados esses erros que você mesmo citou, tem algum outros erros que ainda irei incrementar pra que esse tipo de problema não venha ocorrer, mas voltando ao assunto da emissão em contingencia, caso passe por as exceções o envio da NFC-e em contingencia eu devo limpar o componente e enviar novamente todo o método de envio da NFC-e  ? mas a maior precaução agora é só eu manter as boas praticas de desenvolvimento e não ter que criar duas procedures, tipo envio NFCeOnline e NFCeOffLine e acabar estendendo muito o código.

  10. 10 horas atrás, FabianoCunha disse:

    Paulo, Boa Noite!

    Vou explicar como eu faço com notas emitidas em contingência.

    1) No método de transmissão verifico que a nota em questão será em contingência ou normal. Sendo em contingência, faço a inclusão das duas tag (Justificativa e data/hora); Preencho o componente Acbr e faço a impressão em duas vias. e salvo o XML no banco de dados e gravo no banco de dados que esta nota foi emitida em contingência e que esta aguardando transmissão; O que seria basicamente a mesma rotina sua;

    2) Quando vou fazer a transmissão dessa nota que esta aguardando transmissão, carrego o xml do banco de dados para o componente ACBR, altero a propriedade do componente para emissão normal (ACBR.Configuracoes.Geral.FormaEmissao:= Normal;) e chamo o método enviar, no retorno do enviar eu gravo atualizo os campos (PROTOCOL_NFE,  DT_HR_PROTOCOL);

     

    tipo entendi, minha duvida é o seguinte eu tenho o método gerarEnviarNFCe; na Forma de emissão tá como teNormal, só que se tiver um retorno diferente a 100(Autorizado), ele tente reenviar em contingência mas nesse caso eu tenho que enviar teOFFLine, mas minha duvida é só add as duas tag Justificativa e data/hora ou tenho que executar o método gerarEnviarNFCe do zero; isso é a primeira questão a questão que você me falou é pra a transmissão da NFC-e que já foi transmitida em contingência e agora vai ser enviada pra sefaz...   

  11. Tenha uma duvida na questão e Contingencia de NFC-e

    se eu coloco o tipo de emissão com ide.tpEmis    := teOffLine; ele faz a verificação se tiver tudo certo ele emiti a NFC-e caso não, ele emite em Contingencia até aí perfeito, único detalhe é que desse jeito envia a tag do XML Ide.xJust     := 'Erro Tecnico NFC-e Contigencia'; (Jutificativa da emissão em contingencia ) mesmo que a Nota seja transmitida, isso da problema ?

    na duvida eu achei melhor deixar ide.tpEmis := teNormal, mas se eu deixo a tag Ide.Xjust := 'Erro Tecnico NFC-e Contigencia'; ela me da um retorno que a justificativa não pode ser preenchido quando o tipo for normal.

     

    uso essa condição a baixo

     

    begin
          if ACBrNFCe1.WebServices.Enviar.cStat = 539 then
            begin
               ShowMessage('erro nota já enviada com outro numero de XML '); //marca a flag da nota como enviada.
            end;

            if ACBrNFCe1.WebServices.Enviar.cStat = 100 then
              Begin
                 //ShowMessage('Nota Transmitida pode salvar ');
                 nNFCeRecebida    := IntToStr(ACBrNFCe1.NotasFiscais.Items[0].NFe.Ide.nNF);
                 nchave           := ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.chnfe;
                 codNFCe          := IntToStr(ACBrNFCe1.NotasFiscais.Items[0].NFe.Ide.cNF);
                 dataHoraRetorno  := DateTimeToStr(ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.dhRecbto);
                 numeroProtoco    := ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.nProt;

                 ACBrNFCe1.NotasFiscais.Imprimir;
                 editarEConcluirNFCe;
                 salvarPagamentos;
              End;

                  if (ACBrNFCe1.WebServices.Enviar.cStat <> 100) and (ACBrNFCe1.WebServices.Enviar.cStat <> 539) then
                   begin

                      ACBrNFCe1.NotasFiscais.GerarNFe;
                      ACBrNFCe1.NotasFiscais.Assinar;
                      ACBrNFCe1.NotasFiscais.Validar;

                      ACBrNFCe1.NotasFiscais.Add.NFe.ide.tpEmis    := teOffLine; //StrToTpEmis(ok, normalouContingencia);
                      ACBrNFCe1.NotasFiscais.Add.NFe.Ide.xJust     := 'Erro Tecnico NFC-e Contigencia';
                      ACBrNFCe1.NotasFiscais.Add.NFe.ide.dhCont    := now();

                      nchave := copy(ACBrNFCe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
                      ACBrNFCe1.NotasFiscais.Imprimir;

                      editarNFCeEmCONTINGENCIA;
                      salvarPagamentos;
                   end;

            end
     

     

    estou fazendo o que de errado ?

  12. 24 minutos atrás, Juliomar Marchetti disse:

    Olhou os eventos do componente/

    13 minutos atrás, Juliomar Marchetti disse:

    Olhou os eventos do componente/

    Tentei dessas duas maneiras ! 

                       nchave :=  ACBrNFCe1.EventoNFe.Evento.Items[0].InfEvento.chNFe;
                       nchave :=  ACBrNFCe1.EventoNFe.Evento.Items[0].RetInfEvento.chNFe; 

     

  13.  ficou assim meu código no  if ACBrNFCe1.WebServices.Enviar.cStat = 100 then -> Aqui eu recebo o retorno certo, mas no IF da contingencia não !

     

    Try

              ACBrNFCe1.NotasFiscais.GerarNFe;
              ACBrNFCe1.NotasFiscais.Assinar;
              ACBrNFCe1.NotasFiscais.Validar;
              ACBrNFCe1.Enviar(NumNFCe, False, true);

          Except
             //exceção muda para pegar o cstat em seguida.
          End;
          //cstat = 204 nota já existe com mesmo número e mesma chave.
          begin
          if ACBrNFCe1.WebServices.Enviar.cStat = 539 then
            begin
               ShowMessage('erro nota já enviado com outro numero de XML '); //marca a flag da nota como enviada.
            end;

            if ACBrNFCe1.WebServices.Enviar.cStat = 100 then
              Begin
                 ShowMessage('Nota Transmitida pode salvar ');
                 nNFCeRecebida := IntToStr(ACBrNFCe1.NotasFiscais.Items[0].NFe.Ide.nNF);
                 nchave := ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.chnfe;
                 dataHoraRetorno := DateTimeToStr(ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.dhRecbto);
                 numeroProtoco := ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.nProt;

                 ShowMessage('Chave: '+ nchave + ' PathRetorno: ' + pathNFCeRetorno + ' dataHora: ' + dataHoraRetorno + ' Protocolo NFCe: ' + numeroProtoco + ' XML: ' + xmlNFCeTeste + '!');
              End;

                  if (ACBrNFCe1.WebServices.Enviar.cStat <> 100) and (ACBrNFCe1.WebServices.Enviar.cStat <> 539) then
                   begin
                        dataHoraRetorno := DateTimeToStr(ACBrNFCe1.WebServices.Enviar.dhRecbto);
                        nchave := ACBrNFCe1.NotasFiscais.Items[0].NFe.procNFe.chnfe;
                        ShowMessage(dataHoraRetorno + 'Erro ao enviar NFCe, Enviada em contigencia: ' + nchave + IntToStr(ACBrNFCe1.WebServices.Recibo.cMsg) +'' + ACBrNFCe1.WebServices.Recibo.Recibo);

                      ACBrNFCe1.NotasFiscais.GerarNFe;
                      ACBrNFCe1.NotasFiscais.Assinar;
                      ACBrNFCe1.NotasFiscais.Validar;

                      ACBrNFCe1.NotasFiscais.Imprimir;
                   end;

            end
     

  14.  

    4 horas atrás, Marcelo Loiola Silva disse:

    Consigo pegar desta forma:

                nchave := Principal_DFe.ACBrNFCe.NotasFiscais.Items[0].NFe.procNFe.chnfe;
                protocolo := Principal_DFe.ACBrNFCe.NotasFiscais.Items[0].NFe.procNFe.nProt;
     

    rapaz eu consegui com esse método muito obrigado, outra duvida quando a nota é enviada em contingencia eu consigo o numero de Chave ? 

  15. Olá tenho um grande problema, que creio que desse ser tão fácil de resolver... quando envio a NFC-e ela tem retorno da chave de acesso, tem retorno de protocolo de autorização, data e hora, mas como eu pego essa informação pra mim salvar no banco ? ja tentei usar assim mas retorna em branco acho que estou tentando pega informação no lugar errado ! 

     

     ACBrNFCe1.WebServices.Retorno.ChaveNFe;
     ACBrNFCe1.WebServices.Retorno.Recibo;

  16. Pessoal boa tarde, desculpa se escrevi no TOPICO errado pra o assunto, minha duvida é a respeito de como é o jeito correto de utilizar o CEST, sei que é um campo obrigatorio pra produtos Substituição, minha duvida é tem algum componente ACBr pra atualizar o CEST ou se é atraves de algum Excel que facilite pra mim colocar no meu banco de dados !

  17. Olá eu gostaria de saber como esta funcionando o ACBR e o Java ? sou desenvolvedor Java e gostaria de desenvolver com o Java o NFC-e e usar os componente do ACBR é possível isso ? 

×
×
  • 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.