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 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