From 2f01441922ef87865b0e7e603cb9ad8ba5f8dc51 Mon Sep 17 00:00:00 2001 From: jps Date: Wed, 14 Jan 2026 13:40:01 +0100 Subject: [PATCH] ajout helper nom champs tva --- app/controllers/Woocommerce_controller.php | 3 +- app/helpers/Woo_Helper.php | 66 ++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/app/controllers/Woocommerce_controller.php b/app/controllers/Woocommerce_controller.php index e13c948..87fb5a1 100644 --- a/app/controllers/Woocommerce_controller.php +++ b/app/controllers/Woocommerce_controller.php @@ -59,7 +59,8 @@ class PEPPOL_Woocommerce_controller { // N'envoyer vers Peppol que les commandes avec un numéro de TVA saisi ET valide. // Le plugin "WooCommerce EU VAT Number" stocke le numéro validé dans la meta "_billing_vat_number" // et le statut de validation dans "_vat_number_is_valid" (valeur 'true' ou 'false'). - $billing_vat_number = (string) $order->get_meta('_billing_vat_number'); + // Utilisation de la fonction helper pour gérer différentes variantes de clés (billing_vat_number, billing_tva, etc.) + $billing_vat_number = \ESI_PEPPOL\helpers\PEPPOL_Woo_Helper::esi_get_order_vat_number($order); $vat_is_valid = (string) $order->get_meta('_vat_number_is_valid'); if ($billing_vat_number === '' || $vat_is_valid !== 'true') { diff --git a/app/helpers/Woo_Helper.php b/app/helpers/Woo_Helper.php index f3bf37e..1ce25bf 100644 --- a/app/helpers/Woo_Helper.php +++ b/app/helpers/Woo_Helper.php @@ -28,4 +28,70 @@ class PEPPOL_Woo_Helper { return $out; } + + public static function esi_get_order_vat_number( $order ) { + + if ( is_numeric( $order ) ) { + $order = wc_get_order( $order ); + } + + if ( ! $order instanceof \WC_Order ) { + return ''; + } + + // 1) Clés les plus courantes (ajuste/complète si besoin) + $known_keys = [ + '_billing_vat_number', + 'billing_vat_number', + '_vat_number', + 'vat_number', + '_billing_vat', + 'billing_vat', + '_billing_tva', + 'billing_tva', + '_tva', + 'tva', + 'eu_vat_number', + '_eu_vat_number', + 'vat_id', + '_vat_id', + ]; + + foreach ( $known_keys as $key ) { + $val = $order->get_meta( $key, true ); + if ( ! empty( $val ) ) { + return is_string($val) ? trim($val) : $val; + } + } + + // 2) Fallback: scan des meta keys contenant vat/tva + $vat_candidates = []; + foreach ( $order->get_meta_data() as $meta ) { + $k = (string) $meta->key; + if ( preg_match('/\b(vat|tva)\b/i', $k) || preg_match('/(vat|tva)/i', $k) ) { + $v = $meta->value; + if ( is_string($v) ) { + $v = trim($v); + } + if ( ! empty($v) ) { + $vat_candidates[$k] = $v; + } + } + } + + // Si plusieurs candidats, tu peux choisir une règle + // Ici: si un seul => return, sinon priorise ceux qui contiennent "billing" + if ( count($vat_candidates) === 1 ) { + return reset($vat_candidates); + } + foreach ( $vat_candidates as $k => $v ) { + if ( stripos($k, 'billing') !== false ) { + return $v; + } + } + + // sinon le 1er trouvé + return ! empty($vat_candidates) ? reset($vat_candidates) : ''; + } + } \ No newline at end of file