Overview
The Solicitud Transporte system manages two parallel workflows: Transport Requests (Solicitud) and Missions (Mision). Each has its own state machine with specific transition rules and business logic.All state transitions are tracked in historical tables for audit purposes and can be retrieved via dedicated endpoints.
Request Lifecycle
A transport request flows through several states from creation to completion.State Diagram
Request States
TheEstadoSolicitud table defines all possible states with specific attributes (DevSolicitudTransporte:35):
PENDIENTE_APROBACION (Pending Approval)
PENDIENTE_APROBACION (Pending Approval)
Description: Initial state when a request is createdCharacteristics:
EsEstadoFinal:falseOrden: 1- Default color: Orange/Yellow
- Update request details (solicitud_service.py:609)
- Approve request (solicitud_service.py:703)
- Reject request (solicitud_service.py:752)
- Cancel request (solicitud_service.py:805)
- Delete request (solicitud_service.py:932)
- Only the requester can update or cancel
- Only the approver can approve or reject
- Requester and approver must be different people (solicitud_service.py:314)
APROBADA (Approved)
APROBADA (Approved)
Description: Request has been approved and awaits mission assignmentCharacteristics:
EsEstadoFinal:falseOrden: 2- Default color: Green
- Create missions for this request
- Cancel request (solicitud_service.py:805)
- →
EN_PROCESOwhen first mission is assigned - →
CANCELADAvia cancel operation
- Email sent to requester confirming approval
RECHAZADA (Rejected)
RECHAZADA (Rejected)
Description: Request was rejected by approverCharacteristics:
EsEstadoFinal:trueOrden: 3- Default color: Red
- Rejection reason is mandatory (solicitud_service.py:761)
- No further operations allowed
- Historical record preserved (solicitud_service.py:108)
- Email sent to requester with rejection reason
EN_PROCESO (In Progress)
EN_PROCESO (In Progress)
Description: One or more missions are activeCharacteristics:
EsEstadoFinal:falseOrden: 4- Default color: Blue
- View mission status
- Cancel request (only if no missions are currently executing)
- →
COMPLETADAwhen all missions reach final state
COMPLETADA (Completed)
COMPLETADA (Completed)
Description: All missions completed successfullyCharacteristics:
EsEstadoFinal:trueOrden: 5- Default color: Dark Green
- No modifications allowed
- All associated missions must be in final state
- Historical data retained indefinitely
CANCELADA (Cancelled)
CANCELADA (Cancelled)
Description: Request was cancelledCharacteristics:
EsEstadoFinal:trueOrden: 6- Default color: Gray
- Cancellation reason is mandatory (solicitud_service.py:816)
- Cannot cancel if missions are currently executing (solicitud_service.py:833)
- Non-executing missions are soft-deleted (solicitud_service.py:853)
- Email sent to both requester and approver
State Transition Rules
State History Tracking
Every state change is recorded inHistoricoEstadoSolicitud (DevSolicitudTransporte:408):
Historical records are retrieved in chronological order via
obtener_historico() endpoint (solicitud_service.py:896)Mission Lifecycle
Missions represent the actual execution of approved transportation requests.Mission State Diagram
Mission States
TheEstadoMision table defines mission states (DevSolicitudTransporte:18):
- PROGRAMADA
- EN_EJECUCION
- COMPLETADA
- CANCELADA
- INCIDENTE
Scheduled MissionDescription: Mission has been created and assigned to a driver and vehicleKey Fields Set:
IdVehiculoAsignado- Assigned vehicleIdMotoristaAsignado- Assigned driverFechaProgramada- Scheduled dateHoraSalidaProgramada- Scheduled departure timeIdLugarOrigen/IdLugarDestino- Route information
- →
EN_EJECUCIONwhen driver starts trip - →
CANCELADAif mission is cancelled
Mission Data Collection
Missions collect extensive operational data (Mision table, DevSolicitudTransporte:523):Distance Tracking
- Initial odometer reading
- Final odometer reading
- Calculated distance traveled
Fuel Management
- Initial fuel level (gallons)
- Final fuel level (gallons)
- Total consumption calculation
Time Tracking
- Scheduled vs. actual departure
- Estimated vs. actual arrival
- Total trip duration
Route Information
- Origin location details
- Destination location details
- GPS coordinates tracked
Workflow Integration
Request-Mission Relationship
A single transport request can have multiple missions: Business Rules:Automatic State Updates
Request automatically transitions to
EN_PROCESO when first mission is assignedLocation Management
Requests can define multiple locations viaDetalleLugarSolicitud table:
- Origin Rules
- Destination Rules
- Validation
- Exactly ONE location must be marked as origin (
EsOrigen = true) - Origin cannot require return trip
- If no origin specified, default location (Id=1) is used
State Queries
Retrieve current and historical state information:Notifications
State transitions trigger email notifications:Request Created
Request Created
Recipients: Requester, ApproverContent:
- Request code and details
- Link to approval interface (for approver)
- Confirmation of submission (for requester)
Request Approved
Request Approved
Recipients: RequesterContent:
- Approval confirmation
- Optional approval notes
- Next steps information
Request Rejected
Request Rejected
Recipients: RequesterContent:
- Rejection notification
- Rejection reason (mandatory)
- Instructions for resubmission
Request Cancelled
Request Cancelled
Recipients: Requester, ApproverContent:
- Cancellation confirmation
- Cancellation reason
- Status of associated missions
Best Practices
Always Check State
Verify current state before allowing operations to prevent invalid transitions
Require Reasons
Always require and store reasons for rejections and cancellations
Track Everything
Maintain complete historical record of all state changes with timestamps
Validate Missions
Check mission states before allowing request state changes
Next Steps
Error Handling
Learn how errors are handled during state transitions
API Reference
Explore endpoints for state management operations