Kostenberechnung für Aufträge
Die Sprachbrücke-Plattform verwendet ein zweistufiges Kostensystem für Dolmetschaufträge, das sowohl Grundkosten als auch zusätzliche Kosten berücksichtigt.
Überblick
Grundkosten (total_amount)
- Zweck: Der Hauptdienstleistungspreis, der dem Kunden vorab angeboten wird
- Festlegung: Bei der Auftragserstellung oder Kostenschätzung
- Beispiele:
- 2-stündiger Dolmetschdienst: 120€
- Halbtägige Konferenzdolmetschung: 400€
- Arzttermin-Dolmetschung: 80€
Zusätzliche Kosten
- Zweck: Zusätzliche Gebühren, die während der Dienstleistung entstehen
- Kategorien: Fahrt, Überstunden, Parkgebühren, Ausrüstung, Materialien, Sonstiges
- Genehmigung erforderlich: Alle zusätzlichen Kosten müssen vor der Abrechnung genehmigt werden
Berechnungsmethoden
calculateTotalCost() - Endgültiger Rechnungsbetrag
Diese Methode berechnet den finalen Betrag, der dem Kunden in Rechnung gestellt wird:
public function calculateTotalCost(): float
{
// Beginne mit dem Grundauftragsbetrag
$baseAmount = (float) $this->total_amount;
// Füge genehmigte zusätzliche Kosten hinzu
$additionalCostsTotal = $this->additionalCosts()
->where('approval_status', 'approved')
->sum('amount') ?? 0;
return $baseAmount + $additionalCostsTotal;
}
Verwendung: Endabrechnung, Rechnungserstellung, Kundenzahlung
calculateTotalAmount() - Auftragsbasierte Berechnung
Diese Methode berechnet Kosten basierend auf tatsächlichen Zuweisungen:
public function calculateTotalAmount(): float
{
$baseAmount = 0;
// Füge Zuweisungskosten hinzu
if ($this->assignments()->exists()) {
$baseAmount += $this->assignments->sum('calculated_cost') ?? 0;
}
// Füge genehmigte zusätzliche Kosten hinzu
$additionalCostsTotal = $this->additionalCosts()
->where('approval_status', 'approved')
->sum('amount') ?? 0;
return $baseAmount + $additionalCostsTotal;
}
Verwendung: Interne Kostenverfolgung, zuweisungsbasierte Berechnungen
Workflow-Beispiel
1. Auftragserstellung
Kunde beantragt 2-stündige Dolmetschung
total_amount = 120€ (Grundangebot)
2. Dienstleistungserbringung
Sprachmittler arbeitet 2,5 Stunden (30 Min Überstunden)
Fahrt zu entferntem Ort erforderlich
Parkgebühren entstehen
3. Zusätzliche Kosten hinzugefügt
- Überstunden: 30,00€ (genehmigungspflichtig)
- Fahrt: 25,50€ (genehmigungspflichtig)
- Parkgebühren: 8,00€ (genehmigungspflichtig)
4. Kostengenehmigung
- Überstunden: 30,00€ (genehmigt)
- Fahrt: 25,50€ (genehmigt)
- Parkgebühren: 8,00€ (abgelehnt - nicht vorab autorisiert)
5. Endberechnung
calculateTotalCost() = 120€ + 30,00€ + 25,50€ = 175,50€
Geschäftsregeln
Kostengenehmigung
- Nur Benutzer mit der Rolle
UserRole::ADMINkönnen zusätzliche Kosten genehmigen - Selbstgenehmigung ist nicht erlaubt (Ersteller kann eigene Kosten nicht genehmigen)
- Nach Genehmigung/Ablehnung können zusätzliche Kosten nicht mehr geändert werden
Statusbasierte Einbeziehung
- Nur
genehmigtezusätzliche Kosten werden in die Endberechnung einbezogen AusstehendeundabgelehnteKosten werden von der Abrechnung ausgeschlossen- Dies stellt sicher, dass Kunden nur für autorisierte Ausgaben belastet werden
Zuweisungskostenberechnung
- Automatisch berechnet, wenn der Zuweisungsstatus auf
abgeschlossenwechselt - Formel:
(tatsächliche_dauer_minuten / 60) × stundensatz - Auf 2 Dezimalstellen gerundet
Datenbankschema
Orders Tabelle
total_amount: DECIMAL(10,2) - Grunddienstleistungskosten- Andere kostenbezogene Felder über Beziehungen verwaltet
Additional Costs Tabelle
amount: DECIMAL(8,2) - Kostenbetragapproval_status: ENUM('pending', 'approved', 'rejected')category: ENUM('travel', 'overtime', 'parking', 'equipment', 'materials', 'other')
Assignments Tabelle
calculated_cost: DECIMAL(8,2) - Berechnet aus stundensatz × tatsächliche_dauerhourly_rate: DECIMAL(6,2) - Sprachmittlersatzactual_duration_minutes: INTEGER - Tatsächliche Dienstzeit
Zukünftige Überlegungen
Mögliche Änderungen
- Dynamische Preisgestaltung: Zeit- oder nachfragebasierte Preisanpassungen
- Rabattsystem: Kunden- oder volumenspezifische Rabatte
- Steuerberechnung: Mehrwertsteuer oder andere Steuereinschlüsse
- Währungsunterstützung: Mehrwährungsbehandlung
- Provisionsstruktur: Plattformgebühren oder Sprachmittlerprovisionen
Migrationsstrategie
Bei Änderungen der Geschäftslogik berücksichtigen:
- Datenbankmigrationen für neue Felder
- Rückwärtskompatibilität für bestehende Aufträge
- Datenmigrationsskripte für historische Daten
- Aktualisierte Testabdeckung für neue Szenarien
Verwandte Dateien
app/Models/Order.php- Hauptkostenberechnungsmethodenapp/Models/AdditionalCost.php- Verwaltung zusätzlicher Kostenapp/Models/Assignment.php- Zuweisungskostenberechnungtests/Unit/OrderModelTest.php- Kostenberechnungstestsdatabase/migrations/*_create_orders_table.php- Schemadefinition
API-Endpunkte (Zukünftig)
GET /api/orders/{id}/costs- Kostenaufschlüsselung abrufenPOST /api/orders/{id}/additional-costs- Zusätzliche Kosten hinzufügenPUT /api/additional-costs/{id}/approve- Zusätzliche Kosten genehmigenPUT /api/additional-costs/{id}/reject- Zusätzliche Kosten ablehnen