Skip to content

Reporting

Sistem: lintas modul. Report bukan modul. Report adalah registri entri menu yang menunjuk ke dalam modul-modul, ditambah tipe privilege tersendiri. Kode report-nya sendiri tersebar di sebelas folder modul. Halaman ini petanya.

Cara halaman ini diverifikasi

Ditulis dari master pada 2026-09-06 dan dibandingkan dengan big five di hari yang sama. Tidak ada halaman sebelumnya.

Apa itu report di INACT

Report adalah satu baris di ts_modules_report. Baris itu memberinya kode, label, grup menu dan URL. URL-nya menunjuk ke layar modul yang sudah ada dalam mode cetak, atau ke skrip unduhan mandiri. Tidak ada mesin report: setiap report adalah apa pun yang dirender layar tujuannya.

ts_modules_report
├── report_id            (PK)
├── report_code          mis. mdr_report_2, dipakai sebagai kunci privilege
├── report_desc          label menu
├── report_parent        nesting legacy, tidak dipakai menu lagi
├── report_url           "window|..." atau "direct_download_report|...", lihat di bawah
├── report_sort          urutan di dalam grupnya
├── report_is_installed  1 = tampil di menu
└── modules_parent       grup menu: dms, procurement atau budget

Di-seed oleh DefaultTsModulesReport.php. Master men-seed 64 baris, 17 di antaranya terpasang. 47 lainnya adalah report legacy (Activity, Tender, Hazop, Commission, Shipping Mark, dan seterusnya) yang tetap di registri dalam keadaan mati.

Cara menu dibangun

_menu.php merender tipe modul Report di samping modul biasa. Entrinya berasal dari getModuleReportList() di reference_function.inc.php, yang me-join ts_modules_report ke ts_module_parent pada modules_parent. Tiga hal mengikuti:

  1. Baris dengan modules_parent = NULL tidak pernah muncul, apa pun flag terpasangnya. Begitulah 47 baris legacy tetap tersembunyi.
  2. Baris dikelompokkan menurut modules_parent. Seed DefaultTsModuleSidebarTypeParent.php mendefinisikan grup untuk tipe report: dms, procurement, budget dan master_stamp. Inilah judul DMS, Procurement dan Cost and Budget di sidebar.
  3. Nesting report_parent lama sudah mati. Kode yang menelusuri report anak di bawah induk dikomentari. Setiap baris terpasang dirender datar di bawah grupnya. Dua baris seed, budget dan procurement, adalah sisa nesting itu: terpasang, tetapi report_url-nya kata polos (reportBudget, reportProc) bukan URL sungguhan, jadi dirender sebagai item daftar kosong.

Setiap entri hanya tampil kalau report_is_installed = 1 dan pengguna lolos pemeriksaan privilege, lihat Privilege. Grup admin melewati pemeriksaan. Sebelum merender, menu menambahkan &report_code=<md5 dari report_code> ke URL; class Base di src/basic/Base.php membacanya kembali untuk tahu report mana yang sedang disajikan halaman.

Tata bahasa URL

report_url adalah string yang dipisahkan pipa. Segmen pertama menyatakan cara membukanya; sisanya digabung menjadi query string oleh onButtonClick() di master.htm.

Segmen pertamaMembukaContoh
windowjendela dhtmlx di dalam aplikasiwindow|main.php?page=member&cid=<md5 modul>|&show=report&print=due&view=custom
direct_download_reporttab browser barudipakai untuk unduhan mandiri

Di balik bentuk window ada tiga tujuan:

TujuanQueryDitangani oleh
Mode cetak modulprint=browse&print_browse=all&view=custom&type=<code>*_handler_print_browse.inc.php milik modul. Tujuh modul punya: documents_master, expedite, package_order, packing_list, purchase_order, sales_order, dan satu lagi di sales_order.
Mode report modulshow=report&print=<code>&view=customcabang show=report modul, misalnya routing (print=due) dan budget (print=bvcm).
Report unduhan langsungpage=member&direct_download_report=<name>&get_form_filter=1member.php meng-include modules/member/direct_download_report/<name>.inc.php dan <name>.php, lalu keluar.

cid adalah md5 kode modul tujuan, itu sebabnya URL-nya terlihat tidak jelas.

Report yang terpasang di master

GrupKodeLabelTujuan
DMSdocumentsDocuments Librarymodul documents, cmd=print_costume
DMSrouting_01Routing Overduemodul routing, show=report&print=due
DMSmdr_report_2MDR Reportmode cetak documents_master, type=mdr_report_2, dirender oleh documents_master_handler_print_mdr_report_2.php sebagai template HTML
DMSmdr_report_summaryMDR Report Summarysama, dirender oleh documents_mater_handler_print_mdr_report_summary.php. Perhatikan typo nama file, mater.
Procurementprocurement_status_reportProcurement Status Reportunduhan langsung, .xlsx lewat PhpSpreadsheet
Budgetcost_summary_reportCost Report Summary (Accrual)modul procurement, cmd=print&print=cost_summary_report
Budgetcost_summary_report_actualCost Report Summary (Actual)handler yang sama, angka aktual
Budgetbudget_03Budget versus Current Monthmodul budget, show=report&print=bvcm
Budgetprocurement_05Contract Payment Summarymode report modul procurement
Budgetprocurement_05_1Contract Payment Summary (WBS)sama
Budgetprocurement_06Contract Invoices Balance Reportsama
Budgetprocurement_07AFE Accrual Reportsama
Budgetprocurement_14Finance Accrual Reportsama
Budgetprocurement_16Contract, Commitment and Expendituresama
Budgetprocurement_17Contract Balance Report, Expendituresama
Budgetbudget, procurementheader grup legacytanpa URL, dirender kosong

Dua skrip unduhan langsung di modules/member/direct_download_report/ adalah procurement_status_report dan cost_summary_report. Keduanya membangun .xlsx dengan PhpSpreadsheet, mengambil project dari project yang dipilih pengguna, dan membaca filternya dari form yang ditampilkan langkah get_form_filter=1 lebih dulu.

Privilege

Report punya tipe privilege sendiri. havePrivilegesReportResource($groupid, $reportCode, 'view') di tracking_function.inc.php meng-query ts_privileges_resource dengan priv_type = 'report' dan modules_code = <report_code>. Tabel yang sama dan model resource group yang sama dengan privilege modul, lihat Users dan Privilege, hanya priv_type-nya yang berbeda.

Admin memberikannya di Reference, Group Privileges, tab Report (group_privileges.php?show=report): grid resource group terhadap setiap report terpasang, satu checkbox masing-masing. Mencentang memasukkan baris view dengan priv_type='report'; menghapus centang menghapusnya. Wizard setup pertama punya grid yang sama di setup_privileges_report.php.

Menyalakan atau mematikan report

Reference, Report Register (report_register.php) adalah editor referensi generik yang terikat ke ts_modules_report lewat MODULE_REFERENCE_TABLE_CONFIG["report_register"]. Ia mengedit kode, label dan flag report_is_installed. Menyalakan salah satu dari 47 baris legacy membuatnya muncul di menu hanya kalau modules_parent-nya terisi; baris legacy men-seed NULL di sana, jadi edit database juga dibutuhkan. Perlakukan pengaktifan ulang report legacy sebagai perubahan kode: layar tujuannya mungkin sudah tidak ada.

Tabel terkait

TabelDipakai olehBerisi
ts_modules_reportmenu, privilege, Report Registerregistri
ts_module_parent, ts_module_typemenugrup dan tipe report
ts_privileges_resource (priv_type='report')menu, group privilegessiapa boleh melihat report mana
ts_report_settingsprocurement, expeditesetting report tersimpan per project, per orang (type, name)
ts_report_snapshot, ts_map_report_snapshotprocurementsnapshot akrual AFE: jumlah CBS untuk tahun lalu, sekarang dan depan, dengan komentar
ts_cm_reportprocurementsatu kolom, report_title

TODO: untuk apa ts_cm_report dan ts_cm_report_comments. Keduanya di-seed (TsCmReport.php) tetapi grep tidak menemukan pembaca di luar procurement.

Hal yang perlu diwaspadai

  • Report yang hilang biasanya soal privilege atau modules_parent, bukan bug. Periksa report_is_installed, modules_parent dan privilege report resource group sebelum membaca kode.
  • report_code adalah kunci privilege dan modules_code dipakai ulang untuknya. Report dan modul dengan kode yang sama akan bertabrakan di ts_privileges_resource; priv_type satu-satunya yang memisahkan keduanya.
  • Handler report MDR merender HTML, bukan Excel. Ekspor Excel MDR adalah fungsi Documents Master yang terpisah.
  • Skrip unduhan langsung berjalan di luar pemeriksaan privilege modul. Ia dicapai lewat page=member, jadi hanya privilege report dan login yang melindunginya.

Perbedaan antar instance

Diperiksa pada 2026-09-06.

InstancePerbedaan
MedcoMenambah routing_04, Comment Summary, terpasang di bawah DMS, menunjuk ke routing dengan print=commentsummary. 18 terpasang.
TimasMenambah overdue_report, Overdue, terpasang di bawah DMS, menunjuk ke mode cetak documents_master. 18 terpasang.
JOTRESeed sama dengan master, tetapi _menu.php-nya masih memakai pohon buatan tangan yang lama dengan array $_REPORT dan daftar grup hard-coded. Menambah skrip unduhan langsung jotre_procurement_status_report dan mencantumkannya berdasarkan nama di grup Procurement.
JadestoneIdentik dengan master.

Terkait