Correspondence
Modul: correspondence. Register surat, email, transmittal dan dokumen lain yang dipertukarkan dengan klien dan vendor: masuk dan keluar, diarsipkan di pohon foldernya sendiri, dengan lampiran.
Cara halaman ini diverifikasi
Ditulis dari master pada 2026-09-06 dan dibandingkan dengan big five di hari yang sama. Bagian layar ditulis ulang pada 2026-09-07 dengan layar dibuka di inact-jadestone.eris.place (grid, project AAL) dan inact-ktp.eris.place (dialog Add); snapshot KTP tidak punya baris correspondence.
Apa itu
Correspondence mencerminkan Document Library dengan tabelnya sendiri:
| Lapis | Tabel | Berisi |
|---|---|---|
| Folder | ts_corr_library | library_id, library_code, library_desc, library_parent, contract_ref, library_type, project_id. Satu pohon per project. |
| Correspondence | ts_correspondence | corr_no, corrkind_id (1 = Incoming, 2 = Outgoing), corrtype_id, corrcat_id, corr_doc_number, corr_title, corr_procsheetno, corr_send_received, library_code, corr_transno, corr_notes, company_id, corr_preparedby, corr_from_to, corr_doc_original, project_id, doc_res_id, issued_code, kolom audit |
| File | ts_file_explorer, ditautkan oleh ts_map_corr_file | file fisik |
| Tautan antar surat | ts_map_corr_corr | corr_no ke corr_doc_number, rantai balasan atau rujukan |
Tiga tabel referensi mengklasifikasikan sebuah baris: kind (ts_corrkind: Incoming, Outgoing), type (ts_corrtype: Email, Fax, Letter, Technical Note, Document, Progress Report, Reference File) dan category (ts_corrcat, per project).
Siapa yang menulis correspondence
Pengguna menulisnya secara manual lewat modul ini. Dua fitur lain menulisnya untuk mereka:
- Upload Transmittal memasukkan baris Incoming (
corrkind_id=1) untuk Transmittal Sheet yang diterima dan mengarsipkannya di folder default transmittal masuk project. - Return memasukkan baris Outgoing (
corrkind_id=2) untuk paket Transmittal Out, lewathandleProcessTransmittalCorrespondence()dirouting.inc.php.
Kedua folder default adalah baris per project di ts_incoming_transmittal_default_folder dan ts_outgoing_transmittal_default_folder (project_id, library_id), ditambahkan Juni 2026.
Layarnya

correspondence.php dengan correspondence_browse.htm, tata letak tiga bagian yang sama dengan Document Library: pohon folder (cmd=groupby, dari ts_corr_library), grid baris di folder yang dipilih, dan detail per baris (cmd=docdetail). Tanpa tab. Kolom grid, dari get_doc_column() di correspondence.inc.php: ID, In/Out, Sent/Received, Correspondence (nomornya), Proc Sheet No., Title, Attachments, Notes, Type, Category, From/To, Prepared by, Folder, Project. Tanda + pada baris membuka sub-grid referensi (cmd=subgrid), surat-surat yang ditautkan lewat ts_map_corr_corr.
Toolbar
New, Edit, Delete, Copy dan Upload ditambahkan bersama-sama kalau group user punya edit atau add pada correspondence (havePrivileges($_LOGIN_GROUP_ID, ...) di correspondence.php, pemeriksaan group lama, bukan resource group); sisanya tetap di template.
| Tombol | Aksi |
|---|---|
| New | dialog Add Correspondence, act=add, memakai $pdo |
| Edit | act=edit, memakai $pdo |
| Delete | act=deletedata, memakai $pdo |
| Copy | dialog Add yang terisi dari baris terpilih |
| Upload | lampiran lewat pengunggah multi-file (correspondence_multiupload_upload.php, memakai $pdo: menulis ts_file_explorer dan ts_map_corr_file) |
| Refresh, Search, Sort | muat ulang; pencarian field / operator / nilai (cmd=search); sort |
| Export CSV | cmd=exportCSV |
daftar cetak yang bisa dikustomisasi, cmd=print_costume, mati di tempat helper legacy melempar exception (lihat di bawah) | |
| Download | batch download file dari baris terpilih (cmd=batchdownload) |

Dialog Add menulis satu baris ts_correspondence: corrkind_id dari In/Out, corr_send_received, corr_doc_number, corr_title, corr_from_to, corrtype_id, corrcat_id, issued_code, corr_transno, library_code (folder yang dipilih di pohon), corr_preparedby, corr_notes, dan baris In reference to ke ts_map_corr_corr. File lewat pengunggah yang sama dengan tombol Upload.
Per baris: View attachments (cmd=viewattach), Routing detail (cmd=routdetail), Detail (cmd=docdetail).
Akses folder
ts_corr_library_priv membatasi folder per grup pengguna (library_id × group_code). Perhatikan bedanya dengan Document Library: tabel ini masih berkunci pada group_code lama, bukan resource group. correspondence_privilege.inc.php yang menerapkannya.
Routing correspondence
Skema punya model routing kedua yang lengkap untuk correspondence: ts_routing_corr, ts_map_routing_file_corr, ts_map_routing_to_corr, ts_routing_group_corr, ts_routing_group_user_corr dan ts_routing_action_indicated_corr. Grid me-join ts_routing_corr dan ts_map_routing_to_corr untuk menampilkan status routing per baris. Kode yang melampirkan file correspondence ke routing (handler addTo di bagian atas correspondence.php, menulis ts_map_routing_file_corr) memakai iw_mysql_query(). Tidak ada file di modules/routing yang menulis tabel _corr.
Anggap routing correspondence sebagai legacy
Di master, Jadestone, Medco dan Timas satu-satunya penulis tabel routing _corr melempar exception begitu dipanggil. Apakah ada instance yang masih me-routing correspondence perlu dicek terhadap data live sebelum ada yang membangun di atasnya.
Yang masih memakai helper legacy
Modul ini hibrida. Dihitung pada 2026-09-06 pada baris aktif: 50 pemanggilan iw_mysql_query() dan 116 pemakaian $pdo. Di tempat helper legacy melempar exception (setiap fork kecuali JOTRE), jalur-jalur ini mati:
| Jalur | File | Keadaan |
|---|---|---|
Edit inline di grid, act=editdata | correspondence_act.inc.php | mati |
Pilih dokumen, act=selectDoc | correspondence_act.inc.php | mati |
Unpublish, act=unpublish | correspondence_act.inc.php | mati |
Melampirkan file yang sudah ada (mapFile) dan handler file routing addTo | bagian atas correspondence.php | mati |
Daftar cetak, cmd=print_costume | correspondence_print.inc.php, 12 pemanggilan legacy, tanpa $pdo | mati |
| File explorer lama | file_explorer.php | mati |
Daftar project di correspondence.php baris 293 | correspondence.php | mati di tempat dicapai |
New, Edit, Delete, pohon, grid, upload multi-file dan subgrid memakai $pdo dan bekerja di mana pun.
Tabel database yang terpengaruh
| Tabel | Operasi | Oleh |
|---|---|---|
ts_correspondence | insert / update / delete | New, Edit, Delete; Upload Transmittal; Return |
ts_file_explorer, ts_map_corr_file | insert | Upload |
ts_map_corr_corr | insert / delete | field rujukan di form |
ts_corr_library, ts_corr_library_priv | select | pohon dan akses |
ts_routing_corr, ts_map_routing_to_corr, ts_map_routing_file_corr | select, dan satu insert yang mati | grid, lampiran routing legacy |
Hal yang perlu diwaspadai
- Dua pohon folder, dua model akses. Folder Document Library adalah
ts_doc_librarydengan akses resource group; folder correspondence adalahts_corr_librarydengan akses grup pengguna. Keduanya tidak berbagi kode. - Transmittal adalah baris correspondence. Saat Transmittal Sheet "hilang", cari di folder masuk modul ini, bukan di Document Library.
- Daftar cetak mati di empat fork. Pengguna mendapat fatal error dari tombol Print. Report DMS di menu Reporting tidak menunjuk ke modul ini, jadi tidak ada yang menutupinya.
ts_correspondencetidak punya foreign key.company_id,corrcat_iddanlibrary_codebisa menunjuk ke kekosongan setelah penghapusan.
Perbedaan antar instance
Diperiksa pada 2026-09-06.
| Instance | Perbedaan |
|---|---|
| Timas | Tidak ada Batch download di template (batchdownload_submit dan close_act_download tidak ada). correspondence_addedit.inc.php dan handler upload berbeda dari master. |
| JOTRE | Semua jalur legacy di atas bekerja, karena iw_mysql_query() masih berjalan. correspondence_addedit.inc.php dan handler upload berbeda dari master. |
| Medco | Handler upload dan subgrid berbeda dari master; tombol sama. |
| Jadestone | Pohon dan subgrid berbeda dari master; tombol sama. |
50 pemanggilan legacy itu sama di setiap fork.
Terkait
- Upload Transmittal dan Return: penulis otomatisnya.
- Document Library: modul saudara untuk dokumen project.