Árvore de páginas

Versões comparadas

Chave

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

O TOTVS Varejo PDV Omni Smart Hub (POSH) funciona como uma camada de comunicação entre o PDV OMNISHOP e as retaguardas TOTVS.  é a camada responsável por orquestrar as operações de sincronização de dados entre o TOTVS Varejo PDV Omni e as suas respectivas retaguardas/ERPs.

Toda comunicação entre a retaguarda/ERP e o PDV Omni será executada e orquestrada pelo POSH. 

As informações são disponibilizadas através de serviços web tendo como lógica o trafego por lote.


draw.io Diagram
bordertrue
diagramNamefluxo_sync_minimalista
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth541
revision2

title

Para realizar requisições no TOTVS VAREJO PDV OMNI SMART HUB (POSH) é necessário ter uma chave de acesso (Token).

Para se obter este token é necessário ter um usuário ativo no RAC e realizar a requisição com as informações corretas.

O usuário do RAC deverá ter a permissão de RETAGUARDA para se conectar
Informações
title1 - Procedimentos para Configuração
Expandir
Expandir
titleAtivação do inquilino

A criação do inquilino é realizada pelo time de Integração Varejo da TOTVS,

Para solicitar a criação de um inquilino é necessário ....

Expandir
titleAtivação do RAC

A criação do usuário no RAC ...

Expandir
titleAutenticação
Informações
title2 - Envio de dados com o POSH

Nesta seção iremos fazer as configurações iniciais para uso do TOTVS Varejo PDV Omni Smart Hub (POSH), antes de iniciarmos essas configurações, devemos ter os requisitos iniciais.

Caso esse passo não esteja concluído, favor acessar a seção de Requisitos mínimos para uso do TOTVS Varejo PDV Omni Smart Hub (POSH) e finalizar os requisitos.

A partir desse ponto a retaguarda é responsável pelos dados que serão enviados e também responsáveis pela integridade dos dados.

Nos passos abaixo iremos mostrar como realizar a configuração de compartilhamento e loja, dois tipo de dados extremamente importante para a integração.

Neste fluxo mandaremos os dados de compartilhamento e loja no mesmo lote, porém também podem ser mandados em lotes separados caso necessário.

Image Removed

Aqui iremos mostar o passo a passo para seguir este fluxo. Salientamos que as informações mais completas sobre fluxos ou tipo de dados estão em suas respectivas páginas e podem ser acessadas através dos links nessa página.

  • Passo 1 - Abertura do lote para envio dos dados para o POSH
  • Passo 2 - Envio dos dados de compartilhamento para o POSH
  • Passo 3 - Envio dos dados de loja para o POSH
  • Passo 4 - Fechamento do lote

Após o envio dessas informações, os dados já estão esperando para serem baixados pelo POSH no PDV Omnishop

Esse passo precisam ser refeito sempre que precisar realizar o cadastro de uma loja, toda loja tem um compartilhamento para que a inteligência do POSH identifique para qual loja mandar os dados

Expandir
titleFluxo inicial de cadastro
Informações
iconfalse
titleEnvio de dados do ERP para o PDV Omni
Expandir
titleDetalhamento

Todo a arquitetura do TOTVS Varejo PDV Omni Smart Hub (POSH) funciona através do envio de lotes.

Podemos imaginar um lote como um container em um navío, esse container contêm os dados que serão enviados para a(s) loja(s).

O envio dos dados segue o seguinte fluxo

  1. Abertura de lote 
  2. Envio dos dados 
  3. Fechamento do lote
  4. Monitoramento do lote 

Abaixo está listado cada passo e as informações para o envio.

Expandir
titlePasso 1 - Abertura de lote
Expandir
titleDetalhamento

Para se abrir um lote é necessário fazer uma requisição para o micro serviço do PDVSync,Core.Controle.

  • Endpoint: /api/retaguarda/inquilinolotesexternos
  • Método: Post
  • Autenticação: Bearer token
  • Permissão: Retaguarda

O retorno dessa requisição gerará um código chamado loteOrigem, ele é de suma importância, pois, esse código identifica qual o lote que pertence o(s) dado(s) e deverá ser passado no envio dos dados para que a integração funcione corretamente.

Expandir
titleBody da requisição
{
    "status":0,
    "tipoLote":[
        17
    ],
    "idInquilino":"{{IdInquilino}}"
} Expandir
titleDefinição dos campos de requisição

Campo

Tipo

Descrição

Observações

idInquilino

stringidInquilino gerado na criação do inquilinoNão Nulo 

tipoLote

Lista de stringLista dos tipos de dados a serem enviados. São aceitos vários tipos. (Tipos  na seção Tipos Lote)Não nulo

status

stringStatus do lote, na abertura sempre enviar 0 - Inicio EnvioNão nulo
Expandir
titleTipos Lote

Os tipos de dados passados na requisição são os seguintes:

    Cliente = 0
    Loja = 1
    Motivo = 2
    Perfil = 3
    Usuario = 4
    FcpProduto = 5
    Compartilhamento = 6
    Imposto = 7
    Ncm = 8
    PisCofins = 9
    TributoNcm = 10
    ClassificacaoProduto = 11
    Produto = 12
    Preco = 13
    Estoque = 14
    Operadora = 15
    DadoComplementarPagto = 16
    CondicaoPagto = 17
    FormaPagto = 18
    CanalVenda = 24
    AlteracaoCliente = 40
    AlteracaoImposto = 47
    AlteracaoNcm = 48
    AlteracaoPisCofins = 49
    AlteracaoTributoNcm = 50
    AlteracaoClassificacaoProduto = 51
    AlteracaoProduto = 52
    AlteracaoPreco = 53
    AlteracaoEstoque = 54
    PreVenda = 55
    ClienteEndereco = 56

Expandir
titleRetorno da requisição
{
    "success":true,
    "message":"",
    "data":{
        "loteOrigem":"{LoteOrigem}",
        "mensagem":null,
        "status":0,
        "tipoLote":[
            "17"
        ],
        "idInquilino":"{IdInquilino)",
        "dataAtualizacao":"{DataAtualizacao}",
        "dataCadastro":"{DataCadastro}",
        "id":"{Identificador}",
        "_expandables":[]
    }
} Expandir
titleDefinição dos campos de retorno

Campo

Tipo

Descrição

SuccessboolIndica se a criação do lote foi feita com sucessoMessagestringCaso ocorra erros durante a criação do lote eles serão enviados nesse campoDataobjetoObjeto lote criado

Data.LoteOrigem

stringNúmero de identificação do lote

Data.Mensagem

string

Data.Status

intStatus do loteData.TipoLoteList StringLista de tipos de dados que serão enviados no lote

Data.IdInquilino

stringidInquilino vinculado ao lote

Data.DataAtualização

datetimeData da ultima atualização do registo

Data.DataCadastro

datetimeData de criação do lote

Data.Id

stringIdentificador do lote no banco
Expandir
titlePasso 2 - Envio dos dados

Os dados são enviados para os seus respectivos micro serviços.

Exemplo: venda é enviada para o serviço comercial

Todos os dados que serão enviados deverão conter o loteOrigem para identificar de qual lote ele pertence.

Caso o loteOrigem não seja enviado os dados não serão integrados com o PDV Omni.

O lote deve conter o tipo de dado que está sendo enviado

Expandir
titlePasso 3 - Fechamento do lote
Expandir
titleDetalhamento

Todo lote que é aberto deve ser fechado após o envio dos dados.

Para se fechar um lote é necessário fazer uma requisição para o micro serviço do PDVSync,Core.Controle.

  • Endpoint: /api/retaguarda/inquilinolotesexternos/{IdInquilino}/{LoteOrigem}
  • Método: Put
  • Autenticação: Bearer token
  • Permissão: Retaguarda

Ao ser fechado o lote começa a ser processado pela inteligência do POSH, nesse momento são feitas várias verificações de integridade dos dados e há um processo para enviar os dados para todas as lojas que fazem parte do compartilhamento.

Expandir
titleRetorno da requisição
{
    "success":true,
    "message":"Lote finalizado e processado com sucesso",
    "data":null
} Expandir
titleDefinição dos campos de retorno

Campo

Tipo

Descrição

SuccessboolIndica se a criação do lote foi feita com sucessoMessagestringMensagem enviada Expandir
titlePasso 4 - Monitoramento do lote
Expandir
titleDetalhamento

O monitoramento do lote pode ser feito de várias formas.

Antes é necessário que haja o entendimento que há dois tipos de lote.

  • Lote Externo - Lote criado pela retaguarda que identifica os dados que serão enviados
  • Loja Lote - Lote criado pelo POSH para enviar para o PDV Omni

O loja lote é criado pelo POSH quando o lote externo é fechado pela Retaguarda, o passo a passo é o seguinte:

  1. Retaguarda fecha o lote 
  2. O POSH verifica os dados do lote
  3. O POSH verifica os corpartilhamentos do inquilino
  4. O POSH cria os loja lotes de acordo com os compartlhamentos do inquilino

Nesse módulo teremos a explicação de como fazer o monitoramento dos dois tipos de lotes.

IMPORTANTE: O POSH tem rotinas de expurgo de dados que rodam automaticamente todos os dias, os dados ficam nos serviços do POSH por 14 dias corridos, depois disso não há como recuperar as informações dos lotes.

Expandir
titleMonitoramento Lote Externo
Expandir
titleDetalhamento

O monitoramento do lote externo é feito pelas apis do PDVSync.Core.Controle.

Nesse endpoint teremos algumas informações muito importante com relação ao lote aberto pela retaguarda.

  • Endpoint: /api/retaguarda/v2/inquilinolotesexternos/{id lote externo}
  • Método: GET
  • Autenticação: Bearer token
  • Permissão: Retaguarda

Nesse endpoint um dos dados mais importantes é o status, ele indica se o lote prosseguiu para o próximo passo ou se ele foi barrado por algum motivo.

Expandir
titleRetorno da requisição
{
    "success":true,
    "message":"",
    "data":{
        "loteOrigem":"string",
        "mensagem":"string",
        "status":int,
        "tipoLote":[
            "string"
        ],
        "idInquilino":"string",
        "dataAtualizacao":"datetime",
        "dataCadastro":"datetime",
        "id":"string",
        "_expandables":[]
    }
} Expandir
titleDefinição dos campos de retorno

Campo

Tipo

Descrição

SuccessboolIndica se a requisição foi realizada com sucessoMessagestringCaso ocorra erros durante a criação do lote eles serão enviados nesse campoDataobjetoObjeto lote externo

Data.LoteOrigem

stringNúmero de identificação do lote

Data.Mensagem

stringMensagem enviada no cadastro do lote

Data.Status

intStatus do lote (Definições na seção abaixo)Data.TipoLoteList StringLista de tipos de dados que serão enviados no lote

Data.IdInquilino

stringidInquilino vinculado ao lote

Data.DataAtualização

datetimeData da ultima atualização do registo

Data.DataCadastro

datetimeData de criação do lote

Data.Id

stringIdentificador do lote no banco Expandir
titleStatus do lote
CódigoNomeDescrição0InicioEnvioIndica que o lote foi aberto pela retaguarda e está sendo enviado os dados para o lote.1FimEnvioIndica que a retaguarda fechou o lote para iniciar o processamento do lote.2ValidadoOKIndica que o POSH validou os dados e criou os loja lotes para baixa3ValidadoErroIndica que ocorreu algum erro no processo e não foram criado os loja lotes. O erro mais comum nesse caso é o POSH não encontra os dados q foram enviados.4ProcessandoIndica que o POSH está processando o lote Expandir
titleMonitoramento Loja Lote
Expandir
titleDetalhamento

O monitoramento do loja lote é feito pelas apis do PDVSync.Core.Controle.

Nesse endpoint temos informações com relação aos loja lotes, informações como:

  • Quais itens deram problema na baixa? Por quê?
  • Quais lojas baixaram os dados? Quais não iniciaram a baixa?

Para acessar os dados a requisição é a seguinte

  • Endpoint: /api/retaguarda/v2/LojaLoteStatusRetorno/{id lote externo}?{parâmetros}
  • Método: GET
  • Autenticação: Bearer token
  • Permissão: Retaguarda

Para esse endpoint, alguns parâmetro precisam ser enviados na requisição. Estes parâmetros são:

ParametroDescriçãoTipoObservaçãoinquilinoId inquilino do loja lotestringObrigatórioloteorigemLote origem que será buscado o statusstringObrigatórioidRetaguardaLojaId retaguarda da loja que será buscado o statusstringOpcionaltipoLoteTipo do lote que será buscado o statusintOpcional

Os parâmetros opcionais funcionam como um filtro de dados, caso estejam preenchidos ele trará somente os dados relacionados ao filtro.

Expandir
titleRetorno da requisição

{
    "success": bool,
    "message": "string",
    "data": {
        "lote": "string",
        "loteOrigem": "string",
        "lojaLotes": [
            {
                "status": int,
                "errosIdentificados": [
                    {
                        "tipoLote": int,
                        "idRetaguarda": "string",
                        "erro": "string",
                        "tipoLojaLote": int
                    }
                ],
                "idRetaguardaLoja": "string",
                "idInquilino": "string",
                "dataAtualizacao": "datetime",
                "dataCadastro": "datetime",
                "id": int
            }
        ],
        "pagina": int,
        "hasnext": bool
    }
}

Expandir
titleDefinição dos campos de retorno

Campo

Tipo

Descrição

SuccessboolIndica se a requisição foi feita com sucessoMessagestring

Mensagem de erro retornada 

DataobjetoObjeto de retorno

Data.Lote

stringNúmero de identificação do lojaLote

Data.Loteorigem

stringNúmero de identificação do loteData.Lojaloteslista de objetosLista com os loja lotesData.Lojalotes.StatusintIndica o status em que o loja lote se encontra. (Definição dos status na seção abaixo)Data.Lojalotes.Errosidentificadoslista de objetosLista com o erros identificados na integração do loja lote

Data.Lojalotes.Errosidentificados.Tipolote

intIndica o tipo do loteData.Lojalotes.Errosidentificados.IdretaguardastringId retaguarda do itemData.Lojalotes.Errosidentificados.Erro

string

Erro ocorrido com o itemData.Lojalotes.ErrosidentificadosTipolojaloteintIndio o tipo do loja lote do itemData.IdretaguardalojastringId retaguada da loja proprietária do loteData.IdinquilinostringIdentificação do inquilinoData.Dataatualizacaodatetimedata de atualização do loja loteData.Datacadastrodatetimedata de cadastro do loja loteData.IdintId do loja lotePaginaintIndica em qual página está os dadosHasnextboolIndica se há mais páginas de dados Expandir
titleStatus do loja lote
CódigoNomeDescrição0EmPreparacao

Indica que o POSH está criando o loja lote

1EmProcessamentoIndica que o POSH está validando o loja lote2DisponivelIndica que o loja lote está disponível para a baixa pelo PDV Omni3IndisponivelIndica que o loja lote está indisponível para baixa pelo PDV Omni4EmProcessoDeBaixaIndica que o loja lote está sendo baixado pelo PDV Omni5BaixadoComSucessoIndica que todos os dados enviados para o loja lote foram integrados com sucesso ao PDV Omni6BaixadoComErroIndica que ao menos um item deu erro na integração com o PDV Omni7EnviadoComSucessoIndica que o loja lote foi envidado com sucesso para a retaguarda8EnviadoComErroIndica que o loja lote não foi enviado com sucesso para a retaguarda9ComProblemaVerificarIndica que ocorreu alguma problema com o loja lote e deve-se verificar
Informações
titleFluxogramas POSH
Expandir
titleFluxo Assíncrono (Offline)

Image Removed

Expandir
titleFluxo Síncrono (Online)

Image Removed

Envio de dados do ERP para o PDV Omni

Aqui temos os passos para que seja feito o envio de dados do ERP para o PDV Omni.

Caso queira saber o fluxo completo que o dado enviado pela retaguarda percorre visualize a seção fluxomagramas POSH logo abaixo

Expandir
titleEnvio de dados do PDV Omni para o ERP

Os dados gerado ou alterados no PDV Omni podem ser enviados para a retaguarda por dois fluxos

  • Fluxo Síncrono (Online)
    • Os dados são enviados diretamente do PDV para o ERP.
  • Fluxo Assíncrono (Offline)
    • Os dados são enviados para o POSH e a retaguarda busca esses dados posteriormente.

Mais informações sobre os dois fluxos podem ser encontradas na seção 3 - Fluxogramas POSH


Informações
title3 - Fluxogramas POSH

Inclusão de trecho
Fluxos de dados POSH
Fluxos de dados POSH
nopaneltrue

Informações
title4 - Documentação técnica
Expandir
titlePOSH Server

Exibir filhos
pageMicroserviços

Expandir
titlePOSH Client

Exibir filhos
pageCliente TOTVS Varejo PDV Omni Smart Hub

Informações
title5 - Informações Úteis

Exibir filhos
pageInformações Uteis

Informações
title6 - Troubleshooting
  • Problemas de subida e descidas de dados ? Os dados não descem da retaguarda para o PDV e nem sobem do PDV para a Retaguarda ?
  • Problemas na descida de dados? Olhou no lojaloteRetorno e teve este retorno:


    Bloco de código
    titleLojaloteRetorno
    {
                        "tipoLote": 0,
                        "idRetaguarda": "00000000-0000-0000-0000-000000000000",
                        "erro": "Erro no Client ao integrar Produto Erro: 42P01: relation \"public.sync_carga_produto_validacao\" does not exist\r\n\r\nPOSITION: 15 20240814113448914 ",
                        "tipoLojaLote": 12,
                        "pagina": 0,
                        "hasnext": false
                    }

    Verifique a permissão de leitura e gravação da pasta TOTVSPDV

Informações
title7 - Solicitação de apoio

O time de produto do POSH atua no projeto DVARINT1, qualquer acionamento ao time de produto por outras equipes deverá ser feito através da abertura de apoios no jira.

Para que o apoio seja realizado, algumas informações devem ser enviadas previamente para que o time de produto possa dar início ao apoio. Segue abaixo o que deve ser enviado na abertura do apoio.

Segue os projetos existentes para abertura:  PDVSYNC - DVARINT / PSH - DVARLOJ / WSH - DDWMISSI / PDV - DVARLIVEPDV

Expandir
titleTemplate

1 - Qual a Jornada/processo?
R: 

2 - Qual o Ambiente?
R: 

3 - Qual é o Inquilino?
R: 

4 - Descrição do Erro
R: 

5 - Foi feito os Troubleshooting básicos?
R: 

6 - Qual versão dos serviços? (Api, Client, Down)
R:

7 - Incluir os logs se houver
R: 

8 - Existe(m) lote(s) relacionado(s) a esta caso? Qual o número(s) do(s) lote(s)?
R: 

9 - Disponibilizar backup do banco do PDV.

10 - ApiRest do cliente se houver (online):
URL: 
Usuário: 
Senha: 

11 - Qual  a requisição esta sendo feita para o PDVSync (online) ?

R:

12- Quais são os dados de autenticação (tenant/usuário) utilizados (online)  ?

R:

Informações
titleProcedimentos para Utilização
Expandir
titleRecuperar Informações
API PDVSync.Core.Controle StatusServicos