diff --git a/main.go b/main.go index 9773789..b4bd422 100644 --- a/main.go +++ b/main.go @@ -383,6 +383,10 @@ func (tl *TransactionLog) delayTransaction(transaction *Transaction) { newDate = tl.last() } + if isWeekend(newDate) { + newDate = newDate.AddDate(0, 0, 1) + } + tl.addDay(newDate) delete(tl.LogDays[transaction.Date].Transactions, transaction.ID) @@ -390,6 +394,8 @@ func (tl *TransactionLog) delayTransaction(transaction *Transaction) { transaction.Date = newDate tl.LogDays[newDate].Transactions[transaction.ID] = transaction + transaction.Delayed = true + } func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool { @@ -400,9 +406,8 @@ func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool { if isWeekend(transaction.Date) && transaction.Delayable { logrus.Debugf("Delaying %s due to weekend scheduling\n", transaction.Name) tl.delayTransaction(transaction) - if transaction.Delayable { - return false - } + + return false } logrus.Debugf("Balance: %f | Minimum: %f\n", accounts[0].Balance, accounts[0].Minimum) @@ -412,8 +417,6 @@ func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool { transaction.Name, transaction.Amount, transaction.Date) tl.delayTransaction(transaction) - transaction.Delayed = true - return false } @@ -452,7 +455,7 @@ func firstOfMonth(t time.Time) time.Time { } func lastOfMonth(t time.Time) time.Time { - return time.Date(t.Year(), t.Month()+1, 0, 0, 0, 0, 0, currentTZ()) + return t.AddDate(0, 1, -t.Day()) } func stripTime(t time.Time) time.Time { @@ -555,6 +558,7 @@ func processTransactionsByID(transactionLog *TransactionLog, transactionIDs []st } logrus.Debugf("Processing %s (%s | %f)", id, transaction.Name, transaction.Amount) if !transactionLog.executeTransaction(transaction) { + logrus.Debugf("Shifted due to: %s", transaction.Name) shifted = true } }