2016-06-08 1 views
4

J'ai un simple outil de gestion de backend écrit en PHP qui extrait les commandes de la base de données WooCommerce et les présente à notre cuisine pour le traitement des livraisons.Comment les remboursements partiels sont-ils stockés dans la base de données WooCommerce?

J'ai toujours été capable de mettre en surbrillance une ligne de table qui avait un statut autre que 'wc-completed' pour gérer tout traitement supplémentaire qui pourrait être nécessaire. Cependant, il a été porté à mon attention aujourd'hui qu'une commande particulière avait été remboursée pour un article. Un remboursement partiel ne change pas le statut de la commande, donc j'ai besoin de tirer les informations de remboursement d'une autre table dans la base de données.

J'ai vérifié toutes les tables que je connais liées au traitement de la commande - wp_posts, wp_postmeta, wp_woocommerce_order_items et wp_woocommerce_order_itemmeta, mais aucun signe de toute information de remboursement. En fait, l'itemmeta contenu dans le dernier tableau ne permet même pas d'ajuster la quantité, ce qui rend mes rapports incorrects pour les commandes partielles comme celle-ci.

Lorsque vous affichez le récapitulatif de commande dans le backend woocommerce, il affiche une quantité de 1 pour cet article en particulier, puis un -1 juste en dessous. Je suppose, d'après cela, que quelque part dans la base de données il y a des dossiers de remboursement associés aux commandes, mais je n'arrive pas à le trouver. Même le total de la commande en wp_postmeta ne reflète pas le remboursement partiel.

Est-ce que quelqu'un sait où ces données de remboursement sont stockées dans la base de données wordpress?

Merci.

Répondre

4

ordres de remboursement partiel sont stockés dans la base de données comme les normales: Dans wp_posts table avec un 'post_type' = 'shop_order_refund' et un 'post_parent' = order_ID (number), où le order_ID est la référence à la 'shop_order' originale.

Pour connaître un de ces remboursements sont partiels, vous avez besoin de la valeur de quantité _refund_amount que vous pouvez trouver sous wp_post_meta pour cette 'refund_order' et son correspondant 'shop_order' la valeur _order_total aussi:

si ('refund_order' =>_refund_amount)! = ('shop_order' =>_order_total): alors c'est partiel.

si ('refund_order' =>_refund_amount) == ('shop_order' =>_order_total): il est normale(non partielle).

Notes:

  • Vous pouvez avoir un ou plusieurs remboursements partiels pour une commande.
  • un _order_total article dans wp_postmeta tableau avec une valeur négative qui reflète toujours la valeur positive de _refund_amount article. Cette valeur _order_total n'a rien à voir avec la valeur parent associée'shop_order' => '_order_total'.

    Il est le contraire (négative) du parent lié 'shop_order' => '_order_total' valeur uniquement lorsque l'ordre de remboursement NE PARTIELLE.

  • Dans wp_woocommerce_order_items et wp_woocommerce_order_itemmeta tables, il est lié des données détaillées concernant les produits des commandes et commandes remboursées ...
+0

Parfait! Merci - c'était juste l'information dont j'avais besoin. Très appréciée. –