summaryrefslogtreecommitdiff
path: root/texify.go
blob: 71a99883de7bb16e4e22757ce31b7db13e408289 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
package main

import (
    "fmt"
    "os"
    "text/template"
)

type FeeItem struct{
    Task        string
    Timeframe   string
    Hours       float64
    Price       float64
}

type Filenames struct{
    Data    string
    Invoice string
    Main    string
}

type Data struct {
    InvDate     string
    WorkDate    string
    InvNo       string
    ProjName    string

    CustComp    string
    CustName    string
    CustStr     string
    CustZip     string
    CustCity    string
    CustCountry string

    TaxID       string
    MyName      string
    MyStr       string
    MyZip       string
    MyCity      string
    MyCountry   string
    MyTel       string
    MyMob       string
    MyMail      string
    MyUrl       string
    
    BankNum     string
    BankLZ      string
    BankName    string
    Iban        string
    Bic         string
}

func billTemplate(billdata bill, cust customer) (Filenames) {
    billid := billdata.id
    custr,cuzip,cucity,cucou := "","","",""
    addr := string2StringArray(cust.address,";")
    for i,a := range addr {
        switch i {
        case 0:
            custr=a
        case 1:
            cuzip=a
        case 2:
            cucity=a
        case 3:
            cucou=a
        default:
            break
        }
    }
    dat := Data{billdata.date.UTC().Format("2006-01-02"),
                billdata.timerange,
                billdata.identity,
                billdata.projectname,

                cust.company,
                cust.name,
                custr,
                cuzip,
                cucity,
                cucou,

                config.Taxid,
                config.Name,
                config.Street,
                config.Zip,
                config.City,
                config.Country,
                config.Telefon,
                config.Mobile,
                config.Mail,
                config.Url,

                config.Bankacc,
                config.Banklz,
                config.Bankname,
                config.Iban,
                config.Bic,
                }

    inv := billdata.items

    filenamedata := fmt.Sprintf("%v_data",billid)
    filenameinv  := fmt.Sprintf("%v_invoice",billid)
    filenamemain := fmt.Sprintf("outtex/%v_main.tex",billid)
    fnames := Filenames{filenamedata,filenameinv,filenamemain}

    //Parse Templates
    tmpl, err := template.New("invoice").Delims("[[","]]").ParseGlob("templates/*.tex")
    checkErr(err)
    filenamedata = fmt.Sprintf("outtex/%v_data.tex",billid)
    filenameinv  = fmt.Sprintf("outtex/%v_invoice.tex",billid)
    filenamemain = fmt.Sprintf("outtex/%v_main.tex",billid)

    //Open File
    datf, err := os.Create(filenamedata)
    checkErr(err)
    invf, err := os.Create(filenameinv)
    checkErr(err)
    maif, err := os.Create(filenamemain)
    checkErr(err)
    defer datf.Close()
    defer invf.Close()
    defer maif.Close()

    //Execute Template
    //err = tmpl.ExecuteTemplate(os.Stdout, "invoice.tex", td)
    err = tmpl.ExecuteTemplate(datf, "_data.tex", dat)
    checkErr(err)
    err = tmpl.ExecuteTemplate(invf, "_invoice.tex", inv)
    checkErr(err)
    err = tmpl.ExecuteTemplate(maif, "_main.tex", fnames)
    checkErr(err)

    return fnames
}

func tmpltest() {

    //Sampledata
    dat := Data{"17.6.18",
            "3.4.-7.6.18",
            "HN 07/18",
            "Testkopfstrasse 132",
            "Somecompany",
            "Jemand Wiadschosei",
            "Fakestreet 123",
            "6996",
            "Busenhausen",
            "Tittania",
            "6575-6544",
            "Meinam Sauluschtig",
            "Saubastrasse 86",
            "1111",
            "Nicetown",
            "Niceland",
            "+43 (1) 655 555 23",
            "+43 (0) 650 555 32",
            "Meinam@sauluscht.ig",
            "www.saulust.com",
            "7272626272",
            "20220",
            "Might Bank Inc.",
            "IB47 2382 4338 2822 1222",
            "BICBICBIC"}
    var inv []FeeItem

    inv = append(inv,FeeItem{"Modellierung Dachkonstruktion", "1.4.-27.4.18",13,325})
    inv = append(inv,FeeItem{"Dokument Vorbereitung", "9.4.-5.5.18",15,375})
    inv = append(inv,FeeItem{"Begehungen und Besprechungen", "1.4.-19.4.18",12,300})
    inv = append(inv,FeeItem{"Wichtig aussehen", "5.5.-5.5.18",2,50})

    //Parse Templates
    tmpl, err := template.New("invoice").Delims("[[","]]").ParseGlob("templates/*.tex")
    checkErr(err)
    //Open File
    datf, err := os.Create("outtex/1_data.tex")
    checkErr(err)
    invf, err := os.Create("outtex/1_invoice.tex")
    checkErr(err)
    defer datf.Close()
    defer invf.Close()

    //Execute Template
    //err = tmpl.ExecuteTemplate(os.Stdout, "invoice.tex", td)
    err = tmpl.ExecuteTemplate(datf, "_data.tex", dat)
    checkErr(err)
    err = tmpl.ExecuteTemplate(invf, "_invoice.tex", inv)
    checkErr(err)
}