feat(webstatement): tambah helper untuk menghitung tanggal periode dan perbaikan validasi permintaan
Perubahan yang dilakukan: - Menambahkan fungsi `calculatePeriodDates` di `helpers.php` untuk menghitung tanggal awal dan akhir berdasarkan periode. - Mendukung periode khusus seperti `202505`, dengan aturan tanggal mulai dari tanggal 9 hingga akhir bulan. - Menambahkan logging di `calculatePeriodDates` untuk memudahkan debugging saat proses penentuan tanggal. - Memperbaiki validasi di `PrintStatementRequest` dengan menyesuaikan tipe data dan aturan logika. - Merapikan aturan validasi pada `account_number` agar lebih konsisten dan mudah dibaca. - Menambahkan `helpers.php` ke properti `files` di `module.json` agar dapat diakses secara global. Tujuan perubahan: - Mendukung logika tanggal periode khusus dengan aturan tertentu. - Menyelaraskan validasi permintaan dengan standar internal yang lebih baik dan lebih stabil. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
39
app/Helpers/helpers.php
Normal file
39
app/Helpers/helpers.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
if(!function_exists('calculatePeriodDates')) {
|
||||||
|
/**
|
||||||
|
* Fungsi untuk menghitung tanggal periode berdasarkan periode yang diberikan
|
||||||
|
* Jika periode 202505, mulai dari tanggal 9 sampai akhir bulan
|
||||||
|
* Jika periode lain, mulai dari tanggal 1 sampai akhir bulan
|
||||||
|
*/
|
||||||
|
function calculatePeriodDates($period)
|
||||||
|
{
|
||||||
|
$year = substr($period, 0, 4);
|
||||||
|
$month = substr($period, 4, 2);
|
||||||
|
|
||||||
|
// Log untuk debugging
|
||||||
|
Log::info('Calculating period dates', [
|
||||||
|
'period' => $period,
|
||||||
|
'year' => $year,
|
||||||
|
'month' => $month,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($period === '202505') {
|
||||||
|
// Untuk periode 202505, mulai dari tanggal 9
|
||||||
|
$startDate = \Carbon\Carbon::createFromDate($year, $month, 9,'Asia/Jakarta');
|
||||||
|
} else {
|
||||||
|
// Untuk periode lain, mulai dari tanggal 1
|
||||||
|
$startDate = \Carbon\Carbon::createFromDate($year, $month, 1,'Asia/Jakarta');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tanggal akhir selalu akhir bulan
|
||||||
|
$endDate = \Carbon\Carbon::createFromDate($year, $month, 1)->endOfMonth();
|
||||||
|
|
||||||
|
return [
|
||||||
|
'start' => $startDate,
|
||||||
|
'end' => $endDate,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,8 +33,7 @@ class PrintStatementRequest extends FormRequest
|
|||||||
$fail('Account number is required when statement type is not specified.');
|
$fail('Account number is required when statement type is not specified.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
'string'
|
|
||||||
],
|
],
|
||||||
'stmt_sent_type' => ['nullable', 'array'],
|
'stmt_sent_type' => ['nullable', 'array'],
|
||||||
'stmt_sent_type.*' => ['string', 'in:ALL,BY.EMAIL,BY.MAIL.TO.DOM.ADDR,BY.MAIL.TO.KTP.ADDR,NO.PRINT,PRINT'],
|
'stmt_sent_type.*' => ['string', 'in:ALL,BY.EMAIL,BY.MAIL.TO.DOM.ADDR,BY.MAIL.TO.KTP.ADDR,NO.PRINT,PRINT'],
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
"providers": [
|
"providers": [
|
||||||
"Modules\\Webstatement\\Providers\\WebstatementServiceProvider"
|
"Modules\\Webstatement\\Providers\\WebstatementServiceProvider"
|
||||||
],
|
],
|
||||||
"files": [],
|
"files": [
|
||||||
|
"app/Helpers/helpers.php"
|
||||||
|
],
|
||||||
"menu": {
|
"menu": {
|
||||||
"main": [
|
"main": [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user