Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Aviso

As vendas compatíveis: NFC-e, SAT e ECF

  • Não existe integração de ficha técnica. A integração da venda é realizada utilizando as rotinas padrão do Venda Assistida, atualmente não existe no padrão a funcionalidade de baixa de estoque por ficha técnica
  • ;
  • Não existe integração de Impostos. Os dados de impostos devem ser complementados na camada do TOTVS CHEF;
  • Não existe integração de Inutilização de documento NFC-e;
  • Não existe integração de Troca/Devolução de Venda;
  • Não existe integração de venda com pagamento em NCC (Crédito).
Aviso

Atualização na API do TOTVS FOOD - Novas Regras de Busca de Vendas

Com a mais recente atualização na API do TOTVS FOOD, foram implementadas novas regras na busca de vendas para aprimorar a eficiência e a confiabilidade do sistema.
Por favor, atente-se às seguintes diretrizes para o processo de venda no campo de Configuração :

  1. Intervalo de Tempo para Busca de Vendas:

    • As buscas de vendas devem ser realizadas em intervalos regulares de 30 minutos default, configurado na Tag: tempBuscaVenda.
    • Reprocessamentos de vendas com erro podem ocorrer entre 00:00 e 06:00, com a possibilidade de intervalos menores, configurados nas Tags: horaReproceInicio e horaReproceFinal.
  2. Busca de Vendas por Loja:

    • Cada busca de venda por loja deve respeitar um intervalo de 15 segundos antes de iniciar uma nova busca para outra loja.

Para obter informações detalhadas sobre essas atualizações e garantir a integração eficaz com a API, consulte a documentação fornecida pela equipe do TOTVS FOOD: API - Capa Venda

IMPORTANTE: Para que não ocorra bloqueios por consumo indevido, as chamadas na API devem ter intervalos mínimos de 30 minutos entre cada chamada e o período de d - 7 máximo. Caso seja recorrente o consumo da base histórica, poderá acarretar em consumo indevido e bloqueio do uso da API. Isto ocorrendo é necessário realizar a abertura de uma chamado para o time TOTVS FOOD.


Cadastrando o Processo VENDA

Para integrarmos as vendas do Totvs Chef com o Protheus é necessário primeiramente realizar o cadastro do processo VENDA no Protheus.

...

Exemplo do cadastro de Processo do VENDA:


Vinculando o Processo VENDA ao Assinante CHEF


1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.

...

Configuração:  Preencha este campo de acordo com a sua URL da API  Capa Venda, como mostra o exemplo abaixo:

Bloco de código
{
    "url":"http://{url_do_servidor}/api/CapaVenda/ListPorDataMovimento",
    "SL2":"self:oRegistro['Itens']",
    "SL4":"self:oRegistro['Pagamentos']"
}https://github.com/totvs/protheus-smart-hub-layouts/blob/main/chef/configuracao/busca_venda.txt

Layout Envio: Preencha este campo de acordo com o exemplo abaixo: 

Bloco de código
{
    "CodigoLoja":"&self:aArrayFil[self:nFil][1]",
    "DataMovimentoInicial":"&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",
    "DataMovimentoFinal":"&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)"
}
  • Por Data de Integração:
Nota
titlePara maior entendimento

Veja toda a documentação tecnica sobre a configuração da API: Busca de Venda ListPorDataIntegracao

Configuração:  Preencha este campo de acordo com a sua URL da API  Capa Venda, como mostra o exemplo abaixo:

Bloco de código
{
    "url":"http://{url_do_servidor}/api/CapaVenda/ListPorDataIntegracaoChefWeb",
    "SL2":"self:oRegistro['Itens']",
    "SL4":"self:oRegistro['Pagamentos']"
}

Layout Envio: Preencha este campo de acordo com o exemplo abaixo: 

	https://github.com/totvs/protheus-smart-hub-layouts/blob/main/chef/envio/busca_venda.txt


Layout Publicação: Preencha este campo de acordo com o exemplo abaixo:

Bloco de código
https://github.com/totvs/protheus-smart-hub-layouts/blob/main/chef/publicacao/busca_venda.txt
Nota
titleObservações
  • As tags L1_FILIAL, L2_FILIAL e L4_FILIAL são preenchidas pelo Protheus, então devem ficar com o conteúdo vazio.
Dica
titleDica!

Foi disponibilizada a rotina com a nova regra para consumo da API capaVenda, agora só será permitida a integração com intervalos de no mínimo 30 minutos.

Caso a integração seja executada antes deste período será apresentada a mensagem:

    • 20/12/23 15:46:48  - [VENDA] Busca não será executada, intervalo de tempo mínimo(00:30:00) não foi atingido. Intervalo atual: 00:01:25

Para o caso de reprocessamento, caso seja executada antes do periodo será apresentada a mensagem:

    • 20/12/23 15:46:49 RMIREPROCESSA - Reprocessamento da integracao com o FOOD nao executado, pois esta fora do horario permitido: 00:00 as 06:00
Informações
titleReprocessamento de Venda

Para Reprocessar vendas com erro é necessário incluir tags de controle no layout de envio:

  • DataReprocessamento: Data de controle para inicialização do mecanismo de reprocessamento. Essa dava deve ser preenchida com um dia antes da data atual da maquina onde o serviço RMIBUSCA esta configurado.
  • UltimodiaReprocessado: Data de controle para saber qual foi o ultimo dia reprocessado automaticamente pelo sistema.
  • DiasRetroceder: dias definido pelo usuário para controle da DataReprocessamento. 

Exemplo:

    "DataReprocessamento": "20230515",

    "UltimodiaReprocessado": "20230515",   

    "DiasRetroceder": 10


Como será inicializado o reprocessamento?

O serviço RMIBUSCA verifica se a data da maquina onde se encontra o mesmo é maior que a data contida na tag DataReprocessamento. Caso seja será inicializado o reprocessamento seguindo as considerações abaixo:

A data inicial do reprocessamento será realizada através do calculo:

UltimodiaReprocessado - DiasRetroceder = 05/05/2023

Com isso o reprocessamento se busca as vendas do dia 05/10/2023 até o dia 14/05/2023.

As tags DataReprocessamento e UltimodiaReprocessado são atualizadas após cada execução com isso não será mais necessário realizar essa alteração manualmente.

Neste cenário começará a partir de 05/05/23 e terminará na data atual;

Com isso o Layout de Envio deve estar com essa estrutura.

{
   

Bloco de código
{

"CodigoLoja": "&self:aArrayFil[self:nFil][1]",

"DataInicialIntegracaoChefweb


    "notasinutilizadas": 1,
    "DataMovimentoInicial": "&Str(

Year(dDatabase),

4)

+'-'+

StrZero

 StrZero(

Month(dDatabase),

2)

+'-'+

StrZero(

Day(dDatabase),

2)",

"DataFinalIntegracaoChefweb


    "DataMovimentoFinal": "&Str(

Year(dDatabase),

4)

+'-'+

StrZero

 StrZero(

Month(dDatabase),

2)

+'-'+

StrZero(

Day(dDatabase),

2)",

"DataHoraUltimaIntegracaoChefWeb":"" }

Layout Publicação: Preencha este campo de acordo com o exemplo abaixo:

    "DataReprocessamento": "20230515",

    "UltimodiaReprocessado": "20230515",   

    "DiasRetroceder": 10
}

Dica
titleAPI - CAPA VENDA

Para mais informações referente à campos na API do FOOD acesse: API - FOOD CAPA VENDA.

TipoFormaPagamento = 3 é para identificar as formas de pagamento do tipo cartão.

Bloco de código
{ "L1_FILIAL":"&self:aArrayFil[self:nFil][2]", "L1_VEND":"&SUPERGETMV('MV_VENDPAD', .F., '01')", "L1_CLIENTE":"&SuperGetMV('MV_CLIPAD',.F.,'000001')", "L1_LOJA":"&SuperGetMV('MV_LOJAPAD',.F., '01')", "L1_OPERADO": "&self:DePara('SA6',cValToChar(self:oRegistro['Caixa']['Operador']['Codigo']), 2,0, .F., 'CHEF')", "L1_EMISSAO":"&self:oRegistro['DataMovimento']", "L1_EMISNF":"&self:oRegistro['DataMovimento']", "L1_DTLIM":"&self:oRegistro['DataMovimento']", "L1_NUMMOV":"&SubStr(cValToChar(self:oRegistro['Caixa']['NumeroFechamento']),1,2)", "L1_NUMCFIS":"&cValToChar(self:oRegistro['NumeroCupom'])", "L1_DOC":"&cValToChar(self:oRegistro['NumeroNota'])", "L1_SERIE":"&self:oRegistro['SerieNota']", "L1_SERPDV":"&self:oRegistro['SerieECF']", "L1_SERSAT":"&self:oRegistro['SerieSAT']", "L1_KEYNFCE":"&self:oRegistro['ChaveSefaz']", "L1_PRONFCE":"&self:oRegistro['ProtocoloAutorizacaoSefaz']", "L1_COMIS": 0, "L1_ORIGEM":"N", "L1_VLRTOT":"&self:oRegistro['TotalizadorVenda']['ValorTotal']", "L1_VALBRUT":"&self:oRegistro['TotalizadorVenda']['ValorSubTotal']", "L1_VLRLIQ":"&self:oRegistro['TotalizadorVenda']['ValorSubTotal']", "L1_VALMERC":"&self:oRegistro['TotalizadorVenda']['ValorSubTotal']", "L1_DESCONT":"&self:oRegistro['TotalizadorVenda']['ValorTotalDescontoSistema']", "L1_DESCFIN":"&self:oRegistro['TotalizadorVenda']['ValorTotalDescontoFiscal']", "L1_VALICM":"&self:oRegistro['TotalizadorVenda']['ValorTotalICMS']", "L1_VALPIS":"&self:oRegistro['TotalizadorVenda']['ValorTotalPIS']", "L1_VALCOFI":"&self:oRegistro['TotalizadorVenda']['ValorTotalCOFINS']", "L1_CGCCLI":"&IIF(self:oRegistro['Cliente'] <> Nil, self:oRegistro['Cliente']['Documento'], '')", "L1_CONDPG":"CN", "L1_SITUA":"IP", "L1_TIPO":"V", "L1_TIPOCLI":"F", "L1_PDV":"001", "SL2": [{ "L2_FILIAL":"&self:aArrayFil[self:nFil][2]", "L2_PRODUTO":"&cValToChar(self:oRegistro['Itens'][nItem]['Produto']['Codigo'])", "L2_ITEM":"&StrZero(nItem, TamSx3('L2_ITEM')[1])", "L2_DESCRI":"&self:oRegistro['Itens'][nItem]['Produto']['Nome']", "L2_QUANT":"&self:oRegistro['Itens'][nItem]['Quantidade']", "L2_VRUNIT":"&self:oRegistro['Itens'][nItem]['ValorUnitario']", "L2_VLRITEM":"&self:oRegistro['Itens'][nItem]['ValorTotal']", "L2_LOCAL":"&SuperGetMV('MV_LOCPAD',.F., '01')", "L2_UM":"&self:oRegistro['Itens'][nItem]['Produto']['Unidade']", "L2_VALDESC":"&self:oRegistro['Itens'][nItem]['ValorDesconto']", "L2_TES":"&SUPERGETMV('MV_TESSAI', .F., '501')", "L2_CF":"&self:oRegistro['Itens'][nItem]['Cfop']", "L2_PICM":"&self:oRegistro['Itens'][nItem]['Icms']['Aliquota']", "L2_BASEICM":"&self:oRegistro['Itens'][nItem]['Icms']['BaseCalculo']", "L2_VALICM":"&self:oRegistro['Itens'][nItem]['Icms']['Valor']", "L2_EMISSAO":"&self:oRegistro['DataMovimento']" } ], "SL4": [{ "L4_FILIAL":"&self:aArrayFil[self:nFil][2]", "L4_DATA":"&self:oRegistro['DataMovimento']", "L4_VALOR":"&self:oRegistro['Pagamentos'][nItem]['ValorRecebido']", "L4_ADMINIS":"&IIF(self:oRegistro['Pagamentos'][nItem]['Descricao'] <> 'DINHEIRO',self:DePara('SAE',self:oRegistro['Pagamentos'][nItem]['Descricao'], 2, 0, .F., 'CHEF'),'')", "L4_FORMA":"&self:DePara('SX5',IIF(cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento']) == '3',self:oRegistro['Pagamentos'][nItem]['Descricao'],cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento'])), 2, 0, .F., 'CHEF')" } ] }

Exemplo da configuração do Processo VENDA no assinante CHEF:




Vinculando o Processo VENDA ao Assinante PROTHEUS


1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.

...

Nota
titleCancelamento de venda.

O Cancelamento de Venda seguirá o seguinte fluxo:

Serviço RMIBUSCA: Neste serviço é realizado a busca das vendas no Totvs Chef, o serviço identifica se a tag StatusVenda (Api Capa venda) é igual 3a 2, Caso seja significa que se trata de um cancelamento, com isso é gravado um registro na tabela MHQ - Mensagens Publicadas com o campo MHQ_EVENTO = 3 2 (Exclusão).

Serviço RMIDISTRIB: Após a Publicação do cancelamento o serviço RMIDISTRIB se encarregará de distribuir o cancelamento da venda  para o assinante Protheus, gerando um registro na tabela MHR - Mensagens Distribuição.

Serviço RMIENVIA: Realizado a distribuição, o serviço RMIENVIA inclui as informações do cancelamento da venda na tabela SLX - Log Cancelamento x Devolução.

Serviço RMICONTROL: Com as informações do cancelamento inseridos na tabela SLX - Log Cancelamento x Devolução este serviço realiza a leitura das informações e em seguida é executado a rotina padrão de cancelamento LOJA140, com isso realizando o cancelamento da venda no Protheus.


A Devolução não esta implementada nesta integração, caso tenha alguma devolução no sistema Totvs Chef, a devolução devera ser realizada manualmente no Protheus. Não existe integração de venda com NCC.

Dica
titleDesconto na venda

Os valores de desconto nos totalizadores da venda devem vir rateados nos itens.

"TotalizadorVenda": {
  "ValorTotalDescontoFiscal": 0.01,
  "ValorTotalDescontoSistema": 0.01,

"Produto": {
                "Codigo": 5,
                "Nome": "PRODUTO TESTE",
            },
            "Quantidade": 1,
            "ValorUnitario": 1,
            "ValorDesconto": 0.01,

Dica
titleMonitor de integração de vendas!

É possível monitorar a integração e processamento das vendas e cancelamento de vendas através do: Monitor de integração de Vendas.

...