← Retour à la marketplace
🧾

Facturation

⭐ Recommandé

Devis, factures, avoirs en PDF avec numérotation automatique et suivi des paiements.

E-commerceComplexe~15 joursv1.1.0

Module de facturation professionnel : création de devis et factures au format PDF, numérotation automatique, suivi des paiements, relances automatiques, tableau de bord financier et export comptable.

invoicingquotespdfpaymentsaccounting

Dépendances requises :

📋 Schéma Prisma

// === Module Facturation ===

enum DocumentType {
  QUOTE
  INVOICE
  CREDIT_NOTE
}

enum DocumentStatus {
  DRAFT
  SENT
  PAID
  OVERDUE
  CANCELLED
}

model InvoiceSequence {
  id       String  @id @default(cuid())
  type     DocumentType @unique
  prefix   String
  lastNum  Int     @default(0)
  year     Int

  @@map("invoice_sequences")
}

model InvoiceDocument {
  id          String         @id @default(cuid())
  type        DocumentType
  number      String         @unique
  status      DocumentStatus @default(DRAFT)
  contactId   String?
  clientName  String
  clientEmail String
  clientAddress String?
  issueDate   DateTime       @default(now())
  dueDate     DateTime?
  paidAt      DateTime?
  subtotal    Decimal
  taxRate     Decimal        @default(20)
  taxAmount   Decimal
  total       Decimal
  notes       String?
  pdfPath     String?
  createdAt   DateTime       @default(now())
  updatedAt   DateTime       @updatedAt
  items       InvoiceItem[]

  @@map("invoice_documents")
}

model InvoiceItem {
  id          String          @id @default(cuid())
  documentId  String
  document    InvoiceDocument @relation(fields: [documentId], references: [id], onDelete: Cascade)
  description String
  quantity    Decimal
  unitPrice   Decimal
  total       Decimal

  @@map("invoice_items")
}

🔌 Endpoints API

## API Facturation

POST /api/invoices              # Créer devis ou facture
GET  /api/invoices              # Liste (filtres: type, status, contact)
GET  /api/invoices/:id          # Détail
PUT  /api/invoices/:id          # Modifier (seulement si DRAFT)
POST /api/invoices/:id/send     # Envoyer par email + passer en SENT
POST /api/invoices/:id/mark-paid # Marquer comme payé
POST /api/invoices/:id/pdf      # Générer/régénérer le PDF
GET  /api/invoices/:id/pdf      # Télécharger le PDF
POST /api/invoices/:id/duplicate # Dupliquer
POST /api/invoices/:id/credit-note # Créer un avoir

GET  /api/invoices/stats        # Dashboard financier (CA, impayés, etc.)

🛠️ Guide d'implémentation

## Implémentation Facturation

### Dépendances
```bash
npm install @react-pdf/renderer date-fns
```

### Étape 1 — Numérotation
Implémenter src/lib/invoicing/sequence.ts avec transaction Prisma pour garantir l'unicité.

### Étape 2 — Calculs
Créer src/lib/invoicing/calculator.ts :
- Calcul HT, TVA, TTC
- Arrondi à 2 décimales (Decimal.js ou Prisma Decimal)

### Étape 3 — PDF
Créer src/lib/invoicing/pdf.tsx avec @react-pdf/renderer.
Stocker dans /storage/invoices/<year>/<number>.pdf

### Étape 4 — Envoi email
Intégration avec module Emails pour envoi automatique.

### Étape 5 — Relances
Tâche planifiée (cron) pour détecter les factures en retard et envoyer des rappels.

Prêt à installer ce module ?

Ajoutez-le à un projet existant depuis la page modules du projet.

Voir les projets →