Fix bug with weekend delay
This commit is contained in:
16
main.go
16
main.go
@@ -383,6 +383,10 @@ func (tl *TransactionLog) delayTransaction(transaction *Transaction) {
|
|||||||
newDate = tl.last()
|
newDate = tl.last()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isWeekend(newDate) {
|
||||||
|
newDate = newDate.AddDate(0, 0, 1)
|
||||||
|
}
|
||||||
|
|
||||||
tl.addDay(newDate)
|
tl.addDay(newDate)
|
||||||
|
|
||||||
delete(tl.LogDays[transaction.Date].Transactions, transaction.ID)
|
delete(tl.LogDays[transaction.Date].Transactions, transaction.ID)
|
||||||
@@ -390,6 +394,8 @@ func (tl *TransactionLog) delayTransaction(transaction *Transaction) {
|
|||||||
transaction.Date = newDate
|
transaction.Date = newDate
|
||||||
tl.LogDays[newDate].Transactions[transaction.ID] = transaction
|
tl.LogDays[newDate].Transactions[transaction.ID] = transaction
|
||||||
|
|
||||||
|
transaction.Delayed = true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool {
|
func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool {
|
||||||
@@ -400,9 +406,8 @@ func (tl *TransactionLog) executeTransaction(transaction *Transaction) bool {
|
|||||||
if isWeekend(transaction.Date) && transaction.Delayable {
|
if isWeekend(transaction.Date) && transaction.Delayable {
|
||||||
logrus.Debugf("Delaying %s due to weekend scheduling\n", transaction.Name)
|
logrus.Debugf("Delaying %s due to weekend scheduling\n", transaction.Name)
|
||||||
tl.delayTransaction(transaction)
|
tl.delayTransaction(transaction)
|
||||||
if transaction.Delayable {
|
|
||||||
return false
|
return false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Debugf("Balance: %f | Minimum: %f\n", accounts[0].Balance, accounts[0].Minimum)
|
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)
|
transaction.Name, transaction.Amount, transaction.Date)
|
||||||
tl.delayTransaction(transaction)
|
tl.delayTransaction(transaction)
|
||||||
|
|
||||||
transaction.Delayed = true
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,7 +455,7 @@ func firstOfMonth(t time.Time) time.Time {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func lastOfMonth(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 {
|
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)
|
logrus.Debugf("Processing %s (%s | %f)", id, transaction.Name, transaction.Amount)
|
||||||
if !transactionLog.executeTransaction(transaction) {
|
if !transactionLog.executeTransaction(transaction) {
|
||||||
|
logrus.Debugf("Shifted due to: %s", transaction.Name)
|
||||||
shifted = true
|
shifted = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user