Á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

Informações
title1 - Procedimentos para Configuração
  • PDVSync - Implantação cliente - Passo a passo
  • Como se autenticar no POSH
  • Informações
    false

    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.

    {
        "status":0,
        "tipoLote":[
            17
        ],
        "idInquilino":"{{IdInquilino}}"
    }
    Informações
    title2 - Envio de dados com o POSH
    Expandir
    icon
    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
    Expandir
    titleBody da requisição
    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

    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
    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

    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 - Quais as datas / 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 - ApiRest do cliente se houver:
    URL: 
    Usuário: 
    Senha: 

    10 - Qual  a requisição esta sendo feita para o PDVSync ?

    R:

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

    R:

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