Objetivo

Propor e definir um padrão de documentação para o PDVSync, considerando integração com o PDV, organização clara dos dados e alinhamento entre os times envolvidos.

Descrição

Atualmente, a documentação do PDVSync apresenta problemas de fluidez e clareza, especialmente em relação às diferentes versões existentes e à integração com tabelas do PDV. Por vezes, dados relacionados a tabelas distintas do PDV são tratados na mesma API do Sync, o que resulta em descentralização de informações e dificuldade de uso.

Em discussões identificamos até o momento duas soluções de como resolver este problema, conforme descritas abaixo.

Soluções

Solução 1 - Documentação separada: PDVSync 





1️⃣ Modelo da Doc da API 1: Apenas os dados da API

Este formato foca exclusivamente nos campos da API, sem mencionar sua relação com o produto.

CampoTipoObrigatórioDescrição
idintSimIdentificador único do usuário
namestringSimNome do usuário
emailstringSimEndereço de e-mail do usuário
created_atstringNãoData de criação do usuário (ISO 8601)



2️⃣ Modelo da Doc da API 2: Relacionando os dados da API com o produto

Aqui, a documentação explica como os campos da API interagem com o produto.

CampoTipoObrigatórioDescriçãoOnde aparece no produto (no nosso caso os campos do PDV)
idintSimIdentificador único do usuárioID exibido na tela de detalhes do usuário
namestringSimNome do usuárioTabela: Nome - Campo - nome_usuario
emailstringSimEndereço de e-mail do usuárioE-mail mostrado no perfil do usuário e nas notificações
created_atstringNãoData de criação do usuário (ISO 8601)Data de registro visível na aba "Histórico" do painel de administração


Vantagens Modelo 2:

Desvantagens Modelo 2:

Pontos de melhoria - Solução 1


Solução 2 - Unificando a documentação: PDVSync com PDV





Pontos de melhoria - Solução 2


Modelo da Doc de API geral


A Regra Desconto Acréscimo poderá ter a seguintes informações:



Este método é responsável pela criação de uma regra de desconto

  • Endpoint: /api/retaguarda/v3/dadosdinamicos/down/59/{versão}
  • Método: Post
  • Autenticação: Bearer token
  • Permissão: Retaguarda
  • Microserviço: PDVSync.Core.Preco

Este endpoint recebe uma lista de regra de desconto e acrescimo, permitindo vários em uma mesma requisição.

Para que a baixa da regra de desconto e acrescimo criado ocorra no PDV Omni é necessário realizar a abertura de um lote do tipo 59 = regradescontoacrescimo

É necessário que o inquilino tenha o parametro 59 - regradescontoacrescimo cadastrado no controle.

Requisição

Exemplo de body da requisição

[
    {
        "dataHoraVigenciaFinal": "2021-06-21T14:43:18.665Z",
        "dataHoraVigenciaInicial": "2021-06-21T14:43:18.665Z",
        "idInquilino": "string",
        "idProprietario": "string",
        "idRetaguarda": "string",
        "idRetaguardaCategoria": "string",
        "idRetaguardaCliente": 10,
        "idRetaguardaDepartamento": "string",
        "idRetaguardaFornecedor": "string",
        "idRetaguardaMarca": "string",
        "idRetaguardaPagamentoCondicao": "string",
        "idRetaguardaPraca": "string",
        "idRetaguardaProduto": "string",
        "idRetaguardaProdutoEmbalagem ": "string",
        "idRetaguardaRamoAtividade": "string",
        "idRetaguardaRede": "string",
        "idRetaguardaRegiao": "string",
        "idRetaguardaRestricaoPagamentoCondicao": "string",
        "idRetaguardaSecao": "string",
        "idRetaguardaSubCategoria": "string",
        "loteOrigem": "string",
        "prioritaria": true,
        "quantidadeFinal": 10,
        "quantidadeInicial": 10,
        "situacao": 10,
        "tipo": 10,
        "valor": "string"
    }
]

Definições dos campos do body

Campo

Tipo

Descrição

Obrigatório

Observações

idInquilino

string

Identificador do inquilinoSim
idProprietariostringIdentificador do proprietárioSim
idRetaguardastringIdentificador do grupo na retaguardaSimTamanho máximo: 100 caracteres
dataHoraVigenciaInicialdatetimeData Inicial da vigência da regraSim
dataHoraVigenciaFinaldatetimeData Final da vigência da regraSim
loteOrigemstringIdentificador do loteSim
situacaoIntSituação do grupoSim0 - Inativo , 1 - ativo
tipoIntTipo da regra Sim0 - desconto, 1 - Acrescimo
valorstringValorSim
quantidadeInicialIntQuantidade InicialNão
quantidadeFinalIntQuantidade FinalNão
idRetaguardaPagamentoCondicaostringIdRetaguarda do pagamento condicaoNãoTamanho máximo: 100 caracteres
idRetaguardaRestricaoPagamentoCondicaostringIdRetaguarda da restrição pagamento condiçãoNãoTamanho máximo: 100 caracteres
idRetaguardaRegiaostringIdRetaguarda da Regiao Não
idRetaguardaPracastringIdRetaguarda da PracaNãoTamanho máximo: 100 caracteres
idRetaguardaRamoAtividadestringIdRetaguarda do Ramo de atividadeNão
idRetaguardaRedestringIdRetaguarda da RedeNãoTamanho máximo: 100 caracteres
idRetaguardaClientestringIdRetaguarda do Cliente Não
idRetaguardaProdutostringId Retaguarda do ProdutoNão
idRetaguardaFornecedorstringIdRetaguarda do fornecedorNãoTamanho máximo: 100 caracteres
idRetaguardaCategoriastringIdRetaguarda da categoriaNãoTamanho máximo: 100 caracteres
idRetaguardaSubCategoriastringIdRetaguarda subcategoriaNãoTamanho máximo: 100 caracteres
idRetaguardaDepartamentostringIdRetaguarda do departamentoNãoTamanho máximo: 100 caracteres
idRetaguardaProdutoEmbalagemstringidRetaguarda da embalagem do produtoNãoTamanho máximo: 100 caracteres
prioritariabooleanRegra prioritariaNão
idRetaguardaMarcastringIdRetaguarda da MarcaNãoTamanho máximo: 100 caracteres
idRetaguardaSecaostringIdRetaguarda da SecaoNãoTamanho máximo: 100 caracteres

Retorno

Exemplo de body de retorno

{
    "data": null,
    "errors": null,
    "message": null,
    "numberOfRecords": 8,
    "success": true,
    "totalTime": 2061
}

Definições dos campos do retorno

Campo

Tipo

Descrição

dataObjetoRetorno dos dados caso tenha
errorsObjeto

Objeto contendo todos os erros encontrados.

messageString

Descrição do erro

numberOfRecordsIntNúmero de arquivos processados
successBoolStatus da requisição
totalTimeIntTempo total

Exemplo de body de retorno

{
    "data": null,
    "errors": {
        "0": {
            "IdRetaguarda": [
                ""
            ]
        }
    },
    "message": null,
    "numberOfRecords": 9,
    "success": false,
    "totalTime": 4077
}

Definições dos campos do retorno

Campo

Tipo

Descrição

dataObjetoRetorno dos dados caso tenha
errorsObjeto

Objeto contendo todos os erros encontrados.

Cada propriedade desse objeto é o índice do grupo enviado que está com erro.

messageString

Descrição do erro

numberOfRecordsIntNúmero de arquivos processados
successBoolStatus da requisição
totalTimeIntTempo total