Objetivo
Este documento tem como objetivo explicar o funcionamento da integração do estoque disponível.
Pré-Requisitos e Restrições
- Necessário a instalação do serviço winthor-estoque-vtex. Para realizar a instalação desse serviço, segue link com as devidas explicações:
Comece por aqui -> Parametrizações WTA
- Os produtos devem estar com o campo Enviar para E-commerce igual a SIM.
Para o caso de venda por Embalagem, sempre utilizaremos a menor embalagem cadastrada para um determinado produto, sendo OBRIGATÓRIO o cadastro de embalagem para o produto.
- Disponibilizaremos o campo fator de conversão da rotina 2014 - Cadastrar Embalagem.
- Quando for realizada uma movimentação de determinado produto e for integrado, o sistema atualiza o estoque do produto .
Poderá obter os dados de estoque de multifiliais informando no filtro 'branchId', dados separados por vírgula. (Exemplo branchId: 1,2,3,4,5) ou apenas uma filial (Campo obrigatório).
- Quando houver a necessidade de retorno de quantidades por embalagem, deverá ser informado o filtro usesPackagingSales=true.
Será considerado a Origem 'Web' como valor fixo para cadastros de produtos que estejam com o campo Enviar para E-commerce igual a SIM.
- Através do parâmetro 2829 - Percentual da quantidade disponível para o e-commerce da rotina 132 - Parâmetros da presidência podemos determinar por filial qual o percentual do estoque será disponibilizado para o e-commerce.
Importante
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:
STOCK | PCEST |
---|---|
API | Referência Winthor |
createDate | pcest.dtprimcompra |
pcprodut.dtcadastro | |
lastChange | pcpest.dthoraultaltdisp |
pcprodut.dtultalter | |
pcprodut.dtcadastro | |
productId | pcprodut.codauxiliar + pcprodut.codprod |
quantity | pkg_estoque.estoque_disponivel |
unlimitedQuantity | pcprodut.exibesemestoqueecommerce = S retorna "true" pcprodut.exibesemestoqueecommerce = N retorna "false" pcprodut.exibesemestoqueecommerce = NULL retorna "false" |
warehouseBranchId | pcest.codfilial |
warehouseBranchName | pcfilial.razaosocial |
unitMultiplier | pcembalagem.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. 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 deveram 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.