Hardly surprising, given your range definitions:
'This Financial Year':
[
moment()
.month(new Date(startDate).getMonth())
.startOf('month'),
moment()
.month(new Date(startDate).getMonth())
.startOf('month')
.subtract(1, 'days')
.add(1, 'year')
],
'Last Financial Year':
[
moment()
.month(3)
.startOf('month')
.subtract(1, 'year'),
moment()
.month(3)
.startOf('month')
.subtract(1, 'days')
]
You need to check whether the current month is before the start of the financial year. If it is, then both ranges shift back a year.
var currentMonth = new Date().getMonth();
var financialYearStartMonth = new Date(startDate).getMonth();
var financialYearStartDate = moment().month(financialYearStartMonth).startOf('month');
if (currentMonth < financialYearStartMonth) {
financialYearStartDate = financialYearStartDate.subtract(1, 'year');
}
$('.daterange-btn').daterangepicker({
ranges: {
...
'This Financial Year': [financialYearStartDate, financialYearStartDate.add(1, 'year').subtract(1, 'days')],
'Last Financial Year': [financialYearStartDate.subtract(1, 'year'), financialYearStartDate.subtract(1, 'days')]
},
...