Estoque do Catálogo de Produtos - Layout, Uso e Consultas

Como adicionar informações de estoque no layoute realizar consultas assíncronas

Ícone Compartilhar no Whatsapp Ícone Compartilhar no Twitter Ícone Compartilhar por e-mail
Imagem warehouse

O estoque é uma funcionalidade da extensão #5 - Catálogo de produtos

Exemplos

👇 Exemplo prático em variações (baunilha indisponível)

https://componentes.interago.com.br/catalogo/item/cupcakes-de-morango-chocolate-e-baunilha

👇 Exemplo prático em um produto simples

https://componentes.interago.com.br/catalogo/item/boneco-de-olinda-do-mussum


Layout

As informações estão disponíveis para serem atualizadas de forma estática na página. Não está disponível para AJAX ou listas.


$productData['productType']


Essa variável separa produtos simples de produtos com variações.0 para simples1 para variações

Para consultar o estoque de variações, somente são aceitas requisições por AJAXO uso estático de consulta só funciona para produtos simples.

Ao utilizar a consulta estática, é necessário sempre atualizar a página de produtos. É adequado para poucos produtos.


$productData['productStock']


Valores:

0 => para produtos à venda1 => para produtos que aceitam somente encomeda. Para encomendas é possível utilizar dias para fabricação data de chegada do produto.

Exemplo de uso para imprimir informações de encomenda



//only pre-order (somente encomendas) if($productData['productStock'] == 1) {

 $item .= '<p>Somente encomenda';

 //check for launch date (data para iniciar o preorder) if($productData['productPreOrderFixedDate'] != 0) { $item .= ' a partir de '.formatDate($productData['productPreOrderFixedDate']); }

 //check estimated time to start shipping (tempo para fabricar) if($productData['productStockPreOrderDays'] != 0) { $producData['productStockPreOrderDays'] == 1 ? $labelForDay = 'dia' : $labelForDay = 'dias'; $item .= '. Tempo de fabricação:'.$productData['productStockPreOrderDays'].' '.$labelForDay; }

 $item .= '</p>';

 }

Exemplo para mostrar a quantidade e limitar o carrinho à quantidade máxima


$item .='<a class="cartAddProduct cartPopupView" cartitemid="'.$productData['productSKU'].'" cartitemname="'.$productData['productTitle'].'" cartitemimage="'.str_replace('w_0_', 'w_64_', $productImg).'" cartitemlink="'.$mainData['seoBaseHref'].$productData['productUrl'].'" cartitemprice="'.$productData['productPrice'].'" cartaddlimit="'.$productData['productStockQtd'].'" originalProductPrice="'.$productData['productPrice'].'">Adicionar na sacola</a>'; $item .= '<p id="stockQtdLabel">Quantidade em estoque: '.$productData['productStockQtd'].'</p>';

Chamadas por ajax para produtos simples e variações


<script type="text/javascript" src="https://www.craft.interago.com.br/App/Extensions/5/tag/stock.js" loading="lazy"></script>

//ajax check stock for simple productif($productData['productStock'] == 0 && $productData['productType'] == 0) {$item .= '<script>

 simpleProductCheckStock("'.$mainData['siteDomainToken'].'", '.$mainData['siteId'].', '.$productData['productId'].');

 function stockCallback(data) { console.log(data); let obj = JSON.parse(data); if(obj.qtd == 0) { document.querySelector("#stockQtdLabel").innerHTML = "Produto indisponível"; document.querySelectorAll(".cartAddProduct").forEach( e => e.remove()); } }

</script>';}else { //variations if($productData['productType'] == 1) { $item .= ' <script>

 document.querySelectorAll(".optionComponent").forEach( e=> { e.addEventListener("click", f => { let lastChild = f.target.getAttribute("lastchild"); console.log(lastChild); if(lastChild == 0) { let opt = f.target.getAttribute("value"); variationProductCheckStock("'.$mainData['siteDomainToken'].'", '.$mainData['siteId'].', opt); } }); });

 function outOfStock() { document.querySelector("#stockQtdLabel").innerHTML = "Opção indisponível"; document.querySelectorAll(".cartAddProduct").forEach( e => e.style.display = "none"); }

 function inStock() { document.querySelector("#stockQtdLabel").innerHTML = "Temos essa opção em estoque =D"; document.querySelectorAll(".cartAddProduct").forEach( e => e.style.display = "block"); }

 </script> '; }}


É importante que os elementos do DOM estejam de acordo com os necessários para receber os retornos de informações

Estoque das opções das variações para o layout (estático)

As opções de variação retornam o item variationoptstockQtd para saber se está disponível em estoque, conforme exemplo abaixo


#para produto com variação (0 = simples; 1 = variação)if($productData['productType'] == 1) {    $variationData = getVariationDataOfAProduct($productData['productId']);   if($variationData[0] != '{}') {      foreach($variationData as $k => $v) {         $vId = $eachVariation['variationId'];         $vName = $eachVariation['variationName'];         $vRequire = $eachVariation['variationRequire'];         $vChoices = $eachVariation['variationChoices'];         $vParentId = $eachVariation['parentId'];         $variationReqsOk = 'false';        //each variation options        $options = $eachVariation['options'];        if(!empty($options)) {          foreach($options as $o => $d) {            $optStock = $d['variationoptstockQtd'];            if($optStock == "0" || $optStock == "") {               #not avaliable            }        }    }}

Gostei desse artigo Não gostei desse artigo

Você também pode gostar de ler

Imagem principal do artigo Guia de utilização das planilhas na extensão de Catálogo de Produtos

Guia de utilização das planilhas na extensão de Catálogo de Produtos

Documentação completa de como utilizar a ferramenta de planilhas da extensão de produtos no Interago.

Em 16/06/2025 às 09h38 - Atualizado em 10/07/2025 às 10h14

Imagem principal do artigo Guia completo para o catálogo de produtos (Extensão)

Guia completo para o catálogo de produtos (Extensão)

Instalação, passo a passo e guia prático para utilizar o catálogo no site dos clientes

Em 14/06/2022 às 13h38 - Atualizado em 11/04/2025 às 13h17

Imagem principal do artigo Guia da Extensão #11 Promoções

Guia da Extensão #11 Promoções

Uso da extensão que gerencia a exibição de preços, desconto por meios de pagamento, categorias e produtos e cupom (em breve)

Em 04/09/2023 às 10h41 - Atualizado em 12/02/2025 às 09h16

Imagem principal do artigo Carrinho de compras cart2.js

Carrinho de compras cart2.js

Extensão 6 do Interago para habilitar o uso de carrinho de compras ao website

Em 29/11/2022 às 12h54 - Atualizado em 03/02/2025 às 11h54

Imagem principal do artigo Buscas e Pesquisas no Catálogo de produtos

Buscas e Pesquisas no Catálogo de produtos

Script ativo é o search3.js. Buscas em cache com visualização no painel.

Em 01/03/2023 às 09h23 - Atualizado em 16/12/2024 às 11h48

Imagem principal do artigo Extensão #9 Envios e cálculos de frete

Extensão #9 Envios e cálculos de frete

Extensão que utiliza a Fretnet, Correios, controle por estados e configurações gerais para controle de envios

Em 23/03/2023 às 20h22 - Atualizado em 15/09/2023 às 09h49

Imagem principal do artigo Checkout e Pedidos - Extensão #10

Checkout e Pedidos - Extensão #10

Guia para lojas virtuais utilizarem a extensão de checkout e suas especificações

Em 01/06/2023 às 14h35 - Atualizado em 18/08/2023 às 08h36

Imagem principal do artigo Estoque do Catálogo de Produtos - Layout, Uso e Consultas

Estoque do Catálogo de Produtos - Layout, Uso e Consultas

Como adicionar informações de estoque no layoute realizar consultas assíncronas

Em 13/02/2023 às 14h40 - Atualizado em 07/08/2023 às 22h28

Imagem principal do artigo Catálogo de Produtos - Listar Produtos com AJAX

Catálogo de Produtos - Listar Produtos com AJAX

Como gerar listas de produtos diretamente da base de dados por ajax

Em 09/08/2022 às 11h03 - Atualizado em 26/12/2022 às 09h37

Imagem principal do artigo 001. Catálogo em Lista - Formato Imobiliária

001. Catálogo em Lista - Formato Imobiliária

Visual de todas as páginas do catálogo de produtos em formato de lista - Ideal para imobiliárias

Em 29/06/2022 às 11h22 - Atualizado em 16/08/2022 às 09h09