Kode konsumen
Nama konsumen
Alamat
Username
Sandi (Opsional)
Konfirmasi Sandi (Opsional)
Sandi Default
TTD Digital
File yang telah diunggah sebelumnya
Stempel
File yang telah diunggah sebelumnya
Dengan ini saya menyatakan bahwa:
Password default
Diperbarui 14 Maret 2026, 14:29 WIB —
maintenance:archive-user-logs (1.7 juta log dibersihkan, hemat ~4GB) dan maintenance:vacuum.
withoutOverlapping() di 6 scheduled command (cegah duplikasi proses)deleted_at untuk 48 tabel SoftDeletes
../../.env via APIDriverController::update() & destroy(): guard transaksi driver semula whereNotIn('status', [6,10]) (update) dan tanpa filter status (destroy) — status 1 (Belum Diproses) ikut terdeteksi sebagai “transaksi berlangsung” (false positive). Diganti ke whitelist status aktif whereIn('status', [2,3,4,5,7,8,9]) (Check In Satpam s/d Check Out K3) sesuai InformationService. Status 1 (belum diproses) & 6/10 (selesai) tidak lagi memblokir. Drivers pakai SoftDeletes sehingga hapus tetap recoverable.MapsProxyController dengan 3 endpoint: GET /api/maps-proxy/geocode, /distance-matrix, /directions. Pakai Cache::remember() (default driver file, kompatibel Redis nanti). TTL: geocode 30 hari, distance/directions 7 hari. Cache key by lat/lng round 5 desimal (~1m precision). Hanya cache response status=OK atau ZERO_RESULTS. Middleware: jwt.auth + throttle:60,1.ppb.js 5 call site direplace: 4 geocoder.geocode() + 1 DistanceMatrixService.getDistanceMatrix() → helper proxyReverseGeocode() & proxyDistanceMatrix() di top file. Sinyatur callback dipertahankan agar logic UI tidak berubah. Handle LatLng instance dan plain {lat,lng} object.cetak-so.js:getLocationName() + dashboard.js (loop gudang) juga diganti ke proxy endpoint. directionsService.route() di show-rute.blade.php tidak diubah (renderer widget Google SDK, billing kecil — skipped).estimate & estimate_end dari required jadi nullable di LoadingPlanController::storePPB() & updatePPB(). Estimasi waktu rute dihitung frontend via Google Directions yang kadang gagal walau lokasi valid — kolom DB sudah nullable & field hanya untuk display (?? '-'). User tidak lagi ter-block save PPB saat estimasi gagal terhitung.AuthController — DB::unprepared() diganti Query BuilderReportController, FeedsController, BatasWaktuController — parameter bindingShowFileController::previewDO() — validasi realpath()wms-firebase.json) ditambah ke .gitignoreshow_file_login dibatasi hanya tipe feedthrottle:10,1, reset password throttle:5,1hash_equals() di StaticTokenMiddleware (timing-safe)SendFirebase & SendWagetResponse() — detail tersembunyi di productionis_string() check$guarded = ['id'] di 5 model: Activity, Foreman, Queue, DriverB3, LoadingPlanStopHistoryboot() transaction bug di LoadingPlanDetailQuota$cast → $casts di B3ClasificationTypeConveyanceFileUserLog::saveLog()StockArea searchdeleted_at untuk 48 tabel SoftDeletes$casts di RolePermissionwithoutOverlapping() di semua 6 scheduled commandsenv() → config() di AutoCheckoutSecurityDistanceCommandAutoAdjustStockPerShiftTerminatePidProcess — hapus 500+ char hardcoded SQLHasExportLogo — -898 baris duplikat di 11 file exportHoldingCostCalculation + InsertMonthly → 1 commandconsumer_id, loading_plan_id, status, transporter_id, ppb_id, dll->get()->count() → ->count() di LoadingPlan & TransporterWeighBridgeDetail (4 tempat loop → single query)HoldingCostController & ConsumerControllerLoadingPlanImport dan getDataSapmaintenance:archive-user-logs (cleanup 5.7GB log)maintenance:vacuum untuk VACUUM tabel beratfile_missing flag di Resource + notifikasi upload ulang di profil & halaman adminroute:cache + single git pullconsumer_id[] di ReportController@reportPPB + LoadingPlanController@indexPPB — validasi exists:consumers,id; tambah sConsumer() Select2 di laporan-ppb.js; fix 502 dengan set_time_limit(300) + memory_limit=512M#select-departement di daftar-so.js:2201 — kondisi disable diselaraskan dengan permission backend (role:penjualan,candal di api.php:400) dan rule admin. Sekarang enabled untuk Penjualan, Candal, Admin.