49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
type settingsView struct {
|
|
Cfg Config
|
|
Saved bool
|
|
Error string
|
|
Version string
|
|
}
|
|
|
|
func (s *Server) handleSettings(w http.ResponseWriter, r *http.Request) {
|
|
s.mu.Lock()
|
|
cfg := s.Cfg
|
|
s.mu.Unlock()
|
|
s.render(w, "settings_page", settingsView{Cfg: cfg, Version: Version})
|
|
}
|
|
|
|
func (s *Server) handleSettingsSave(w http.ResponseWriter, r *http.Request) {
|
|
r.ParseForm()
|
|
|
|
dueDays, _ := strconv.Atoi(r.FormValue("payment_terms_days"))
|
|
mvg, _ := strconv.ParseFloat(r.FormValue("mvg_percent"), 64)
|
|
|
|
s.mu.Lock()
|
|
// Web-only POC: settings edits stay in memory only and are reset with the
|
|
// rest of the POC state every 10 minutes. config.json is never rewritten.
|
|
s.Cfg.CompanyName = r.FormValue("company_name")
|
|
s.Cfg.CompanyAddress = r.FormValue("company_address")
|
|
s.Cfg.CompanyPhone = r.FormValue("company_phone")
|
|
s.Cfg.CompanyEmail = r.FormValue("company_email")
|
|
s.Cfg.CompanyWeb = r.FormValue("company_web")
|
|
s.Cfg.TaxID = r.FormValue("tax_id")
|
|
s.Cfg.BankInfo = r.FormValue("bank_info")
|
|
if dueDays > 0 {
|
|
s.Cfg.PaymentTermsDays = dueDays
|
|
}
|
|
if mvg > 0 {
|
|
s.Cfg.MVGPercent = mvg
|
|
}
|
|
cfg := s.Cfg
|
|
s.mu.Unlock()
|
|
|
|
s.render(w, "settings_page", settingsView{Cfg: cfg, Saved: true, Version: Version})
|
|
}
|