Overdue Contractor
Hanya Jadestone. Kode report overdue_contractor, ditambahkan oleh INA27-289 (Done). Membuka mode cetak documents_master dengan type=overdue_contractor; dispatcher meng-include documents_master_handler_print_overdue_contractor.php, 614 baris, memakai $pdo. Satu baris per dokumen MDR yang menunggu kontraktor: belum pernah di-submit padahal plan date IFR-nya sudah lewat, atau sudah di-return dan belum di-submit ulang. Kalau report Routing Overdue menyorot reviewer, report ini menyorot kontraktor.
Cara halaman ini diverifikasi
Ditelusuri di ina-jadestone pada 2026-09-08 dan dibandingkan dengan tiketnya. Screenshot dari inact-jadestone.eris.place pada snapshot produksi 2026-09-07, project AAL-VS. Kalau kode berbeda dari teks tiket, yang dijelaskan di sini adalah kodenya.
Form filter

Project, dan satu baris Filter by: field, operator dan nilai (field[], operator[], what[]). Field-nya Document Number, Document Title, Discipline, Doc Type, Revision, Issued Status, Date Received, Date Return dan Return Code; kotak nilai berubah menjadi dropdown untuk field referensi. Operator: Contains, Start With, Equals, Not Contain, Not Equal, dan Less than / Greater than untuk tanggal. Filter diterapkan di PHP setelah baris dibangun, pada teks yang dicetak dan, untuk field referensi, pada kodenya juga. Preview atau Excel lewat overdue_contractor_download_as.
Tiga query-nya
- MDR. Setiap baris
ts_documents_masterproject, di-join kets_mdr_progressuntuk plan date, urut discipline, document type, nomor dokumen. Ini urutan baris report. - Baris library terbaru per dokumen.
ts_documentsproject tanpa baris return_R, urutdoc_no DESC; baris pertama per nomor dokumen menang. Di-join kets_doc_resultcodeuntuk Return Code dan Status, dan kets_issued_statuslewatnext_expected_iduntuk Next Submission. - Routing terbaru per dokumen.
ts_routingdi-join kets_map_routing_filedants_map_routing_to, urutrout_id DESC; baris pertama per dokumen menang. Hanyarout_status-nya yang dipakai, plus nama hasilnya sebagai cadangan untuk Status.
Tidak ada jendela tanggal: report selalu "per hari ini".
Dokumen mana yang tampil

Setiap baris MDR diklasifikasikan sekali, dari baris library terbarunya (doc_send_received terisi berarti sudah di-submit) dan routing terbarunya:
| Kondisi | Uji | Masuk kalau | Required Date | Days Overdue |
|---|---|---|---|---|
| A, belum pernah di-submit | tidak ada doc_send_received di baris library terbaru, atau tidak ada baris library | plan date IFR dari MDR Progress (progress_content.two.IFR.plan_date) sudah lewat | plan date IFR itu | hari ini dikurangi plan date |
| B, sudah di-submit, routing masih berjalan | sudah di-submit, tanpa doc_appdate, dan routing terbaru bukan closed (atau tidak ada routing) | selalu | kosong | kosong |
| C, sudah di-return | sudah di-submit dan doc_appdate terisi | selalu, bahkan kalau batasnya masih di depan | doc_appdate ditambah 5 hari kerja | hari ini dikurangi Required Date, negatif selama masih ada waktu |
| tidak tampil | sudah di-submit, tanpa doc_appdate, routing terbaru closed | tidak pernah |
Dua hal berbeda dari tiket. Kondisi A mencetak plan date IFR sebagai Required Date dan keterlambatannya sebagai Days Overdue (tiket mengosongkan keduanya), dan baris kondisi C tampil apa pun tanda Days Overdue-nya, jadi dokumen yang di-return kemarin tampil dengan -4. Hanya nilai positif yang disorot merah di HTML.
5 hari kerja adalah hari_kerja($date_return, 5, $holidays) dari business_day.inc.php: awal yang jatuh Sabtu atau Minggu digeser ke Senin, lalu lima hari kerja ditambahkan, melompati tanggal di ts_holiday (getHolidayDate(), semua tahun, tanpa filter project). Lompatan Minggu ke Senin membuat return yang bertanggal akhir pekan mendapat Required Date yang sama dengan yang bertanggal Senin berikutnya.
Kolomnya

Lima belas kolom, sama di HTML dan Excel. Tiket mendaftar sembilan belas; empat kolom sisi routing (kedua Due Date, Days Overdue routing, Responsible / Consolidator) tidak dibuat.
| # | Kolom | Sumber | Kosong kalau |
|---|---|---|---|
| 1 | No. | nomor baris | |
| 2 | CTR | dm_ctr_number | |
| 3 | DISCIPLINE / CATEGORY | docdisc_name dari dm_discipline_identifier | |
| 4 | Doc Type | doctype_name dari dm_document_type | |
| 5 | DELIVERABLES DOC. NUMBER | dm_docmaster_number | |
| 6 | DOC. TITLE | dm_docmaster_title | |
| 7 | CURRENT REV. | doc_rev baris library terbaru | kondisi A |
| 8 | PURPOSE | issued_desc dari issued_code baris terbaru; Not Yet Submitted di kondisi A | |
| 9 | DATE RECEIVED | doc_send_received | kondisi A |
| 10 | DATE RETURN | doc_appdate, tanggal sign-off approver | A dan B |
| 11 | RETURN CODE | doc_res_code lewat doc_res_id | A dan B |
| 12 | STATUS | doc_res_name kalau ada return code (nama hasil routing sebagai cadangan); Not Yet Submitted di kondisi A | B |
| 13 | Required Date | lihat tabel di atas | B |
| 14 | Days Overdue | lihat tabel di atas | B |
| 15 | Next Submission | next_expected_id - issued_desc baris terbaru | tidak ada yang dipilih, atau A |
Tanggal dicetak apa adanya, Y-m-d. File Excel-nya Overdue_Contractor_Report_<timestamp>.xlsx dengan judul dan tanggal cetak di atas baris header.
Masalah yang diketahui
- Kondisi A mengabaikan kekosongan di tiket: Required Date dan Days Overdue diisi dari plan date IFR, dan dokumen yang sama sekali tidak punya plan date IFR tidak pernah tampil, setua apa pun.
- Kondisi C tidak pernah keluar dari daftar. Dokumen yang sudah di-return tetap tampil sampai di-submit ulang, dan Days Overdue negatif adalah satu-satunya tanda bahwa masih ada waktu. Mengurutkan atau memfilter menurut tandanya tidak bisa dari form.
- Routing terbaru adalah baris penerima pertama, apa pun urutan yang dikembalikan join; nama hasilnya hanya cadangan untuk Status, jadi jarang terlihat.
- Scan seluruh project di PHP. Tiga query memuat setiap baris MDR, library dan routing project, lalu filter berjalan pada baris yang sudah dibangun. Aman di AKT (55 baris); lambat di project sebesar AAL-VS (4.897).
- Empat kolom sisi routing dari tiket dihitung sebagai variabel tetapi tidak pernah dicetak.
Terkait
- Overdue Contractor Summary: pivot dari daftar ini.
- Master Doc. Register, tab Progress: asal plan date IFR.
- Report DMS.