PrestaShop 8 gestisce la quantità dei prodotti attraverso la tabella ps_stock_available, che è il punto centrale per tenere traccia delle quantità disponibili per ogni prodotto e combinazione (se il prodotto ha attributi).

Vediamo i dettagli del funzionamento e alcuni esempi pratici.

Tabella stock_available

Struttura principale dei campi rilevanti:

  1. id_stock_available: ID univoco della riga.
  2. id_product: ID del prodotto a cui questa riga si riferisce.
  3. id_product_attribute: ID dell'attributo del prodotto (0 se si tratta del prodotto senza combinazioni).
  4. id_shop: ID del negozio (utile in configurazioni multi-store).
  5. id_shop_group: ID del gruppo di negozi (utile in configurazioni multi-store).
  6. quantity: Quantità disponibile del prodotto o combinazione.
  7. physical_quantity: Quantità fisica effettiva nel magazzino (se il tracciamento avanzato del magazzino è abilitato).
  8. reserved_quantity: Quantità riservata (ad esempio per ordini in elaborazione).
  9. out_of_stock: Impostazione che indica se il prodotto può essere ordinato anche se esaurito.

Accesso al database dal back-end di PrestaShop

PrestaShop offre strumenti integrati per interagire con il database direttamente dal back-end, senza la necessità di accedere a software esterni come phpMyAdmin e in massima sicurezza.

Per accedere: Parametri Avanzati → Database → Manager SQL

Esempi di query per il controllo dello stato del magazzino

1. Controllare la quantità disponibile per un prodotto specifico

Questa query restituisce la quantità disponibile per un determinato prodotto (senza combinazioni):

[code=language-sql] SELECT quantity FROM [PREFIX]_stock_available WHERE id_product = 123 AND id_product_attribute = 0; [/code]

Adattare le query al prefisso

Poiché il prefisso delle tabelle può variare tra le installazioni, nelle query SQL è necessario sostituire manualmente il placeholder [PREFIX] con il prefisso effettivamente utilizzato nella propria configurazione.

Come verificare il prefisso utilizzato?

Se non conosci il prefisso usato nella tua installazione, puoi verificarlo facilmente: app/config/parameters.php e cerca l'impostazione: database_prefix

2. Controllare la quantità per tutte le combinazioni di un prodotto

Se un prodotto ha combinazioni (es. taglia, colore), puoi usare questa query per vedere le quantità:

[code=language-sql] SELECT sa.id_product_attribute, pa.reference, sa.quantity FROM [PREFIX]_stock_available sa JOIN [PREFIX]_product_attribute pa ON sa.id_product_attribute = pa.id_product_attribute WHERE sa.id_product = 123; [/code]

Controllare gli ordini aperti per un determinato prodotto

Gli ordini vengono gestiti principalmente nella tabella order_detail che è collegata agli ordini e ai prodotti.

1. Trova gli ordini aperti per un prodotto specifico

Per trovare gli ordini in stato "aperto" (non spediti o completati) per un determinato prodotto:

[code=language-sql] SELECT od.id_order, o.reference AS order_reference, od.product_id, od.product_attribute_id, od.product_quantity, o.current_state FROM [PREFIX]_order_detail od JOIN [PREFIX]_orders o ON od.id_order = o.id_order WHERE od.product_id = 123 AND o.current_state IN (1, 2, 3); [/code]

Note:

  • current_state si riferisce allo stato dell'ordine. Puoi verificare quali stati corrispondono a "aperti" nella tabella order_state.

Approfondisci la gestione degli stati dell'ordine.

2. Totale quantità ordinata ma non ancora spedita per un prodotto

Se vuoi verificare quante unità di un prodotto sono state ordinate ma non ancora spedite:

[code=language-sql] SELECT SUM(od.product_quantity - od.product_quantity_refunded - od.product_quantity_return) AS total_ordered_quantity FROM order_detail od JOIN orders o ON od.id_order = o.id_order WHERE od.product_id = 123 AND o.current_state IN (1, 2, 3); [/code]

Altri esempi utili

1. Confrontare la quantità fisica e quella disponibile

Puoi controllare i dati delle quantità fisiche e riservate per capire se ci sono discrepanze:

[code=language-sql] SELECT sa.id_product, sa.id_product_attribute, sa.physical_quantity, sa.reserved_quantity, sa.quantity FROM [PREFIX]_stock_available sa WHERE sa.id_product = 123; [/code]

2. Elenco dei prodotti che possono essere ordinati anche se esauriti

Per identificare i prodotti con l'opzione "consenti ordini esauriti" attivata:

[code=language-sql] SELECT id_product, id_product_attribute, quantity, out_of_stock FROM [PREFIX]_stock_available WHERE out_of_stock = 1; [/code]

RIEPILOGO

  • La tabella [PREFIX]_stock_available è il fulcro per la gestione delle quantità disponibili, fisiche e riservate.
  • Le query principali ti permettono di monitorare lo stato del magazzino, individuare prodotti esauriti e analizzare gli ordini in corso.
  • Le tabelle collegate come [PREFIX]_order_detail e [PREFIX]_orders offrono dettagli su ordini aperti e quantità prenotate.

Autore: Loris Modena

Loris Modena

SENIOR DEVELOPER

Per Ind Loris Modena titolare di Arte e Informatica, inizia a lavorare nel settore informatico nel 1989 quale sistemista addetto alla manutenzione e installazione di sistemi informatici. Inizia a programmare per il web nel 1997 occupandosi di programmazione CGI in PERL e successivamente passando alla programmazione in PHP e JavaScript. In questo periodo si avvicina al mondo Open source e alla gestione di server Linux. 

prodotto aggiunto alla lista