$partner['commission_balance']) { $errors[] = 'Insufficient balance. Your current balance is ₹' . number_format($partner['commission_balance'], 2); } elseif (empty($upiId)) { $errors[] = 'Please enter your UPI ID.'; } elseif (!preg_match('/^[\w\.-]+@[\w\.-]+$/', $upiId)) { $errors[] = 'Please enter a valid UPI ID.'; } else { try { $pdo = getPartnerDBConnection(); $pdo->beginTransaction(); $requestId = 'PRRD' . date('Ymd') . sprintf('%04d', mt_rand(1000, 9999)); $stmt = $pdo->prepare(" INSERT INTO partner_redemptions (affiliate_id, request_id, amount, upi_id, status) VALUES (?, ?, ?, ?, 'pending') "); $stmt->execute([$partner['id'], $requestId, $amount, $upiId]); $pdo->commit(); $success_message = 'Redemption request submitted successfully! Request ID: ' . $requestId; logPartnerActivity('Redemption requested', [ 'partner_id' => $partner['id'], 'request_id' => $requestId, 'amount' => $amount ]); } catch (Exception $e) { $pdo->rollBack(); $errors[] = 'Error processing your request. Please try again.'; logPartnerActivity('Redemption request error', ['partner_id' => $partner['id'], 'error' => $e->getMessage()]); } } } // Get redemption history try { $pdo = getPartnerDBConnection(); $stmt = $pdo->prepare(" SELECT pr.*, au.full_name as processed_by_name FROM partner_redemptions pr LEFT JOIN admin_users au ON pr.processed_by = au.id WHERE pr.affiliate_id = ? ORDER BY pr.created_at DESC "); $stmt->execute([$partner['id']]); $redemptions = $stmt->fetchAll(); } catch (Exception $e) { $redemptions = []; } ?> Redemptions - Relevant Reflex Partners
Available Balance

Total Earned: ₹ | Redeemed: ₹

= PARTNER_MIN_REDEMPTION): ?>

Request New Redemption

Min: ₹ | Max: ₹
Enter your UPI ID for payment
You need ₹ more to request a redemption. Keep referring to earn more!

Redemption History

No redemption requests yet.
Request ID Date Amount UPI ID Status Processed
Pending Processing Completed Rejected
by -