Jump to content

SQL -> liste des commandes contenant au moins un produit spécifique


Recommended Posts

Bonjour à tous,

Sur PS 1.7.6.5 je souhaiterais afficher toutes les commandes qui contiennent au moins un certain de mes produits (via son id). En effet j'ai 3 réservé dessus et je ne comprends pas pourquoi, peut-être un état de commande qui n'a pas été mis à jour.

La requête par défaut pour la liste des commandes est :

SELECT SQL_CALC_FOUND_ROWS a.`id_order`, `reference`, `id_cart`, `total_paid_tax_incl`, `payment`, a.`date_add` AS `date_add`
, 
		a.id_currency,
		a.id_order AS id_pdf,
		CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `customer`,
		osl.`name` AS `osname`,
		os.`color`,
		IF((SELECT so.id_order FROM `ps_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new,
		country_lang.name as cname,
		IF(a.valid, 1, 0) badge_success, shop.name as shop_name 
FROM `ps_orders` a 


		LEFT JOIN `ps_customer` c ON (c.`id_customer` = a.`id_customer`)
		INNER JOIN `ps_address` address ON address.id_address = a.id_address_delivery
		INNER JOIN `ps_country` country ON address.id_country = country.id_country
		INNER JOIN `ps_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 3)
		LEFT JOIN `ps_order_state` os ON (os.`id_order_state` = a.`current_state`)
		LEFT JOIN `ps_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 3) 
 LEFT JOIN `ps_shop` shop
                            ON a.`id_shop` = shop.`id_shop` WHERE 1  AND a.id_shop IN (1) 

 ORDER BY a.id_order DESC

Comment pourrais-je la modifier pour n'afficher que les commandes répondant à mon besoin ci-dessus ?

(NB J'ai surtout besoin de la liste de ces commandes avec leur état)

Merci par avance,

Edited by Ric34 (see edit history)
Link to comment
Share on other sites

Bon ben dans l'onglet Statistiques puis Détail produits, je me suis tapé les 139 commandes liés à ce produit. Elles ont toutes le statut expédié ou livré, il ne devrait donc pas y avoir de réservé sur ce produit pourtant dans la gestion du stock il en a 3. Je ne comprends pas pourquoi. J'ai remarqué cela pour plusieurs autres produits. 

Vous n'auriez pas une idée ?

NB : La reqûete SQL ci-dessus m'intéresse toujours.

Merci

Link to comment
Share on other sites

Il te suffit simplement de faire une recherche avec un LIKE dans la table order_detail par le nom du produit ou sa référence pour ensuite jointer avec l'id de commande de la table ps_order_detail  la table ps_orders et ensuite, jointer la table ps_order_status avec le statut de cette commande.

 

 

Link to comment
Share on other sites

Concernant la gestion des stock as-tu vérifié que les commandes aient bien un statut "valid" à 1 ?

Regarde dans ta base de données à quoi correspondent exactement les id de statut et tu peux exécuter une de ces 2 requêtes :

Recherche par référence :

SELECT od.id_order, od.product_quantity, od.product_reference, o.valid, o.current_state FROM ps_order_detail od LEFT JOIN `ps_orders` o ON (od.`id_order` = o.`id_order`) WHERE product_reference LIKE "%TA_REFERENCE%"

Recherche par nom de produit :

SELECT od.id_order, od.product_quantity,  od.product_name, o.valid, o.current_state FROM ps_order_detail od LEFT JOIN `ps_orders` o ON (od.`id_order` = o.`id_order`) WHERE product_name LIKE "%LE_NOM_DE_TON_PRODUIT%"

 

Edited by HeineFR
Oubli od.product_quantity (see edit history)
  • Like 1
Link to comment
Share on other sites

3 hours ago, HeineFR said:

Concernant la gestion des stock as-tu vérifié que les commandes aient bien un statut "valid" à 1 ?

Regarde dans ta base de données à quoi correspondent exactement les id de statut et tu peux exécuter une de ces 2 requêtes :

Recherche par référence :


SELECT od.id_order, od.product_quantity, od.product_reference, o.valid, o.current_state FROM ps_order_detail od LEFT JOIN `ps_orders` o ON (od.`id_order` = o.`id_order`) WHERE product_reference LIKE "%TA_REFERENCE%"

Recherche par nom de produit :


SELECT od.id_order, od.product_quantity,  od.product_name, o.valid, o.current_state FROM ps_order_detail od LEFT JOIN `ps_orders` o ON (od.`id_order` = o.`id_order`) WHERE product_name LIKE "%LE_NOM_DE_TON_PRODUIT%"

 

Merci beaucoup c'est je crois ce dont j'avais besoin.

Alors j'ai lancé ma requête sur mon produit qui reste avec 3 "réservé" et effectivement il y a bien 3 commandes avec valid = 0

Ces commandes ont le statut "remboursée".

Ce qui est bizarre, c'est que j'utilise ce statut lorsque je clique sur "remboursement standard". J'y coches mes produits à rembourser ça me les remets alors en stock. Mais s'il y en a un que je ne coche pas ça me le laissera donc en réservé (d'ailleurs dans la colonne, le tableau des produits et la colonne "Remboursé" cette dernière n'affiche rien même sur les produits cochés remboursés...

D'ailleurs c'est un peu "confus" cette notion de remboursement standard et remboursement partiel sachant qu'on peut visiblement faire des remboursements partiels de la commande sur les 2 (sauf le montant dispo lui uniquement avec remboursement partiel)...

Que me conseilleriez-vous de faire avec cet état de commande ? L'indiquer en tant que commande validée ?

Merci encore :)

Link to comment
Share on other sites

Just now, HeineFR said:

Oui, elles sont valides

Puisqu'il y a eu encaissement il y a facture, il faut donc rembourser, remettre les produits en stock et faire un avoir  ;) 

Ah ok, bizarrement par défaut ce statut ne l'était pourtant pas mais je suis d'accord avec votre point de vue. Je vais donc modifier cet état avec notamment "commande validée"

Merci

Link to comment
Share on other sites

Du coup j'ai un paquet de commandes avec ce statut "Remboursé" qui me laisse certains produits en réservé. Je souhaiterais régénérer cet état de commande vue qu'il considère désormais la commande comme validé et donc plus de réservé ^^... Je ne vois pas trop comment je pourrais faire cela, peut être une idée ?

Merci

Link to comment
Share on other sites

Je viens de penser à un truc, ce statut remboursé rembourse automatiquement les clients sur paypal s'ils ont utilisé ce moyen de paiement. Avoir modifié cet état (commande validée) ne va empêcher cela ?

Et je souhaitais regénérer cet état pour toutes les commandes qui ont ce statut mais j'ai peur que ça effectue du coup également le remboursement automatique paypal ^^

Link to comment
Share on other sites

Va dans Configuration -> Commandes -> Etats de commande et voit si juste de passer les commandes annulées ou remboursées en commande valide corrige ton état de stock.

A voir aussi si c'est le statut "valide" qui agit bien sur la réservation du stock ou le statut marque la commande comme expédiée, j'ai un doute pour le coup.

Link to comment
Share on other sites

6 minutes ago, HeineFR said:

Va dans Configuration -> Commandes -> Etats de commande et voit si juste de passer les commandes annulées ou remboursées en commande valide corrige ton état de stock.

A voir aussi si c'est le statut "valide" qui agit bien sur la réservation du stock ou le statut marque la commande comme expédiée, j'ai un doute pour le coup.

J'ai modifié l'état en validé mais ça ne change pas les stocks des commandes qui utilisaient précédemment ce statut, ça fonctionne pour toutes les futurs. Je confirme que passer un statut en validé agit bien sur la réservation (tests en local)

 

C'est pour ça qu'il faudrait que je repasse toutes les commandes qui avaient remboursé de nouveau en remboursé ^^, mais avec le remboursement automatique de paypal sur ce statut ça m'inquiète un peu...

Edited by Ric34 (see edit history)
Link to comment
Share on other sites

Effectivement, l'opération est délicate.

Toutefois es-tu sûr que c'est le passage en annulé qui fait le remboursement?
Ne serait-ce pas plutôt le bouton remboursement partiel qui permet de rembourser + remettre produit en stock qui fait ça?

De plus si tu modifies beaucoup de statuts comme ça, oublie pas de désactiver temporairement l'envoi d'email sur ce changement de statut pour éviter de spammer tes clients ;)

Link to comment
Share on other sites

Avec Paypal oui les 2 statuts (annulé ou remboursé) effectuent un remboursement intégral automatiquement.

Remboursement partiel il faut cocher "rembourser sur paypal" qui apparaît au dessus de "générer un avoir"...

Pour ces changements de statut massivement je réfléchis effectivement à le faire ou non ^^... Je pensais désactiver les remboursements automatique paypal, passer les commandes en un nouveau statut provisoire et les repasser en "remboursé" afin que ça me mette à jour mon stock et ses réservés (merci pour les mails je l'aurais peut-être oublié ^^...)

Link to comment
Share on other sites

3 minutes ago, Ric34 said:

Je pensais désactiver les remboursements automatique paypal, passer les commandes en un nouveau statut provisoire et les repasser en "remboursé" afin que ça me mette à jour mon stock et ses réservés (merci pour les mails je l'aurais peut-être oublié ^^...)

C'est alors la meilleure solution ;)

Link to comment
Share on other sites

Bon je viens de procéder à cette mise à jour massive des statuts. Mais mes réservés n'ont pas changés sur tous les produits... J'ai donc toujours un produit par exemple avec 3 réservé alors que toutes ces commandes associées ont bien valid -> 1. Je ne comprends pas d'où sort ces réservés pour ce produit pour le coup. Idem pour beaucoup d'autres.... :(

Link to comment
Share on other sites

Je viens de refaire des tests en local et effectivement validé n'enlève pas le réservé (je n'y comprends plus rien hier persuadé que ça fonctionnait...)

Effectivement expédié ça marche pour le réservé mais pas dans le bon sens avec -1 au lieu de remettre le produit en stock...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...