Árvore de páginas

Índice 

1.  PDVSync

PDVSync é a camada responsável por orquestrar as operações de sincronização de dados entre o TOTVS PDV Omnishop e as suas respectivas retaguardas/ERPs.

Toda comunicação entre a retaguarda/ERP e o PDV Omnishop será executada e orquestrada pelo PDVSync

O PDVSync é composto por dois componentes principais:

  • O PDVSync Server: Conjunto de APIs, serviços e bases de dados hospedados em nuvem pública responsáveis pela execução, orquestração e controle das sincronizações entre PDVs e retaguardas/ERPs e vice-versa. 
  • PDVSync Client: Serviço instalado no pacote do PDV Omnishop que será responsável por fazer a comunicação entre o PDV e o PDVSync Server, conforme ilustração a seguir:







2. Fluxo de integração  entre o ERP e PDVSync





Exemplo de Fluxo de chamadas de API´s com Abertura de lote, Fechamento de Lote e Solicitação de Retorno do Status do Lote Enviado.

  1. Devemos Abrir um Lote
    1. Esta abertura deve ocorrer antes do envio de um lote de informações para o PDVSync é neste momento que informamos para o PDVSync quais informações estarão no lote de dados enviados. Para o exemplo estaremos enviando as informações de "compartilhamentos" e "lojas" e no final estaremos informando o PDVSync que encerramos o envio de informações.
  2. /api/retaguarda/inquilinolotesexternos → POST                                             Fazemos a abertura do Lote
  3. /api/retaguarda/compartilhamentos → POST                                                  Enviamos os dados da API de Compartilhamentos
  4. /api/retaguarda/lojas → POST                                                                            Enviamos os dados da API de Loja
  5. /api/retaguarda/inquilinolotesexternos/{idInquilino}/{lote} → PUT              Fazemos o encerramento do Lote
  6. Após o encerramento do Lote de envio de informações, poderemos solicitar informações sobre o processamento e validação deste lote de informação.
  7. /api/retaguarda/LoteExternoRetornos/{idInquilino}/{loteOrigem} → GET    Nesta chamada pedimos a informação para o PDVSync sobre um determinado lote que ja foi encerrado.


OBS: Todos Schemas e Retornos disponíveis estão no Swagger.



3. Conceitos de ID Inquilino / ID Retaguarda / ID Proprietário

IDInquilino : OMXKpmP8hVjbqE

Código que identifica toda uma estrutura de Redes, Franquias, Centrais, Lojas e todos os dados enviados e recebidos no PDVSync dentro do ambiente SaaS.

Hoje este código é fornecido pela equipe de produto no início dos trabalhos para se conectar com o PDVSync.


IDRetaguarda : 

Código que identifica todas as informações enviadas para a PDVSync, em todas as entidades seus registros possuem um IDRetaguarda no ERP/Retaguarda. 

Este código é de controle do ERP/Retaguarda e deve ser único  para um registro de informação (tabela) de um IDInquilino. O ID Retaguarda é o código comum entre o ERP/Retaguarda e o PDVSync, todas os registros tem a informação de ID Retaguarda.

Exemplos:

Produto, o ID Retaguarda identifica o produto no ERP/Retaguarda.

Cliente, o ID Retaguarda identifica o cliente no ERP/Retaguarda.

Loja, o ID Retaguarda identifica a loja no ERP/Retaguarda.


IDProprietário : 

Código que identifica o proprietário da informação enviada para PDVSync.

Este código determina na estrutura da “Compartilhamento”, todas as lojas abaixo do ID Proprietário que deverão receber os dados enviados para o PDVSync.


Exemplo (01) de uma Estrutura de Rede ou Franquia com Centrais e Lojas.

No exemplo abaixo temos uma estrutura com o ID Inquilino = OAKLMImP8hVjbqE e com ID Retaguarda da (loja, central ou rede) e ID Proprietário sendo o mesmo código para o conjunto de lojas e Rede e centrais e seus próprios nomes são os códigos e lembrando que podem ser qualquer informação do ERP/Retaguarda (nome, código, CNPJ).

Lembrando que o ID Retaguarda é determinado pelo ERP/Retaguarda e tem que ser único para uma loja, central e Rede/Franqueadora dentro da estrutura utilizada em um ID Inquilino.


                                                   


Exemplo (02) de uma Estrutura de Rede ou Franquia com Lojas.

No exemplo abaixo temos uma estrutura com o ID Inquilino = OAKLMImP8hVjbqE e o ID Retaguarda da (loja, central ou rede)do conjunto de lojas e Rede são seus próprios nomes e podem ser qualquer informação do ERP/Retaguarda (nome, código, CNPJ).

Lembrando que o ID Retaguarda é determinado pelo ERP/Retaguarda e tem que ser único para uma loja, central e Rede/Franqueadora dentro da estrutura utilizada em um ID Inquilino.

                                 



4. Domínios Microsserviços

Para o PDVSync foram definidos microsserviços independentes, levando em consideração a utilização e afinidade das informações trafegadas e armazenadas.

Os microsserviços foram divididos em:



5. Controle

No MicroServiço controle, com relação a comunicação com o ERP/Retaguarda, temos as informações de Abertura e Fechamento do Lote de envio de dados e o retorno do Lote enviado, informando sucesso das informações entregues no PDVSync ou qual o erro encontrado e a estrutura de lojas na Compartilhamento, esta responsável por determinar quais lojas irão receber qual informação entregue no PDVSync.

Abaixo temos mais informações sobre cada EndPoint utilizado na comunicação com o ERP/Retaguarda.


O microserviço de controle está disponível na url

5.1 Compartilhamento

A API compartilhamento é de extrema importância para que o PDVSync saiba onde entregar as informações enviadas em todos as API´s, ou seja, através da composição dos dados da compartilhamento o PDVSync sabe quem é o dado enviado tem um ID Proprietário e este na compartilhamento tem quem são as lojas que devem receber as informações enviadas com um ID Proprietário.

         Segue um exemplo da compartilhamento para a estrutura abaixo.


              


           



          




                                               

Exemplo de uma Estrutura e compartilhamento onde temos um ID Proprietário que não pertence a estrutura de lojas, centrais e Rede, o qual é chamado de "Região Interior" e esta região interior é composta pelas lojas (02, 03 e 04). Este tipo de agrupamento na compartilhamento pode ser usado de forma negocial onde pode-se ter uma Cidade, UF, Região, Lojas de Rua, Lojas de Shopping e etc. Com esta estrutura lógica, o ERP/Retaguarda pode enviar configurações para a compartilhamento que venha atender o envio de dados para os agrupamentos de Lojas.


                                          

        

                                  


CampoTipoTamanhoObrigatórioDescrição
idRetaguardaString100SimIdentificador do compartilhamento no ERP/Retaguarda
idProprietarioString100Sim

Código que identifica o proprietário da informação enviada para PDVSync.

Este código determina na estrutura da “Compartilhamento”, todas as lojas abaixo do ID Proprietário que deverão receber os dados enviados para o PDVSync.

nomeCompartilhamentoString100SimNome do compartilhamento que está sendo criado
nivelString2SimDefine o nível hierárquico da informação no compartilhamento que está sendo criado
idRetaguardaLojaString100SimIdentificador da loja no ERP/Retaguarda
idInquilinoString100SimIdentificador da estrutura de redes, franquias, centrais e lojas
dataAtualizacaoString26SimData/hora do envio
dataCadastroString26SimData/hora do cadastro 



POST ​/api​/retaguarda​/compartilhamentos
{
"idRetaguarda": "a5c20fa2942342188cacabec8b9da543",
"idProprietario": "1639797f5ce64843a73711d919dad5e7",
"nomeCompartilhamento": "Master",
"nivel": 0,
"idRetaguardaPai": "",
"idRetaguardaLoja": "",
"idInquilino": "OMXKpmP8hVjbqExUN7sa"
},
{
"idRetaguarda": "998e4779609b45aa9f09ba04da1eb81e",
"idProprietario": "693325a343724ff0920fa368377ccd19",
"nomeCompartilhamento": "Central",
"nivel": 1,
"idRetaguardaPai": "a5c20fa2942342188cacabec8b9da543",
"idRetaguardaLoja": "",
"idInquilino": "OMXKpmP8hVjbqExUN7sa"
},
{
"idRetaguarda": "1e6186cbdf4345d7bdcafc862510f31d",
"idProprietario": "57348546ff964e9aa63517e829f33f6d",
"nomeCompartilhamento": "Loja 01",
"nivel": 2,
"idRetaguardaPai": "998e4779609b45aa9f09ba04da1eb81e",
"idRetaguardaLoja": "1d7556c01a604bf28dc4cb1ac4a4ae2f",
"idInquilino": "OMXKpmP8hVjbqExUN7sa"
},
{
"idRetaguarda": "91fd568a3e2748cab760b15731447abc",
"idProprietario": "06df84c10a3049ed9e359dc24d37d5a2",
"nomeCompartilhamento": "Loja 02",
"nivel": 2,
"idRetaguardaPai": "998e4779609b45aa9f09ba04da1eb81e",
"idRetaguardaLoja": "7f16bb7c5b8b4d00821af3b8de08f221",
"idInquilino": "OMXKpmP8hVjbqExUN7sa"
}


5.2 InquilinoLoteExterno

A API InquilinoLoteExterno deverá ser utilizada pela ERP/Retaguarda para iniciar, encerrar e consultar o status do processo de integração com o PDVSync. 

O ERP/Retaguarda poderá ter em aberto apenas um lote por inquilino, caso tenha a necessidade de iniciar uma nova integração é necessário encerrar o lote aberto para solicitar uma nova integração. 


 ABERTURA → EndPoint -  /api/retaguarda/inquilinolotesexternos - POST

Para que a integração seja realizada o ERP/Retaguarda deverá solicitar um lote para o PDVSyn, onde deverá informar o inquilino e quais tipos de dados serão integrados.


Parâmetros de entrada:

CampoTipoDescrição
statusEnum

Para iniciar a integração é necessário que o ERP/Retaguarda envie o status:

0 - InicioEnvio

tipoLoteEnum

Tipo da informação que será integrada com o PdvSync, sendo:
0- Cliente
1-Loja
2-Motivo
3-Usuario
4-Estoque
5-FcpProduto
6-Compartilhamento
7-Imposto
8-Ncm
9-PisCofin
10-TributoNcm
11-Preco
12-ClassificacaoProduto
13-Produto

idInquilinoString Identificador da estrutura de redes, franquias, centrais e lojas
POST /api/retaguarda/inquilinolotesexternos
{
    "status": "InicioEnvio",
    "tipoLote": [1,6],
    "idInquilino": "QRXBxobJ11Yr5H93h5ON"
}


Parâmetros de saída: 


CampoTipoTamanhoObrigatórioDescrição
sucess



message



loteOrigem



mensagem



status



tipoLote




FECHAMENTO → EndPoint - /api/retaguarda/inquilinolotesexternos/{idInquilino}/{lote} - PUT

Esta API é responsável por avisar o PDVSync que o envio das informações foi concluída, para que inicie o processo de validação e envio para as Lojas.

Detalhes sobre a API estão no MicroServiço https://pdvsync-core-controle-dev-aadivv24nq-ue.a.run.app/swagger/index.html , Módulo INQUILINOLOTEEXTERNO


CampoTipoTamanhoObrigatórioDescrição








































PUT ​/api​/retaguarda​/inquilinolotesexternos​/{inquilino}​/{lote}
 

5.4 Lote Externo Retornos - INQUILINOLOTEEXTERNO




6. Dados Básicos

6.1 Loja - LOJAS

 EndPoint - /api/retaguarda/lojas - POST

Esta API tem como objetivo o cadastro das lojas que estarão operando com o PDV OmniShop e utilizarão o PDVSync para integração.

Detalhes sobre a API estão no MicroServiço https://pdvsync-core-dadosbasicos-dev-aadivv24nq-ue.a.run.app/swagger/index.html, Módulo LOJA


CampoTipoTamanhoObrigatoriedadeDescrição
razaoSocialString50SimRazão social da loja.
nomeFantasiaString50SimNome fantasia da loja.
cnpjString14SimCNPJ da loja.
inscricaoEstadualString15SimInscrição Estadual da Loja
inscricaoMunicipalString15NãoInscrição Municipal da Loja
enderecoString200SimEndereço da Loja
numeroString10SimNúmero da Loja
complementoString100NãoComplemento do Endereço da Loja
bairroString150SimBairro da Loja
cidadeString150SimCidade da Loja
estadoString60SimEstado da Loja
siglaUfString2SimSigla do Estado da Loja (UF)
codigoUFIBGEString2SimCódigo da UF no IBGE
codigoMunicipioIbgeString50SimCódigo do Município do IBGE
cepString10SimCEP da Loja
telefoneString20SimTelefone da Loja
codigoIdentificacaoLojaString20SimCódigo de Identificação da Loja
modeloFiscalString1Não

Modelo Fiscal da Loja:
0 - Não Configurado
1 - SAT
2 - NFC-e
3 - MFE

A configuração do modelo fiscal da loja poderá ser realizado através do configurador do PDV

regimeTributarioString1SimEnquadramento Fiscal da Loja
0 - Simples Nacional
1 - Normal
redeString40SimDescrição da REDE no ERP/Retaguarda
numeroLojaString30SimCóidgo da Loja no ERP/Retaguarda
idInquilinoString
SimCódigo do Inquilino o qual a Loja pertence
idRetaguardaString
SimCódigo da Loja no ERP/Retaguarda
idProprietarioDateTime
SimCódigo do Proprietário da informação, no caso da Loja é o próprio ID Retaguarda
loteOrigemInteger
SimNúmero do lote que está sendo integrado, disponibilizado pelo PDV Sync ao ERP na abertura da integração
loteInteger
NãoInformação do PDV Sync, não integrado pelo ERP


6.2 Motivo

EndPoint - /api/retaguarda/motivos - POST

Esta API tem como objetivo o cadastro de motivos (Motivo de Desconto/Acréscimo, Motivo de Cancelamento, Motivo Devolução/Troca, Motivo de Suprimento e Motivo de Sangria) nas lojas que estarão operando com o PDV OmniShop e utilizarão o PDVSync para integração.

O PDV OmniShop não exige o tipo do Motivo para as operações, caso não exista o tipo com seus motivos o PDV OmniShop não solicitará a informação.

Detalhes sobre a API estão no MicroServiço https://pdvsync-core-dadosbasicos-dev-aadivv24nq-ue.a.run.app/swagger/index.html, Módulo MOTIVO


CampoTipoTamanhoObrigatoriedadeDescrição
DescriçãoString
SimDescrição do Motivo
TipoInteger
Sim

Tipo do Motivo utilizado :

AcrescimoDesconto =  0

TrocaDevolucao        = 1

CancelamentoVenda = 5

Sangria                      = 6

Suprimento               = 7

SituaçãoInteger
Sim

Situação do Motivo.

1 - Ativo

0 - Inativo

idString
NãoCampo Interno do PDVSync
idInquilinoString100SimCódigo do Inquilino o qual a Loja pertence
idRetaguardaString100SimCódigo da Loja no ERP/Retaguarda
dataAtualizacaoDateTime
NãoCampo Interno data da atualização no PDVSync
dataCadastroDateTime
NãoCampo Interno data de cadastro no PDVSync
idProprietarioString100SimCódigo do Proprietário da informação, no caso da Loja é o próprio ID Retaguarda
loteOrigemInterger
SimNúmero do lote que está sendo integrado, disponibilizado pelo PDVSync ao ERP na abertura da integração
loteInterger
NãoCampo Interno Informação do PDVSync, 

6.2 Usuário

EndPoint - /api/retaguarda/motivos - POST

Esta API tem como objetivo o cadastro de motivos (Desconto,  Cancelamento) nas lojas que estarão operando com o PDV OmniShop e utilizarão o PDVSync para integração.

Detalhes sobre a API estão no MicroServiço https://pdvsync-core-dadosbasicos-dev-aadivv24nq-ue.a.run.app/swagger/index.html, Módulo MOTIVO


CampoTipoTamanhoObrigatoriedadeDescrição
DescriçãoString100SimDescrição do Motivo
TipoInteger
SimTipo do Motivo utilizado
0 -
1 -
SituaçãoInteger
SimAituação do Motivo
idString
Não
idInquilinoString100SimCódigo do Inquilino o qual a Loja pertence
idRetaguardaString100SimCódigo da Loja no ERP/Retaguarda
dataAtualizacaoDateTime
NãoData da Atualização no PDVSync
dataCadastroDateTime
NãoData de Cadastro no PDVSync
idProprietarioString100SimCódigo do Proprietário da informação, no caso da Loja é o próprio ID Retaguarda
loteOrigemInterger
SimNúmero do lote que está sendo integrado, disponibilizado pelo PDV Sync ao ERP na abertura da integração
loteInterger
NãoInformação do PDV Sync, não integrado pelo ERP

7. Produto

7.1 Produto

API com um método Post, Get, Put e Delete para o ERP possa ser enviar o cadastro de produtos no PDVSync.

Parâmetros de entrada: 

CampoTipoTamanhoObrigatoriedadeDescrição
IdInquilinoString
SimIdentificador do inquilino no PDV Sync
IdProprietarioString
SimIdentificador do proprietário da informação, deve ser enviada a mesma informação criada na API de Compartilhamento, pois ela irá definir para quais lojas a informação deverá ser distribuída.
IdRetaguardaString100SimIdentificador do produto no ERP
LoteInteger
NãoInformação do PDV Sync, não integrado pelo ERP
LoteOrigemInteger
SimNúmero do lote que está sendo integrado, disponibilizado pelo PDV Sync ao ERP na abertura da integração
dataAtualizacaoDateTime
NãoData de atualização do registro
dataCadastroDateTime
NãoData de cadastro do registro
IdRetaguardaImpostoString100NãoIdentificador do cadastro de alíquota do qual o produto está associado. A informação não é envio obrigatório, mas sua ausência irá impedir a venda do produto no PDV.
IdRetaguardaNcmString100NãoIdentificador do cadastro de NCM do qual o produto está associado. A informação não é envio obrigatório, mas sua ausência irá impedir a venda do produto no PDV.
IdRetaguardaPisCofinsString100NãoIdentificador do cadastro de PIS e Cofins do qual o produto está associado. A informação não é envio obrigatório, mas sua ausência poderá impedir a venda do produto no PDV. Exigido no modelo fiscal SAT e opcional para o modelo fiscal NFCe
DescricaoString200SimDescrição do produto que será utilizado para venda e pesquisa.
UnidadeMedidaString20SimUnidade de medida do produto, exemplo: UN, PC, KG
DescontoMaximoN/AN/AN/AItem descontinuado , enviar o valor padrão 99
TipoArredondaTruncaString1SimIndicador de Arredondamento ou Truncamento para geração do arquivo "Registros do PAF-NFCe" solicitados no modelo fiscal PAF-NFCe. Sendo:
A - Arredondamento
T - Truncamento
CodigoProdutoString20SimCódigo do produto que será utilizado para venda e pesquisa
CodigoAlternativo
40NãoCódigo alternativo do produto, por exemplo código de barras. O código será utilizado para venda e pesquisa.
OrigemProduto
20SimOrigem do produto, sendo:
0 - Nacional
1 - Importado
SituacaoInteger
SimSituação de venda do produto, podendo ser:
0 - Inativo
1 - Ativo
ImagemN/AN/AN/AItem descontinuado
TipoProdutoInteger
SimIdentificador do tipo do produto, podendo ser:
1 - Consumo
2 - Revenda
3 - Kit
6 - Serviço
Quando informado um produto do tipo KIT, é obrigatório o envio do campo produto.kit com os produtos associados ao kit
FracionadoBooleanN/ASimIndicador para definir se o produto poderá ser vendido com quantidade fracionada
CnpjFornecedorString20NãoCNPJ do fabricante do produto quando produto não é fabricado em escala relevante, conforme Nota Técnica 2016.002
EscalaRelevanteBoolean
SimIndicador de produção em escala relevante, conforme Nota Técnica 2016.002
ValorBaseFcpNumeric
NãoValor da Base de Cálculo do Fundo de Combate a Pobreza, conforme NFCe 4.0
CodigoBeneficioFiscalString20NãoCódigo de Benefício Fiscal, onde deve ser informado o tipo de incentivo tributário que a empresa/produto está recebendo, conforme Nota Técnica 2019.001 versão 1.2
PercentualFcpNumeric
NãoPercentual do Fundo de Combate à Pobreza, conforme NFCe 4.0
CstIcmsN/AN/AN/AAvaliando
PercentualReducaoIcmsN/AN/AN/AAvaliando
AliquotaIcmsN/AN/AN/AAvaliando
VlicmsretNumeric
NãoValor do ICMS retido anteriormente, conforme Nota Técnica 2018.005
MotivoDesoneracaoIcmsInteger
NãoMotivo de desoneração do ICMS, conforme Nota Técnica
DescontaDesoneracaoNfBoolean
NãoIndicador se o PDV deverá descontar o valor de desoneração do total da venda
CestString7NãoCódigo Especificador da Substituição Tributária do produto. A informação não é envio obrigatório, mas sua ausência irá impedir a venda do produto com alíquota do tipo substituição tributária.
produtoKitsList
NãoLista com os produtos associados ao Kit, obrigatório quando o TipoProduto for igual a 3.
produtoKits.IdRetaguardaProdutoString100SimIdentificador do produto no ERP
produtoKits.IdRetaguardaProdutoKitString100SimIdentificador
produtoKits.DescricaoString200SimDescrição do produto que será utilizado para venda e pesquisa.
produtoKits.QuantidadeVendaKitInteger
SimQuantidade de venda do produto no Kit
produtoKits.TipoValorKitInteger
SimVerificar os tipos!
produtoKits.SituacaoInteger
SimSituação de venda do produto, podendo ser:
0 - Inativo
1 - Ativo
produtoKits.ValorDesconto



produtoKits.NovoValorUnitario



produtosSimilares



produtosSimilares.Id



produtosSimilares.IdInquilino



produtosSimilares.IdRetaguarda



produtosSimilares.IdProprietario



produtosSimilares.Lote



produtosSimilares.LoteOrigem



produtosSimilares.IdRetaguardaProduto



produtosSimilares.Situacao



produtosSimilares.IdRetaguardaSimilar



ProdutosSugestoes



produtosSimilares.Id



ProdutosSugestoes.IdInquilino



ProdutosSugestoes.IdRetaguarda



ProdutosSugestoes.IdProprietario



ProdutosSugestoes.Lote



ProdutosSugestoes.LoteOrigem



ProdutosSugestoes.IdRetaguardaProduto



ProdutosSugestoes.Situacao



ProdutosSugestoes.IdRetaguardaSugestao



codigosProduto



codigosProduto.codigo



codigosProduto.descricao



codigosProduto.idRetaguarda



codigosProduto.dataAtualizacao



codigosProduto.dataCadastro



codigosProduto.situacao



associacaoProdutosClassificacao



CampoTipoTamanhoObrigatoriedadeDescrição





IdProprietario



Lote



LoteOrigem



IdRetaguardaImposto



IdRetaguardaNcm



IdRetaguardaPisCofins



Descricao



UnidadeMedida



DescontoMaximo



TipoArredondaTrunca



CodigoProduto



CodigoAlternativo



OrigemProduto



Situacao



Imagem



TipoProduto



Fracionado



CnpjFornecedor



EscalaRelevante



ValorBaseFcp



CodigoBeneficioFiscal



PercentualFcp



CstIcms



PercentualReducaoIcms



AliquotaIcms



Vlicmsret



MotivoDesoneracaoIcms



DescontaDesoneracaoNf



Cest



produtoKits



produtoKits.Id



produtoKits.IdInquilino



produtoKits.IdRetaguarda



produtoKits.IdProprietario



produtoKits.Lote



produtoKits.LoteOrigem



produtoKits.IdRetaguardaProduto



produtoKits.IdRetaguardaProdutoKit



produtoKits.Descricao



produtoKits.QuantidadeVendaKit



produtoKits.TipoValorKit



produtoKits.Situacao



produtoKits.ValorDesconto



produtoKits.NovoValorUnitario



produtosSimilares



produtosSimilares.Id



produtosSimilares.IdInquilino



produtosSimilares.IdRetaguarda



produtosSimilares.IdProprietario



produtosSimilares.Lote



produtosSimilares.LoteOrigem



produtosSimilares.IdRetaguardaProduto



produtosSimilares.Situacao



produtosSimilares.IdRetaguardaSimilar



ProdutosSugestoes



produtosSimilares.Id



ProdutosSugestoes.IdInquilino



ProdutosSugestoes.IdRetaguarda



ProdutosSugestoes.IdProprietario



ProdutosSugestoes.Lote



ProdutosSugestoes.LoteOrigem



ProdutosSugestoes.IdRetaguardaProduto



ProdutosSugestoes.Situacao



ProdutosSugestoes.IdRetaguardaSugestao



codigosProduto



codigosProduto.codigo



codigosProduto.descricao



codigosProduto.idRetaguarda



codigosProduto.dataAtualizacao



codigosProduto.dataCadastro



codigosProduto.situacao




Exemplo de chamada POST:

POST /api/retaguarda/produtos
[{
        "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
        "IdProprietario": "78965",
        "IdRetaguarda": "12356",
        "Lote": 12345698765,
        "LoteOrigem": "20210420135510963",
        "IdRetaguardaImposto": "6lnnB85sauBB3nZeGX08",
        "IdRetaguardaNcm": "7nnnB85sauBB3nZeGX08",
        "IdRetaguardaPisCofins": "8unnB85sauBB3nZeGX08",
        "Descricao": "Produto 12222 Completo",
        "UnidadeMedida": "UN",
        "DescontoMaximo": 10,
        "TipoArredondaTrunca": "01",
        "CodigoProduto": "56987",
        "CodigoAlternativo": "56987",
        "OrigemProduto": "0",
        "Situacao": 1,
        "Imagem": "alksjdkjaskdjalskdjaisudoi23u4o2i34534h563kj5464k5jh61l2k42l3542m34h5k3jg465k34jh5453j4h5k3j4h5k3j4h545l34jh54l63k4jh6l3k4jh536l34u54y63i4u54y63k4j5h6l34jh6i34u54y6893745yt3489u5ht93458jt9304u5t3904j58t9034j58t9034u5t",
        "TipoProduto": 1,
        "Fracionado": true,
        "CnpjFornecedor": "25362415680001",
        "EscalaRelevante": true,
        "ValorBaseFcp": 0,
        "CodigoBeneficioFiscal": "AB",
        "PercentualFcp": 1,
        "CstIcms": "CST",
        "PercentualReducaoIcms": 1,
        "AliquotaIcms": 1,
        "Vlicmsret": 1,
        "MotivoDesoneracaoIcms": 1,
        "DescontaDesoneracaoNf": false,
        "Cest": "Cest",
        "produtoKits": [{
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "IdRetaguardaProdutoKit": "1234558",
                "Descricao": "Kit Teste 01",
                "QuantidadeVendaKit": 10,
                "TipoValorKit": 1,
                "Situacao": 1,
                "ValorDesconto": 1,
                "NovoValorUnitario": 58
            }, {
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "IdRetaguardaProdutoKit": "1234558",
                "Descricao": "Kit Teste 01",
                "QuantidadeVendaKit": 10,
                "TipoValorKit": 1,
                "Situacao": 1,
                "ValorDesconto": 1,
                "NovoValorUnitario": 58
            }, {
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "IdRetaguardaProdutoKit": "1234558",
                "Descricao": "Kit Teste 01",
                "QuantidadeVendaKit": 10,
                "TipoValorKit": 1,
                "Situacao": 1,
                "ValorDesconto": 1,
                "NovoValorUnitario": 58
            }
        ],
        "produtosSimilares": [{
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "Situacao": 1,
                "IdRetaguardaSimilar": "1234558"
            }, {
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "Situacao": 1,
                "IdRetaguardaSimilar": "1234558"
            }
        ],
        "ProdutosSugestoes": [{
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "Situacao": 1,
                "IdRetaguardaSugestao": "1234558"
            }, {
                "Id": "6lnnB85sauBB3nZeGX08",
                "IdInquilino": "V3uEWOAdRCTLUJX7eedZ",
                "IdRetaguarda": "78965",
                "IdProprietario": "78965",
                "Lote": 12345698765,
                "LoteOrigem": "20210420135510963",
                "IdRetaguardaProduto": "132216354",
                "Situacao": 1,
                "IdRetaguardaSugestao": "1234558"
            }
        ],
        "codigosProduto": [{
                "codigo": "56987",
                "descricao": "CodigoProduto",
                "idRetaguarda": "av25e1d2a3de2df1",
                "dataAtualizacao": "2021-05-11T14:22:18.816Z",
                "dataCadastro": "2021-05-11T14:22:18.816Z",
                "situacao": "1"
            }, {
                "codigo": "7892509156987",
                "descricao": "CódigoBarras",
                "idRetaguarda": "12faserytgf123sdfg",
                "dataAtualizacao": "2021-05-11T14:22:18.816Z",
                "dataCadastro": "2021-05-11T14:22:18.816Z",
                "situacao": "1"
            }
        ]
    }
]


7.2 Classificacoesproduto


8. Preço


9. Formas de Pagamentos


10. Clientes

11. Estoque

12. Impostos

12.1 FCP Produto

12.2 Imposto

12.3 NCM

12.4 Tributo NCM

12.5 PIS/Cofins


13. Comercial 

13.1 Promoção SMS

13.2 Campanhas Promocionais 

13.3 Metas 


14. Fila Sync para o ERP

15. Dados Síncronos

16. Pré-requisitos

Pre-Requisitos para instalação do Client:

  • PDVSync OmniShop instalado.
  • Configuração de variáveis de ambiente:
    • Função para definir qual é o ambiente o Client irá apontar (Produção = Production, Homologação = Quality, ou Desenvolvimento = Development):
      •  DOTNET_ENVIRONMENT
      • ASPNETCORE_ENVIRONMENT
    • Definição das credenciais necessárias para gravar o log centralizado:
      •  LOGCENTRAL_LOGIN
      •  LOGCENTRAL_SENHA
      • LOGCENTRAL_URL
  • Node.Js
    • Fazer o download do instalador do Node.Js em https://nodejs.org/en/download/.
    • Instalar a versão 16.0 ou superior. Seguir os passos da instalação até a conclusão.
  • .NET
  • Conhecimento básico da ferramenta do Postman.
  • Solicitar para o suporte via ticket:
    • Credenciais para viabilizar as criações dos dados iniciais do PDVSync. Conforme template:
      • Nome do cliente
      • CNPJ
      • E-mail administrativo para cadastro do tenant
    • Serviços clients do PDVSync para a instalação na maquina do PDV.

17. Instalação/Configuração

 Este documento tem por objetivo orientar a instalação e configuração do PDVSync. Esse processo deve ser realizado em dois ambientes Server e Client:

  • Server

Onde deverá conter as informações de loja, inquilino, parâmetros, etc.

Cadastrados e configurados corretamente para realizar a troca de informações com o Client, segue abaixo os passos para configuração do ambiente no Server:

1° - Criação Inquilino

O inquilino é criado pela equipe do PDVSync pelo email: [email protected], com as seguintes informações:

  • Nome Fantasia da Empresa
  • CNPJ da Empresa

Será retornado o IdInquilino e o token authorization para inclusão no pdvsync e nas api's dos passos seguintes.


2º - Cadastrar os parâmetros, conforme exemplo:

Incluir Authorization OAuth2.0 conforme retornado no email.

endpoint: https://pdvsync.varejo.totvs.com.br/controle/api/pdvsyncserver/parametros

Post

[{
    "idInquilino": "IdDoInquilino01-01", /*O código do IdInquilino conforme retornado no email.*/
    "tipoProcesso": 1,/* OnLine = 0, Descida = 1, Subida = 2*/
    "quantidadeRegistros": 1000,
    "tempoChamada": 2000,
    "tempoExpurgoLogs": 365,
    "tipoDado": {
      "codigoTipo": 1,
      "descricaoTipo": "Loja",
      "tipoUtilizador": 0,/*ClienteDown = 0, Server = 1, ClienteUp = 2, ClienteOnLine = 3 */
      "tipoProcesso": 0 /*Criacao = 0, Atualizacao = 1, Interno = 2*/
    }
  }]


Lista de Parâmetros:

 

codigoTipo

descricaoTipo

tipoProcesso

0ClienteDown
1LojaDown
2MotivoDown
3PerfilDown
4UsuarioDown
6CompartilhamentoDown
7ImpostoDown
8NcmDown
9PisCofinsDown
12ProdutoDown
13PrecoDown
14EstoqueDown
15OperadoraDown
16DadoComplementarDown
17CondicaoPagtoDown
18FormaPagtoDown
19VendaUp
20CaixaUp
22TrocaUp
23VendaCustodiaXmlUp
25ClienteUp
26PreVendaUp
54AlteracaoEstoqueDown
55PreVendaDown

 

3º - Abrir Lote com Parâmetro 01 - Loja

Incluir Authorization OAuth2.0 conforme retornado no email.

endpoint: https://pdvsync.varejo.totvs.com.br/controle/api/retaguarda/inquilinolotesexternos

Post
{
    "status": "InicioEnvio",
    "tipoLote": [
         1
    ],
    "idInquilino": "" /*O código do IdInquilino conforme retornado no email.*/
}

Response:

{
    "success": true,
    "message": "",
    "data": {
        "loteOrigem": "20221004175001554",
        "mensagem": null,
        "status": 0,
        "tipoLote": [
            6
        ],
        "id": "DLoi3SX5HDoPOcDlyf0m",
        "idInquilino": "",
        "dataAtualizacao": "2022-10-04T17:50:01.6441804Z",
        "dataCadastro": "2022-10-04T17:50:01.6442468Z",
        "_expandables": []
    }
}

 

4º - Cadastro de uma Loja

**Os dados de cadastros devem ser enviados nas propriedades do json abaixo.

endpoint: https://pdvsync-core-dadosbasicos-prd-q6yz66olca-rj.a.run.app/api/retaguarda/lojas

Post

[
  {
    "razaoSocial": " ",
    "nomeFantasia": " ",
    "cnpj": " ", /*obrigatório e valido - 14 caracteres*/
    "inscricaoEstadual": " ", /*obrigatório - 2 e 14 caracteres*/
    "inscricaoMunicipal": " ", /*obrigatório - até 15 caracteres*/
    "endereco": " ",
    "numero": " ",
    "complemento": " ",
    "bairro": " ",
    "cidade": " ",
    "estado": " ",
    "siglaUf": " ",
    "codigoUFIBGE": " ", /*obrigatório - 2 caracteres*/
    "codigoMunicipioIbge": " ", /*obrigatório - 7 caracteres*/
    "cep": "", /*obrigatorio*/
    "telefone": "", /*obrigatório - 6 e 14 caracteres*/
    "codigoIdentificacaoLoja": "",
    "modeloFiscal": 0,
    "regimeTributario": 1,
    "rede": "", /*obrigatório*/
    "numeroLoja": "0",
    "idRetaguardaRede": "",
    "codigoMaster": " ",
    "nomeMaster": " ",
    "situacao": 1,
    "idInquilino": " ", /*Gerado no passo 1*/
    "idRetaguarda": "3 ", /*código da loja na retaguarda*/
    "idProprietario": " ", /*compartilhamento da loja*/
    "loteOrigem": " " /*Gerado no passo 3*/
  }
]

 

5º - Fechar lote de loja

endpoint: https://pdvsync-core-controle-prd-q6yz66olca-rj.a.run.app/api/retaguarda/inquilinolotesexternos/{idInquilino}/{loteOrigem}

metodo: PUT
{idInquilino} - Gerado no passo 01
{loteOrigem} - Gerado no passo 03


6º - Abrir Lote com Parâmetro 06 - Compartilhamento

Incluir Authorization OAuth2.0 conforme retornado no email.

endpoint: https://pdvsync.varejo.totvs.com.br/controle/api/retaguarda/inquilinolotesexternos

Post
{
    "status": "InicioEnvio",
    "tipoLote": [
        6
    ],
    "idInquilino": "" /*O código do IdInquilino conforme retornado no email.*/
}

Response:

{
    "success": true,
    "message": "",
    "data": {
        "loteOrigem": "20221004175001554",
        "mensagem": null,
        "status": 0,
        "tipoLote": [
            6
        ],
        "id": "DLoi3SX5HDoPOcDlyf0m",
        "idInquilino": "",
        "dataAtualizacao": "2022-10-04T17:50:01.6441804Z",
        "dataCadastro": "2022-10-04T17:50:01.6442468Z",
        "_expandables": []
    }
}

7º - Criar Compartilhamento

endpoint: https://pdvsync-core-controle-prd-q6yz66olca-rj.a.run.app/api/retaguarda/compartilhamentos

Post

[
    {
        "IdRetaguardaLoja": "",
        "IdRetaguarda": "32796d0b-8399-490e-b972-1db212c514fa",
        "IdProprietario": "32796d0b-8399-490e-b972-1db212c514fa",
        "IdInquilino": "",
        "NomeCompartilhamento": "PDV Master",
        "Nivel": 0,
        "IdRetaguardaPai": "",
        "loteOrigem": "20221004175001554"
    },
    {
        "IdRetaguardaLoja": "3f054f05-ee67-407b-935d-9db0fc5e7c58",
        "IdRetaguarda": "3f054f05-ee67-407b-935d-9db0fc5e7c58",
        "IdProprietario": "3f054f05-ee67-407b-935d-9db0fc5e7c58",
        "IdInquilino": "",
        "NomeCompartilhamento": "PDV Loja",
        "Nivel": 1,
        "IdRetaguardaPai": "",
        "loteOrigem": "20221004175001554"
    }
]


Response:

{
    "success": true,
    "message": "compartilhamento inserido com sucesso: [{\"IdRetaguarda\":\"32796d0b-8399-490e-b972-1db212c514fa\",\"IdProprietario\":\"32796d0b-8399-490e-b972-1db212c514fa\",\"NomeCompartilhamento\":\"PDV Master\",\"Nivel\":0,\"IdRetaguardaPai\":\"\",\"LoteOrigem\":\"20221004175001554\",\"Lote\":null,\"IdRetaguardaLoja\":\"\",\"Id\":null,\"IdInquilino\":\"\",\"DataAtualizacao\":\"0001-01-01T00:00:00\",\"DataCadastro\":\"0001-01-01T00:00:00\",\"_expandables\":[]},{\"IdRetaguarda\":\"3f054f05-ee67-407b-935d-9db0fc5e7c58\",\"IdProprietario\":\"3f054f05-ee67-407b-935d-9db0fc5e7c58\",\"NomeCompartilhamento\":\"PDV Loja\",\"Nivel\":1,\"IdRetaguardaPai\":\"32796d0b-8399-490e-b972-1db212c514fa\",\"LoteOrigem\":\"20221004175001554\",\"Lote\":null,\"IdRetaguardaLoja\":\"3f054f05-ee67-407b-935d-9db0fc5e7c58\",\"Id\":null,\"IdInquilino\":\"\",\"DataAtualizacao\":\"0001-01-01T00:00:00\",\"DataCadastro\":\"0001-01-01T00:00:00\",\"_expandables\":[]}].",
    "data": null
}

 

8º - Fechar o Lote 

endpoint: https://pdvsync-core-controle-prd-q6yz66olca-rj.a.run.app/api/retaguarda/inquilinolotesexternos/{idInquilino}/{loteOrigem}

metodo: PUT

{idInquilino} - Gerado no passo 01
{loteOrigem} Gerado no passo anterior

 

9º - Cadastrar os parâmetros comerciais para a consulta de operações de vendas e caixa

URL: https://pdvsync.varejo.totvs.com.br/comercial/api/pdvsyncserver/parametros

Post

[
  {
    "idInquilino": "", /*Gerado no passo 01*/
    "dataAtualizacao": "2022-10-07T18:59:54.530Z",
    "dataCadastro": "2022-10-07T18:59:54.530Z",
    "codigo": 1,
    "tipo": 1,
    "valor": "10"
  },
  {
    "idInquilino": "",  /*Gerado no passo 01*/
    "dataAtualizacao": "2022-10-07T18:59:54.530Z",
    "dataCadastro": "2022-10-07T18:59:54.530Z",
    "codigo": 2,
    "tipo": 2,
    "valor": "10"
  },
  {
    "idInquilino": "",  /*Gerado no passo 01*/
    "dataAtualizacao": "2022-10-07T18:59:54.530Z",
    "dataCadastro": "2022-10-07T18:59:54.530Z",
    "codigo": 3,
    "tipo": 3,
    "valor": "10"
  },
  {
    "idInquilino": "",  /*Gerado no passo 01*/
    "dataAtualizacao": "2022-10-07T18:59:54.530Z",
    "dataCadastro": "2022-10-07T18:59:54.530Z",
    "codigo": 4,
    "tipo": 4,
    "valor": "10"
  },
  {
    "idInquilino": "",  /*Gerado no passo 01*/
    "dataAtualizacao": "2022-10-07T18:59:54.530Z",
    "dataCadastro": "2022-10-07T18:59:54.530Z",
    "codigo": 5,
    "tipo": 0,
    "valor": "https://pdvsync-core-fila-prd-q6yz66olca-rj.a.run.app/api/stub/historicovenda"
  }

]

10º Baixar Serviços Clients

  •  Processo responsável pela leitura dessas informações cadastradas no server e fará a troca das informações entre o PDV e o Server. Ele é dividido basicamente em 4 serviços que devem ser instalados no PDV:
    •  API – Responsável pela comunicação entre o PDV e os Serviços de UP e Down.
    • Controle – Responsável por informar aos Serviços de DOWN que existe informações novas para serem baixadas no PDV.
    • Up – Serviço responsável pela subida de informações do PDV para o Server.
    • Down – Serviço responsável pela baixa de informações do Server para o PDV.

 Instalação dos Serviços UP, DOWN, CONTROLE e API:

  • Criar a pasta C:\PDVSync e executar a instalação dos serviços disponibilizados pelo time do suporte.
  • Acessar a pasta C:\PDVSync descompactar o arquivo baixado acima e executar o arquivo "servicos.bat" como Administrador.
  • Após os passos acima os serviços PDVSync.Client.Api.WebApi, PDVSync.Client.Servico.Up, PDVSync.Client.Servico.Down e PDVSync.Client.Servico.Controle serão instalados e iniciados.

  Desinstalação dos Serviços UP, DOWN, CONTROLE e API:

  •  Para desinstalar os serviços acima basta acessar a pasta C:\PDVSync executar o arquivo “servicos-delete.bat”.

18. Documentação APIs

18.1. Configuração do PDV Sync Server para a loja via Postman

Para realizar as configurações para a utilização do PDV Sync no PDV Omnishop, é necessário realizar os cadastros abaixo através das APIs de Parâmetros.

O passo a passo do Postman se encontra no Google Drive no caminho: https://drive.google.com/drive/folders/1KriEZNs0ofg2uBF8u3TLniozko3IA063

Lá se encontra o arquivo com as Collections montadas para a configuração e com as variáveis para a utilização da criação de parâmetros.

1º - Criação do Inquilino

Para a criação do inquilino, utilizar o request 01. Criar Inquilino, informar os valores de acordo com as informações do cliente, realizar a autenticação e em seguida realizar o POST.

Após a criação, utilizar o valor do campo IdInquilino na variável para a configuração dos próximos passos.

2º - Criação dos Parâmetros Controle

Para a criação dos parâmetros do controle, basta apenas realizar a autenticação e realizar o POST.

3º - Criação dos Parâmetros Comercial

Para a criação dos parâmetros comerciais, basta apenas realizar a autenticação e realizar o POST.

4º -  Criação do Parâmetro para a subida de Clientes

Para a criação do parâmetro de subida de cliente, basta apenas realizar a autenticação e realizar o POST.


Obs.: Para realizar esses procedimentos nos ambientes de desenvolvimento e homologação, seguir os mesmos passos acima, mas utilizar sua respectiva pasta (Passo a Passo - Homologação e Passo a Passo - Desenvolvimento).


  • Sem rótulos