đ Trade Transports - Gestion des transports
Le module Transports permet aux utilisateurs de créer et gérer leurs opérations de transport avec gestion automatique des clients.
đŻ Objectifâ
Gérer les opérations de transport et les clients associés avec création automatique des profils clients et gestion des documents officiels.
âš FonctionnalitĂ©s principalesâ
- Création de transports : Enregistrement des opérations de transport
- Gestion des clients : Création automatique ou liaison avec existants
- Types de véhicules : Classification des moyens de transport
- Documents : Upload de papiers officiels (permis, assurance, etc.)
- Suivi : Informations détaillées sur chaque transport
đ Informations collectĂ©esâ
Transportâ
- Points de chargement et déchargement
- Numéro de plaque d'immatriculation
- Type de véhicule utilisé
- Numéro de chargement (généré automatiquement)
Produitâ
- Nature et description du produit
- Quantité transportée
- Poids moyen et valeur
- Prix unitaire moyen
Clientâ
- Informations de contact (email ou téléphone obligatoire)
- Nom et prénom
- Liaison automatique avec clients existants
Documentsâ
- Permis de conduire
- Carte grise du véhicule
- Assurance
- Autres documents officiels
đ Endpoints disponiblesâ
CrĂ©er un transportâ
POST /trade/transports
ParamĂštres :
{
"chargerFirstName": "Jean",
"chargerLastName": "Dupont",
"chargerPhone": "+237123456789",
"chargerEmail": "jean.dupont@example.com",
"vehicleTypeId": 1,
"loadingPoint": "Marché Central, Douala",
"unloadingPoint": "Gare RoutiÚre, Yaoundé",
"vehiclePlateNumber": "CM-456-DEF",
"productLabel": "Fruits et légumes",
"productQuantity": 500,
"averageWeight": 1.2,
"averageUnitPrice": 200,
"totalProductValue": 100000,
"customerId": null,
"newCustomer": {
"firstName": "Marie",
"lastName": "Kouam",
"email": "marie.kouam@example.com",
"phone": "+237987654321"
}
}
Réponse de succÚs :
{
"success": true,
"message": "Transport créé avec succÚs",
"result": {
"id": 123,
"publicId": "transport-abc-123",
"loadingNumber": "TRP-2025-001234",
"chargerFirstName": "Jean",
"chargerLastName": "Dupont",
"chargerPhone": "+237123456789",
"chargerEmail": "jean.dupont@example.com",
"loadingPoint": "Marché Central, Douala",
"unloadingPoint": "Gare RoutiÚre, Yaoundé",
"vehiclePlateNumber": "CM-456-DEF",
"productLabel": "Fruits et légumes",
"productQuantity": 500,
"averageWeight": 1.2,
"averageUnitPrice": 200,
"totalProductValue": 100000,
"status": "PENDING",
"vehicleType": {
"id": 1,
"name": "Camion 10 tonnes",
"description": "Véhicule de transport lourd"
},
"customer": {
"id": 456,
"firstName": "Marie",
"lastName": "Kouam",
"email": "marie.kouam@example.com",
"phone": "+237987654321"
},
"createdAt": "2025-07-21T10:30:00Z"
}
}
Lister les transportsâ
GET /trade/transports?page=1&limit=10&status=PENDING&vehicleTypeId=1
ParamĂštres de requĂȘte :
page: NumĂ©ro de page (dĂ©faut: 1)limit: ĂlĂ©ments par page (dĂ©faut: 10, max: 100)status: Filtrer par statutvehicleTypeId: Filtrer par type de vĂ©hiculeloadingPoint: Filtrer par point de chargementunloadingPoint: Filtrer par point de dĂ©chargementcustomerId: Filtrer par clientstartDate: Date de dĂ©but (format ISO)endDate: Date de fin (format ISO)search: Recherche textuelle (numĂ©ro, produit, points)
Réponse :
{
"success": true,
"message": "Liste des transports",
"result": {
"meta": {
"total": 89,
"total_pages": 9,
"current_page": 1,
"limit": 10
},
"data": [
{
"id": 123,
"publicId": "transport-abc-123",
"loadingNumber": "TRP-2025-001234",
"chargerFirstName": "Jean",
"chargerLastName": "Dupont",
"loadingPoint": "Marché Central, Douala",
"unloadingPoint": "Gare RoutiÚre, Yaoundé",
"vehiclePlateNumber": "CM-456-DEF",
"productLabel": "Fruits et légumes",
"productQuantity": 500,
"totalProductValue": 100000,
"status": "PENDING",
"vehicleType": {
"id": 1,
"name": "Camion 10 tonnes"
},
"customer": {
"id": 456,
"firstName": "Marie",
"lastName": "Kouam"
},
"createdAt": "2025-07-21T10:30:00Z"
}
]
}
}
DĂ©tail d'un transportâ
GET /trade/transports/{id}
Réponse :
{
"success": true,
"message": "Détail du transport",
"result": {
"id": 123,
"publicId": "transport-abc-123",
"loadingNumber": "TRP-2025-001234",
"chargerFirstName": "Jean",
"chargerLastName": "Dupont",
"chargerPhone": "+237123456789",
"chargerEmail": "jean.dupont@example.com",
"loadingPoint": "Marché Central, Douala",
"unloadingPoint": "Gare RoutiÚre, Yaoundé",
"vehiclePlateNumber": "CM-456-DEF",
"productLabel": "Fruits et légumes",
"productQuantity": 500,
"averageWeight": 1.2,
"averageUnitPrice": 200,
"totalProductValue": 100000,
"status": "IN_PROGRESS",
"vehicleType": {
"id": 1,
"name": "Camion 10 tonnes",
"description": "Véhicule de transport lourd",
"maxWeight": 10000,
"category": "HEAVY"
},
"customer": {
"id": 456,
"firstName": "Marie",
"lastName": "Kouam",
"email": "marie.kouam@example.com",
"phone": "+237987654321",
"address": "Quartier Bonanjo, Douala",
"createdAt": "2025-07-21T10:30:00Z"
},
"documents": [
{
"id": 1,
"type": "DRIVING_LICENSE",
"filename": "permis_jean_dupont.pdf",
"url": "/uploads/transport-123/permis_jean_dupont.pdf",
"uploadedAt": "2025-07-21T10:35:00Z"
},
{
"id": 2,
"type": "VEHICLE_REGISTRATION",
"filename": "carte_grise.pdf",
"url": "/uploads/transport-123/carte_grise.pdf",
"uploadedAt": "2025-07-21T10:36:00Z"
}
],
"complaints": [
{
"id": 789,
"label": "Retard de livraison",
"status": "RESOLVED",
"createdAt": "2025-07-21T14:00:00Z"
}
],
"createdAt": "2025-07-21T10:30:00Z",
"updatedAt": "2025-07-21T12:15:00Z"
}
}
Types de vĂ©hiculesâ
GET /trade/transports/vehicle-types
Réponse :
{
"success": true,
"message": "Types de véhicules disponibles",
"result": [
{
"id": 1,
"name": "Camion 10 tonnes",
"description": "Véhicule de transport lourd",
"maxWeight": 10000,
"category": "HEAVY",
"isActive": true
},
{
"id": 2,
"name": "Camionnette",
"description": "Véhicule de transport léger",
"maxWeight": 3500,
"category": "LIGHT",
"isActive": true
},
{
"id": 3,
"name": "Moto",
"description": "Transport rapide en ville",
"maxWeight": 50,
"category": "MOTORCYCLE",
"isActive": true
}
]
}
Upload de documentsâ
POST /trade/transports/upload
ParamĂštres :
files: Fichiers Ă uploader (multipart/form-data)transportId: ID du transportdocumentType: Type de document
Types de documents :
DRIVING_LICENSE: Permis de conduireVEHICLE_REGISTRATION: Carte griseINSURANCE: AssuranceOTHER: Autre document
Contraintes :
- Taille maximale : 10MB par fichier
- Types autorisés : PDF, JPEG, PNG
- Maximum 5 fichiers par upload
Réponse :
{
"success": true,
"message": "Documents uploadés avec succÚs",
"result": {
"uploaded": [
{
"filename": "permis_conduire.pdf",
"type": "DRIVING_LICENSE",
"size": 1024576,
"url": "/uploads/transport-123/permis_conduire.pdf"
}
],
"errors": []
}
}
đ Statuts des transportsâ
| Statut | Description | Actions possibles |
|---|---|---|
PENDING | En attente de validation | Valider, Rejeter |
VALIDATED | ValidĂ© et prĂȘt | DĂ©marrer |
IN_PROGRESS | En cours de transport | Terminer, Signaler problĂšme |
COMPLETED | Transport terminé | Archiver |
CANCELLED | Annulé | Réactiver |
ON_HOLD | En attente | Reprendre, Annuler |
đ RĂšgles de validationâ
Transportâ
- vehicleTypeId : Obligatoire, doit exister
- loadingPoint : Obligatoire, minimum 3 caractĂšres
- chargerFirstName : Obligatoire
- chargerLastName : Obligatoire
Clientâ
- Email OU téléphone obligatoire
- Si
customerIdfourni, le client doit exister - Si
newCustomerfourni, création automatique
Documentsâ
- Taille : Maximum 10MB par fichier
- Types : PDF, JPEG, PNG uniquement
- Nombre : Maximum 5 fichiers par upload
â Gestion des erreursâ
Type de vĂ©hicule non trouvĂ©â
{
"success": false,
"message": "Type de véhicule non trouvé",
"errors": {
"code": "VEHICLE_TYPE_NOT_FOUND",
"vehicleTypeId": 999
}
}
Client non trouvĂ©â
{
"success": false,
"message": "Client non trouvé",
"errors": {
"code": "CUSTOMER_NOT_FOUND",
"customerId": 999
}
}
DonnĂ©es client manquantesâ
{
"success": false,
"message": "Informations client insuffisantes",
"errors": {
"code": "MISSING_CUSTOMER_INFO",
"message": "Email ou téléphone requis pour le nouveau client"
}
}
NumĂ©ro de chargement en doubleâ
{
"success": false,
"message": "Numéro de chargement déjà utilisé",
"errors": {
"code": "LOADING_NUMBER_EXISTS",
"loadingNumber": "TRP-2025-001234"
}
}
Prochaine section : Forum Trade