docker compose up --build
# Accès
Frontend: http://localhost:3000
API: http://localhost:8080/api
Token: Bearer demo_bearer_latactik_2025-- Remise au niveau facture
invoices: discount_rate DECIMAL(5,2) -- 0.00 à 100.00%
subtotal/total_due DECIMAL(10,2) -- Précision BCMath
-- Items avec line_total calculé
invoice_items: quantity DECIMAL(8,2), unit_price DECIMAL(8,2)Choix: Remise globale vs par ligne → Simplicité business et cohérence calculs.
// InvoiceObserver - Recalcul automatique
public function saving(Invoice $invoice) {
$subtotal = bcmul($invoice->items->sum('line_total'), '1', 2);
$discountAmount = bcdiv(bcmul($subtotal, $invoice->discount_rate, 4), '100', 2);
$invoice->total_due = bcsub($subtotal, $discountAmount, 2);
}Choix: Observer vs calcul à la volée → Cohérence données + Performance queries.
Laravel 11 + Vue 3 + TypeScript + SQLite + Docker + JSON:API