PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
= ? AND is_active = 1 ORDER BY min_participants DESC LIMIT 1"; $stmt4 = mysqli_prepare($conn, $sql); if ($stmt4) { mysqli_stmt_bind_param($stmt4, "sii", $booking_data['package_type'], $booking_data['participant_count'], $booking_data['participant_count'] ); mysqli_stmt_execute($stmt4); $result = mysqli_stmt_get_result($stmt4); $commission_rule = mysqli_fetch_assoc($result); mysqli_stmt_close($stmt4); if ($commission_rule) { // Calculate commission amount $commission_amount = 0; if ($commission_rule['commission_rule'] === 'percentage') { $commission_amount = ($package_price * $commission_rule['commission_amount']) / 100; } else { // fixed amount $commission_amount = $commission_rule['commission_amount'] * $booking_data['participant_count']; } // Insert commission record $sql = "INSERT INTO agent_commissions (agent_id, booking_id, package_id, commission_amount, commission_rule_id, status_comission, notes) VALUES (?, ?, ?, ?, ?, 0, ?)"; $stmt5 = mysqli_prepare($conn, $sql); if ($stmt5) { $commission_note = sprintf( "Komisi untuk booking #%d: %s (%d jamaah) - %s", $id, ucfirst($booking_data['package_type']), $booking_data['participant_count'], $commission_rule['commission_rule'] === 'percentage' ? $commission_rule['commission_amount'] . '%' : 'Rp ' . number_format($commission_rule['commission_amount'], 0, ',', '.') ); mysqli_stmt_bind_param($stmt5, "iiidis", $agent_id, $id, $package_id, $commission_amount, $commission_rule['id'], $commission_note ); if (mysqli_stmt_execute($stmt5)) { $last_id = mysqli_insert_id($conn); // <- Pindahkan ke sini setelah execute // Update status_comission ke 1 $sql = "UPDATE agent_commissions SET status_comission = 1 WHERE id = ?"; $stmt6 = mysqli_prepare($conn, $sql); if ($stmt6) { mysqli_stmt_bind_param($stmt6, "i", $last_id); if (mysqli_stmt_execute($stmt6)) { logEvent('bookings', "Booking updated and commission added: ID $id - Amount: Rp " . number_format($commission_amount, 0, ',', '.'), 'info'); $success = "Pemesanan berhasil diperbarui dan komisi agen telah ditambahkan."; } else { $error = "Gagal mengupdate status komisi: " . mysqli_stmt_error($stmt6); } mysqli_stmt_close($stmt6); } else { $error = "Gagal menyiapkan query update status komisi: " . mysqli_error($conn); } } else { $error = "Gagal menyimpan komisi: " . mysqli_stmt_error($stmt5); } mysqli_stmt_close($stmt5); } else { $error = "Gagal mempersiapkan penyimpanan komisi: " . mysqli_error($conn); } } else { logEvent('bookings', "Booking updated but no matching commission rule found: ID $id", 'warning'); $success = "Pemesanan berhasil diperbarui (tidak ada aturan komisi yang sesuai)."; } } else { $error = "Gagal mempersiapkan query aturan komisi: " . mysqli_error($conn); } } else { $error = "Gagal mengambil data booking: " . mysqli_error($conn); } } else { $error = "Gagal mempersiapkan query booking: " . mysqli_error($conn); } }else{ // No agent associated with booking logEvent('bookings', "Booking updated (tanpa agen): ID $id", 'info'); $success = "Pemesanan berhasil diperbarui (Komisi sudah ada)."; } } else { // No agent associated with booking logEvent('bookings', "Booking updated (tanpa agen): ID $id", 'info'); $success = "Pemesanan berhasil diperbarui (tanpa agen)."; } } else { $error = "Gagal mempersiapkan ambil data booking: " . mysqli_error($conn); } } else { $error = "Gagal memperbarui pemesanan: " . mysqli_error($conn); } break; case 'delete': // Handle delete booking $id = intval($_POST['id']); $sql = "DELETE FROM package_bookings WHERE id = ?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "i", $id); if (mysqli_stmt_execute($stmt)) { logEvent('bookings', "Booking deleted: ID $id", 'warning'); $success = "Pemesanan berhasil dihapus"; } else { $error = "Gagal menghapus pemesanan: " . mysqli_error($conn); } break; } } } // Get all bookings with package details $bookings_query = " SELECT b.id as booking_id, b.*, p.name as package_name, a.name as agent_name FROM package_bookings b LEFT JOIN packages p ON b.package_id = p.id LEFT JOIN agents a ON b.agent_id = a.id ORDER BY b.created_at DESC"; // Handle notification status from URL parameters if (isset($_GET['status']) && isset($_GET['message'])) { $status = $_GET['status']; $message = $_GET['message']; if ($status === 'success') { $success = $message; } else if ($status === 'warning') { $warning = $message; } else if ($status === 'error') { $error = $message; } } $bookings = mysqli_query($conn, $bookings_query); if (!$bookings) { $error = "Database error: " . mysqli_error($conn); logEvent('bookings', "Error fetching bookings: " . mysqli_error($conn), 'error'); } // Get all active packages for the add booking form $packages_query = "SELECT id, name, price FROM packages WHERE status = 'active' ORDER BY name"; $packages = mysqli_query($conn, $packages_query); if (!$packages) { logEvent('bookings', "Error fetching packages: " . mysqli_error($conn), 'error'); } // Prepare content $content = ' ' . (isset($success) ? '' : '') . ' ' . (isset($error) ? '' : '') . ' ' . (isset($warning) ? '' : '') . '
Daftar Pemesanan
'; if ($bookings && mysqli_num_rows($bookings) > 0) { $no = 1; while ($booking = mysqli_fetch_assoc($bookings)) { $statusClass = ''; switch ($booking['payment_status']) { case 'pending': $statusClass = 'text-bg-warning'; $statusText = 'Pending'; break; case 'paid': $statusClass = 'text-bg-success'; $statusText = 'DP Lunas'; break; case 'completed': $statusClass = 'text-bg-primary'; $statusText = 'LUNAS'; break; case 'expired': case 'failed': $statusClass = 'text-bg-danger'; $statusText = 'Gagal'; break; case 'refund': $statusClass = 'text-bg-warning'; $statusText = 'Refund'; break; } // Payment proof link $paymentProofLink = ''; if ($booking['payment_proof']) { $paymentProofLink = ' '; if ($booking['payment_notes']) { $paymentProofLink .= ' '; } } $agent_name = $booking['agent_name'] ? '' . $booking['agent_name'] . '' : 'Tidak Ada Agen'; $content .= ' '; } } else { $content .= ''; } $content .= '
No Agent Nama Paket Nama Pelanggan Kontak Peserta DP Status Bukti Pelunasan Tanggal Aksi
' . $no++ . ' ' . $agent_name . ' ' . htmlspecialchars($booking['package_name']) . ' ' . htmlspecialchars($booking['customer_name']) . '
' . htmlspecialchars($booking['phone']) . '
' . $booking['participants'] . ' orang Rp ' . number_format($booking['amount'], 0, ',', '.') . ' ' . $statusText . ' ' . $paymentProofLink . ' ' . date('d/m/Y', strtotime($booking['created_at'])) . ' ' . ($booking['payment_status'] === 'paid' ? ' ' : '') . '
Tidak ada data pemesanan
'; ?> <?php echo $pageTitle ?? 'Admin Panel'; ?> Travel Umroh