Árvore de páginas

Versões comparadas

Chave

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

...

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 sucesso
MessagestringCaso ocorra erros durante a criação do lote eles serão enviados nesse campo
DataobjetoObjeto lote criado

Data.LoteOrigem

stringNúmero de identificação do lote

Data.Mensagem

string

Data.Status

intStatus do lote
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
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 sucesso
MessagestringMensagem 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 lote.

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 criação do lote requisição foi feita realizada com sucesso
MessagestringCaso ocorra erros durante a criação do lote eles serão enviados nesse campo
DataobjetoObjeto 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ção
0InicioEnvioIndica 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 baixa
3ValidadoErroIndica 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 teremos várias 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/inquilinolotesexternos/{id lote externo}
  • Método: GET
  • Autenticação: Bearer token
  • Permissão: Retaguarda
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 sucesso
Messagestring

Mensagem de erro retornada 

DataobjetoObjeto de retorno

Data.Lote

stringNúmero de identificação do lojaLote

Data.Loteorigem

stringNúmero de identificação do lote
Data.Lojaloteslista de objetosLista com os loja lotes
Data.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 lote
Data.Lojalotes.Errosidentificados.IdretaguardastringId retaguarda do item
Data.Lojalotes.Errosidentificados.Erro

string

Erro ocorrido com o item
Data.Lojalotes.ErrosidentificadosTipolojaloteintIndio o tipo do loja lote do item
Data.IdretaguardalojastringId retaguada da loja proprietária do lote
Data.IdinquilinostringIdentificação do inquilino
Data.Dataatualizacaodatetimedata de atualização do loja lote
Data.Datacadastrodatetimedata de cadastro do loja lote
Data.IdintId do loja lote
PaginaintIndica em qual página está os dados
HasnextboolIndica se há mais páginas de dados
Expandir
titleStatus do loja lote
CódigoNomeDescrição
0EmPreparacao

Indica que o POSH está criando o loja lote

1EmProcessamentoIndica que o POSH está validando o loja lote
2DisponivelIndica que o loja lote está disponível para a baixa pelo PDV Omni
3IndisponivelIndica que o loja lote está indisponível para baixa pelo PDV Omni
4EmProcessoDeBaixaIndica que o loja lote está sendo baixado pelo PDV Omni
5BaixadoComSucessoIndica que todos os dados enviados para o loja lote foram integrados com sucesso ao PDV Omni
6BaixadoComErroIndica que ao menos um item deu erro na integração com o PDV Omni
7EnviadoComSucessoIndica que o loja lote foi envidado com sucesso para a retaguarda
8EnviadoComErroIndica que o loja lote não foi enviado com sucesso para a retaguarda
9ComProblemaVerificarIndica que ocorreu alguma problema com o loja lote e deve-se verificar
Informações
titleFluxogramas POSH
Expandir
titleFluxo Assíncrono (Offline)

Expandir
titleFluxo Síncrono (Online)

...