Jump to content

Gabriel Franciscon

Membros
  • Content Count

    87
  • Joined

  • Last visited

Community Reputation

100 Excellent

About Gabriel Franciscon

  • Rank
    Membro
  • Birthday 10/22/1996

Contact Methods

  • Skype
    gabriel.franciscon

Profile Information

  • Sexo
    Masculino
  • Localização
     Curitiba

Recent Profile Visitors

360 profile views
  1. Novas funções adicionadas (12/07/2019): / Integração Cardápio Adicionado End-point para cadastrar um item no cardápio. Adicionado End-point para cadastrar uma categoria de complemento no cardápio. Adicionado End-point para cadastrar um complemento/subitem no cardápio. Adicionado End-point para inserir/alterar a imagem de um item. Adicionado End-point para "linkar" uma categoria com um item no cardápio. Adicionado End-point para "linkar" um item com uma categoria complemento. Adicionado End-point para "linkar" uma categoria complemento com um sub item/complemento.
  2. Novas funções adicionadas (09/07/2019): Adicionado End-point para cadastrar uma categoria no cardápio (CardapioCategoriaAdicionar) Adicionado End-point para listar todas as categorias do cardápio (CardapioCategoriaListar) Adicionado End-point para listar todos os itens de uma categoria (CardapioCategoriaItemListar) Adicionado End-point para listar todos os complementos de um item (CardapioItemSubItemListar) Adicionado End-point para solicitação de cancelamento de um pedido (PedidoAlterarStatus)
  3. Boa tarde, Quando o fornecedor emite uma nota fiscal, essa nota é enviada para SEFAZ do estado e a mesma se encarrega de enviar para o ambiente nacional*. Feito isso, o ambiente nacional criará um NSU com o resumo dessa nota fiscal e disponibiliza através do Web-Service de DistribuicaoDFe. O seu software irá localizar esse resumo através do método DistribuicaoDFePorUltNSU. Com o resumo em mãos seu software irá realizar a manifestação do destinatário... Ao fazer isso, o ambiente nacional irá criar um novo NSU, agora com a nota completa. E novamente você executará o método DistribuicaoDFePorUltNSU ou DistribuicaoDFePorChaveNFe. *O tempo entre a SEFAZ do estado enviar a nota e o Ambiente Nacional receber e disponibilizar varia muito... Aqui no Paraná vejo um média de 2 horas. mas já vi relatos aqui no fórum que pode levar até 24 horas. Vou deixar um tópico abaixo que detalha melhor o funcionamento:
  4. Infelizmente a versão oficial dos schemas disponibilizados não permite a visualização do status atual da manifestação. Porém... Se observarmos o software gratuito da SEFAZ, percebemos que ao "baixar" uma nota já vem o status atual da manifestação. Mesmo se a manifestação do destinatário tenha sido realizada em outro software. Isso acontece pois o software gratuito utiliza uma versão mais recente dos schemas (v.135). Nessa versão existe uma tag chamada: cSitConf. (se olhar a nota técnica até existe a menção dessa tag) Mas como essa não é uma versão oficial, digo, disponibilizada pela SEFAZ. Creio que ACBr não irá utilizar. De qualquer forma vou deixar aqui o link para download desses schemas. Com uma simples alteração na unit pcnRetDistDFeInt você adiciona uma nova property e na sequencia pode ler o valor desse campo. Nessa versão infelizmente o método DistribuicaoDFePorChaveNFe não funciona. (Mas é possível contornar isso alterando algumas linhas) --Se for DistribuicaoDFePorChaveNFe utiliza 1.02 caso contrário, utiliza a 1.35 v1.35.zip
  5. Exatamente... Pois aí você terá todas as informações que são necessárias para gerar a mesma chave de acesso novamente
  6. Você deve armazenar o cNF no seu banco de dados. Dessa forma se precisar gerar a chave novamente, você utiliza o mesmo cNF da primeira vez.
  7. Isso acontece pois você está passando para o campo cNF o mesmo valor de nNF. De uma olhada para mais detalhes:
  8. Olá, A API do iFood para Delphi implementa um conjunto de endpoints HTTP que ajuda seu aplicativo integra-se ao iFood de forma simples. Através de retornos em JSON os dados são convertidos em classes e objetos. Unit's: iFoodManager - Aqui fica todos os endpoints, métodos de envio... iFood.Types - Tipos que serão utilizado outras unit's, como por exemplo: Tipo do pedido; Delivery ou Pickup iFood.Pedido - Uma classe onde consta todos os campos de retorno do iFood, como por exemplo: Cliente, dados de pagamento, mercadorias... iFood.Polling - Uma classe onde fica os eventos retornados pelo iFood. iFood.Utils - Funções que serão utilizadas para ler o JSON, converter o JSON... Endpoints que foram adicionados: /oauth/token /merchants/{id}/statuses /skus/{externalCode}/prices /merchants/{merchantId}/skus/{externalCode} /events:polling /events/acknowledgment /orders/{reference} (v2.0) /orders/{reference}/statuses/integration /orders/{reference}/statuses/confirmation /orders/{reference}/statuses/dispatch /orders/{reference}/statuses/delivery /orders/{reference}/statuses/rejection Exemplo de como chamar as funções: var MyiFood: TiFoodManager; Pedido: TiFoodPedido; begin //Cria o objeto e obtem um token MyiFood := TiFoodManager.Create(ClientID, ClientSecret, Usuario, Password, UFFusoHorario); //Lista de eventos (Polling). O retorno será carregado no dataset informado. MyiFood.Polling(DataSet); //Detalhar um pedido. Pedido := MyiFood.GetPedido(CorrelationId); Pedido.id; Pedido.merchant.address.formattedAddress; //Mudar o status de um pedido MyiFood.SetStatusPedido(CorrelationId, Status); end; Enfim, esses são só alguns exemplos de como chamar as funções... Versões do Delphi suportadas: A API do iFood para Delphi pode ser usada no RAD Studio XE3 ou superior. Versões anteriores como: 2010, XE, e XE2 devem funcionar também. Porém não foi testado. Infelizmente não funciona no Delphi 7 pois utiliza-se de JSON, Generics... Projeto Demo: Acompanha um demo utilizando apenas componentes nativos do Delphi mostrando o funcionamento de todas as funções. Demonstração: Abaixo um vídeo rápido demonstrando seu funcionamento Interessados Enviar um e-mail para: [email protected]
  9. A manifestação é feita pelo destinatário da nota fiscal. E a SEFAZ não envia uma informação se foi realizado a manifestação ou não para o destinatário. Apenas para o emitente. Pois entende-se que como o destinatário realizou a manifestação. O mesmo não precisa saber, pois foi ele mesmo quem fez. Ou seja, quando o seu cliente realizar a manifestação você deverá armazenar essa informação. E como citado acima o método DistribuicaoDFePorChaveNFe só retorna informação caso a nota em questão já tiver um registro de manifestação vinculado a ela.
  10. O ideal seria utilizar o método DistribuicaoDFePorUltNSU. Pois o método DistribuicaoDFePorChaveNFe retorna informações apenas se a nota já estiver com um registro de manifestação pelo destinatário. Então na teoria ficaria assim DistribuicaoDFePorUltNSU (trará: Nota resumida, Nota completa, Eventos resumido e Eventos completo) Realizar a manifestação Executar o método DistribuicaoDFePorUltNSU novamente (ou o DistribuicaoDFePorChaveNFe)
  11. Realizar a manifestação do destinatário apenas com a Ciência e não concluir posteriormente pode sim acarretar em algum tipo de multa... A manifestação do destinatário está "amarrada" ao DistribuiçãoDFe. Porém os objetivos são diferentes... Então a ideia de "só baixar o XML" não funciona muito já que seu cliente se torna obrigado a realizar a manifestação. Aqui eu trato da seguinte maneira: Aplicativo configurado para realizar a manifestação do destinatário automaticamente com a Ciência da operação ao encontrar um novo documento. Usuário realiza o recebimento de mercadorias no sistema: Disparo a Confirmação da operação Desconhecimento ou Operação não realizada fica por conta do usuário. Caso fique notas sem a "conclusão" da manifestação por parte do destinatário, alerto o mesmo através de notificações.
  12. Como você não mencionou a mensagem exata de erro que está dando, vou dar outra sugestão; Limpar o componente antes de criar um evento. (Se tiver uma nota fiscal carregada no ACBr e você tentar criar um evento, terá a mensagem abaixo) Por tanto, certifique-se de limpar as notas fiscais e eventos que estão previamente carregados no ACBr. with ACBrNFe1 do begin NotasFiscais.Clear; EventoNFe.Evento.Clear; with EventoNFe.Evento.New do begin InfEvento.cOrgao := 91; //91 - Ambiente Nacional. No caso de evento de manifestação, sempre será 91 InfEvento.chNFe := ''; //Chave de acesso da NFe InfEvento.CNPJ := ''; //CNPJ da empresa que está emitindo o evento (o mesmo do certificado digital) InfEvento.dhEvento := now; //Data do evento InfEvento.tpEvento := ''; //teManifDestCiencia, teManifDestConfirmacao, teManifDestOperNaoRealizada, teManifDestDesconhecimento InfEvento.detEvento.xJust := ''; //Justificativa, caso seja desconhecimento ou op não realizada end; EnviarEvento(IdLote); end;
  13. Se a mensagem for: Evento registrado mas não vinculado a NF-e Pode significar que: A chave de acesso pertence a uma nota fiscal emitida no ambiente de homologação e o evento está sendo enviando em produção (ou vise-versa) A chave de acesso está incorreta. Lembrando ainda que o campo CNPJ é o CNPJ da empresa que está enviando o Evento, no caso o mesmo do certificado digital. E uma observação, dependendo da sua versão do Delphi, considere substituir o método .add para .new. Visto que o add é um método depreciado e que em versões futuras da Embarcadero será descontinuado.
  14. O valor em negrito contem a informação do campo cNF. Esse campo compõe a chave de acesso. O ACbr atribui um valor aleatório automaticamente pra esse campo, caso você não preencha. Ou seja, quando estiver montando o XML, você vai precisar utilizar um Copy da chave de acesso correta, copiando essa informação e informando no campo cNF do ACBr.
  15. Boa noite, tente assim: ACBrNFe1.EventoNFe.Evento.Clear; with ACBrNFe1.EventoNFe.Evento.New do begin InfEvento.cOrgao := 91; //91 - Ambiente Nacional. No caso de evento de manifestação, sempre será 91 InfEvento.chNFe := ''; //Chave de acesso da NFe InfEvento.CNPJ := ''; //CNPJ da empresa que está emitindo o evento (o mesmo do certificado digital) InfEvento.dhEvento := now; //Data do evento InfEvento.tpEvento := ''; //teManifDestCiencia, teManifDestConfirmacao, teManifDestOperNaoRealizada, teManifDestDesconhecimento InfEvento.detEvento.xJust := ''; //Justificativa, caso seja desconhecimento ou op não realizada end; ACBrNFe1.EnviarEvento(IdLote);
×
×
  • Create New...