prepare($sql_check); $stmt_check->execute([ 'passengerID' => $passengerID, 'user_phone' => $user_phone ]); $existing = $stmt_check->fetch(PDO::FETCH_ASSOC); error_log("[CreateInvoicePassenger] Checked for existing pending invoice"); // ------------------------------------- // 4) توليد رقم فاتورة جديد (6 أرقام) // ------------------------------------- $new_invoice_number = random_int(100000, 999999); error_log("[CreateInvoicePassenger] Generated invoice number"); if ($existing) { // ------------------------------------- // 4a) تحديث الفاتورة المعلّقة الحالية // ------------------------------------- error_log("[CreateInvoicePassenger] Existing pending invoice found. Updating..."); $sql_update = " UPDATE invoices_sms_passenger SET invoice_number = :invoice_number, amount = :amount, created_at = NOW() WHERE id = :id "; $stmt_update = $con->prepare($sql_update); $stmt_update->execute([ ':invoice_number' => $new_invoice_number, ':amount' => $amount, ':id' => $existing['id'] ]); error_log("[CreateInvoicePassenger] Invoice updated successfully"); echo json_encode([ "status" => "success", "message" => "Pending passenger invoice updated.", "invoice_number" => $new_invoice_number ]); error_log("[CreateInvoicePassenger] Response sent (update)"); } else { // ------------------------------------- // 4b) إنشاء فاتورة جديدة // ------------------------------------- error_log("[CreateInvoicePassenger] No existing invoice. Creating new one..."); $sql_insert = " INSERT INTO invoices_sms_passenger (invoice_number, passengerID, user_phone, amount, status) VALUES (:invoice_number, :passengerID, :user_phone, :amount, 'pending') "; $stmt_insert = $con->prepare($sql_insert); $ok = $stmt_insert->execute([ ':invoice_number' => $new_invoice_number, ':passengerID' => $passengerID, ':user_phone' => $user_phone, ':amount' => $amount ]); if ($ok) { error_log("[CreateInvoicePassenger] New invoice created successfully"); echo json_encode([ "status" => "success", "message" => "New passenger invoice created.", "invoice_number" => $new_invoice_number ]); error_log("[CreateInvoicePassenger] Response sent (insert)"); } else { error_log("[CreateInvoicePassenger] Failed to create passenger invoice (DB insert)"); printFailure("Failed to create passenger invoice."); } } } catch (PDOException $e) { error_log("[CreateInvoicePassenger] Database exception: " . $e->getMessage()); printFailure("Database error: " . $e->getMessage()); } catch (Throwable $e) { error_log("[CreateInvoicePassenger] Unexpected exception: " . $e->getMessage()); printFailure("An unexpected server error occurred."); } error_log("[CreateInvoicePassenger] --- Request Ended ---");