Knopf "Neues Projekt" zum Leeren des Arbeitsstands
Bisher liess sich ein neuer Auftrag nur von Hand beginnen: Namen ueberschreiben, jede Position neu ausfuellen und auf der Rechnungsseite Kundendaten und Rechnungsnummer leeren. Wurde der letzte Schritt vergessen, stand der alte Kunde auf der neuen Rechnung. - POST /projekte/neu setzt nur PROJEKT_FELDER zurueck (Name, Positionen, Kundendaten, Rechnungsnummer, Datum auf heute). Betriebswerte wie Marge, Stundenlohn, Drucker, Steuer und Firmendaten bleiben. - GET /projekte liefert zusaetzlich 'ungespeichert'. Der Knopf fragt nur nach, wenn der offene Stand wirklich nicht als Projekt gesichert ist. - Der Vergleich ignoriert 'datum' und 'geaendert', sonst waere ein gespeichertes Projekt am naechsten Tag faelschlich "ungespeichert". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -345,6 +345,37 @@ async function projektLaden() {
|
||||
}
|
||||
}
|
||||
|
||||
/** Beginnt einen leeren Auftrag. Betriebswerte bleiben erhalten. */
|
||||
async function projektNeu() {
|
||||
// Offenen Autosave durchdruecken, damit der Server den wirklich
|
||||
// aktuellen Stand kennt, bevor wir nach Ungespeichertem fragen.
|
||||
await sofortSpeichern();
|
||||
let offen = false;
|
||||
try {
|
||||
const daten = await (await fetch('/projekte')).json();
|
||||
offen = !!daten.ungespeichert;
|
||||
} catch (e) {
|
||||
offen = true; // Im Zweifel lieber nachfragen.
|
||||
}
|
||||
if (offen && !confirm(
|
||||
'Der aktuelle Stand ist nicht als Projekt gespeichert.\n\n' +
|
||||
'Projektname, Positionen, Kundendaten und Rechnungsnummer werden ' +
|
||||
'geleert. Betriebswerte (Marge, Drucker, Steuer) bleiben erhalten.\n\n' +
|
||||
'Trotzdem neu anfangen?')) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const res = await fetch('/projekte/neu', { method: 'POST' });
|
||||
if (!res.ok) {
|
||||
showNotification('Zuruecksetzen fehlgeschlagen');
|
||||
return;
|
||||
}
|
||||
location.reload();
|
||||
} catch (e) {
|
||||
showNotification('Zuruecksetzen fehlgeschlagen');
|
||||
}
|
||||
}
|
||||
|
||||
/** Loescht das ausgewaehlte Projekt (der Arbeitsstand bleibt bestehen). */
|
||||
async function projektLoeschen() {
|
||||
const auswahl = document.getElementById('projekt-auswahl');
|
||||
|
||||
Reference in New Issue
Block a user