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

  1. Open Variants and search/filter the existing variant list.
  2. Click Add to open the modal and enter a Variant Name.
  3. Add one or more Attributes (for example: Red, Blue, Black).
  4. Choose status (Active/Inactive) and save.
  5. Use edit to modify name/attributes; old attributes are replaced when saving updated values.
  6. Use single/bulk status update and single/bulk delete from the list screen.

Backend Files

  • app/Http/Controllers/Api/ProductVariantController.php
  • app/Services/Api/ProductVariantService.php
  • app/Http/Requests/Api/ProductVariant/*
  • frontend-source/src/pages/product-setup/variants/Variants.jsx

API Endpoints

MethodEndpointPurpose
GET/api/v1/product-variantsList variants with pagination/filter/search/sort
POST/api/v1/product-variant/storeCreate variant
ANY/api/v1/product-variant/update/{id}Update variant
PUT/api/v1/variants/statusUpdate one or multiple variant statuses
DELETE/api/v1/product-variant/delete/{id}Delete a variant
DELETE/api/v1/product-variant/multiple-deleteBulk delete variants

Validation Rules

Create

  • name: required, string, unique per company
  • status: required, 0 or 1
  • attributes: required array
  • attributes.*: required string

Update

  • name: optional but required if sent; unique per company except current variant
  • status: optional but required if sent; 0 or 1
  • attributes: optional array; when provided, old attribute rows are deleted and replaced

Status Update

  • ids: required array of existing product_variants IDs
  • status: required, 0 or 1

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 attributes and pagination meta.

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

IssueCauseFix
Cannot create variantDuplicate variant name in same companyUse a unique name
Save fails with attribute errorAttributes missing or blankAdd at least one non-empty attribute value
Bulk status update failsInvalid variant ID in idsSend only existing IDs
No variants shown after filterStatus/search filter too strictReset filters and search again

Screenshots

Variant Management
Variant management screen