Skip to content

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

Overdue Contractor, form filter: Project dan satu baris Filter by
Overdue Contractor, form filter: Project dan satu baris Filter by · click to enlarge

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

  1. MDR. Setiap baris ts_documents_master project, di-join ke ts_mdr_progress untuk plan date, urut discipline, document type, nomor dokumen. Ini urutan baris report.
  2. Baris library terbaru per dokumen. ts_documents project tanpa baris return _R, urut doc_no DESC; baris pertama per nomor dokumen menang. Di-join ke ts_doc_resultcode untuk Return Code dan Status, dan ke ts_issued_status lewat next_expected_id untuk Next Submission.
  3. Routing terbaru per dokumen. ts_routing di-join ke ts_map_routing_file dan ts_map_routing_to, urut rout_id DESC; baris pertama per dokumen menang. Hanya rout_status-nya yang dipakai, plus nama hasilnya sebagai cadangan untuk Status.

Tidak ada jendela tanggal: report selalu "per hari ini".

Dokumen mana yang tampil

Project AAL-VS: PURPOSE dan STATUS membedakan kondisinya. Baris Not Yet Submitted tidak punya revisi dan tanggal
Project AAL-VS: PURPOSE dan STATUS membedakan kondisinya. Baris Not Yet Submitted tidak punya revisi dan tanggal · click to enlarge

Setiap baris MDR diklasifikasikan sekali, dari baris library terbarunya (doc_send_received terisi berarti sudah di-submit) dan routing terbarunya:

KondisiUjiMasuk kalauRequired DateDays Overdue
A, belum pernah di-submittidak ada doc_send_received di baris library terbaru, atau tidak ada baris libraryplan date IFR dari MDR Progress (progress_content.two.IFR.plan_date) sudah lewatplan date IFR ituhari ini dikurangi plan date
B, sudah di-submit, routing masih berjalansudah di-submit, tanpa doc_appdate, dan routing terbaru bukan closed (atau tidak ada routing)selalukosongkosong
C, sudah di-returnsudah di-submit dan doc_appdate terisiselalu, bahkan kalau batasnya masih di depandoc_appdate ditambah 5 hari kerjahari ini dikurangi Required Date, negatif selama masih ada waktu
tidak tampilsudah di-submit, tanpa doc_appdate, routing terbaru closedtidak 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

Kolom sebelah kanan: Required Date, Days Overdue (merah kalau positif) dan Next Submission
Kolom sebelah kanan: Required Date, Days Overdue (merah kalau positif) dan Next Submission · click to enlarge

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.

#KolomSumberKosong kalau
1No.nomor baris
2CTRdm_ctr_number
3DISCIPLINE / CATEGORYdocdisc_name dari dm_discipline_identifier
4Doc Typedoctype_name dari dm_document_type
5DELIVERABLES DOC. NUMBERdm_docmaster_number
6DOC. TITLEdm_docmaster_title
7CURRENT REV.doc_rev baris library terbarukondisi A
8PURPOSEissued_desc dari issued_code baris terbaru; Not Yet Submitted di kondisi A
9DATE RECEIVEDdoc_send_receivedkondisi A
10DATE RETURNdoc_appdate, tanggal sign-off approverA dan B
11RETURN CODEdoc_res_code lewat doc_res_idA dan B
12STATUSdoc_res_name kalau ada return code (nama hasil routing sebagai cadangan); Not Yet Submitted di kondisi AB
13Required Datelihat tabel di atasB
14Days Overduelihat tabel di atasB
15Next Submissionnext_expected_id - issued_desc baris terbarutidak 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