Objetivo

Este documento tem como objetivo explicar o funcionamento da integração do estoque disponível.

Pré-Requisitos e Restrições

Comece por aqui -> Parametrizações WTA


Quando não houver preenchimento do campo DATA, exemplo (data de cadastro, data de alteração), nossas APIs retornará por padrão a informação "1900-01-01T00:00:00".

Caso necessário, realizar o ajuste nos cadastros para que a API apresente a data desejada.


A integração consiste em enviar todo estoque disponível que serão utilizados no E-Commerce.

Os dados integrados são: 

STOCKPCEST
APIReferência Winthor
createDatepcest.dtprimcompra

pcprodut.dtcadastro
lastChangepcpest.dthoraultaltdisp

pcprodut.dtultalter

pcprodut.dtcadastro
productIdpcprodut.codauxiliar + pcprodut.codprod
quantitypkg_estoque.estoque_disponivel
unlimitedQuantitypcprodut.exibesemestoqueecommerce = S retorna "true"
pcprodut.exibesemestoqueecommerce = N retorna "false"
pcprodut.exibesemestoqueecommerce = NULL retorna "false"
warehouseBranchIdpcest.codfilial
warehouseBranchNamepcfilial.razaosocial
unitMultiplierpcembalagem.qtunit

Exemplo do envio da requisição:

method: 'GET'
url: '/api/stock-vtex/v1/available/{código da filial}/{código do produto}' -> Envio de parâmetros na URI (Retorno JSON será o mesmo demonstrado)

OU

/api/stock-vtex/v1/available/list?branchId=1,2&usesPackagingSales=true  

OU

url: '/api/stock-vtex/v1/available/list' -> Exige os parâmetros abaixo.
branchId 	 		: 1						- Código Filial/Multifilial  *requerido
callOrigin 	 		: W 					- Origem 'Web' - valor fixo - caso no cadastro do produto esteja com o campo ENVIARECOMMERCE=S.
                      WSH                   - Origem 'WSH' - valor fixo - Para a integração com o PDVSYNC na origem deverá ser passado WSH, para que não seja aplicada a restrição do E-commerce.
lastChange 	 		: 2021-08-03T16:14:03 	- Data da última alteração
order		 		: lastChange (padrão)	- Ordenação da busca 
categoryId	 		: 0						- Código da Categoria
subcategoryId		: 0						- Código da SubCategoria
sectionId	 		: 0						- Código da Seção
departmentId 		: 0						- Código do Departamento
providerId	 		: 0						- Código do fornecedor
productId 	 		: 0						- Código do Produto
page	     		: 0						- Número da página
pageSize  	 		: 0						- Tamanho da página
usesPackagingSales 	: true					- Indica que a quantidade de estoque disponível retornada será particionada por embalagem
resale  			: true					- Indica se deve ou não ser retornado produtos marcados como revenda. Se nulo, todos os produtos serão retornados;
merchandiseType		: string				- Indica os tipos de mercadoria que deverão ser retornados (PA, KT, CB, etc). Se enviado um tipo de mercadoria inexistente, a consulta retornará vazia;

Exemplo JSON da resposta:  

{
    "first": false,
    "items": [
        {
            "createDate": "2020-01-07T00:00:00",
            "lastChange": "2021-08-03T16:56:42",
            "productId": "000-0",  (Código auxiliar | Código Produto)
            "quantity": 0,
            "unlimitedQuantity": false,
            "warehouseBranchId": "string",
            "warehouseBranchName": "string",
            "unitMultiplier": 0   -> Quantidade por embalagem
        }
    ],
    "hasNext": false
}

Regras para o retorno dos campos da requisição:

Campo "quantity"

  • Caso o parâmetro "usesPackagingSales" seja enviado como true, o campo retornará de acordo com a seguinte regra:

% Por Peso:

Corresponde ao fator de conversão multiplicado por 100, e dividido pela somatória dos fatores de conversão;

Valor aplicado

Corresponde ao percentual por peso da embalagem dividido por 100 e multiplicado pela quantidade de estoque do produto;

Resto

Corresponde ao resto da divisão do valor aplicado pelo fator de conversão;

Valor resultante

Corresponde ao valor aplicado menos o resto. Na API, é o valor que representa a quantidade particionada por peso de embalagem, e será retornada no campo "quantity";

Quantidade total

Corresponde a soma dos valores resultantes das embalagens;

Diferença

Corresponde a quantidade de estoque do produto menos a quantidade total. O resultado da operação deverá ser somado a quantidade total da embalagem com fator de conversão igual a 1;

Demonstração utilizando o Postman para realizar as requisições na API. 


Integração


Para que seja realizada uma nova integração atualizando um registro já integrado, o sistema verifica a data de última atualização do registro. Portanto, ao realizar alguma alteração no registro, ele será encaminhado novamente para a view para manter a integridade dos dados do ERP com o E-commerce