Product Setup Module
Variant Management
Variant Management lets you define reusable variant groups (for example: Color, Size, Storage) with multiple attribute values that are later used in product combinations.
How It Works
- Open Variants and search/filter the existing variant list.
- Click Add to open the modal and enter a Variant Name.
- Add one or more Attributes (for example: Red, Blue, Black).
- Choose status (Active/Inactive) and save.
- Use edit to modify name/attributes; old attributes are replaced when saving updated values.
- Use single/bulk status update and single/bulk delete from the list screen.
Backend Files
app/Http/Controllers/Api/ProductVariantController.phpapp/Services/Api/ProductVariantService.phpapp/Http/Requests/Api/ProductVariant/*frontend-source/src/pages/product-setup/variants/Variants.jsx
API Endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/v1/product-variants | List variants with pagination/filter/search/sort |
| POST | /api/v1/product-variant/store | Create variant |
| ANY | /api/v1/product-variant/update/{id} | Update variant |
| PUT | /api/v1/variants/status | Update one or multiple variant statuses |
| DELETE | /api/v1/product-variant/delete/{id} | Delete a variant |
| DELETE | /api/v1/product-variant/multiple-delete | Bulk delete variants |
Validation Rules
Create
name: required, string, unique per companystatus: required,0or1attributes: required arrayattributes.*: required string
Update
name: optional but required if sent; unique per company except current variantstatus: optional but required if sent;0or1attributes: optional array; when provided, old attribute rows are deleted and replaced
Status Update
ids: required array of existingproduct_variantsIDsstatus: required,0or1
List and Filter Behavior
- Supports
page,per_page,search,status,sortField,sortOrder. - Allowed sort fields:
name,status,created_at,updated_at. - List response returns variant rows with nested
attributesand paginationmeta.
UI Features
- Inline search + advanced status filter dropdown
- Permission-based actions:
variant.create,variant.edit,variant.delete - Status toggle with confirmation dialog
- Bulk actions (set active/inactive, delete)
- Export CSV and copy list to clipboard
Data Model Notes
- Main table:
product_variants(name, status, company scope) - Child table:
variant_attributes(attribute_value per variant) - One variant can have many attributes.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Cannot create variant | Duplicate variant name in same company | Use a unique name |
| Save fails with attribute error | Attributes missing or blank | Add at least one non-empty attribute value |
| Bulk status update fails | Invalid variant ID in ids | Send only existing IDs |
| No variants shown after filter | Status/search filter too strict | Reset filters and search again |
Screenshots
Variant management screen