Fixed timezone edgecase. Fixed weekend bug
This commit is contained in:
31
main.go
31
main.go
@@ -18,6 +18,10 @@ import (
|
|||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
maxWidth = 100
|
||||||
|
)
|
||||||
|
|
||||||
type timeSlice []time.Time
|
type timeSlice []time.Time
|
||||||
|
|
||||||
func (s timeSlice) Len() int { return len(s) }
|
func (s timeSlice) Len() int { return len(s) }
|
||||||
@@ -330,10 +334,9 @@ func (tl *TransactionLog) deleteDay(date time.Time) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func calculateShift(transactionLog TransactionLog, transaction Transaction) time.Time {
|
func calculateShift(transactionLog TransactionLog, transaction Transaction) time.Time {
|
||||||
if transaction.Amount > 0 {
|
if isWeekend(transaction.Date) {
|
||||||
add := 1
|
add := 1
|
||||||
newDate := transaction.Date
|
newDate := transaction.Date
|
||||||
|
|
||||||
if transaction.Shift == "early" {
|
if transaction.Shift == "early" {
|
||||||
add = -1
|
add = -1
|
||||||
}
|
}
|
||||||
@@ -343,7 +346,6 @@ func calculateShift(transactionLog TransactionLog, transaction Transaction) time
|
|||||||
}
|
}
|
||||||
|
|
||||||
return newDate
|
return newDate
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if transaction.Shift == "early" {
|
if transaction.Shift == "early" {
|
||||||
@@ -426,15 +428,15 @@ func currentDay() time.Time {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func firstOfMonth(t time.Time) time.Time {
|
func firstOfMonth(t time.Time) time.Time {
|
||||||
return time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, time.Now().Location())
|
return time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())
|
||||||
}
|
}
|
||||||
|
|
||||||
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, time.Now().Location())
|
return time.Date(t.Year(), t.Month()+1, 0, 0, 0, 0, 0, t.Location())
|
||||||
}
|
}
|
||||||
|
|
||||||
func stripTime(t time.Time) time.Time {
|
func stripTime(t time.Time) time.Time {
|
||||||
return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Now().Location())
|
return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
|
||||||
}
|
}
|
||||||
|
|
||||||
func calculateFrequency(frequency string, startDate time.Time, endDate time.Time, hardDate bool) []time.Time {
|
func calculateFrequency(frequency string, startDate time.Time, endDate time.Time, hardDate bool) []time.Time {
|
||||||
@@ -604,8 +606,8 @@ func printOutput(logDay LogDay) {
|
|||||||
|
|
||||||
fullWidth := getTerminalWidth()
|
fullWidth := getTerminalWidth()
|
||||||
|
|
||||||
if fullWidth > 120 {
|
if fullWidth > maxWidth {
|
||||||
fullWidth = 120
|
fullWidth = maxWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
border := strings.Repeat("=", fullWidth)
|
border := strings.Repeat("=", fullWidth)
|
||||||
@@ -619,26 +621,25 @@ func printOutput(logDay LogDay) {
|
|||||||
}
|
}
|
||||||
for _, charge := range logDay.transactions() {
|
for _, charge := range logDay.transactions() {
|
||||||
prefix := "-"
|
prefix := "-"
|
||||||
|
suffix := "|"
|
||||||
if charge.Amount > 0 {
|
if charge.Amount > 0 {
|
||||||
prefix = "+"
|
prefix = "+"
|
||||||
}
|
}
|
||||||
|
|
||||||
if charge.Delayed {
|
if charge.Delayed {
|
||||||
suffix := fmt.Sprintf("(%s - %s) |", "Late", charge.OriginDate.Format("Jan 02 2006"))
|
suffix = fmt.Sprintf("(%s - %s) |", "Late", charge.OriginDate.Format("Jan 02 2006"))
|
||||||
printTransactionLine(charge.Amount, charge.Name, prefix, suffix, fullWidth)
|
|
||||||
} else if charge.Date != charge.OriginDate {
|
} else if charge.Date != charge.OriginDate {
|
||||||
suffix := fmt.Sprintf("(%s - %s) |", "Weekend", charge.OriginDate.Format("Jan 02 2006"))
|
suffix = fmt.Sprintf("(%s - %s) |", "Weekend", charge.OriginDate.Format("Jan 02 2006"))
|
||||||
printTransactionLine(charge.Amount, charge.Name, prefix, suffix, fullWidth)
|
|
||||||
} else {
|
|
||||||
printTransactionLine(charge.Amount, charge.Name, prefix, "|", fullWidth)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printTransactionLine(charge.Amount, charge.Name, prefix, suffix, fullWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(divider)
|
fmt.Println(divider)
|
||||||
for _, v := range logDay.EndingBalance {
|
for _, v := range logDay.EndingBalance {
|
||||||
printTransactionLine(v.Balance, v.Name, "", "|", fullWidth)
|
printTransactionLine(v.Balance, v.Name, "", "|", fullWidth)
|
||||||
}
|
}
|
||||||
fmt.Println(border + "\n")
|
fmt.Printf("%s\n\n", border)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user