Overview
The Suppliers API manages supplier (proveedor) records for purchase order management.Proveedor Model (Supplier)
Unique supplier identifier (auto-generated)
Foreign key to User (admin who created the supplier)
Supplier contact name (max 100 characters, required)
Company name (max 150 characters, required)
Phone number (max 20 characters, required)
Email address (required)
Physical address (max 200 characters, required)
Registration timestamp (auto-generated)
List Suppliers
Requires authentication. Returns suppliers owned by the authenticated user (admin) or their creator (vendedor).
Response
Returns rendered HTML template with list of suppliers sorted by name.Create Supplier
Request Parameters
Supplier contact name (max 100 characters)
Company name (max 150 characters)
Phone number (max 20 characters)
Valid email address
Physical address (max 200 characters)
Response
Success (HTTP 302):- Redirects to
/proveedores/ - Flash message: “Proveedor agregado correctamente.”
- Re-renders form with error messages
- Flash message: “Revisa los campos marcados en el formulario.”
- Redirects to error page (vendedor users cannot create suppliers)
Validation Rules
- All fields are required
correomust be valid email formattelefonomax 20 charactersdireccionmax 200 characters
Update Supplier
URL Parameters
Supplier ID to update
Request Parameters
Same as Create Supplier - all fields are editable.Response
Success (HTTP 302):- Redirects to
/proveedores/ - Flash message: “Proveedor actualizado correctamente.”
- Supplier doesn’t exist or doesn’t belong to authenticated user
- Re-renders form with error messages
Delete Supplier
URL Parameters
Supplier ID to delete
Response
Success (HTTP 302):- Supplier deleted
- Associated purchases have
proveedorfield set to NULL - Redirects to
/proveedores/ - Flash message: “Proveedor eliminado correctamente.”
- Supplier doesn’t exist or doesn’t belong to user
GET Request
Accessing the delete URL via GET shows confirmation page:Business Logic
Relationship with Purchases
Suppliers are linked to purchases viaSET_NULL foreign key:
- Purchase records are preserved
proveedorfield set toNULL- Purchase history remains intact
Multi-Tenancy
Suppliers are isolated per user:- Admin users see only their own suppliers
- Vendedor users see suppliers owned by their
creado_poradmin - Enforced at database level:
usuarioforeign key - Enforced in views:
Proveedor.objects.filter(usuario=request.user)
Ordering
Suppliers are always returned sorted alphabetically by name:Example Workflow
Complete Supplier Management
Supplier Data Export Example
Related Endpoints
- Purchases API - Create purchase orders with suppliers
- See source:
applications/proveedores/models.pyandapplications/proveedores/views.py- Model definition:
/home/daytona/workspace/source/applications/proveedores/models.py - View logic:
/home/daytona/workspace/source/applications/proveedores/views.py - URL routing:
/home/daytona/workspace/source/applications/proveedores/urls.py
- Model definition:
Field Constraints Summary
| Field | Type | Max Length | Required | Unique |
|---|---|---|---|---|
| nombre | string | 100 | Yes | No |
| empresa | string | 150 | Yes | No |
| telefono | string | 20 | Yes | No |
| correo | 254 | Yes | No | |
| direccion | string | 200 | Yes | No |
| usuario | foreign key | - | Yes | No |
Permission Matrix
| Action | Admin | Vendedor |
|---|---|---|
| List suppliers | Yes (own) | Yes (admin’s) |
| Create supplier | Yes | No |
| Update supplier | Yes (own) | No |
| Delete supplier | Yes (own) | No |
| View in purchases | Yes | Read-only |