Versão do retaguarda Raffinato compatível: 3.6.3.3+

1. Procedimento inicial para integração:

O primeiro procedimento é informar ao IFood que o restaurante deseja realizar integração, com esse procedimento realizado, o mesmo habilita o campo “Código PDV” no portal IFood.

Em seguida, precisa ser solicitado ao IFood alguns dados que eventualmente usaremos em nosso cadastro “Painel do Suporte”, que fará toda a captura de pedidos:

Cliente_id:           xxxxxxx

Cliente_Secret:    xxxxxxx

username:           xxxxxxxxx

password:            xxxxxxxxx

2. Procedimento que automatiza captura de pedidos:

Após ter os dados citados no item 1, é necessário acessar o Painel do Suporte http://painel.prontoparaservir.com.br acessando com o mesmo usuário e senha do GLPI, e no Menu Integrações > IFood, preencher as informações conforme a imagem abaixo:

No grupo “Dados Raffinato”, as informações de “Subdomínio” e “Token Broker” devem ser as mesmas que foram configuradas no broker.

No grupo “Dados IFood”, o campo “Token IFood (client_secret)”, é quase sempre o mesmo número para todos os clientes.

2.1 Após feita a configuração, para testar se a mesma está funcionando, pode-se acessar um portal do IFood para desenvolvedores: https://developer.ifood.com.br/v1.0/reference#oauthtoken

Então preencher os campos no portal de acordo com as configurações realizadas no Painel do Suporte Raffinato e clicar no botão “Try it”, conforme imagem abaixo:

Caso a resposta seja verde conforme imagem do passo 4 da imagem, a integração está pronta para prosseguir, em caso de retorno negativo , deve-se entrar em contato com o suporte IFood e solicitar essa liberação.

3. Configuração de retorno do broker ao IFood:

Para que o IFood receba os eventos realizados pelo PDV é preciso realizar uma configuração no broker, “configuração de retorno” localizado em broker > integrações > Status do Pedido, tela apresentada na Figura 3:

Figura 3:

As configurações podem ser as mesmas apresentadas abaixo:

Subdominio: Subdomínio do cliente, o mesmo pode ser obtido nos Dados API de integração, exemplo: Figura 2.

Endereço callback: http://painel.prontoparaservir.com.br/api/integradorIfood

Authorization: “none” ou o token do broker

Tempo em segundos da integração: 15

Versão atual: 0

4. Cadastro no Portal do IFood:

4.1 Produtos

Para a correta integração dos pedidos realizados no IFood com o sistema Raffinato, deverão ser cadastrados os produtos no portal do IFood. Nesse passo, é muito importante que os códigos cadastrados no IFood estejam todos em total conformidade com os códigos do sistema Raffinato.

Obs.: Se o código informado para algum produto principal não for encontrado no Raffinato, o pedido será recusado pelo mesmo.

Após cadastrado o código do produto principal no Portal IFood, pode-se então cadastrar as composições ou itens Obrigatórios. Para obter esses códigos do Raffinato, devem ser seguidos os passos do tópico 5 deste documento.

Exemplo:- Quando o produto for um item obrigatório, informar antes do código a letra “I”;- Quando o produto for uma composição, informar antes do código a letra “C”.

4.2 Formas de Pagamento

Devem ser extraídas do Raffinato e enviadas ao IFood por e-mail para que sejam cadastradas pelo suporte deles, no Painel IFood é possível somente marcar se será utilizado ou não.

Esses IDs podem ser obtidos do Raffinato através da tela de “Gerar Arquivo de Exportação de Terceiros” (Raffinato versão 3.6.3.0 ou superior), ou ainda através do SQL abaixo:

— Formas de Pagamento:

PARA COPIAR:

select Id, Nome

from FormaPagamento

where Ativo = 1

— Operação Cartão:

PARA COPIAR:

select

 OC.Id as IdOperacaoCartao,

 RA.Nome as RedeAdquirente,

 CF.Nome as ContaFinanceira,

 BC.Nome as BandeiraCartao,

 TOC.Nome as TipoOperacao,

 OC.DiasPrevisao,

 OC.PercentualTaxaAdministracao

from

 OperacaoCartao OC,

 BandeiraCartao BC,

 ContaFinanceira CF,

 RedeAdquirente RA,

 TipoOperacaoCartao TOC,

 PlanoConta PC,

 ContaFinanceiraFilial CFF

where OC.IdBandeiraCartao = BC.Id

 and OC.IdContaFinanceira = CF.Id

 and OC.IdRedeAdquirente = RA.Id

 and OC.IdTipoOperacaoCartao = TOC.Id

 and OC.IdPlanoConta = PC.Id

 and OC.IdFilial = BC.IdFilial

 and OC.IdFilial = RA.IdFilial

 and OC.IdFilial = TOC.IdFilial

 and OC.IdFilial = CFF.IdFilial

 and CF.Id = CFF.IdContaFinanceira

 order by OC.IdBandeiraCartao


Para formas de pagamentos “Cartão”: Informar o “ID” correspondente a esta forma de pagamento da tabela “FormaPagamento” também o “ID” correspondente na tabela “OperacaoCartao”, separando por “-“ (hífen).

No exemplo da imagem abaixo, seria enviado: 4-100001

Para a forma de pagamento “Dinheiro”, deve ser enviado somente o ID, não é necessário informar o “-“ (hífen) nem o ID da configuração do cartão.

A forma de pagamento usada para os pagamentos on line e Voucher deve ser a mesma, deve ser do tipo POS no Raffinato, e deve ser informada também na tela do Painel do Suporte, nos campos específicos.

5. Como exportar os IDs dos produtos utilizados no IFood “Cód. PDV”:

Para que essa integração ocorra sem erros, precisam ser cadastrados os “ExternalCode” (Códigos do PDV), como citado no início desse documento, esses IDs podem ser obtidos do Raffinato através da tela de “Gerar Arquivo de Exportação de Terceiros” (Raffinato versão 3.6.3.0 ou superior), ou ainda através do SQL abaixo:

–Produtos Principais:

PARA COPIAR:

declare @IdFilial int;

set @IdFilial = — Colocar aqui o Id da Filial;

declare @IdEmpresa int;

set @IdEmpresa = (select IdEmpresa from Filial where Id=@IdFilial);

select P.Id Codigo,

   P.NomeReduzido Nome,

      UM.Sigla UN,

   (select A2.Nome

         from Agrupamento A2

        where A2.Arvore = case

                         when charIndex(‘.’, A.Arvore) = 0 then                                                  

                           A.Arvore                                                                           

                        else                                                                                           

                           cast(substring(A.Arvore, 1, charIndex(‘.’, A.Arvore) – 1) as varchar(100) end) Agrupamento,

   case

    when isnull(PP.ValorDeliveryOnline, 0) > 0 then

              PP.ValorDeliveryOnline

            else

              PP.Valor

      end as Valor

 from Produto P,

      PrecoProduto PP,

      UnidadeMedida UM,

      Agrupamento A

where P.Id = PP.IdProduto

  and P.IdUnidadeMedida = UM.Id

  and P.IdAgrupamento = A.Id

  and P.IdEmpresa = A.IdEmpresa

  and P.Ativo = 1

  and P.EnviarDeliveryOnline = 1

  and PP.IdFilial = @IdFilial

order by P.Id

Exemplo:

Obs: Para serem considerados pelo SQL, os produtos devem estar configurados no cadastro do retaguarda para “Enviar p/ delivery online?” e será gerado com o seu “Preço no Delivery online”, em caso deste estar zerado ou vazio, será gerado o campo do “Preço de Venda do Produto”.

Itens Obrigatórios e Composições:

Esse código pode ser obtido do Raffinato através da tela de “Gerar Arquivo de Exportação de Terceiros” (Raffinato versão 3.6.3.0 ou superior), ou ainda através do SQL abaixo:

— Composições:

PARA COPIAR:

declare @IdFilial int;

set @IdFilial = — Colocar aqui o Id da Filial;

select C.IdProduto CodigoProdutoPrincipal,

   ‘C‘ + cast(C.Id as varchar(max)) CodigoComposicaoProduto,

   P.NomeReduzido as Nome,

   case

        when C.PermiteRemover = 1 then

          ‘Sim’

        else

          ‘Não’

   end PermiteRemover,

   isnull(C.ValorAdicional, 0) ValorAdicional

 from Composicao C,

      Produto P

where C.IdProdutoComposicao = P.Id

  and C.IdProduto in (select P.Id

                     from Produto P,

                          PrecoProduto PP

                    where P.Id = PP.IdProduto

                      and P.Ativo = 1

                      and P.EnviarDeliveryOnline = 1

                      and PP.IdFilial = @IdFilial)

order by C.IdProduto,

         C.IdProdutoComposicao

Exemplo:

— Itens Obrigatórios:

PARA COPIAR:

declare @IdFilial int;

set @IdFilial = — Colocar aqui o Id da Filial;

declare @IdEmpresa int;

set @IdEmpresa = (select IdEmpresa from Filial where Id = @IdFilial);

select PC.Id as CodigoProdutoPrincipal,

   ‘I‘ + cast(CA.Id as varchar(max)) as CodigoItemObrigatorio,

   P.NomeReduzido as Nome,

      AIO.QuantidadeMinima,

      AIO.QuantidadeMaxima,

      AIO.Descricao as DescricaoGrupoObrigatorio,

   isnull(PCA.Valor, 0) as Valor

 from ComposicaoAgrupamento CA

 join Produto P

on P.Id = CA.IdProdutoComposicao

  and P.IdEmpresa = @IdEmpresa

 left join PrecoComposicaoAgrupamento PCA

on PCA.IdComposicaoAgrupamento = CA.Id

  and PCA.IdFilial = @IdFilial

 join AgrupamentoItemObrigatorio AIO

on AIO.Id = CA.IdAgrupamentoItemObrigatorio

 join Agrupamento A

on A.Id = CA.IdAgrupamento                           

 join Agrupamento Ag

on Ag.Arvore + ‘.’ like A.Arvore + ‘.%%’                                          

 join Produto PC

on Ag.Id = PC.IdAgrupamento

where PC.Id in (select P.Id

               from Produto P,

                    PrecoProduto PP

              where P.Id = PP.IdProduto

                and P.Ativo = 1

                and P.EnviarDeliveryOnline = 1

                and PP.IdFilial = @IdFilial)

order by PC.Id,

         CA.IdAgrupamentoItemObrigatorio,

         CA.IdProdutoComposicao

Exemplo:

Pode haver o caso onde no painel do IFood não existe esse campo chamado de “Código PDV”, então será necessário solicitar ao IFood que o estabelecimento deseja realizar a integração, para que isso aconteça é necessário enviar ao IFood uma lista de produtos relacionados com seus IDs, seguindo o modelo de layout no excel:

6. Configuração no Raffinato

No Raffinato, menu Cadastro de Filial / aba Delivery 2, preencher o campo “Estação de Importação” com o Nome ou IP da máquina onde estará o módulo Frente de Caixa que irá autorizar os pedidos recebidos do IFood.

Também deve estar marcada nessa mesma tela, a opção “Usar delivery on line?”

7. Pedidos

Após todos os cadastros feitos no Portal do IFood, os pedidos poderão ser realizados normalmente.

Podem ser conferidos os status dos pedidos através do Painel do Suporte / Menu Integrações / IFood, clicando no botão “Acompanhar Pedidos IFood” do cliente desejado.

Também foi criada uma visualização desse painel para o usuário acompanhar os pedidos (os últimos 200), que pode ser acessada clicando no “Link para o Cliente” que fica no topo da página. Nela são exibidas as etapas de cada pedido até que seja concluído.

Se clicado no botão “VER PEDIDO” é exibido o conteúdo do pedido que foi enviado para o frente de caixa.

7.1 Fluxo dos Pedidos

7.2 Tratamento para informações inválidas

Quando um pedido feito no IFood com um “Item Obrigatório” ou “Composição” inválidos no Raffinato, o pedido será aceito e eles serão adicionados nas observações do seu Produto principal, ficando desta forma:

Pedido com Item Obrigatório ou Composição não encontrado no Sistema Raffinato.

É importante observar que, nessas situações onde são adicionadas na observação, não irá ocorrer a baixa de estoque destes “Item Obrigatório” ou “Composição”.

Quando um pedido feito no IFood com forma de pagamento não cadastrada ou inválida no Raffinato, o pedido é recebido mesmo assim, mas é lançado na forma de pagamento “Dinheiro”, inserindo o nome da forma de pagamento do IFood na observação do cupom.

8. Alertas de recebimento de pedidos na integração Raffinato X IFood

Quando recebido pedidos vindos do IFood que ainda não foram autorizados pelo Frente de Caixa, para auxiliar o usuário a identificar:

·         A aba “Delivery” é exibida na cor vermelha e com o número de pedidos a serem autorizados;

·         No lado direito dos filtros do delivery, é habilitado o botão para “Autorizar Pedidos”;

·         É emitido um sinal sonoro a cada 30 segundos.

9. Compatibilidade da integração Raffinato X IFood

            É necessário utilizar a versão 3.6.3.0 ou superior do Raffinato para o funcionamento da integração.

10. Controle da loja online/offline

No IFood existem duas regras para a loja estar aberta:

Quando o estabelecimento utiliza o Iconnect (software de controle do IFood):

1 – A loja deve estar dentro do horário de funcionamento configurado no Painel IFood

2 – O Iconnect deve estar aberto

Quando usa a nossa integração, o Broker faz o papel do Iconnect para controle da loja, o Iconnect deve permanecer fechado (o ideal é que seja desinstalado). Desta maneira a nossa regra é a seguinte:

1 – A loja deve estar dentro do horário de funcionamento configurado no Painel IFood

2 – O Broker deve estar aberto

Em caso de queda na internet por cerca de 1:30 minutos, o broker fecha a loja automaticamente. Ao voltar a funcionar a internet, depois de cerca de 30 segundos a loja é reaberta automaticamente (esse tempo, assim como no Iconnect, não é configurável).

FAQ – Perguntas Frequentes

  • O pedido foi gerado no app do IFood mas não aparece como Placed no Painel do Suporte.

R: É algum erro na API da IFood, fazer contato com o suporte do IFood.

  • O pedido não aparece como Placed no Painel do Suporte mas está aparecendo em outros status.

R: Algum outro sistema está capturando os pedidos, verificar se o iconnect foi aberto no estabelecimento, caso sim, fechar ele.

  • Quando o pedido fica confirmado no Painel do IFood?

R: Somente depois de confirmado pelo restaurante no frente de caixa (de modo automático ou manual).

  • Foi configurado no cadastro de filial no retaguarda a máquina que irá autorizar os pedidos, mas mesmo assim não está aparecendo no frente de caixa o botão.

R: Se foi configurado pelo IP, substituir pelo nome da máquina ou vice-versa.