Previously search_v2 ignored all filters from the request.
Now status=''/any, name, nolab, company are applied dynamically.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When save_delivery_additional_other receives chex=N for an EMAIL
delivery, also set t_send_email.T_SendEmailIsActive='N' for rows
with status D/E/C — previously only t_orderdelivery was deactivated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Done.php send_email_v2: query qr_printout to build structured reports
array [{"id","url","result"}] using QR_PrintOutGroup_ResultName instead
of relying on client-supplied reports param.
send_email.php: parse both old (URL string) and new (object) formats;
use result field as PDF attachment filename.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stored procedure meninggalkan connection dirty, query berikutnya gagal
silent. Tambah clean_mysqli_connection() sebelum get_inform_consent_by_order().
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pakai get_inform_consent_by_order() yang sudah ada, null jika template
tidak ditemukan (title kosong).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- generate_location dipindah ke luar trans_begin/commit agar order tidak rollback
- _do_generate_location_for_stations() diextract, iterasi semua station tanpa abort
- deteksi NO_MAPPING (loc_id null) sebelum INSERT
- location_warning ditambahkan ke response sukses (opsional untuk FE)
- endpoint retry_location untuk generate ulang lokasi yang belum terbentuk
- tiap kegagalan station dicatat ke error_log_order
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>