// Firmendaten (Migration 0023) — Adress- und Abrechnungsdaten des // eigenen Mandanten einsehen/pflegen. Bei der Neuanlage (Registrierung, // Betreiber-Firmenanlage) sind diese Felder Pflicht; bestehende, davor // angelegte Accounts können sie hier nachtragen. package web import ( "net/http" "github.com/netcell-it/deklarix/internal/store" ) type firmendatenData struct { Title string Nav navData Name string Strasse string PLZ string Ort string Land string UStID string Rechnungsemail string Error string Gespeichert bool } func (s *Server) handleFirmendaten(w http.ResponseWriter, r *http.Request) { acc, err := s.store.GetAccount(r.Context(), currentUser(r).AccountID) if err != nil { http.Error(w, "Firmendaten konnten nicht geladen werden: "+err.Error(), http.StatusInternalServerError) return } data := firmendatenData{ Title: "Firmendaten", Nav: navFor(r), Name: acc.Name, Strasse: acc.Strasse, PLZ: acc.PLZ, Ort: acc.Ort, Land: acc.Land, UStID: acc.UStID, Rechnungsemail: acc.Rechnungsemail, Gespeichert: r.URL.Query().Get("gespeichert") == "1", } if err := s.templates.ExecuteTemplate(w, "firmendaten", data); err != nil { http.Error(w, "Seite konnte nicht gerendert werden", http.StatusInternalServerError) } } func (s *Server) handleFirmendatenSpeichern(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { http.Error(w, "ungültiges Formular", http.StatusBadRequest) return } in := store.AccountInput{ Name: r.FormValue("account_name"), Strasse: r.FormValue("strasse"), PLZ: r.FormValue("plz"), Ort: r.FormValue("ort"), Land: r.FormValue("land"), UStID: r.FormValue("ust_id"), Rechnungsemail: r.FormValue("rechnungsemail"), } if in.Name == "" || in.Strasse == "" || in.PLZ == "" || in.Ort == "" || in.Land == "" || in.Rechnungsemail == "" { data := firmendatenData{ Title: "Firmendaten", Nav: navFor(r), Error: "Alle Felder außer USt-IdNr. sind Pflicht", Name: in.Name, Strasse: in.Strasse, PLZ: in.PLZ, Ort: in.Ort, Land: in.Land, UStID: in.UStID, Rechnungsemail: in.Rechnungsemail, } if err := s.templates.ExecuteTemplate(w, "firmendaten", data); err != nil { http.Error(w, "Seite konnte nicht gerendert werden", http.StatusInternalServerError) } return } if _, err := s.store.UpdateAccountDetails(r.Context(), currentUser(r).AccountID, in); err != nil { http.Error(w, "Speichern fehlgeschlagen: "+err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/verwaltung/firma?gespeichert=1", http.StatusSeeOther) }