diff --git a/app/controllers/Peppol_controller.php b/app/controllers/Peppol_controller.php index 3800463..df02d31 100644 --- a/app/controllers/Peppol_controller.php +++ b/app/controllers/Peppol_controller.php @@ -196,12 +196,22 @@ class PEPPOL_peppol_controller { $data = is_array($result['data'] ?? null) ? $result['data'] : []; // Extraire document_id et peppol_document_id depuis la réponse API - $document_id = isset($data['document_id']) ? (string) $data['document_id'] : ''; - $peppol_document_id = isset($data['peppol_document_id']) ? (string) $data['peppol_document_id'] : ''; - $status = isset($data['status']) ? (string) $data['status'] : ($result['success'] ? 'created' : 'error'); + // La réponse API peut avoir la structure : $result['data']['data'] ou $result['data'] + // On vérifie d'abord si les valeurs sont dans $data['data'], sinon on prend directement $data + $inner_data = $data; + if (isset($data['data']) && is_array($data['data'])) { + // Structure imbriquée : $result['data']['data'] + $inner_data = $data['data']; + } + + $document_id = isset($inner_data['document_id']) ? trim((string) $inner_data['document_id']) : ''; + $peppol_document_id = isset($inner_data['peppol_document_id']) ? trim((string) $inner_data['peppol_document_id']) : ''; + $status = isset($inner_data['status']) ? (string) $inner_data['status'] : ($result['success'] ? 'created' : 'error'); $message = $result['message']; - if ($message === '' && isset($data['message'])) { + if ($message === '' && isset($inner_data['message'])) { + $message = (string) $inner_data['message']; + } elseif ($message === '' && isset($data['message'])) { $message = (string) $data['message']; } @@ -213,17 +223,21 @@ class PEPPOL_peppol_controller { 'order_id' => $order_id, 'payload_sent' => $payload, 'api_result' => $result, + 'data_extracted' => $data, + 'inner_data' => $inner_data, 'document_id' => $document_id, 'peppol_document_id' => $peppol_document_id, + 'status' => $status, ], 'INFO' ); } // Enregistrer ou mettre à jour dans la base de données + // On passe $inner_data comme response_data pour conserver la structure complète PEPPOL_Main_model::save_for_order( $order_id, - $data, + $inner_data, $payload, $document_id, $peppol_document_id,