Pisah server penyimpanan dan update payment gateway

This commit is contained in:
WD - Dev
2025-11-10 17:44:35 +07:00
parent 6017dfd369
commit 4a7c248fff
3044 changed files with 1586515 additions and 481 deletions
+190 -7
View File
@@ -92,6 +92,19 @@ if (!isValidLong($long)) {
</select>
</div>
<div class="form-group m-1" id="group-dropdown6">
<?php
// Tanggal di Tambahkan 1 Bulan agar di jalankan cronjib sesuai..
$baseTanggal = !empty($isi['mulai_pembayaran']) ? $isi['mulai_pembayaran'] : date('Y-m-d');
$date = new DateTime($baseTanggal);
$date->modify('+1 month');
$mulaiBayar = $date->format('Y-m-d');
$mulaiBayarFormatted = date('d-m-Y', strtotime($mulaiBayar));
?>
<label>Mulai Bayar Tagihan</label>
<input type="text" id="formTgl" class="form-control" name="mulai_pembayaran" value="<?php echo $mulaiBayarFormatted; ?>">
</div>
<div class="form-group m-1" id="group-dropdown3">
<label>Marketing Area / Penagih</label>
<select id="dropdown3" class="form-control select2bs4" required="required" name="idm" data-id="<?php echo $isi['id_marketing']; ?>">
@@ -254,7 +267,12 @@ if (!isValidLong($long)) {
<?php } if($isi['status'] == 'sampah' && in_array("Aktivasi", $json_array[2]['sub_menu'])) { ?>
<button type="submit" class="btn btn-primary btn-sm m-1" name="aktifkan">Aktifkan Status Pelanggan</button>
<button type="submit" class="btn btn-danger btn-sm m-1" name="hapus">Hapus Permanen</button>
<?php } if ($isi['status'] == 'aktif' && $_SESSION['user'] == 1) {?>
<button type="submit" class="btn btn-success btn-sm m-1" name="berita_acara_pemasangan">Buat Berita Acara Pemasangan</button>
<?php } ?>
</div>
</form>
</div>
@@ -334,6 +352,12 @@ if (isset($_POST['aktivasi'])) {
$serialnumber = str_replace(' ', '', $serialnumber);
$serialnumber = preg_replace('/[^A-Za-z0-9]/', '', $serialnumber);
$serialnumber = strtoupper($serialnumber);
// DI kurangi 1 bulan agar cronjob berjalan sesuai harapan
$Formatted = date('Y-m-d', strtotime($_POST['mulai_pembayaran']));
$date1 = new DateTime($Formatted);
$date1->modify('-1 month');
$mulaiBayarFix = $date1->format('Y-m-d');
$APIwa = new PesanWA();
$APIwa->Create_Pesan($isi['id_data_server'], $isi['id'], 'Pesan Aktivasi');
@@ -368,7 +392,8 @@ if (isset($_POST['aktivasi'])) {
user_hotspot = :user_hotspot,
kode_unik_tagihan = :kodeuser,
time_start = :time_start,
serial_number = :serial_number
serial_number = :serial_number,
mulai_pembayaran = :mulai_pembayaran
WHERE id = :id");
$stmt->execute([
':id_setting_mikrotik' => $_POST['ism'],
@@ -380,6 +405,7 @@ if (isset($_POST['aktivasi'])) {
'kodeuser' => $kodeuser,
'time_start' => $time_start,
'serial_number' => $serialnumber,
'mulai_pembayaran' => $mulaiBayarFix,
'id' => $isi['id']
]);
@@ -402,6 +428,135 @@ if (isset($_POST['aktivasi'])) {
}
}
if (isset($_POST['berita_acara_pemasangan'])) {
try {
require('controller/surat_pdf/BA_Template.php');
$stmt = $pdo->prepare("SELECT * FROM v_pelanggan WHERE id = :id");
$stmt->execute(['id' => $page[1]]);
$userData = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT * FROM profile_tagihan WHERE id = :id");
$stmt->execute(['id' => $isi['id_profile_tagihan']]);
$tagData = $stmt->fetch(PDO::FETCH_ASSOC);
$hargaDasar = $userData['nominal_tagihan'] + ($userData['nominal_tagihan'] / 100 * 11);
$hargaPaket = substr($hargaDasar, 0, -3) . '000';
$limit = $tagData['limit_tagihan'] - 1;
$langganan = $userData['time_start'];
// $mulaiLangganan = $langganan . ' WIB';
$mulaiLangganan = $langganan . ' WIB';
$tanggal = new DateTime($userData['mulai_pembayaran']);
$tanggal->modify('+1 month');
$tanggalNow = $tanggal->format('Y-m-d');
$startPay = formatIndo($tanggalNow, 'F Y');
$freeWifi = formatIndo($langganan) . ' hingga 01 ' . $startPay; // 26 Oktober 2025 hingga 01 Desember 2025
// Data dari POST (contoh simulasi)
$data = [
'template_name' => 'ba_pemasangan',
'header' => [
'nama_perusahaan' => 'PT. LINTAS JARINGAN NUSANTARA',
'kantor' => 'KANTOR LAYANAN CIKEMBAR',
'telp' => '+62 812-1161-0233',
'email' => 'info@rjn-net.id',
'website' => 'www.rjn-net.id',
'imglogo' => 'controller/surat_pdf/logo.png'
],
'body' => [
'bodyHead' => [
'parameter' => ['PT Lintas Jaringan Nusantara Kantor Layanan Cikembar']
],
'bodyData' => [
'Nomor Layanan' => $userData['akun'],
'Nama Pelanggan' => ucwords(strtolower($userData['nama'])),
'Nomor NIK / KTP' => $userData['nik'],
'Nomor WhatsApp' => $userData['nomor_whatsapp'],
'Alamat Rumah' => $userData['alamat'],
'Kordinat Rumah' => $userData['latitude'] . ', ' . $userData['longitude'],
'Wilayah / ID Area' => $userData['nama_topologi'],
'Nama Paket iNet' => $userData['nama_paket'],
'Tagihan Internet' => 'Rp. ' . number_format($hargaPaket) . ' (sudah termasuk PPN 11%)',
'Jatuh Tempo' => 'Setiap Bulan Tanggal ' . $limit,
'Nomor WA Penagih' => $userData['nomor_marketing'] . ' (' . $userData['nama_marketing'] . ')',
'Status Berlangganan' => ucwords($userData['status']),
'Terdaftar Sejak' => $mulaiLangganan,
'Status Alat' => 'Dipinjamkan (alat dalam rumah tanggung jawab pelanggan)',
'Kode Seri' => $userData['serial_number'],
'Status Pembayaran' => 'Via Transfer'
],
'bodyNote' => [
[
'judul' => 'CATATAN PENTING',
'parameter' => [
'Rp. 150.000',
$startPay,
$freeWifi,
$startPay
]
],
[
'judul' => 'CARA PEMBAYARAN',
'parameter' => [$startPay]
],
[
'judul' => 'LAYANAN PELANGGAN',
'parameter' => [$userData['akun']]
],
[
'judul' => 'TENTANG KAMI',
'parameter' => []
]
],
'bodyTTD' => [
'nama' => 'PT. LINTAS JARINGAN NUSANTARA',
'jabatan' => 'Admin Kantor Layanan Cikembar',
'imgttd' => 'ttd_admin.png'
]
],
'footer' => [
'parameter' => []
]
];
// Gabung data + template
$result = mergeTemplateWithData($data);
// Buat PDF
$pdf = new BA_Template($result);
$pdf->BodyContent();
// Simpan file PDF
// $pdfPath = 'berita_acara/pemasangan/BA-Pemasangan-' . ucwords(strtolower($userData['nama'])) . '-' . $userData['akun'] . '.pdf';
// $pdf->Output('F', $pdfPath);
$objectPath = 'berita_acara/BA-Pemasangan-' . ucwords(strtolower($userData['nama'])) . '-' . $userData['akun'] . '.pdf';
require 'controller/uploadMinioFiles.php';
$pdfData = $pdf->Output('S');
// $objectPath = 'berita_acara/' . $filename;
$uploadResult = uploadToMinioStorageRaw($pdfData, $objectPath);
$fileOpen = 'https://storage.manjapro.net/files/' . $objectPath;
// Tampilkan ke tab baru
echo '<script type="text/javascript">window.open("' . $fileOpen . '", "_blank");</script>';
} catch (Exception $e) {
echo '<script>alert("Terjadi kesalahan: ' . $e->getMessage() . '");</script>';
}
}
// Buat Berita Acara Pengambilan Alat di Rumah pelanggan OFF
if (isset($_POST['berita_acara'])) {
try {
@@ -437,11 +592,18 @@ if (isset($_POST['berita_acara'])) {
$pdf->AddBeritaAcara($isi['akun'], $isi['nomor_whatsapp'], $isi['nama'], $isi['alamat']);
// Output PDF ke file
$pdfFile = 'berita_acara/BA-pengambilan-alat-' . $isi['nama'] . '-' . $isi['akun'] . '.pdf';
$pdf->Output('F', $pdfFile);
$objectPath = 'berita_acara/BA-Pengambilan-Alat-' . $isi['nama'] . '-' . $isi['akun'] . '.pdf';
// $pdf->Output('F', $objectPath);
require 'controller/uploadMinioFiles.php';
$pdfData = $pdf->Output('S');
// $objectPath = 'berita_acara/' . $filename;
$uploadResult = uploadToMinioStorageRaw($pdfData, $objectPath);
$fileOpen = 'https://storage.manjapro.net/files/' . $objectPath;
// Tampilkan PDF di tab baru
echo '<script type="text/javascript">window.open("' . $pdfFile . '", "_blank")</script>';
echo '<script type="text/javascript">window.open("' . $fileOpen . '", "_blank")</script>';
} catch (Exception $e) {
sweetAlert("Error: ' . $e->getMessage() . '", "error");
@@ -517,6 +679,12 @@ if (isset($_POST['ubah'])) {
}
}
// DI kurangi 1 bulan agar cronjob berjalan sesuai harapan
$Formatted = date('Y-m-d', strtotime($_POST['mulai_pembayaran']));
$date1 = new DateTime($Formatted);
$date1->modify('-1 month');
$mulaiBayarFix = $date1->format('Y-m-d');
$SQL = "UPDATE pelanggan SET
id_data_server = :id_data_server,
@@ -541,7 +709,8 @@ if (isset($_POST['ubah'])) {
foto_rumah = :foto_rumah,
foto_onu = :foto_onu,
foto_test = :foto_test,
serial_number = :serial_number
serial_number = :serial_number,
mulai_pembayaran = :mulai_pembayaran
WHERE id = :id";
try {
@@ -570,10 +739,12 @@ if (isset($_POST['ubah'])) {
':foto_onu' => $fotoonu1,
':foto_test' => $fototes1,
':serial_number' => $serialnumber,
':mulai_pembayaran' => $mulaiBayarFix,
':id' => $page[1]
]);
sweetAlert("Data pelanggan " . $logubahpaket . "berhasil diubah", "success");
sweetAlert("Data pelanggan " . $logubahpaket . "berhasil diubah ", "success");
} catch (PDOException $e) {
// Handle error appropriately
sweetAlert("Error: " . $e->getMessage(), "error");
@@ -731,4 +902,16 @@ $_SESSION['uploaded_files']['rmh'.$isi['id']] = $isi['foto_rumah'];
$_SESSION['uploaded_files']['onu'.$isi['id']] = $isi['foto_onu'];
$_SESSION['uploaded_files']['tes'.$isi['id']] = $isi['foto_test'];
?>
<script type="text/javascript" src="dist/js/mapsFormCustom.js"></script>
<script type="text/javascript" src="dist/js/mapsFormCustom.js"></script>
<!-- Tambahkan library Flatpickr -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/id.js"></script>
<script>
flatpickr("#formTgl", {
dateFormat: "d-m-Y", // format tampilan
locale: "id", // pakai bahasa Indonesia
allowInput: true // bisa diketik manual juga
});
</script>