quote-system/README.md

217 lines
5.4 KiB
Markdown

# Quote Management System - Bay Area Affiliates, Inc.
Ein vollständiges Quote-Management-System mit PostgreSQL-Datenbank, Node.js Backend und Tailwind CSS Frontend.
## Features
- **Kundenverwaltung**: Erstellen, Bearbeiten und Löschen von Kunden mit vollständigen US-Adressen
- **Quote-Erstellung**: Generierung professioneller Angebote mit automatischer Nummerierung (YYYY-MM-XXXX)
- **Flexible Preisgestaltung**:
- Automatische Berechnung von Subtotal, Tax (8.25%) und Total
- Tax-Exempt Option für Churches und Non-Profits
- TBD-Support für noch nicht festgelegte Beträge mit flexiblen Fußnoten
- **PDF-Export**: Generierung druckfertiger PDFs basierend auf Ihrer HTML-Vorlage
- **Responsive Design**: Modernes UI mit Tailwind CSS
## Installation & Start
### Voraussetzungen
- Docker
- Docker Compose
### Schnellstart
1. **Repository klonen oder Dateien kopieren**
```bash
cd quote-system
```
2. **Logo hochladen (optional)**
- Legen Sie Ihr Logo als `logo_.png` in den Ordner `/uploads` oder nutzen Sie die Upload-Funktion in der App
3. **Anwendung starten**
```bash
docker-compose up -d
```
4. **Anwendung öffnen**
- Browser: http://localhost:3000
### Erste Schritte
1. Die Datenbank wird automatisch initialisiert mit einem Beispielkunden (Braselton Development)
2. Navigieren Sie zu "Customers" um weitere Kunden anzulegen
3. Erstellen Sie Ihr erstes Quote unter "Quotes" → "+ New Quote"
## Verwendung
### Kunden verwalten
- **Neuen Kunden anlegen**: Klicken Sie auf "+ New Customer"
- **Kunde bearbeiten**: Klicken Sie auf "Edit" neben dem Kunden
- **Kunde löschen**: Klicken Sie auf "Delete" (Achtung: Löscht auch alle zugehörigen Quotes!)
### Quotes erstellen
1. Klicken Sie auf "+ New Quote"
2. Wählen Sie einen Kunden aus dem Dropdown
3. Die Quote-Nummer wird automatisch generiert (Format: YYYY-MM-XXXX)
4. Das Datum ist standardmäßig heute, kann aber geändert werden
5. Fügen Sie Line Items hinzu:
- **Quantity**: Menge (z.B. "1", "2", "TBD")
- **Description**: Beschreibung des Artikels/Service
- **Rate**: Preis pro Einheit oder Stundensatz
- **Amount**: Gesamtbetrag (wird bei TBD automatisch auf "TBD" gesetzt)
- **TBD Checkbox**: Markiert Posten als "To Be Determined"
6. Für Tax-Exempt Kunden (Churches, Non-Profits): Aktivieren Sie "Tax Exempt"
7. Bei TBD-Posten: Geben Sie eine Fußnote ein (z.B. "Total excludes labor charges...")
### PDF generieren
- Klicken Sie auf "PDF" neben dem gewünschten Quote
- Das PDF wird automatisch im originalen Design heruntergeladen
## Technische Details
### Architektur
- **Backend**: Node.js mit Express
- **Datenbank**: PostgreSQL 15
- **Frontend**: Vanilla JavaScript mit Tailwind CSS
- **PDF Generation**: Puppeteer
- **Container**: Docker & Docker Compose
### Datenbank-Schema
#### Customers
- id, name, street, city, state, zip_code, account_number
- created_at, updated_at
#### Quotes
- id, quote_number, customer_id (FK), quote_date
- tax_exempt, tax_rate, subtotal, tax_amount, total
- has_tbd, tbd_note
- created_at, updated_at
#### Quote Items
- id, quote_id (FK), quantity, description, rate, amount
- is_tbd, item_order
- created_at
### API Endpoints
#### Customers
- `GET /api/customers` - Alle Kunden
- `GET /api/customers/:id` - Einzelner Kunde
- `POST /api/customers` - Neuer Kunde
- `PUT /api/customers/:id` - Kunde aktualisieren
- `DELETE /api/customers/:id` - Kunde löschen
#### Quotes
- `GET /api/quotes` - Alle Quotes
- `GET /api/quotes/:id` - Einzelnes Quote mit Items
- `POST /api/quotes` - Neues Quote
- `PUT /api/quotes/:id` - Quote aktualisieren
- `DELETE /api/quotes/:id` - Quote löschen
- `GET /api/quotes/next-number` - Nächste Quote-Nummer
- `POST /api/quotes/:id/pdf` - PDF generieren
#### Upload
- `POST /api/upload-logo` - Logo hochladen
## Konfiguration
### Umgebungsvariablen
Die folgenden Umgebungsvariablen können in der `docker-compose.yml` angepasst werden:
```yaml
DB_HOST: postgres
DB_PORT: 5432
DB_USER: quoteuser
DB_PASSWORD: quotepass123 # ÄNDERN SIE DIES FÜR PRODUKTION!
DB_NAME: quotedb
```
### Ports
- **Anwendung**: 3000
- **PostgreSQL**: 5432 (extern erreichbar für Backups)
## Backup & Restore
### Backup erstellen
```bash
docker exec quote_postgres pg_dump -U quoteuser quotedb > backup.sql
```
### Backup wiederherstellen
```bash
docker exec -i quote_postgres psql -U quoteuser quotedb < backup.sql
```
## Wartung
### Logs ansehen
```bash
docker-compose logs -f
```
### Anwendung neu starten
```bash
docker-compose restart
```
### Anwendung stoppen
```bash
docker-compose down
```
### Datenbank zurücksetzen (VORSICHT!)
```bash
docker-compose down -v
docker-compose up -d
```
## Anpassungen
### Firmendaten ändern
Bearbeiten Sie die HTML-Vorlage in `server.js` in der Funktion `generateQuoteHTML()`:
- Firmenname
- Adresse
- Telefonnummern
- E-Mail
- Tagline
### Tax Rate ändern
Standard ist 8.25% (Texas). Ändern Sie in:
- `server.js`: Zeile mit `tax_rate: 8.25`
- `init.sql`: Zeile mit `tax_rate DECIMAL(5,2) DEFAULT 8.25`
## Fehlerbehebung
### Anwendung startet nicht
```bash
docker-compose logs app
```
### Datenbankverbindung fehlgeschlagen
```bash
docker-compose logs postgres
```
### Port bereits belegt
Ändern Sie in `docker-compose.yml` den Port:
```yaml
ports:
- "3001:3000" # Statt 3000:3000
```
## Support
Bei Problemen oder Fragen wenden Sie sich an Ihren Administrator.
## Lizenz
Proprietär - Bay Area Affiliates, Inc.