This how far i am. Looks difficult, to me. Maybe there is an easier way?
var indexMonth = [1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12]
var indexYear = [currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear -1,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,currentYear,]
var daysInCurrentMonth = getDaysInMonth(+indexYear[(currentMonth -1) +12], +indexMonth[(currentMonth -1) +12]);
console.log('49 days in currentMonth is: '+daysInCurrentMonth)
var indexThisMonthDay = Array.from({length: +daysInCurrentMonth}, (_, i) => i + 1)
console.log('50 indexThisMonthDay is: '+indexThisMonthDay)
var daysInPreviousMonth = getDaysInMonth(+indexYear[(currentMonth -2) +12], +indexMonth[(currentMonth -2) +12]);
console.log('51 days in previousMonth is: '+daysInPreviousMonth)
indexPreviousMonthDay = Array.from({length: +daysInPreviousMonth}, (_, i) => i + 1)
console.log('52 indexPreviousMonthDay is: '+indexPreviousMonthDay)
var indexDay = indexPreviousMonthDay.concat(indexThisMonthDay);
console.log('53 indexDay is: '+indexDay)
console.log('54 daysInCurrentMonth is: '+daysInCurrentMonth)
var tmpPeakDay = global.get('peakDay' +indexYear[((currentMonth -1) +12)] +indexMonth[((currentMonth -1) +12)]);
tmpPeakDay.splice(+indexDay[((+daysInPreviousMonth -1) +currentDay -1)],1,peak);
global.set('peakDay'+indexYear[((currentMonth -1) +12)] +indexMonth[((currentMonth -1) +12)], tmpPeakDay);
console.log('67 peakDay'+indexYear[((currentMonth -1) +12)] +indexMonth[((currentMonth -1) +12)] +' is ' +tmpPeakDay);
var peakDay = tmpPeakDay[currentDay - 1];
console.log('68 peakDay is ' +peakDay);
var tmpPeakPreviousDay = global.get('peakDay' +indexYear[((currentMonth -2) +12)] +indexMonth[((currentMonth -2) +12)]);
console.log('69 tmpPeakPreviousDay' +indexYear[((currentMonth -2) +12)] +indexMonth[((currentMonth -2) +12)] +' is ' +tmpPeakPreviousDay);
var peakPreviousDay = tmpPeakPreviousDay[+indexDay[(((+daysInPreviousMonth -1) +currentDay -1) -1)]];
console.log('70 peakPreviousDay is ' +peakPreviousDay);
var peakDayResult = peakDay -peakPreviousDay
console.log('71 peakDayResult is: ' +peakPreviousDay +' - ' +peakDay +' is ' +tmpPeakDay);
var tmpPeakMonth = global.get('peakMonth' +indexYear[((currentMonth -1) +12)]);
console.log('72 tmpPeakMonth'+indexYear[((currentMonth -1) +12)] +' is: ' +tmpPeakMonth);
var tmpPeakPreviousMonth = global.get('peakMonth' +indexYear[((currentMonth -2) +12)]);
console.log('73 tmpPeakPreviousMonth'+indexYear[((currentMonth -1) +12)] +' is: ' +tmpPeakPreviousMonth);
tmpPeakMonth.splice(+indexYear[((currentMonth -1) +12)],1,peakDay - tmpPeakPreviousMonth[+indexMonth[((currentMonth -2) +12)]]);
global.set('peakMonth'+indexYear[((currentMonth -1) +12)], tmpPeakMonth);
console.log('74 peakMonth' +indexYear[((currentMonth -1) +12)] +' is ' +tmpPeakMonth);
var energyContractMonth = '8';
var energyContractYear = global.get('energyContractYear');
console.log('77 energyContractYear is: '+energyContractYear)
if(energyContractYear === currentYear)
{
var tmpPeakContractPeriodYear = global.get('peakContractPeriodYear')
var tmpPeakContractPeriodMonth = global.get('peakContractPeriodMonth' +currentYear);
var tmp = tmpPeakContractPeriodMonth.slice(energyContractMonth -1,tmpPeakContractPeriodMonth.length);
global.set('PeakContractPeriodMonth' +currentYear, tmp);
var tmp1 = tmp.reduce((partialSum, a) => partialSum + a, 0);
tmpPeakContractPeriodYear.splice(currentYear -1,1,tmp1);
global.set('PeakContractPeriodYear', tmpPeakContractPeriodYear);
}
{
var tmpPeakContractPeriodYear = global.get('peakContractPeriodYear')
var tmpPeakContractPeriodMonth = global.get('peakContractPeriodMonth' +currentYear);
var tmp = tmpPeakContractPeriodMonth.slice(0,energyContractMonth -2);
global.set('peakContractPeriodMonth' +currentYear, tmp);
var tmp1 = tmp.reduce((partialSum, a) => partialSum + a, 0);
tmp2 = global.get('PeakContractPeriodYear');
var tmp2 = tmp1 + tmp2[currentYear -2];
tmpPeakContractPeriodYear.splice(currentYear -2,1,tmp2);
global.set('peakContractPeriodYear', tmpPeakContractPeriodYear);
}
var tmpPeakYear = global.get('peakYear');
var tmpPeakMonth = global.get('peakMonth'+indexYear[((currentMonth -1) +12)]);
var tmp = tmpPeakMonth.reduce((partialSum, a) => partialSum + a, 0);
tmpPeakYear.splice(+indexYear[((currentMonth -1) +12)] -2001,1,tmp);
global.set('peakYear',tmpPeakYear );
console.log('78 peakYear is ' +tmpPeakYear);
if(currentMonth -1 === energyContractMonth - 2)
{
global.set('energyContractYear', +currentYear)
}
tmpPeakContractPeriodYear.splice(currentYear -2001,1,meterKwhThisYear_PBTH);
tmpPeakContractPeriodYear.splice(currentYear -2002,1,meterKwhPreviousYear_PBTH);
global.set('peakContractPeriodYear', tmpPeakContractPeriodYear);
console.log('77 peakContractPeriodYear is ' +tmpPeakContractPeriodYear);