From a427b00df83e05e3d8030cb76fd58fb7b1a644d1 Mon Sep 17 00:00:00 2001 From: Emma Sax Date: Mon, 1 Jan 2024 11:08:47 -0600 Subject: [PATCH] Insert rows into transactions pages when clearing (#19) --- The Budgeteer/clearCurrentTransactions.js | 5 ++++- The Budgeteer/clearFutureTransactions.js | 5 ++++- The Budgeteer/shared.js | 10 ++++++++++ The Budgeteer/variables.js | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/The Budgeteer/clearCurrentTransactions.js b/The Budgeteer/clearCurrentTransactions.js index ba7adb1..cbb8be4 100644 --- a/The Budgeteer/clearCurrentTransactions.js +++ b/The Budgeteer/clearCurrentTransactions.js @@ -25,8 +25,11 @@ function clearMonthTransactions(sheet) { var numRows = sheet.getDataRange().getNumRows(); sheet.getRange(TRANSACTION_START_ROW, 1, numRows, numColumns).setValue(null); - var deleteCount = sheet.getMaxRows() - 50; + var deleteCount = sheet.getMaxRows() - TRANSACTION_DEFAULT_ROW_COUNT; + if (deleteCount > 0) { shortenTransactionRows(sheet, deleteCount); + } else if (deleteCount < 0) { + addTransactionRows(sheet, 6, (TRANSACTION_DEFAULT_ROW_COUNT - sheet.getMaxRows())); }; } diff --git a/The Budgeteer/clearFutureTransactions.js b/The Budgeteer/clearFutureTransactions.js index 30e9a55..30dc1a8 100644 --- a/The Budgeteer/clearFutureTransactions.js +++ b/The Budgeteer/clearFutureTransactions.js @@ -8,9 +8,12 @@ function clearFutureMonthsTransactions(currentMonth) { var numRows = sheet.getDataRange().getNumRows(); sheet.getRange(TRANSACTION_START_ROW, 1, numRows, numColumns).setValue(null); - var deleteCount = sheet.getMaxRows() - 50; + var deleteCount = sheet.getMaxRows() - TRANSACTION_DEFAULT_ROW_COUNT; + if (deleteCount > 0) { shortenTransactionRows(sheet, deleteCount); + } else if (deleteCount < 0) { + addTransactionRows(sheet, 6, (TRANSACTION_DEFAULT_ROW_COUNT - sheet.getMaxRows())); }; }; } diff --git a/The Budgeteer/shared.js b/The Budgeteer/shared.js index d15f089..2ebde7f 100644 --- a/The Budgeteer/shared.js +++ b/The Budgeteer/shared.js @@ -1,3 +1,13 @@ +function addTransactionRows(sheet, rowToDup, countToAdd) { + var lastColumn = sheet.getLastColumn(); + var valuesToDuplicate = sheet.getRange(rowToDup, 1, 1, lastColumn).getValues()[0]; + + for (var i = 0; i < countToAdd; i++) { + sheet.insertRowAfter(rowToDup); + sheet.getRange(rowToDup + 1, 1, 1, lastColumn).setValues([valuesToDuplicate]); + } +} + function existingAccounts() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(DATA_ACCOUNT_SHEET_NAME); var accounts = sheet.getRange( diff --git a/The Budgeteer/variables.js b/The Budgeteer/variables.js index 3a38822..b1f9b9b 100644 --- a/The Budgeteer/variables.js +++ b/The Budgeteer/variables.js @@ -46,6 +46,7 @@ DATA_EXPENSE_SHEET_NAME = "CategoryExpenseData"; DATA_INCOME_SHEET_NAME = "CategoryIncomeData"; // These are within the monthly transaction sheets +TRANSACTION_DEFAULT_ROW_COUNT = 150; TRANSACTION_EXPENSES_ACCOUNT_COLUMN_LETTER = "D"; TRANSACTION_EXPENSES_ACCOUNT_COLUMN_NUMBER = 4; TRANSACTION_EXPENSES_AMOUNT_COLUMN_LETTER = "E";