Ir para conteúdo
  • Cadastre-se

bnobre

Membros Pro
  • Total de ítens

    1.480
  • Registro em

  • Última visita

  • Days Won

    4

Posts postados por bnobre

  1. Obrigado Juliomar...

    Apesar de uma rápida pesquisa que fiz, não entendi muito bem como funciona o SavetoStream com o XML de forma a adapta-lo para o certificado, eu uso basicamente o LoadFromString em meus códigos. Mas achei em um post um conteúdo sobre Stream e fiz o seguinte, criei um campo BLOB para armazenar o certificado e preenchi o mesmo com o seguinte comando:

    var
      stream: TMemoryStream;  
    begin
      stream := TMemoryStream.Create;
      try
        stream.LoadFromFile('c:\reidosvidros.pfx');
        dtm_banco.z_nfeconf.Open;
        dtm_banco.z_nfeconf.Edit;
        dtm_banco.z_nfeconfcertificado.LoadFromStream(stream);
        dtm_banco.z_nfeconf.Post;
        dtm_banco.z_nfeconf.Close;
      finally
      stream.Free
      end; 

    Com isso eu consegui preencher o conteúdo do campo, que ficou repleto de diversos caracteres que creio ser o certificado em si. Fiz da maneira correta?

    Agora no ato do envio, fico recebo a mensagem que não possuo o certificado digital, mesmo atribuindo o seguinte comando:
     

        z_nfeconf.Open;
          ACBrNFe1.Configuracoes.Certificados.DadosPFX := z_nfeconfcertificado.AsVariant;
          NumeroSerie := DFe_Certificado;
          Senha := DFe_CertSenha;
          z_nfeconf.Close;

    Onde estou errando?

     

     

  2. Olá Juliomar, na verdade não estou usando não e para ser sincero eu nem conhecia esse termo antes de você falar.

    Fazer a aplicação funcionar nas nuvens foi relativamente simples, pois uso o componente Zeos onde devo informar o IP da máquina que possui o Mysql para me conectar, e executo as rotinas normalmente. A única diferença é que ao rodar nas nuvens eu informo o IP do servidor cloud e tudo funciona.

    Só daria para fazer o que eu quero em relação ao certificado usando esse DataSnap???

  3. Olá a todos,

    Possuo uma aplicação Delphi / Mysql onde minha base de dados está hospedada em um servidor CLOUD Win2008 da Locaweb. Funciona muito bem, e o cliente acessa de diversos computadores, para tal, basta ele ter apenas o executável + internet nas máquinas que quer usar.

    Só que agora surgiu a necessidade de emitir NF-e nesse aplicativo. Até aí tudo bem, pois vou programar de forma que exija dele a existência do certificado digital na máquina cliente. Mas o mesmo usa certificado A1 e com isso me surgiu a seguinte dúvida.

    Nesse meu cenário, posso instalar o certificado no servidor e fazer com que o componente (no executável do cliente) leia o certificado no servidor?

    Desde já agradeço a atenção de todos

  4. Pelo que li em https://www.confaz.fazenda.gov.br/legislacao/convenios/convenio-icms/2015/convenio-icms-146-15

     “§ 1º Nas operações com mercadorias ou bens listados nos Anexos II a XXIX deste convênio, o contribuinte deverá mencionar o respectivo CEST no documento fiscal que acobertar a operação, ainda que a operação, mercadoria ou bem não estejam sujeitos aos regimes de substituição tributária ou de antecipação do recolhimento do imposto.”; 

    Creio não ter problemas, na verdade pelo entendimento do texto acima é até PRECISO que seja sempre informado o CEST, independente do CFOP, desde que o NCM esteja nessa lista.

  5. 34 minutos atrás, Régys Silveira disse:

    Eu faria o seguinte, se houver mais de um CEST mostre uma tela com todos os CEST para aquele NCM e deixe o usuário escolher.

    Por experiência própria, fazer tudo automaticamente pelo cliente, gera problemas e inconvenientes.

    Boa sugestão, farei isso... E quanto a questão do XML com CFOP 5.102 + código CEST? Tem problema?

  6. 1 hora atrás, Régys Silveira disse:

    Primeiro lembre-se que a tabela é um muito para muitos, então um NCM pode ter vários códigos CEST.

    O CEST existe somente para operação com mercadorias que estão sobre o regime de substituição tributária, somente este e nenhum outro.

    Correto, o fato é que eu quero tentar facilitar a vida do cliente. Portanto quando ele digitar o NCM o programa vai sugerir o CEST a ser usado. No caso de um NCM com vários CEST, o programa vai sugerir um deles e se o cliente quiser mudar ele pode mudar. Acha que fica ruim assim? Como você está fazendo?

    Como estou implementando o CEST agora, eu criei uma aplicação para percorrer os produtos cadastros atualmente em meus clientes (que ainda não tinham a opção de CEST) e checar se o NCM dos mesmos possui algum CEST relacionado, se sim, cadastra o CEST automaticamente, do contrário meus clientes teriam que cadastrar todos os CEST manualmente até 31/03/16. Após isso observei que meus clientes realizam vendas de muitos produtos que se encontram na lista de NCMs do CEST usando o CFOP 5.102,  e com isso o XML vai com tag CFOP = 5.102 e tag CEST preenchida. Não está dando erro. Isso é errado?

  7. Régys... Obrigado.

    Seguindo uma orientação sua em outro tópico, eu criei um campo CEST no cadastro do produto, para o usuário digitar o mesmo caso queira. Eu digo caso queira, pois eu automatizei da seguinte forma, na hora que o usuário informa o NCM do produto, o aplicativo automaticamente verifica na tabela do CEST qual o código CEST usado em par com o NCM informado, e o preenche automaticamente.

    Isso me gerou a seguinte dúvida... Eu sou obrigado a informar o CEST somente quando o CFOP for o 5.405 ou posso sempre informar o CEST em qualquer operação?

    Desde já agradeço a atenção

  8. Em 17/02/2016 at 08:11, Italo Jurisato Junior disse:

    Bom dia,

    Como dito o componente anexa o protocolo de Autorização ou Denegação ( Status = 110 ou 301 ou 302 ou 303 ) automaticamente ao XML assinado.

    O XML autorizado ou denegado agora é salvo com o nome: <chave>-nfe.xml e deve ser guardo pelo período legal.

    O componente não gera nenhuma exceção quando a nota é autorizada ou denegada.

    A sua aplicação tem que tratar as 3 situações: autorizada, denegada e rejeitada.

    Se autorizada, enviar o XML mais o DANFE em PDF para o destinatário por e-mail e separar a mercadoria vendida para entrega.

    Se denegada, enviar um e-mail para o destinatário informando a ela que não será possível realizar a venda e apresentar o motivo.

    Se rejeitada, apresentar na tela o motivo da rejeição para que o usuário do sistema faça as devidas correções e realize uma nova tentativa de envio.

    Antes que você faça os ajustes na sua aplicação conforme exposto acima sugiro que atualize todos os fontes de todas as pastas.

    Olá Italo,

    Desculpe a demora. Estou implementando agora o CEST, e para tal fiz a atualização do componente. Conforme havia relatado, o mesmo já anexa o protocolo automaticamente e agora está gravando o XML normalmente em disco.

    Só um detalhe... Apesar disso, ao fim desse processo ele gera uma exceção dizendo que a nota foi denegada, é assim mesmo né?

  9. Agora, Régys Silveira disse:

    Veja que o post é do início de Fevereiro, na época o CEST teria que ter sido cobrado a partir do dia 01/01/2016 e mas foi postergado para 01/04/2016.

    Perdão Régys, nem havia reparado... Alguns códigos faziam referência a vários NCMs, outros a nenhum, dentre outros problemas... Sabe se houve alguma evolução em relação a tais problemas?

  10. Em 01/02/2016 at 23:54, Régys Silveira disse:

    O CEST ainda não está sendo validado, ele foi postergado, enquanto não sair a tabela final o campo é meramente informativo e opcional.

    Olá Régys...

    Não querendo fugir do tema desse tópico, mas seu comentário deu a entender que o prazo obrigatório de 01/04/2016 para o uso do CEST foi prorrogado... Isso está correto? Se sim, qual a nova data?

    Desde já agradeço a atenção

  11. Oi Italo... Se refere sim.

    Entendi, mas comigo não está funcionando.

    Fiz o seguinte procedimento e após isso passou a gravar em disco.

    1- Como disse anteriormente, ao tentar enviar gera uma EXCEÇÃO, então ao tentar enviar se cair em exceção, eu verifico pelo seguinte comando se trata-se de uma denegação: 

    • if pos('uso denegado', LowerCase(E.Message)) <> 0 Then

    2- Se sim, realizo a consulta da nota recém enviada através dos seguintes comandos:

    • chave := Copy(dtm_banco.ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
    • dtm_banco.ACBrNFe1.WebServices.Consulta.NFeChave := chave;
    • dtm_banco.ACBrNFe1.WebServices.Consulta.Executar;

    3- Aí altero no banco o status da nota para DENEGADA.

    Quero deixar claro que somente dessa forma consegui que o componente gravasse em disco (com a nomenclatura *-den.xml) e me retornasse o XML completo com as informações da denegação através do comando "ACBrNFe1.NotasFiscais.Items[0].XML".

    Isso está correto? Pois da maneira que você e o Régys me explicaram, dá a entender que NÃO deveria gerar exceção e que NÃO deveria precisar de realizar uma consulta.

    Desde já agradeço a atenção de todos

  12. Entendi Régys...

    Só que a leitura não está sendo feita normalmente como uma nota normal no meu caso. Eu estou recebendo o erro conforme citei, com isso já não consigo executar as rotinas após o comando ENVIAR, pois como recebo um erro ele gera uma exceção. E no final do processo não é gravado XML algum no disco.

    Falta algo?

  13. Olá a todos,

    Um cliente tentou emitir uma NF-e e o mesmo obteve o seguinte retorno como ERRO! "173->Uso Denegado : Irregularidade fiscal do destinatario".

    Como sou novo nesse mundo de NF-e não conhecia sobre as notas DENEGADAS e não havia feito o tratamento sobre tais casos.

    Como foi gerado um erro, não obtive o retorno do XML em disco. Como proceder para obtê-lo e consequentemente grava-lo em DISCO/Base?

    Desde já agradeço a atenção

  14. Olá a todos...

    Estou importando alguns XMLs de NFEs para a minha base.

    O detalhe é que alguns itens estão com o CSOSN 202, portando não possuem a tag <mobBC>. Ao usar a função modBCToStr nesses itens, ela sempre retorna 0 como se estivesse a tag existisse e com o valor "0 - Margem Valor Agregado (%)". O ideal não seria retornar uma string em branco?

    Desde já agradeço a atenção

  15. Olá a todos,

    Sou do RJ e acabo de desenvolver um emissor de NFe, mas ao observar outros emissores existentes no mercado eu constatei que quase todos preenchem informações automaticamente no campo "Informações Complementares", mas sem padrão... tais como:

    • Lei 5817/10 PROCON-RJ: Rua da Ajuda, 05 - subsolo - Central do Brasil - Rio de Janeiro - RJ - Tel 151 - ALERJ T. 0800-282-7060 R. ALFANDEGA, 8 CENTRO RJ APROV. DO CRED. DE ICMS NO VLR DE R$ 0,00 CORRESPONDENTE A ALIQUOTA DE 0,00 %, NOS TERMOS DO ART. 23 DA LC 123. Vendedor : 1 Cliente : 1171 DINHEIRO Obs Total Aprox. Tributos NF: R$:159,24 Segundo a Fonte IBPT.
    • Valor aproximado dos tributos: R$ 133,68 (33,42%). Fonte: IBPT.

    Dentre outras...

    A questão é... pela lei atual, que texto devo colocar obrigatoriamente nesse campo???

    Desde já agradeço a atenção de todos

  16. Olá a todos...

    Estou voltando nesse tópico só para ver se alguém consegue dar um exemplo mais "elegante" sobre o que eu fiz. Segue meu código:

    try
        CarregaParametrosNFCe;
        if DaysBetween(ACBrNFe1.SSL.CertDataVenc, DataServidor) <= 30 Then
          messageBox(handle,Pchar('Seu certificado digital irá expirar em ' + FormatDateTime('dd-mm-yyyy', ACBrNFe1.SSL.CertDataVenc)),'ATENÇÃO!',MB_ICONERROR+mb_OK);
      except
       //Sou obrigado a ter em branco pois o Delphi não aceita omitir o except
      end;
    
    //Demais código que tenho que executar no Close do Aplicativo
    ...
    ...
    ...

    Esse código ocorre no evento FormClose do Form principal... a primeira coisa que ele faz é checar a validade do certificado. Depois informa outros alertas e executa outros códigos. 

    A grande questão é que nem todas as máquinas emitem NFCe e portanto nem todas possuem o Certificado Digital instalado, daí a necessidade desse try inicial, pois nessas máquinas ao tentar executar o código de checagem da validade do certificado irá surgir uma exceção e os "Demais códigos" não seriam executados, além do aplicativo não fechar.

    Mas como repararam o except fica em branco, pois não preciso que aconteça nada em caso de exceção, só que o delphi continue a rodar os "Demais códigos". Existe uma forma de melhorar isso??? 

  17. 2 horas atrás, Italo Jurisato Junior disse:

    Bom dia,

    Por que na sua aplicação você não utiliza o ACBrNFe?

    Para ler todo o conteúdo do XML é simples: ACBrNFe.NotasFiscais.LoadFromFile( sNomeXML );

    Para obter os dados dos itens da nota:

      for nItem := 0 to (ACBrNFe.NotasFiscais.Items[0].NFe.Det.Count - 1) do

      begin

        (...) // obter todos os dados de cada item da nota

      end;

    Perdão Italo, estou sim usando o ACBrNFe da maneira que você está falando...

    Só estava na dúvida de como criar essa estrutura de laço. Grato pela dica

    • Curtir 1
  18. Olá a todos...

    Estou tentando importar alguns XMLs de um novo cliente para a minha base, o mesmo usava um sistema de NFe e agora está migrando para o meu.

    A princípio a importação parece ser bem simples, pois é só realizar o processo inverso de gerar o XML, nesse caso lendo o mesmo. Até aí tudo bem.

    A grande questão é que, por exemplo, cada NFe tem diversas quantidades de itens. Como criar uma estrutura de laço do tipo "while not registros.EOF do" ou similar para percorrer todos os itens contidos no XML?

    Desde já agradeço a atenção

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