√ Cara Cek Pesanan Dobel di Aplikasi Pemesanan Makanan Santri Berbasis Web dengan Cepat dan Mudah

Selamat datang di Web TulisanIB. Pada artikel kali ini penulis akan membagikan sebuah tutorial bagaimana caranya mengecek pesanan santri yang dobel pada aplikasi pemesanan makanan santri berbasis web dengan cepat dan mudah.
Kadang kita jengkel bukan karena santri saat melakukan pemesanan makanan melalui aplikasi santri itu kadang ngawur, sehingga menyebabkan banyak muncul pesanan dobel.
Pesanan dobel yang tidak kita batalkan akan berdampak pada uang saku santri karena akan membuang-buang uang dengan boros.
Kita juga bisa saja lelah dan capek jika harus mengecek satu persatu pesanan mana saja yang dobel secara manual.
Nah maka dari itu penulis akan membagikan tutorial cara mengecek pesanan dobel dengan cepat dan mudah.
Aplikasi pemesanan makanan santri yang penulis praktikkan pada artikel kali ini mungkin berbeda dengan aplikasi pemesanan makanan santri pada pondok pesantren lainnya, jadi bagi yang berbeda silahkan menyesuaikan dengan aplikasi pemesanan makanan santri yang kalian gunakan ya.
Baiklah berikut adalah langkah-langkahnya.
- Pertama buka dulu dashboard admin aplikasi pemesanan makanan santri.
- Sekarang kita akan masuk ke halaman daftar pesanan santri. Silahkan klik menu "Transaksi" di bilah menu sebelah kiri.
- Lalu klik menu "Santri".

- Tentukan tanggal order klik pada icon bergambar kalender dan hari kirim makanannya.
- Lalu klik tombol "Submit".

- Jika daftar pesanan santri sudah muncul, silahkan kalian klik tombol F12 pada keyboard.
- Maka akan muncul DevTools, silahkan kalian masuk pada menu "Console".
- Copy kode pengecekan pesanan dobel berikut, pilih salah satu.
Kode original:(async () => { const delay = ms => new Promise(r => setTimeout(r, ms)); const orders = []; // ambil data dari halaman saat ini async function collectCurrentPage() { const rows = [...document.querySelectorAll("table tbody tr")]; rows.forEach(row => { const cells = row.querySelectorAll("td"); orders.push({ no: cells[0]?.innerText.trim(), nota: cells[1]?.innerText.trim(), warung: cells[2]?.innerText.trim(), menu: cells[3]?.innerText.trim(), jumlah: cells[4]?.innerText.trim(), santri: cells[5]?.innerText.trim(), kelas: cells[6]?.innerText.trim(), asrama: cells[7]?.innerText.trim(), pemesan: cells[8]?.innerText.trim(), proses: cells[9]?.innerText.trim(), status: cells[9]?.innerText.includes("Batal") ? "Batal" : "Aktif" }); }); } // loop semua halaman (klik tombol Next otomatis) let page = 1; while (true) { console.log(`📄 Mengambil data halaman ${page}...`); await collectCurrentPage(); const next = document.querySelector(".paginate_button.next:not(.disabled)"); if (!next) break; // kalau sudah halaman terakhir, berhenti next.click(); page++; await delay(1200); // tunggu tabel load (bisa disesuaikan kalau koneksi lambat) } console.log(`✅ Total data terkumpul: ${orders.length}`); // kelompokkan berdasarkan Warung + Menu + Santri const grouped = {}; for (const o of orders) { const key = `${o.warung}|${o.menu}|${o.santri}`; if (!grouped[key]) grouped[key] = []; grouped[key].push(o); } // ambil hanya yang duplikat const duplicates = Object.entries(grouped) .filter(([_, list]) => list.length > 1) .map(([key, list]) => { const [warung, menu, santri] = key.split("|"); const total = list.length; const batal = list.filter(l => l.status === "Batal").length; const aktif = total - batal; return { warung, menu, santri, total, batal, aktif }; }); // hapus tabel lama kalau sudah pernah dibuat sebelumnya document.querySelector("#ringkasan-dobel")?.remove(); // tampilkan tabel ringkasan const container = document.createElement("div"); container.id = "ringkasan-dobel"; container.innerHTML = ` <h3 style="margin-top:20px;">📋 Ringkasan Orderan Dobel (Seluruh Halaman)</h3> <p><b>Total jenis dobel:</b> ${duplicates.length}</p> `; const table = document.createElement("table"); table.style.border = "1px solid #ccc"; table.style.borderCollapse = "collapse"; table.style.width = "100%"; table.innerHTML = ` <thead style="background:#f0f0f0;"> <tr> <th style="border:1px solid #ccc;padding:6px;">Warung</th> <th style="border:1px solid #ccc;padding:6px;">Menu</th> <th style="border:1px solid #ccc;padding:6px;">Santri</th> <th style="border:1px solid #ccc;padding:6px;">Total Order</th> <th style="border:1px solid #ccc;padding:6px;">Sudah Dibatalkan</th> <th style="border:1px solid #ccc;padding:6px;">Masih Aktif</th> </tr> </thead> <tbody> ${ duplicates.length ? duplicates .map( d => ` <tr> <td style="border:1px solid #ccc;padding:6px;">${d.warung}</td> <td style="border:1px solid #ccc;padding:6px;">${d.menu}</td> <td style="border:1px solid #ccc;padding:6px;">${d.santri}</td> <td style="border:1px solid #ccc;padding:6px;text-align:center;">${d.total}</td> <td style="border:1px solid #ccc;padding:6px;text-align:center;color:red;">${d.batal}</td> <td style="border:1px solid #ccc;padding:6px;text-align:center;color:green;">${d.aktif}</td> </tr>` ) .join("") : `<tr><td colspan="6" style="text-align:center;padding:10px;">✅ Tidak ada orderan dobel</td></tr>` } </tbody> `; container.appendChild(table); document.body.prepend(container); alert( duplicates.length ? `⚠️ Ditemukan ${duplicates.length} jenis orderan dobel.\nLihat tabel ringkasan di atas halaman.` : "✅ Tidak ada orderan dobel!" ); console.table(duplicates); })();
Kode yang sudah di-minify atau dikompres://awal (async()=>{const t=t=>new Promise((e=>setTimeout(e,t))),e=[];async function n(){[...document.querySelectorAll("table tbody tr")].forEach((t=>{const n=t.querySelectorAll("td");e.push({no:n[0]?.innerText.trim(),nota:n[1]?.innerText.trim(),warung:n[2]?.innerText.trim(),menu:n[3]?.innerText.trim(),jumlah:n[4]?.innerText.trim(),santri:n[5]?.innerText.trim(),kelas:n[6]?.innerText.trim(),asrama:n[7]?.innerText.trim(),pemesan:n[8]?.innerText.trim(),proses:n[9]?.innerText.trim(),status:n[9]?.innerText.includes("Batal")?"Batal":"Aktif"})}))}for(;;){await n();const e=document.querySelector(".paginate_button.next:not(.disabled)");if(!e)break;e.click(),await t(1200)}const r={};for(const t of e){const e=`${t.warung}|${t.menu}|${t.santri}`;r[e]||(r[e]=[]),r[e].push(t)}const a=Object.entries(r).filter((([t,e])=>e.length>1)).map((([t,e])=>{const[n,r,a]=t.split("|"),d=e.length,i=e.filter((t=>"Batal"===t.status)).length;return{warung:n,menu:r,santri:a,total:d,batal:i,aktif:d-i}}));document.querySelector("#ringkasan-dobel")?.remove();const d=document.createElement("div");d.id="ringkasan-dobel",d.innerHTML=`\n <h3 style="margin-top:20px;">📋 Ringkasan Orderan Dobel (Seluruh Halaman)</h3>\n <p><b>Total jenis dobel:</b> ${a.length}</p>\n `;const i=document.createElement("table");i.style.border="1px solid #ccc",i.style.borderCollapse="collapse",i.style.width="100%",i.innerHTML=`\n <thead style="background:#f0f0f0;">\n <tr>\n <th style="border:1px solid #ccc;padding:6px;">Warung</th>\n <th style="border:1px solid #ccc;padding:6px;">Menu</th>\n <th style="border:1px solid #ccc;padding:6px;">Santri</th>\n <th style="border:1px solid #ccc;padding:6px;">Total Order</th>\n <th style="border:1px solid #ccc;padding:6px;">Sudah Dibatalkan</th>\n <th style="border:1px solid #ccc;padding:6px;">Masih Aktif</th>\n </tr>\n </thead>\n <tbody>\n ${a.length?a.map((t=>`\n <tr>\n <td style="border:1px solid #ccc;padding:6px;">${t.warung}</td>\n <td style="border:1px solid #ccc;padding:6px;">${t.menu}</td>\n <td style="border:1px solid #ccc;padding:6px;">${t.santri}</td>\n <td style="border:1px solid #ccc;padding:6px;text-align:center;">${t.total}</td>\n <td style="border:1px solid #ccc;padding:6px;text-align:center;color:red;">${t.batal}</td>\n <td style="border:1px solid #ccc;padding:6px;text-align:center;color:green;">${t.aktif}</td>\n </tr>`)).join(""):'<tr><td colspan="6" style="text-align:center;padding:10px;">✅ Tidak ada orderan dobel</td></tr>'}\n </tbody>\n `,d.appendChild(i),document.body.prepend(d),alert(a.length?`⚠️ Ditemukan ${a.length} jenis orderan dobel.\nLihat tabel ringkasan di atas halaman.`:"✅ Tidak ada orderan dobel!")})(); //akhir - Kemudian paste atau tekan tombol Ctrl + V pada keyboard.
- Lalu tekan tombol Enter pada keyboard.
- Jika muncul peringatan warning dan kita tidak bisa melakukan paste, silahkan kalian baca peringatan warning tersebut, biasanya disuruh untuk menulis perijinan paste.
Kalau di penulis ini disuruh untuk menuliskan "allow pasting", silahkan kalian menyesuaikan dengan perintah yang muncul pada browser yang kalian gunakan. - Kemudian tekan tombol Enter pada keyboard.
- Lalu coba kalian paste kode pengecekan pesanan dobel tadi.

- Lalu tekan tombol Enter pada keyboard.

- Jika berhasil maka browser yang kita gunakan akan langsung melakukan proses pengecekan makanan dobel.
Kalian bisa scroll ke bagian bawah halaman, maka kalian akan melihat proses pengecekan sedang berjalan.
Cepat atau tidaknya proses pengecekan ini bergantung dari jumlah halamannya, jika jumlah halamannya banyak karena pesanannya banyak maka akan lebih lama.
Kalian bisa tunggu sebentar, proses pengecekan ini berjalan kurang lebih hanya beberapa detik atau menit saja.
- Jika proses pengecekan sudah selesai maka akan muncul pesan pemberitahuan. Klik tombol "OK" yang berwarna biru untuk menutup pesan pemberitahuannya.

- Untuk melihat hasil pengecekannya, silahkan kalian scroll ke bagian paling atas halaman, maka nanti akan ada tabel dan pemberitahuannya ada berapa pesanan makanan yang dobel.

- Selesai.
Bagaimana? Mudah bukan? Insya Allah sangat mudah sekali. Tutorial di atas penulis praktikkan pada tanggal 14 Oktober 2025, jika berbeda silahkan menyesuaikan ya.
Sekian apa yang bisa penulis sampaikan pada artikel "Cara Cek Pesanan Dobel di Aplikasi Pemesanan Makanan Santri Berbasis Web dengan Cepat dan Mudah" ini. Semoga artikel ini bisa bermanfaat untuk semua orang dan terutama bagi yang sedang membutuhkan artikel ini.