Skip to content

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:

LapisTabelBerisi
Folderts_corr_librarylibrary_id, library_code, library_desc, library_parent, contract_ref, library_type, project_id. Satu pohon per project.
Correspondencets_correspondencecorr_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
Filets_file_explorer, ditautkan oleh ts_map_corr_filefile fisik
Tautan antar suratts_map_corr_corrcorr_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, lewat handleProcessTransmittalCorrespondence() di routing.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 pada snapshot Jadestone: pohon folder dengan folder Transmittal, dan grid dengan transmittal masuk dan keluar beserta lampirannya
Correspondence pada snapshot Jadestone: pohon folder dengan folder Transmittal, dan grid dengan transmittal masuk dan keluar beserta lampirannya · click to enlarge

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.

TombolAksi
Newdialog Add Correspondence, act=add, memakai $pdo
Editact=edit, memakai $pdo
Deleteact=deletedata, memakai $pdo
Copydialog Add yang terisi dari baris terpilih
Uploadlampiran lewat pengunggah multi-file (correspondence_multiupload_upload.php, memakai $pdo: menulis ts_file_explorer dan ts_map_corr_file)
Refresh, Search, Sortmuat ulang; pencarian field / operator / nilai (cmd=search); sort
Export CSVcmd=exportCSV
Printdaftar cetak yang bisa dikustomisasi, cmd=print_costume, mati di tempat helper legacy melempar exception (lihat di bawah)
Downloadbatch download file dari baris terpilih (cmd=batchdownload)
Add Correspondence: In/Out, tanggal kirim atau terima, nomor, judul, From/To dan file di kiri; tipe, kategori, issue status, nomor transmittal, folder, prepared by, catatan dan referensi ke surat lain di kanan
Add Correspondence: In/Out, tanggal kirim atau terima, nomor, judul, From/To dan file di kiri; tipe, kategori, issue status, nomor transmittal, folder, prepared by, catatan dan referensi ke surat lain di kanan · click to enlarge

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:

JalurFileKeadaan
Edit inline di grid, act=editdatacorrespondence_act.inc.phpmati
Pilih dokumen, act=selectDoccorrespondence_act.inc.phpmati
Unpublish, act=unpublishcorrespondence_act.inc.phpmati
Melampirkan file yang sudah ada (mapFile) dan handler file routing addTobagian atas correspondence.phpmati
Daftar cetak, cmd=print_costumecorrespondence_print.inc.php, 12 pemanggilan legacy, tanpa $pdomati
File explorer lamafile_explorer.phpmati
Daftar project di correspondence.php baris 293correspondence.phpmati di tempat dicapai

New, Edit, Delete, pohon, grid, upload multi-file dan subgrid memakai $pdo dan bekerja di mana pun.

Tabel database yang terpengaruh

TabelOperasiOleh
ts_correspondenceinsert / update / deleteNew, Edit, Delete; Upload Transmittal; Return
ts_file_explorer, ts_map_corr_fileinsertUpload
ts_map_corr_corrinsert / deletefield rujukan di form
ts_corr_library, ts_corr_library_privselectpohon dan akses
ts_routing_corr, ts_map_routing_to_corr, ts_map_routing_file_corrselect, dan satu insert yang matigrid, lampiran routing legacy

Hal yang perlu diwaspadai

  • Dua pohon folder, dua model akses. Folder Document Library adalah ts_doc_library dengan akses resource group; folder correspondence adalah ts_corr_library dengan 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_correspondence tidak punya foreign key. company_id, corrcat_id dan library_code bisa menunjuk ke kekosongan setelah penghapusan.

Perbedaan antar instance

Diperiksa pada 2026-09-06.

InstancePerbedaan
TimasTidak ada Batch download di template (batchdownload_submit dan close_act_download tidak ada). correspondence_addedit.inc.php dan handler upload berbeda dari master.
JOTRESemua jalur legacy di atas bekerja, karena iw_mysql_query() masih berjalan. correspondence_addedit.inc.php dan handler upload berbeda dari master.
MedcoHandler upload dan subgrid berbeda dari master; tombol sama.
JadestonePohon dan subgrid berbeda dari master; tombol sama.

50 pemanggilan legacy itu sama di setiap fork.

Terkait