Rechnungsanalyse: Kalkulationsseite fuer Leads im Admin-Panel
Bei Leads (customerStatus=lead) steht in der Kundenliste jetzt der Button "Rechnungsanalyse". Er oeffnet /kalkulation.html?customer=<id> - die Seite, die im Gespraech vor Ort oder am Telefon ausgefuellt wird. - Positionen nach Bereich (Website, Onlineshop, Softwareprojekt, Automatisierung/KI, laufende Kosten) mit Stundenwerten und Mengen - Preis ueber die Stundenstaffel (150/130/115/100), Brutto mit 19 % MwSt., Zahlungsmodalitaeten ab 1.000 / 3.000 EUR - Hinweis, ob selbst zusagbar (<= 5 Std), Termin abzustimmen oder ob Kenso freigeben muss (Shop, Software, Automatisierung) - Termin mit Justin/Kenso aus den hinterlegten Zeitfenstern, Notizen, Kundenportal-Zugang mit QR-Code - Zusammenfassung als Text zum Kopieren -> gehoert ins Akquise-Ticket Bewusst ohne eigenen Datensatz: dokumentiert wird im Ticket. Der Stand liegt pro Kunde nur im localStorage, damit ein angefangenes Gespraech nicht verloren geht. Fonts (Caprasimo, Figtree) liegen lokal unter public/fonts, kein Abruf beim Google-CDN. Neue Route GET /api/portal-admin/customers/:customerId liefert die Stammdaten zum Vorbefuellen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -185,6 +185,28 @@ router.get('/customers', async (req, res) => {
|
||||
}
|
||||
})
|
||||
|
||||
// --------------------------------------------- Einzelner Kunde (Stammdaten) --
|
||||
// Fuer die Rechnungsanalyse (kalkulation.html), die den Lead vorbefuellt.
|
||||
router.get('/customers/:customerId', async (req, res) => {
|
||||
try {
|
||||
const customer = await getDocument(config.collections.customers, req.params.customerId)
|
||||
return res.json({
|
||||
customer: {
|
||||
id: customer.$id,
|
||||
code: customer.code || '',
|
||||
name: customer.name || '',
|
||||
email: customer.email || '',
|
||||
phone: customer.phone || '',
|
||||
location: customer.location || '',
|
||||
customerStatus: customer.customerStatus || '',
|
||||
},
|
||||
})
|
||||
} catch (err) {
|
||||
const status = err.status || 500
|
||||
return res.status(status).json({ error: err.message || 'Kunde konnte nicht geladen werden' })
|
||||
}
|
||||
})
|
||||
|
||||
// ------------------------------------------- Kundennummer/Stammdaten pflegen --
|
||||
router.patch('/customers/:customerId', async (req, res) => {
|
||||
const { code, location, phone } = req.body || {}
|
||||
|
||||
Reference in New Issue
Block a user