From 4fa9a4e986d457b406236fc62a5955a2275b83a9 Mon Sep 17 00:00:00 2001 From: Nikolaus Gotsche Date: Wed, 12 Sep 2018 13:57:14 +0200 Subject: delete Bill, minor beautification --- interact.go | 26 +++++++++++++++++++++- main.go | 8 ++++++- sqlite.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 92 insertions(+), 14 deletions(-) diff --git a/interact.go b/interact.go index a37c665..a18a7a8 100644 --- a/interact.go +++ b/interact.go @@ -94,6 +94,30 @@ func interact() { }, }) + shell.AddCmd(&ishell.Cmd{ + Name: "deletebill", + Help: " Delete a Bill with the following id", + Func: func(c *ishell.Context) { + //c.Print("\033[H\033[2J") + arg := "none" + if len(c.Args) > 0 { + arg = strings.Join(c.Args, " ") + argi,err := strconv.Atoi(arg) + if err == nil{ + //c.Println(boldGreen("Opening Project",argi)) + deleteBill(argi) + stdOut() + }else{ + c.Println(boldRed(arg,"is not a valid id!")) + } + }else{ + c.Println(boldRed("deletetask - Please enter an id")) + showLastBills(0) + } + c.Println(boldBlue("______________________")) + }, + }) + shell.AddCmd(&ishell.Cmd{ Name: "deletetask", Help: " Delete a Task with the following id", @@ -295,7 +319,7 @@ func interact() { } //c.Print("\033[H\033[2J") //c.Println(boldGreen("Start New Project")) - stdOut() + //stdOut() c.Println(boldBlue("______________________")) }, }) diff --git a/main.go b/main.go index 39b48ef..d74bde5 100644 --- a/main.go +++ b/main.go @@ -15,7 +15,7 @@ import ( //var svar string var starttime,stoptime string var projectid, edittaskid, editprojectid, editcustomerid int -var deltask int +var deltask,delbill int var addcustomer bool var newproject, newtask, stoptask, allproj, allbills, runinter, test, newconfig bool var billcount int @@ -88,6 +88,10 @@ func init() { "startnow", false, "Start a new Task in current project") + flag.IntVar(&delbill, + "deletebill", + 0, + "Specify which Bill to delete") flag.IntVar(&deltask, "deletetask", 0, @@ -239,6 +243,8 @@ func main() { //showLastProject() //getClosedTasks(0) //showOpenTask() + } else if (delbill>0) { + deleteBill(delbill) } else if (deltask>0) { deleteTask(deltask) } else if (edittaskid>0) { diff --git a/sqlite.go b/sqlite.go index 637b76b..6ce6c3c 100644 --- a/sqlite.go +++ b/sqlite.go @@ -214,6 +214,11 @@ func saveBill(in bill) { func showLastBills(count int) { boldRed := color.New(color.FgRed, color.Bold).SprintFunc() boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + cn := "all" + if count > 0 { + cn = string(count) + } + fmt.Printf(boldGreen("Loading %s Bills\n"),cn) rows, err := db.Query("SELECT * FROM timetable") if count == 0 { rows, err = db.Query("SELECT * FROM bills ORDER BY date ASC") @@ -377,13 +382,14 @@ func checkTasks(in []int,billid int) { checkErr(err) } -func uncheckTasks(in []int) { - ins := strings.Trim(strings.Replace(fmt.Sprint(in)," "," , ",-1),"[]") - que := fmt.Sprintf("UPDATE timetable SET checkout = ? WHERE id IN (%s)",ins) +func uncheckTasks(billid int) { + //ins := strings.Trim(strings.Replace(fmt.Sprint(in)," "," , ",-1),"[]") + //que := fmt.Sprintf("UPDATE timetable SET checkout = ? WHERE id IN (%s)",ins) //rows,err := db.Query(que) - stmt, err := db.Prepare(que) + //stmt, err := db.Prepare(que) + stmt, err := db.Prepare("UPDATE timetable SET checkout = 0 WHERE checkout = ?") checkErr(err) - _, err = stmt.Exec(0) + _, err = stmt.Exec(billid) checkErr(err) } @@ -648,6 +654,8 @@ func showLastProject() { } func addCustomer() { + boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + fmt.Println(boldGreen("Adding new Customer")) com := getInput("Enter Customer Company: ") nam := getInput("Enter Customer Name: ") add := getInput("Enter Address (separate lines by ; [Street;Zip;City;Country]): ") @@ -659,11 +667,13 @@ func addCustomer() { checkErr(err) _, err = stmt.Exec(com,nam,add,sat) checkErr(err) - fmt.Println(" Customer Added:",com ,nam, add, sat) + fmt.Println(boldGreen(" Customer Successfully Added:"),com ,nam, add, sat) } func newProject() { boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + fmt.Println(boldGreen("Creating new Project")) if (opentask.id == 0) { nam := getInput("Enter Project Name: ") icust := 0 @@ -851,6 +861,8 @@ func allCustomers() { } func allProjects() { + boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + fmt.Println(boldGreen("Loading all customers")) fmt.Println("___All Projects________________") rows3,err := db.Query("SELECT * FROM customers") checkErr(err) @@ -897,7 +909,7 @@ func allProjects() { if (sumo+sumb) > 0 { fmt.Printf(" %v:%s \n",uid,prname) fmt.Printf(" Unbilled: %.2f[h] Billed: %.2f[h] | Total: %.2f[h]\n",sumo,sumb,sumo+sumb) - fmt.Printf(" First: %s, Last:%s, Fin:%v, For:%v\n",first.Local().Format("2006-01-02 15:04 MST"),last.Local().Format("2006-01-02 15:04 MST"),finish,customer) + fmt.Printf(" First: %s, Last:%s, Fin:%v, For:%v\n\n",first.Local().Format("2006-01-02 15:04 MST"),last.Local().Format("2006-01-02 15:04 MST"),finish,customer) }else{ fmt.Print(" Nothing\n") } @@ -909,9 +921,44 @@ func allProjects() { fmt.Println("_______________________________\n") } +func deleteBill(id int) { + boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + fmt.Println(boldGreen("Deleting Bill ",id)) + var prj int + var identity,moneys,hours string + var date time.Time + + rows,err := db.Query("SELECT project, date, identity, hours, moneys FROM bills WHERE id = $1",id) + checkErr(err) + if rows.Next() { + err = rows.Scan(&prj, &date, &identity, &hours, &moneys) + checkErr(err) + rows.Close() //good habit to close + prstr,custr := getProjectName(prj) + hsum := sumFloatArray(string2FloatArray(hours,";")) + msum := sumFloatArray(string2FloatArray(moneys,";")) + fmt.Printf("%v: For %v- %v (%v) - %.1f[h] : %.2f[€]\n",identity,custr,prstr,date.Local().Format("2006 Mon Jan _2"),hsum,msum) + if isSure("Are You Sure?") { + uncheckTasks(id) //Set corresponding Tasks to checkout=0 + stmt, err := db.Prepare("DELETE FROM bills WHERE id = ?") + checkErr(err) + _, err = stmt.Exec(id) + checkErr(err) + fmt.Println(boldGreen("Bill ",id," deleted successfully!")) + } else { + return + } + }else{ + fmt.Println(boldRed(id," is Not a known Bill!")) + showLastBills(0) + } +} + func deleteTask(id int) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + fmt.Println(boldGreen("Deleting Task ",id)) var chk,prj int var start,stop time.Time var task string @@ -921,7 +968,7 @@ func deleteTask(id int) { err = rows.Scan(&prj, &start, &stop, &task, &chk) checkErr(err) rows.Close() //good habit to close - fmt.Println(boldGreen("Delete Task", id)) + //fmt.Println(boldGreen("Delete Task", id)) dur := float64(stop.Sub(start))/(1000000000*60*60) fmt.Printf("%v: %v (%v-%v) - %.2f h\n",prj,task,start.Local().Format("2006 Mon Jan _2 15:04"),stop.Local().Format("15:04"),dur) if isSure("Are You Sure?") { @@ -929,7 +976,7 @@ func deleteTask(id int) { checkErr(err) _, err = stmt.Exec(id) checkErr(err) - fmt.Println(boldGreen(id," deleted successfully!")) + fmt.Println(boldGreen("Task ",id," deleted successfully!")) } else { return } @@ -941,6 +988,7 @@ func deleteTask(id int) { func editCustomer(id int) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + fmt.Println(boldGreen("Editing Customer ",id)) var comp,name,addr string var satz float64 rows,err := db.Query("SELECT company, name, address, satz FROM customers WHERE id = $1",id) @@ -955,7 +1003,7 @@ func editCustomer(id int) { } rows.Close() //good habit to close - fmt.Println(boldGreen("Edit Customer",id)) + //fmt.Println(boldGreen("Edit Customer",id)) fmt.Println("Old Company Name:",comp) in := getInput("Enter New:") if in!=""{ @@ -992,6 +1040,7 @@ func editCustomer(id int) { func editTask(id int) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + fmt.Println(boldGreen("Edit Task ",id)) var chk,prj int var start,stop time.Time var task,startstr,stopstr string @@ -1007,7 +1056,6 @@ func editTask(id int) { } rows.Close() //good habit to close - fmt.Println(boldGreen("Edit Task ",id)) fmt.Println("Old Name:",task) in := getInput("Enter New:") if in!=""{ @@ -1067,6 +1115,7 @@ func editTask(id int) { func editProject(id int) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + fmt.Println(boldGreen("Edit Project ",id)) var fin,cust int var first time.Time var name,nfirst string @@ -1075,7 +1124,6 @@ func editProject(id int) { if rows.Next() { err = rows.Scan(&name, &first, &fin, &cust) checkErr(err) - fmt.Println(boldGreen("Edit Project ",id)) fmt.Println("Old Name:",name) in := getInput("Enter New:") if in!=""{ -- cgit v1.2.3