Páginas filhas
  • APIs Integrações - Pedido PDVSync - INTERNA

Versões comparadas

Chave

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

...

Este documento tem como objetivo explicar o funcionamento da geração de pedidos provenientes da integração com o PDVSync. 

Pré-Requisitos e Restrições - GRAVAÇÃO

  • Necessário a instalação do  serviço winthor-pedido-venda
  • Para gerar o pedido, o campo situacaoPreVenda deve está igual a RECEBIDO.
  • Caso o atributo "idOperadorRetaguarda" não seja enviado na requisição, a API consultará o RCA definido no parâmetro "4012 - Código do RCA para cadastro de clientes" da rotina 132- Parâmetros da Presidência.
  • A tabela PCLOGPEDIDOAPI, é responsável por guardar os retornos dos pedidos importados via integração, sendo Operação (I - inclusão, A - alteração, C - cancelamento) e Status (A - Aceito, R - Rejeitado, P - Processando).
  • No envio do JSON deve-se enviar no campo  preVendaItens.idProdutoRetaguarda o código auxiliar seguido do código do produto. Exemplo: 100-1. Lembrando que o IdRetaguarda dos produtos na base do PDV já seguem esse padrão e são enviadas pelo WSH assim.
  • No envio do json, é obrigatório a informação do campo idRetaguarda. Esse campo é referente a reserva realizada anteriormente.
  • No recebimento do pedido, a API irá criar um pedido TV7 utilizando o mesmo número de pedido retornado na reserva, e criará também um ou mais pedidos TV8 (Simples entrega), baseado nos tipos de entrega que existem no pedido. Ou seja, se em um mesmo pedido estiverem dois itens, um RP (Retira Posterior = 1) e um EN (Entrega Normal = 2), a integração resultará em um pedido TV7 e dois pedidos TV8, um para cada tipo de entrega. Esses pedidos TV8 ficam associados ao pedido TV7 através do campo numpedentfut da tabela pcpedc;
  • API criada com base da documentação fornecida pelo PDVSync: https://pdvsync-core-controle-dev-aadivv24nq-ue.a.run.app/swagger/index.html?urls.primaryName=V2
  • Caso o cadastro do cliente esteja completo o cliente já vai ser inserido neste processo do pedido.
  • A regra para gravação ou alteração do cliente seguirá o definido na api de clientes que já existe hoje. Doc: APIs Integrações - Clientes
  • Ao enviar o cliente, será validado o parâmetro  4672 - Aceita validar CEP online nas APIs do WinThor da rotina 132 permite validar se o CEP informado está valido em API terceiros (ViaCEP e ByJG). Caso falso, essa validação não ocorrerá. O padrão do parâmetro é "Sim";

...

Pré-Requisitos e Restrições - CONSULTA

  • Necessário a instalação do  serviço winthor-pedido-venda
  • Disponibilizamos o pedido com a situacaoPreVenda = DISPONIVEL para que o PDV possa consumir e receber o pagamento;
  • São disponibilizados somente os pedidos provenientes do módulo de home center do WinThor (Rotina 4116);
  • No processo de venda assistida, disponibilizamos apenas o pedido TV7;
  • Ao disponibilizar os dados de clientes, são consideradas as informações de consumidor final identificado na tabela PCVENDACONSUM do WinThor. Caso seja um cliente cadastrado, os dados retornados são provenientes da tabela PCCLIENT;
  • A informação de múltiplas cobranças é proveniente da tabela PCPRESTPEDIDO do WinThor;

 Integração


Totvs custom tabs box
tabsDados integrados c/ Winthor, Gravação Pedido/Retorno, Consulta de pedidos Originados no WinThor
idspasso1,passo2,passo3

A integração consiste em receber e enviar dados do pedido que será incluído no winthor.

Totvs custom tabs box items
defaultyes
referenciapasso1

Os dados integrados são: 

APIDescriçãoColunaTipoObrigatório
situacaoPreVenda0 = CANCELADA

1 = RECEBIDO

2 = DISPONIVEL

3 = RESGATADA

intSIM
numeroIdentificação do pedido no PDV.PCPEDC.NUMPEDHUBEStringSIM
modalidadeFrete

Utiliza despacho de frete (freteiros) Valores:

"C" - CIF - Contratação do Frete por conta do Remetente ( modalidadeFrete= 0)
"F" - FOB - Contratação do Frete por conta do Destinatário ( modalidadeFrete= 1)
"T" - Contratação do Frete por conta de Terceiros ( modalidadeFrete= 2)
"R" - Transporte Próprio por conta do Remetente ( modalidadeFrete= 3)
"D" - Transporte Próprio por conta do Destinatário ( modalidadeFrete= 4)
"G" - Gratuito - Sem Ocorrência de Transporte ( modalidadeFrete= 9)

PCPEDC.FRETEDESPACHOintNÃO
observacoes
PCPEDC.OBS
NÃO
idOperadorRetaguardaMatricula do funcionário. Caso não informado irá usar o RCA do parâmetro 4012.PCPEDC.CODUSURlongNÃO
idLojaRetaguardaCódigo da filial.

SIM
preVendaItens.*.quantidadeDeve ser maior que zero. PCPEDI.QTintSIM
preVendaItens.*.precoDeve ser maior que zero. PCPEDI.PVENDA
SIM
preVendaItens.*.descontoValor de desconto. 

NÃO
preVendaItens.*.descontoPercentualPercentual de desconto. 

NÃO
preVendaItens.*.idProdutoRetaguardaCódigo auxiliar mais o código do produto. Ex: 123-1.PCPEDI.CODPROD
SIM
preVendaItens.*.idVendedorRetaguarda


NÃO
preVendaItens.*.entrega.idRetaguardaLojaEntregaCódigo da filial retira.PCPEDI.CODFILIAL
SIM 
preVendaItens.*.entrega.tipoEntrega

0 = RETIRA_IMEDIATA("RI", "Retira Imediata"),

1 = RETIRA_POSTERIOR("RP", "Retira Posterior"),

2 = ENTREGA_NORMAL("EN", "Entrega Normal")

3 = ENCOMENDA("EF", "Encomenda")

PCPEDI.TIPOENTREGA
SIM
preVendaItens.*.entrega.dataEntregaData da entrega do itemPCPEDI.DTENTREGA

cliente

Caso não seja informado o cliente será usado o cliente consumidor final.

Caso o cliente esteja com o cadastro completo, ele já será gravado na base do winthor .



NÃO
cliente.bairroEste campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.telefoneCaso não preenchido será usado o campo celular

NÃO
cliente.celularCaso não preenchido será usado o campo telefone

NÃO
cliente.cepEste campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.cidadeEste campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.complemento


NÃO
cliente.cpfCnpj

Este campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 


Caso já exista um cliente com mesmo CGC e o idRetaguarda não seja informado será usado o cliente mais antigo que contém o mesmo CGC



NÃO
cliente.emailEste campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.endereco Este campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.estadoEste campo é obrigatório para gravar o cliente, caso não seja informado o cliente não será gravado e será usado o cliente consumidor final para gerar a reserva de estoque 

NÃO
cliente.idRetaguardaCódigo cliente

NÃO
cliente.numero


NÃO
VendaPagamentos.valorLiquidoValor líquidoPCFORMAPGTOPEDIDO.VALOR
SIM
VendaPagamentos.pagamentoForma.idRetaguardaForma de pagamentoPCFORMAPGTOPEDIDO.CODCOB
SIM
VendaPagamentos.pagamentoForma.descricaoDescrição da forma de pagamento

NÃO
VendaPagamentos.vendaPagamentoItems.valorParcelaValor da parcelaPCFORMAPGTOPEDIDO.VALOR (Só utilizado caso cobrança cartão com parcelas)
NÃO
VendaPagamentos.vendaPagamentoItems.dataVencimentoData de vencimento da parcelaVLFRETE PCFORMAPGTOPEDIDO.DTVENC (Só utilizado caso cobrança cartão com parcelas)
NÃO

PreVendaPagamentos.vendaPagamentoTefs.nsuHost

NSUPCFORMAPGTOPEDIDO.NSU (Só utilizado caso cobrança cartão com parcelas)
NÃO

Caso seja enviado o valor do frete maior que zero, o campo (PCPEDC.DTCALCFRETE) será preenchido.PCPEDC.DTCALCFRETEData (DD/MM/YYY)NÃO
Totvs custom tabs box items
defaultno
referenciapasso2

Exemplo do envio da requisição:


Bloco de código
languagetext
titleURI
method: 'POST',
url: '/api/wholesale/v1/orders/pdvsync'
Bloco de código
languagejs
titleBody Request
{   
    "NumeroVenda": null,
    "TipoPreVenda": 1,
    "Data": "2023-04-13T16:33:29.946503",
    "CpfConsumidor": null,
    "CpfCliente": "03425067141",
    "DescontoTotal": 0.0,
    "TotalLiquido": 6.130000,
    "TotalBruto": 6.130000,
    "IdLojaRetaguarda": 1,
    "CodigoPromocional": null,
    "situacaoPreVenda": "RECEBIDO",
    "modalidadeFrete": "2",
    "NomeConsumidor": null,
    "EnderecoCliente": "RUA GIOTO",
    "NomeCliente": "Cliente 0123",
    "IdOperadorRetaguarda": 1,
    "SistemaOrigem": 1,
    "TerminalOrigem": null,
    "TipoEntrega": 0,
    "Sincronizado": 0,
    "TipoDescontoAcrescimo": null,
    "DescontoPercentualTotal": 0.0,
    "IdMotivoDesconto": null,
    "DescricaoMotivoDescontoAcrescimo": null,
    "IdTransacaoMotorPromocaoTerceiro": null,
    "SerieVenda": null,
    "NumeroAutorizacao": null,
    "TipoVenda": 1,
    "TipoCancelamento": null,
    "IdCanalVenda": null,
    "DescontoMotorPromocaoAplicado": false,
    "PreVendaItens": [
        {
            "quantidade": 1.0,
            "preco": 24.9,
            "desconto": 0.0,
            "descontoPercentual": 0.0,
            "idProdutoRetaguarda": "3-3",
            "idVendedorRetaguarda": "1",
                       "entrega": {
                "idLojaEntregaRetaguarda": "1",
                "TipoEntrega": 1,
                "dataEntrega": "2022-04-25T17:08:56.18511"
            }
        }
    ],
    "vendaPagamentos": [
        {
            "valorLiquido": 1.0,
            "valorPago": 24.9,
            "valorTroco": 0.0,
            "idPagamentoCondicaoRetaguarda": 0.0,
            "pagamentoForma":
                {
                    "descricao": "DINHEIRO EM TRANSITO",
                    "idRetaguarda": "DH"
                },            
            "vendaPagamentoItems": [
                {
                    "dataVencimento": "2022-05-10T17:08:56.18511",
                    "valorParcela": 24.9,
                    "numeroParcela": 1
                }
            ]
        }
    ],
    "Cliente": {
        "Nome": "Cliente alterar",
        "Endereco": "RUA GIOTO",
        "Numero": "S/N",
        "Complemento": "",
        "Bairro": "SETOR GENTIL",
        "Cidade": "GOIANIA",
        "Estado": "GO",
        "Cep": "74916-100",
        "Telefone": "",
        "Celular": "62900000000",
        "Email": "[email protected]",
        "DataNascimento": "2001-04-01T00:00:00",
        "PessoaFisica": 1,
        "CpfCnpj": "40141279079",
        "RgInscricao": "6346333",
        "Sexo": 2,
        "EstadoCivil": 2,
        "AvatarUrl": "",
        "Enviarpnet": 0,
        "Atividade": null,
        "Cracha": null,
        "Situacao": 1,
        "Id": 4,
        "IdRetaguarda": "00000000-0000-0000-0000-000000000000",
        "DataCadastro": "2023-03-29T13:51:38.556565",
        "DataAtualizacao": "2023-03-29T13:51:38.55657",
        "_expandables": []
    },
    "Situacao": 0,
    "IdRetaguarda": 54382,
    "Id": "20230612140631122023235",
    "numero": "20230612140631122023235",
    "DataCadastro": "2023-04-13T16:32:45.651279",
    "DataAtualizacao": "2023-04-13T16:33:30.123302",
    "_expandables": []
}



Bloco de código
languagejs
titleBody Response
{    
	"success": true,
    "hasNext": false,
    "message": "",
    "data": {
        "idRetaguardaPedido": "1007217",
        "cliente": {
            "idRetaguardaCliente": "770"
        },
        "message": "",
        "success": true
    } 
} 



Totvs custom tabs box items
defaultno
referenciapasso3

Exemplo do envio da requisição:


Bloco de código
languagetext
titleURI lista de pedidos
method: 'POST',
url: '/api/wholesale/v1/orders/pdvsync/consulta'
Bloco de código
languagejs
titleParams
idRetaguarda            : 0				    - Número do Pedido no WinThor
idLojaRetaguarda        : 2                 - Código da Filial **requerido**
cpfCliente              : String            - CPF ou CNPJ do cliente
nomeCliente             : String            - Nome do Cliente
idOperadorRetaguarda    : String            - Código do Vendedor no WinThor
dataInicio              : Timestamp         - Data inicial da busca (Formato: 2023-07-25T11:43:45.086336)
dataFim                 : Timestamp         - Data final da busca (Formato: 2023-07-25T11:43:45.086336)
idClienteRetaguarda     : 0                 - Código do Cliente no WinThor
Bloco de código
languagejs
titleBody Request
{
    "success": true,
    "hasNext": false,
    "message": "",
    "data": [
        {
            "offline": false,
            "idRetaguarda": "10000908",
            "situacaoPreVenda": "DISPONIVEL",
            "idLojaRetaguarda": "2",
            "idOperadorRetaguarda": "10",
            "totalLiquido": 75.22,
            "descontoPercentualTotal": 9.991624,
            "acrescimoPercentualTotal": 0,
            "totalBruto": 83.57,
            "multiplosPedidos": false,
            "dataCadastro": "2023-08-02T23:27:00"
        }
    ]
} 
Bloco de código
languagetext
titleURI pedido detalhado
method: 'POST',
url: '/api/wholesale/v1/orders/pdvsync/consulta/{idRetaguarda}'
Bloco de código
languagejs
titleBody Response
{
    "success": true,
    "hasNext": false,
    "message": "",
    "data": {
        "offline": false,
        "idRetaguarda": "10000908",
        "cliente": {
            "nome": "COD. 10 - CLI DA FILIAL 7",
            "endereco": "END. ENT. CLI.: 10",
            "numero": "",
            "complemento": "",
            "bairro": "BAIRRO ENT. CLI.: 10",
            "cidade": "",
            "estado": "GO",
            "cep": "74000000",
            "telefone": "TELENT.: 10",
            "celular": "TELENT.: 10",
            "email": "[email protected]",
            "cpfCnpj": "79.621.574/0007-22",
            "idRetaguarda": "10",
            "clienteAlterado": false
        },
        "situacaoPreVenda": "DISPONIVEL",
        "preVendaItens": [
            {
                "quantidade": 1,
                "preco": 75.215471,
                "desconto": 0,
                "descontoPercentual": 10,
                "acrescimoPercentual": 0,
                "quantidadeEncomenda": 0,
                "idPreVenda": 0,
                "idProdutoRetaguarda": "304-13",
                "entrega": {
                    "idLojaEntregaRetaguarda": "2",
                    "tipoEntrega": "2"
                }
            }
        ],
        "preVendaPagamentos": [
            {
                "valorPago": 75.22,
                "pagamentoForma": {
                    "idRetaguarda": "CARD"
                },
                "pagamentoCondicao": {
					"idRetaguarda": 1
				},
                "quantidadeParcelas": 1
            }
        ],
        "idLojaRetaguarda": "2",
        "idOperadorRetaguarda": "10",
        "totalLiquido": 75.22,
        "descontoPercentualTotal": 9.991624,
        "descontoTotal": 0,
        "acrescimoPercentualTotal": 0,
        "acrescimoTotal": 0,
        "totalBruto": 83.57,
        "multiplosPedidos": false,
        "dataCadastro": "2023-08-02T23:27:00"
    }
}