Inbox
Inbox adalah tab utama: routing di mana Anda penerima dan routing ada di inbox Anda, dikelompokkan menurut action yang sudah Anda ambil (Open, re-Route, Return, Sign Off, Closed Without Action). Di sinilah Anda membuka routing dan merespons.

Toolbar: New, Response, Refresh, Search, Print, Copy/Forward, Sign Off (multi), Re-route (multi), Group Routing, Download, Archive, Routing Slip, Custom Header, External Transmission, Return Mailbox, Return.
Menjawab routing
Response di Inbox membuka slip yang sama dengan blok response untuk baris user: action yang diambil (Sign Off, Return, re-Route, Route as New, Closed Without Action), result code dan komentar, serta file ber-comment. Apa yang dilakukan tiap action, dan field mana yang ditampilkan, ada di Sign Off), Return) dan Action Indicated). Multi sign-off dan re-route di toolbar Inbox menerapkan satu jawaban ke beberapa baris terpilih.
Sign Off
Ringkasan
Sign Off mencatat respons seorang penerima routing dan memajukan alur kerja. Perilakunya berbeda menurut Action Indicated penanda tangan (Reviewer, Information, Leader, Approver), dari "catat komentar dan lanjut" sampai "finalisasi dokumen dan publikasikan salinan yang sudah direview". Model intinya tidak berubah sejak v2; v3 memodernisasi pipa di sekitarnya: PDO, feature flag, tampilan multi-project, publikasi asinkron.
Dua jalan masuk
| Jalur | Cara | Action server |
|---|---|---|
| Single | Inbox, Response, Sign Off | act=resp dengan route_action=4 |
| Multiple | Inbox, pilih baris, Sign Off, dialog | act=multiplesignoff |
Multiple Sign Off bekerja lagi di master
INA01-866 menulis ulang handler act=multiplesignoff di atas $pdo dan memindahkan pekerjaan lambatnya ke cron/cron_multiple_signoff_v2.php. Sekarang ia mengikuti sign off tunggal per peran. Jadestone dan Medco punya versi mereka sendiri yang bekerja. JOTRE dan Prima Energy masih membawa handler legacy, dan tombol Sign Off di Inbox mereka dikomentari. Halaman lengkap: Multiple Sign Off. Diperiksa 2026-09-16.
Alur pengguna
Single sign-off, satu dokumen
- Di Inbox, pilih satu baris routing dan klik Response (
inb_response_actdirouting_browse.htm). Tombolnya bertuliskan View alih-alih Response saat barisnya hanya-baca. - Form Response detail (
routing_resp.htm) terbuka. Ia menyaring input menurut action si penampil (lihat di bawah). Semua action Approval-type melihat Return Code standar yang sama, danA(Approval) tambahan melihat Next Expected Submission. Action Non-approval (Review, Information) melihat pilihan Comments / No Comments. Semua punya kotak Comments bersama. - Tombol Sign Off tetap nonaktif sampai field wajib terisi, lalu
lightboxRespExec(4)dijs/routing.jsmem-POSTact=respdenganroute_action=4.
Multiple sign-off, massal
- Di Inbox, centang beberapa baris dan klik Sign Off (
inb_multisignoff_act). Satu baris yang dicentang membuka jendela Sign Off tunggal. - Tiga penjaga pemilihan berjalan di server: project sama, akses ke setiap baris, dan Action Indicated sama.
- Jendela dialog berjudul "Multiple Sign Off (Reviewer | For Information | Leader | Approver | Transmit | Checking | Responsible)" terbuka lewat
cmd=multisignoff&id=<ids>&mapid=<mapids>; perannya diambil dari baris yang dipilih. Field perannya dibangun di sisi server ke{val_res_style_html}(routing_resp_multisignoff.htm), di atas kotak Comments bersama. - Klik "Yes, sign off these documents", atau, untuk D - Transmit, "Yes - Proceed routing" / "No - Return to Contractor DC".
routingMultipleSignoff()mem-POSTact=multiplesignoffdan menerima JSON: dokumen yang tidak bisa di-sign off didaftar dengan namanya.
Aturan per peran, Return Code yang rejected dan cron latar belakangnya ada di Multiple Sign Off.
Field respons per peran
Di master, Jadestone dan Medco form detail menentukan input mana yang tampil dari tipe matriks action b (resp_matrix_type = ts_routing_action_indicated.action_matrix_type), bukan dari label action:
Tipe matriks b | action_desc (id) | Keluarga | Field yang tampil |
|---|---|---|---|
A | Approval (9) | Approval-type | Return Code + Next Expected Submission |
D | Transmit (12) | Approval-type | Return Code |
C | Checking (15) | Approval-type | Return Code |
S | Responsible (16) | Approval-type | Return Code |
L | Leader (11) | Approval-type | Return Code, field yang sama dengan A/D/C/S |
R | Review (8) | Non-approval | Comments / No Comments |
I | Information (5, non-procurement) | Non-approval | Comments / No Comments |
N | Notify (14) | Non-approval | hanya notifikasi, tanpa respons inbox |
Approval-type = A/D/C/S/L, action yang mengisi Result Code dan karenanya bisa menolak. Non-approval = R/I/N, hanya komentar atau notifikasi. Lihat Action Indicated) untuk definisi lengkap.
Semua action Approval-type berbagi dropdown Return Code yang sama. Hanya A (Approval) yang tambahan menampilkan Next Expected Submission. Di dalam A, Next Expected tetap disembunyikan untuk responder Main-Company, jadi praktis muncul untuk Approver Third-Party. Lihat Kesimpulan Next Expected.
JOTRE dan Timas menyaring berdasarkan label
routing_resp.htm mereka masih memakai pengujian v2 a == 'Approval' || a == 'Transmit' || a == 'Checking' || a == 'Responsible' dan string organisasi 'Third Party' yang hard-coded. Tabel di atas menggambarkan master.
Cek realita: apa yang sebenarnya ada di data
Tabel adalah apa yang bisa dirender form. Action mana yang dipakai sebuah routing ditentukan data: import matriks MDR menulis kode matrix_rout_action apa pun yang ada di spreadsheet template project (documents_master.inc.php). Matriks umumnya memakai subset kecil, paling sering A (Approval) dan L (Leader), plus R dan I. D, C dan S didefinisikan dan ditangani kode tetapi sering tidak ada di data matriks. Periksa ts_matrix_rout project kamu.
Kode Action Indicated
Setiap baris penerima membawa Action Indicated sebagai ts_map_routing_to.rout_indicate, action_id numerik. Yang umum:
rout_indicate | Peran | type matriks |
|---|---|---|
| 9 | Approval | A |
| 11 | Leader | L |
| 8 | Review | R |
| 5 | Information | I |
Himpunan lengkap yang didukung, tiga identitas dan konfigurasi rules_action per action didokumentasikan di Action Indicated).
rout_status_resp: N (menunggu), 4 (sudah sign off), 5 (ditutup tanpa tindakan). Tidak berubah sejak v2.
Perilaku per Action Indicated
- Reviewer / Information (
R/I): hanya memperbarui baris penanda tangan kerout_status_resp='4'dengan komentarnya. Memajukan sequence saat semua baris non-Information dirout_sequence_noitu sudah merespons. Tanpa finalize. - Leader (
L): di master, penutupan paksa seluruh routing oleh Leader yang lama (rout_indicate NOT IN(9), sequence mana pun) dikomentari, begitu juga email reviewer-ke-Leader dan Leader-ke-Approver. Yang tetap aktif di jalur single master adalah satu aturan tutup: saat Leader sign-off, baris Reviewer (8) dan Information (5) yang masih menunggu di sequence yang sama diset ke'5'"Closed Without Action" (rout_indicate IN ('8', '5') AND rout_sequence_no = ...). Leader adalah satu-satunya action Approval-type dengan jendela review non-NULL (rout_daysreview = 1). - Checking / Responsible (
C/S): berperilaku seperti Leader pada penutupan sequence yang sama di jalur single master. - Approver (
A): finalize yang aktif ada inline dirouting_handler_post.php, di blok yang memeriksarout_indicate == '9'. Ia mengesetts_map_routing_to.rout_status_resp='5'untuk siapa pun yang masih menunggu, menulists_routing.rout_return_status='N'plus tanggal approve, mencatat hasil dits_documents(doc_res_id,next_expected_id,doc_appdate), dan mengirim email ke Document Control. FungsiactMultipleProcess()dirouting.inc.phpterlihat seperti finalize ini tetapi tidak dipanggil dari handler di master; ia masih memakaiiw_mysql_query()dan merupakan kode mati. - Transmit / DocCon (
D):Dadalah checkpoint Document Consolidation. Saat sign-off dengan flag auto-publish dan transmittal pada routingexternal, ia memasukkan dokumen dan mengarsipkan transmittal keluar / submission. Di batch routing ia ditangani lewat alur External Transmission terpisah, bukan dialog ini. Detail lengkap di Action Indicated,D).
Medco merombak C / S / L pada Juni 2026 (INA28-180, INA28-197)
Di Medco ketiga action berbagi satu aturan tutup di kedua jalur single dan multiple, C dan S memfinalisasi routing saat reject di jalur single, dan finalize Approver lewat fungsi baru, actMultipleProcessNew(). Tidak ada yang seperti itu di master. Master punya penutupan sequence yang sama hanya di jalur single, tanpa reject-finalize, dan tanpa actMultipleProcessNew().
Finalize Approver tidak mengeset rout_status='close' di master, Jadestone atau Medco
Barisnya dikomentari dengan catatan "khusus untuk AWE". Finalize mengeset rout_return_status='N' sebagai gantinya. JOTRE dan Timas menutup routing-nya: finalize mereka menjalankan update ts_routing set rout_status='close' secara aktif lewat $pdo.
Field Next Expected Submission: cara tampilnya
Dropdown Next Expected Submission (#next_expected_submissions) adalah pilihan approver tentang issue apa yang harus diharapkan sistem berikutnya untuk dokumen ini. Ia diisi dari ts_next_expected (next_expected_id, next_expected_desc), dengan pra-pilih kode issued dokumen saat ini, di routing.php. Saat submit ia ditulis ke ts_documents.next_expected_id. Kelima fork membaca ts_next_expected di sini.
Ia tampil hanya kalau semua ini terpenuhi, di routing_resp.htm:
- Action responder adalah
Approval(A). Form awalnya memunculkan field untuk semua action Approval-type, tetapi kondisi 4 dan 5 menyembunyikannya lagi untuk semua kecualiA. Action Non-approval tidak pernah mencapai cabang ini. - Bukan batch routing (
batch_routing != 1). Mode massal menyembunyikan Return Code dan Next Expected. enable_next_issue_code=1. Kalau flag config-nya0field selalu disembunyikan. Ini jawaban paling sederhana untuk "kenapa tidak tampil", dan pemeriksaannya ada di kelima fork.- Responder bukan sisi project-owner: disembunyikan saat
resource_organization_name == organization_name_non_owneratau routing-nya procurement (routing_procure == 1). - Untuk setiap action Approval-type selain
Approval(a != 'Approval') ia tambahan disembunyikan saat Project Organization responder adalah sisi project-owner (== organization_name_owner). HanyaApproval(A) yang dikecualikan.
Sisi owner bisa dikonfigurasi di master, Jadestone dan Medco. organization_name_owner / organization_name_non_owner diturunkan dari inact_operator_role (company | contractor, default contractor). Dengan default, project owner adalah sisi "Third Party". Kalau inact_operator_role = company, owner adalah sisi "Main Company" dan dua kolom di bawah bertukar. JOTRE dan Timas tidak punya key itu; mereka membandingkan dengan literal 'Third Party'.
Kesimpulan Next Expected
Gabungkan kondisi 4 dan 5 dan hasilnya menyempit ke satu kasus, hanya tampil untuk Approval milik project owner:
| Action | Responder non-owner | Responder project-owner |
|---|---|---|
A Approval | disembunyikan (kondisi 4) | tampil |
D/C/S/L | disembunyikan (kondisi 4) | disembunyikan (kondisi 5) |
Perbandingan string yang rapuh
Kondisi 4 dan 5 membandingkan ts_resource.organization_name yang tersimpan dengan label owner / non-owner hasil resolusi. Kalau nilai org-nya apa pun yang lain (NULL atau kosong, spasi, string yang diganti nama), tidak ada penyembunyian yang berjalan dan Next Expected bocor tampil untuk D/C/S/L juga. Lihat masalah yang diketahui di Users and Privileges. Periksa ts_resource.organization_name responder untuk memprediksi apa yang tampil.
Auto-publish ke Document Library, Approver
Saat Approver sign-off, salinan yang sudah direview dan dianotasi (revisi bersufiks _R) dipublikasikan ke library:
- Single sign-off: inline (
getPDFAfterApprove.php). - Multiple sign-off: ditunda ke cron. Di master itu
cron/cron_multiple_signoff_v2.php, yang mengurasts_multiple_signoff_list(multi_status='n', satu baris per performer) dan memanggilgetPDFAfterApprove.phplewat curl untuk dokumen_R.cron_multiple_signoff.phpdangetPDFMultipleSignoffCron.phpyang lama sudah hilang dari master; JOTRE dan Prima Energy masih memakai nama lama, Medco punya_v2versinya sendiri, Jadestone punya keduanya. Lihat Cron job. - Dijaga oleh
enable_autopublish. Saat flag mati, publikasi dilewati. Lihat inweb_config. - Auto-publish single sign-off dinonaktifkan untuk routing non-MDR ("New" / doclib), di mana jalur kodenya dibungkus penjaga
if (false). Ada di kelima fork.
Transmittal yang dibuat saat sign-off (enable_transmittal): DocCon versus Approver
Pada routing external dengan enable_autopublish = 1 dan enable_transmittal = 1, jalur finalize juga membuat PDF transmittal dan mengarsipkannya ke dokumen (ts_map_doc_file plus nomor transmittal di ts_documents). Dua sign-off yang berbeda menghasilkan dua transmittal yang berbeda:
| Penanda tangan | Tipe transmittal | Nomor | Disimpan ke |
|---|---|---|---|
D (DocCon / Transmit) | Transmittal("out"), original / submission | tanpa sufiks | ts_documents.doc_submission_number |
A (Approver eksternal) | Transmittal("in"), return | sufiks (R) | ts_documents.outgoing_transmittal_no |
Label "in / out" dan nama kolom tertukar
Hanya transmittal "in" (return) yang mendapat penanda (R). Return ditulis ke kolom bernama outgoing_transmittal_no, submission ke doc_submission_number, dan string nomor submission diakhiri literal -IN. Dalam istilah kode: D membuat transmittal keluar (submission); Approver membuat return (R). Rincian lengkap di Action Indicated, D). Dua blok transmittal lama di routing_handler_post.php mati (if (false)).
Di mana salinan yang dipublikasikan diarsipkan: Auto Folder Creation
Di sini juga struktur folder library dibangun. Di v2 ini terjadi saat upload; di v3 pindah ke sini. Dua mekanisme hidup berdampingan:
- Legacy:
getLibCodeAutoGenerateFromDocMaster()(hierarkiproject_east_javaMedco / Ophir / East-Java) saat membuat baris register. Hanya Medco. Master, Jadestone, JOTRE dan Timas tidak punya fungsi ini. - Auto Folder Creation per project, dijaga flag config
autopublish_auto_folder_creation:autoPublishDocumentToCustomSubfoler()membaca daftar tipe referensi yang dikustomisasi admin per project darits_auto_creation_folder_settingsdan membangun subfolder bersarang. Fungsinya ada di kelima fork; key config dan layar admin hanya ada di master, Jadestone dan Medco. Admin mengaturnya di DMS Reference, Auto Folder Creation. Lihat Auto Folder Creation.
Log audit
saveRoutSignOffInfo() menulis ke ts_rout_signoff_info untuk sign-off Leader dan Approver, tidak untuk Reviewer atau Information. Medco membuat ulang tabel ini lewat migrasi phinx; fork lain tidak membawa migrasi itu.
Tabel database yang terpengaruh
| Tabel | Operasi | Oleh |
|---|---|---|
ts_map_routing_to | update (rout_status_resp, rout_response, rout_comments, ...) | semua |
ts_routing | update (rout_return_status='N', tanggal approve; rout_status='close' hanya di JOTRE dan Timas) | approver |
ts_documents | insert / update (doc_res_id, next_expected_id, doc_appdate) | approver |
ts_rout_signoff_info | insert (audit) | hanya leader dan approver |
ts_multiple_signoff_list | insert / update | multiple sign off, satu baris per performer |
ts_documents (_R), ts_file_explorer, ts_map_doc_file, ts_map_documents_library, ts_map_doc_comment_sheet | insert | auto-publish approver |
Perbedaan antar instance (Sign Off)
Diperiksa pada 2026-09-06.
| Instance | Perbedaan |
|---|---|
| Jadestone | act=multiplesignoff versinya sendiri di atas $pdo, dengan guard tambahan (reviewer masih mereview, due date lewat) dan Routing Slip di cron-nya. Selebihnya sama dengan master. |
| Medco | act=multiplesignoff dengan $pdo. Finalize Approver lewat actMultipleProcessNew(). C/S/L berbagi satu aturan tutup di kedua jalur; reject C/S memfinalisasi routing. Menyimpan getLibCodeAutoGenerateFromDocMaster() legacy. Migrasi ts_rout_signoff_info ada. Cron multiple sign-off-nya adalah cron_multiple_signoff_v2.php. |
| JOTRE | iw_mysql_query() masih bekerja, jadi handler multiple sign-off legacy berjalan, tetapi tombol Sign Off di Inbox dikomentari. Finalize Approver mengeset rout_status='close'. Form respons menyaring berdasarkan label dengan 'Third Party' hard-coded. Tidak ada consolidated_routing_view, enable_return_on_audit, inact_operator_role. |
| Timas | Multiple sign-off memakai handler legacy di atas iw_mysql_query(), yang di sana melempar exception (diperiksa 2026-09-06). Finalize Approver mengeset rout_status='close'. Form respons menyaring berdasarkan label. Tidak ada consolidated_routing_view. |
| Prima Energy | Handler multiple sign-off legacy, iw_mysql_query() melempar exception, dan tombol Sign Off di Inbox dikomentari (diperiksa 2026-09-16). |
| Master | Multiple Sign Off ditulis ulang oleh INA01-866, lihat catatan di atas. |
Related
- Document Routing: ikhtisar.
- Multiple Sign Off: sign off beberapa routing sekaligus.
- Action Indicated: kode action routing.