Jump to content

Quelles interventions sur la BD pour remédier à un "Commande invalide" ?


Recommended Posts

Bonjour,

 

Je fais appel aux connaisseurs de la structure de donnée de PrestaShop (1.4.7.3)

 

Suite à une erreur PayPal 10415 (cf post ici si nécessaire), j'ai il me semble dans un PrestaShop une incohérence sur la base:

- Le compte client est bien créé dans ("onglet Client") et affiche un avertissement "Commandes invalides : 1" dans la section commande.

- La commande invalide en question n'apparait pas dans les commandes habituellement affichées dans l'onglet "Commandes"

- On peut tout de même accéder à la commande à partir de la section commande de la fiche client. Celle-ci apparait alors dans un état transitoire: pas de liste d'articles associée, pas de facture éditable et gros point interrogation à la place de la liste de statuts (cf screen-shot ci-joint)

 

 

En regardant dans la base, la commande a le statut invalide (ps_orders.valid = 0), ce qui parait logique et elle n'a pas de lignes dans "ps_order_detail".

 

Comment doit-on procéder pour remettre cela dans l'ordre ?

Dois-je simplement ajouter une ligne dans "ps_order_detail" ?

Quelles sont les autres relations à reconstruire ?

 

 

Merci par avance pour tout renseignement

 

EDIT du 22/10/2012

Suite à 2 nouvelles "commandes invalides" mais ce coup ci lors d'un paiement par virement, je suis remonté dans les logs Apache et identifié que l'erreur 10415 rencontré ici était une conséquence de la fameuse erreur "Swift_Message_MimeException" pour laquelle Icedocemil - merci à lui - propose un fix ici

post-53405-0-99068000-1347348676_thumb.png

Edited by m-Facilities.com (see edit history)

Share this post


Link to post
Share on other sites

Voici les tests menés sur une version locale de la base et qui semblent aller dans le bon sens:

 

- ajout d'une ligne dans ps_order_detail en utilisant les champs issus de ps_products

- modification du champ ps_orders.valid: ps_orders.valid = 1

- changement du statut de la commande dans le BackOffice: passage de "Annulé" à "Paiement accepté" -> la commande apparait dans la liste des commandes et je peux maintenant éditer la facture.

 

Avis aux Cadors: voyez-vous d'autres tables qu'il faudrait mettre à jour ?

 

Cordialement

Share this post


Link to post
Share on other sites

Bonjour,

 

J'ai remis en place une copie de la base de prod pour tester ce module. Une fois le module copié dans le répertoire /modules, l'instanciation plante la page de configuration des modules. Voici ce que j'ai dans le log Apache du site:

 

PHP Fatal error: Cannot make static method ModuleCore::getPaymentModules() non static in class jbx_cart_to_order in /home/var/www/www.je-ne-le-dirais-pas.fr/modules/jbx_cart_to_order/jbx_cart_to_order.php on line 97

 

PrestaShop v1.4.7.3

Edited by m-Facilities.com (see edit history)

Share this post


Link to post
Share on other sites

Après une semaine un peu tendue, je reprend ce problème que j'avais laissé en plan.

 

J'ai fait la supposition que jbx_cart_to_order::getPaymentModules, plus ancien, interférait avec le noyau 1.4.7.3 de PrestaShop. J'ai donc procéder à un renommage de this->getPaymentModules.

 

Maintenant, la page des modules s'affiche dans le BO mais il n'y a aucune référence au module jbx_* ni de nouvel onglet 'Jul*'.

Je pense que le code de jbx_cart_to_order n'est plus vraiment compatible.

 

Que faire ?

 

Une alternative serait de simplement appeler validateOrder sur l'ID du cart en question. Mais comment simplement faire un appel à $paymentModule->validateOrder ?

 

Parmi les paramètres, il me manque:

- $this->getOrderState($name) que je suppose être "_PS_OS_PAYMENT_"

- $paymentMethod qui est peut-être "paypal"

 

Une idée ? Un tips ?

 

Cordialement

Edited by m-Facilities.com (see edit history)

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Bonjour à tous,

 

Je viens de re-consacrer uen petite heure à ce problème qui n'est toujours pas résolu. J'ai modifié le code du module de Jeckyl pour l'adapter à la version 1.4.7.3 de PrestaShop que j'utilise:

 

Renommage de this->getPaymentModules en this->_getPaymentModules, puis vers la ligne 76, changement du string 'Payment' en 'payments_gateways'

 

if ($_module->tab == 'payments_gateways' && $_module->active) { ...

 

Le module s'affiche bien dans le BO et me permet de saisir un N° de panier ainsi qu'un mode de paiement. Cool !

Cependant, lorsque j'appuie sur le bouton 'Abracadabra transformation !', j'ai maintenant un beau message d'erreur:

 

Le panier ne peut être chargé ou une commande a déjà était réalisé avec ce dernier

 

Pfff.... :(

 

Je crois que je suis bon pour reconstruire les lignes de la base à la main :angry:

Edited by m-Facilities.com (see edit history)

Share this post


Link to post
Share on other sites

Voici une commande SQL pour rajouter un statut aux commande qui n'en ont pas :

 

INSERT INTO `ps_order_history`
(`id_employee`,`id_order`,`id_order_state`,`date_add`)
SELECT "1" as id_employe, `id_order`, "13" as id_order_state, NOW() as date_add FROM `ps_orders` O WHERE O.`id_order` NOT IN ( SELECT `id_order` FROM `ps_order_history`)

 

Vous pouvez changer le id employé par le votre ( ici 1 ) et vous DEVEZ changer le status, je vous conseil de creer un status "Erreur création commande" afin de pouvoir trier les commandes et les retrouver facilement.

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More