Skip to content

Commit

Permalink
Create custom tracker spreadsheet when not found in dir
Browse files Browse the repository at this point in the history
  • Loading branch information
thinktwice13 committed Jun 13, 2022
1 parent 23bd49e commit 60b13b4
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 0 deletions.
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ func main() {
writeReport(&tr, r)
writeReport(&summaries, r)
err = r.Save()
err = createXlsTemplate()
if err != nil {
log.Fatalln(err)
}
Expand Down
10 changes: 10 additions & 0 deletions summaries.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"fmt"
"math"
"sort"
"time"
Expand Down Expand Up @@ -171,6 +172,10 @@ func tradeAsset(ts []Trade) ([]Sale, []Transaction, []Trade) {
// Find next purchase to calculate ciostbasis from
// Deduct sold quantity from purchase used to calculate the cost basis and sale trade being processed
// Add costs to curreny sale
if len(fifo.data) == 0 {
fmt.Errorf("error calculating trades for asset")
return nil, nil, nil
}
purchase := &fifo.data[0] // TODO strategyu specific
cost := Cost{
Time: purchase.Time,
Expand All @@ -194,7 +199,12 @@ func tradeAsset(ts []Trade) ([]Sale, []Transaction, []Trade) {
}

// taxableDeadline determines rge threshold date for profits tax
// Tax introduced 1/1/2016. For any deadlines before, return provided date
// For any taxable events provided after 1/1/2016, calculate deadline at 24 months after provided time
func taxableDeadline(since time.Time) time.Time {
if since.Before(time.Date(2016, 1, 1, 1, 0, 0, 0, time.UTC)) {
return since
}
return since.AddDate(2, 0, 0)
}

Expand Down
101 changes: 101 additions & 0 deletions tracker_template.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package main

import (
"errors"
"fmt"
"github.com/xuri/excelize/v2"
"os"
"path/filepath"
"time"
)

func createXlsTemplate() error {
filename := "Portfolio Tracker.xlsx"
fpath := filepath.Join(os.Getenv("PWD"), filename)
var err error

_, err = os.Stat(fpath)
if err == nil {
return errors.New("tracker already exists")
}

f := excelize.NewFile()
f.NewSheet("Trades")
err = f.SetSheetRow("Trades", "A1", &[]interface{}{
"Broker",
"Asset",
"Currency",
"Time",
"Quantity",
"Price",
"Fee",
})
if err != nil {
fmt.Println(err)
}

err = f.AddTable("Trades", "A1", "G1001", `{
"table_name": "table",
"table_style": "TableStyleMedium2",
"show_first_column": true,
"show_last_column": false,
"show_row_stripes": false,
"show_column_stripes": false
}`)

if err != nil {
fmt.Println(err)
}

f.SetSheetRow("Trades", "A2", &[]interface{}{
"khbliyubl",
"jlhblyb",
"EUR",
time.Now(),
-22.789,
574.89,
-4.2,
})

f.NewSheet("Dividends")
err = f.SetSheetRow("Dividends", "A1", &[]interface{}{
"Broker",
"Asset",
"Currency",
"Year",
"Amount",
})
if err != nil {
fmt.Println(err)
}

f.NewSheet("Withholding Tax")
err = f.SetSheetRow("Withholding Tax", "A1", &[]interface{}{
"Broker",
"Asset",
"Currency",
"Year",
"Amount",
})
if err != nil {
fmt.Println(err)
}

f.NewSheet("Fees")
err = f.SetSheetRow("Fees", "A1", &[]interface{}{
"Currency",
"Year",
"Amount",
"Note",
})
if err != nil {
fmt.Println(err)
}

f.DeleteSheet("Sheet1")
err = f.SaveAs(fpath)
if err != nil {
return err
}
return nil
}

0 comments on commit 60b13b4

Please sign in to comment.