IPD cash balance: fix date range picker submission and parser

This commit is contained in:
DevSoftTech Server 2026-04-03 14:13:05 +05:30
parent a02340b90c
commit fd28d6a01e
2 changed files with 46 additions and 7 deletions

View File

@ -2165,14 +2165,36 @@ class Ipd extends BaseController
$start = date('Y-m-d');
$end = $start;
if ($range !== '') {
$parts = explode('S', $range);
if (count($parts) === 2) {
$start = $parts[0];
$end = $parts[1];
$range = trim(urldecode($range));
if ($range === '') {
return [$start, $end];
}
// Preferred format from UI: YYYY-MM-DDSYYYY-MM-DD
if (strpos($range, 'S') !== false) {
$parts = explode('S', $range, 2);
$startCandidate = trim((string) ($parts[0] ?? ''));
$endCandidate = trim((string) ($parts[1] ?? ''));
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $startCandidate) === 1
&& preg_match('/^\d{4}-\d{2}-\d{2}$/', $endCandidate) === 1
) {
return [$startCandidate, $endCandidate];
}
}
// Fallback: extract first two ISO dates from any incoming range string.
$dates = [];
if (preg_match_all('/\d{4}-\d{2}-\d{2}/', $range, $matches) > 0) {
$dates = $matches[0] ?? [];
}
if (count($dates) >= 2) {
return [(string) $dates[0], (string) $dates[1]];
}
if (count($dates) === 1) {
return [(string) $dates[0], (string) $dates[0]];
}
return [$start, $end];
}

View File

@ -116,14 +116,31 @@
fallbackRangeToday();
}
function getSelectedRangeValue() {
var picker = $('#reportrange').data('daterangepicker');
if (picker && picker.startDate && picker.endDate) {
var value = picker.startDate.format('YYYY-MM-DD') + 'S' + picker.endDate.format('YYYY-MM-DD');
$('#ipd_date_range').val(value);
return value;
}
var fallback = ($('#ipd_date_range').val() || '').toString().trim();
if (fallback === '') {
fallbackRangeToday();
fallback = ($('#ipd_date_range').val() || '').toString().trim();
}
return fallback;
}
$('#showreport1').click(function() {
var range = $('#ipd_date_range').val();
var range = getSelectedRangeValue();
var url = '<?= base_url('billing/ipd/cash-balance/report') ?>?range=' + encodeURIComponent(range);
load_form_div(url, 'show_report');
});
$('#showreportexport').click(function() {
var range = $('#ipd_date_range').val();
var range = getSelectedRangeValue();
var url = '<?= base_url('billing/ipd/cash-balance/export') ?>?range=' + encodeURIComponent(range);
window.open(url, '_blank');
});