// L'unique requête dont on a besoin ! $ch = curl_init("https://{$hiboutik_account}.hiboutik.com/api/sales/$id"); curl_setopt($ch, CURLOPT_USERPWD, "$hiboutik_user:$hiboutik_key"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $res = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code == 200) { $parsed = json_decode($res, true); if (!is_array($parsed) || isset($parsed['error'])) continue; // Hiboutik met parfois la vente dans un tableau [0] $sale = isset($parsed[0]) ? $parsed[0] : $parsed; // Si le ticket contient la fameuse liste "line_items", on fouille ! if (isset($sale['line_items']) && is_array($sale['line_items'])) { $items_to_log = []; foreach ($sale['line_items'] as $item) { $cat_name = isset($item['category_name']) ? $item['category_name'] : ''; // Détection infaillible de la Catégorie B d'après votre JSON // Le \bB\b vérifie que la lettre B est isolée (pas au milieu d'un mot) if (preg_match('/\bB\b/iu', $cat_name) || stripos($cat_name, 'CATÉGORIE B') !== false || stripos($cat_name, 'CATEGORIE B') !== false) { $items_to_log[] = [ 'name' => isset($item['product_model']) ? $item['product_model'] : 'Désignation inconnue', 'qty' => isset($item['quantity']) ? $item['quantity'] : 1 ]; } } // Si on a trouvé des munitions B, on récupère le client if (!empty($items_to_log)) { $client_nom = "CLIENT"; $client_prenom = "ANONYME (Vente Comptoir)"; if (!empty($sale['customers_last_name'])) { $client_nom = strtoupper($sale['customers_last_name']); $client_prenom = ucfirst(strtolower(isset($sale['customers_first_name']) ? $sale['customers_first_name'] : '')); } // Récupération de la date $created_at = isset($sale['created_at']) ? $sale['created_at'] : ''; $date_parts = explode(' ', $created_at); $sale_date = isset($date_parts[0]) ? date("d/m/Y", strtotime($date_parts[0])) : 'Date inconnue'; $sale_time = isset($date_parts[1]) ? $date_parts[1] : '-'; // Récupération de la facture $document_ref = "Ticket #$id"; if (!empty($sale['invoice_id'])) { $document_ref = "Facture #" . $sale['invoice_id']; } elseif (!empty($sale['sale_num_fac'])) { $document_ref = "Facture " . $sale['sale_num_fac']; } foreach ($items_to_log as $log_item) { fputcsv($f, [ $sale_date, $sale_time, $client_nom, $client_prenom, $log_item['name'], $log_item['qty'], $document_ref ], ';'); } } } } } fclose($f); $next_url = admin_url("admin.php?page=hiboutik-registre&step=process&ticket_start=$ticket_start&tickets_to_scan=$tickets_to_scan¤t_ticket=$limit_for_this_run"); $tickets_restants = $limit_for_this_run - $stop_ticket; echo "
| Date & Heure | Nom de l'acquéreur | Prénom | Désignation (Catégorie B) | Qté | Preuve de Vente |
|---|---|---|---|---|---|
| " . esc_html($row[0]) . " à " . esc_html($row[1]) . " | ";
echo "" . esc_html($row[2]) . " | "; echo "" . esc_html($row[3]) . " | "; echo "" . esc_html($row[4]) . " | "; echo "" . esc_html($row[5]) . " | "; echo "" . esc_html($row[6]) . " | "; echo "