IPD cash balance: fix date range picker submission and parser
This commit is contained in:
parent
a02340b90c
commit
fd28d6a01e
|
|
@ -2165,14 +2165,36 @@ class Ipd extends BaseController
|
||||||
$start = date('Y-m-d');
|
$start = date('Y-m-d');
|
||||||
$end = $start;
|
$end = $start;
|
||||||
|
|
||||||
if ($range !== '') {
|
$range = trim(urldecode($range));
|
||||||
$parts = explode('S', $range);
|
if ($range === '') {
|
||||||
if (count($parts) === 2) {
|
return [$start, $end];
|
||||||
$start = $parts[0];
|
}
|
||||||
$end = $parts[1];
|
|
||||||
|
// 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];
|
return [$start, $end];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -116,14 +116,31 @@
|
||||||
fallbackRangeToday();
|
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() {
|
$('#showreport1').click(function() {
|
||||||
var range = $('#ipd_date_range').val();
|
var range = getSelectedRangeValue();
|
||||||
var url = '<?= base_url('billing/ipd/cash-balance/report') ?>?range=' + encodeURIComponent(range);
|
var url = '<?= base_url('billing/ipd/cash-balance/report') ?>?range=' + encodeURIComponent(range);
|
||||||
load_form_div(url, 'show_report');
|
load_form_div(url, 'show_report');
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#showreportexport').click(function() {
|
$('#showreportexport').click(function() {
|
||||||
var range = $('#ipd_date_range').val();
|
var range = getSelectedRangeValue();
|
||||||
var url = '<?= base_url('billing/ipd/cash-balance/export') ?>?range=' + encodeURIComponent(range);
|
var url = '<?= base_url('billing/ipd/cash-balance/export') ?>?range=' + encodeURIComponent(range);
|
||||||
window.open(url, '_blank');
|
window.open(url, '_blank');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user