littleshop/IMPORT_INSTRUCTIONS.md
sysadmin 6c8106ff90 Add: CSV import with Replace All feature and auto-create categories
- Added Replace All checkbox to import UI for clean slate imports
- Implemented DeleteAllProductsAndCategoriesAsync for complete data wipe
- Added auto-creation of categories during CSV import
- Created products_import.csv with 13 products across 4 categories
- Added comprehensive IMPORT_INSTRUCTIONS.md documentation

Technical changes:
- ProductImportService: Added replaceAll parameter to all import methods
- ProductImportService: Categories now auto-created if missing from CSV
- ProductsController: Added replaceAll parameter to Import action
- Import.cshtml: Added Replace All checkbox with danger warnings

Categories: Flour, Cereal, Vitamins, Herbal
Products: 13 products with full variant pricing structures

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 14:22:13 +01:00

213 lines
7.5 KiB
Markdown

# LittleShop Product Import - Complete Guide
## Summary of Changes
### 1. **CSV File Created** ✅
- **Location**: `/mnt/c/Production/Source/LittleShop/products_import.csv`
- **Products**: 13 products with full variant pricing
- **Categories**: 4 categories (Flour, Cereal, Vitamins, Herbal) - will be auto-created during import
- **Format**: Proper CSV format with all required columns
### 2. **Replace All Functionality Added** ✅
- **Feature**: New "Replace All" checkbox in the import UI
- **Location**: Admin Panel → Products → Import
- **Functionality**: When checked, deletes ALL existing products, variants, and categories before import
- **Warning**: Displays prominent warning message about data deletion
### 3. **Auto-Create Categories** ✅
- **Feature**: Categories are automatically created during import if they don't exist
- **Benefit**: No need to manually create categories before importing
- **Logging**: Auto-creation is logged for audit purposes
### 4. **Unit Type Clarification** ✅
- **Note**: The existing `Unit` enum value (0) serves as "Single" for individual items
- **Usage**: Used for tablets/capsules where quantity is measured in units rather than weight
- **No Changes Made**: Enum remains unchanged as `Unit` is already suitable
## Product Data Breakdown
### Categories (4 total)
1. **Flour** - 3 products
2. **Cereal** - 3 products
3. **Vitamins** - 4 products
4. **Herbal** - 2 products
### Products with Variants
#### Flour Category
1. **Four whittteee**
- Variants: 28g (£700), 14g (£360), 7g (£190), 3.5g (£100)
2. **double washed Flour**
- Description: "Will come as a organic"
- Variants: 28g (£900), 14g (£460), 7g (£240), 3.5g (£130), 1g (£50)
3. **Chocolate infused double washed Flour**
- Variants: 28g (£920), 14g (£470), 7g (£250), 3.5g (£140), 1g (£50)
#### Cereal Category
4. **Cereal**
- Variants: 100g (£200 special), 28g (£80), 14g (£50), 7g (£30)
5. **Himalayan Cereal Blush**
- Description: "Rare pink super clean"
- Variants: 28g (£180), 14g (£100), 7g (£60), 3.5g (£40)
6. **Cereal Rock**
- Variants: 28g (£160), 14g (£90), 7g (£50)
#### Vitamins Category
7. **tablets - Vitamin-C**
- Description: "Dutch import"
- Unit: Unit (individual tablets)
- Variants: 100 (£150), 50 (£80), 25 (£50), 10 (£30)
8. **tablets Vitamin-B**
- Description: "25mg RAW organic capsules VEGAN"
- Unit: Unit
- Variants: 50 (£150), 25 (£80), 10 (£40)
9. **Vitamin-B tablets**
- Description: "Dutch import"
- Unit: Unit
- Variants: 100 (£160), 50 (£90), 25 (£50), 10 (£30)
10. **Vitamin-B raw organic**
- Description: "Very very VEGAN 0.025g max per hit take orally"
- Unit: Grams
- Variants: 28g (£1600), 14g (£860), 7g (£450), 3.5g (£250), 1.75g (£140), 1g (£100), 0.5g (£60)
11. **Vitamin-B pyramid gel tabs**
- Unit: Unit
- Variants: 10 (£50), 25 (£80), 50 (£130), 100 (£250)
#### Herbal Category
12. **N N Guarana**
- Unit: Grams
- Variants: 28g (£1000), 14g (£550), 7g (£290), 3.5g (£150)
13. **aco Guarana tablets 18mg**
- Description: "VEGAN"
- Unit: Unit
- Variants: 10 (£60), 25 (£90), 50 (£160), 100 (£300)
## Import Instructions
### Option 1: Replace All Products (Clean Slate)
1. Navigate to **Admin Panel → Products → Import**
2. **Check the "Replace All" checkbox** ⚠️ WARNING: This deletes all existing data!
3. Click "Choose File" and select `products_import.csv`
4. Click "Import Products"
5. Review the import results
### Option 2: Add to Existing Products
1. Navigate to **Admin Panel → Products → Import**
2. **Leave "Replace All" unchecked**
3. Click "Choose File" and select `products_import.csv`
4. Click "Import Products"
5. Products will be added alongside existing products
## Technical Implementation Details
### Code Changes
#### 1. ProductImportService.cs
- **Interface Updated**: Added `replaceAll` parameter to import methods
- **New Method**: `DeleteAllProductsAndCategoriesAsync()` - Removes all product data
- **Auto-Create Categories**: Categories from CSV are created automatically if missing
- **Enhanced Logging**: Warning logs when replace all is triggered
#### 2. ProductsController.cs (Admin Area)
- **Import Action Updated**: Now accepts `bool replaceAll` parameter
- **Passes Parameter**: Forwards `replaceAll` to import service
#### 3. Import.cshtml View
- **New Checkbox**: "Replace All" option with danger styling
- **Warning Message**: Prominent warning about data deletion
- **User Experience**: Clear indication of destructive action
### Database Operations (Replace All)
The delete operation executes in this order:
1. ProductPhotos
2. ProductVariations (variants/multi-buys)
3. ProductMultiBuys
4. Products
5. Categories
## CSV Format Reference
```csv
Name,Description,Price,Weight,WeightUnit,StockQuantity,CategoryName,IsActive,Variations,PhotoUrls
Product Name,Description text,29.99,100,Grams,50,Category Name,true,Name:Qty:Price;Name:Qty:Price,
```
### Variations Format
```
VariantName:Quantity:Price;VariantName:Quantity:Price
Example: 28g:1:700;14g:1:360;7g:1:190
```
### Weight Units
- `Grams` - For weight-based products
- `Unit` - For individual items (tablets, capsules)
- `Kilograms`, `Pounds`, `Ounces` - Also supported
## Safety Features
1. **Explicit Opt-In**: Replace All requires checkbox to be checked
2. **Visual Warnings**: Red danger styling on checkbox and warning message
3. **Audit Logging**: All deletions and auto-creations are logged
4. **Transaction Safety**: Database operations use EF Core transactions
5. **Error Reporting**: Detailed error messages for failed imports
## Testing Recommendations
### Before Production Use
1. **Backup Database**: Always backup before using "Replace All"
2. **Test Import**: Try importing without "Replace All" first
3. **Verify Results**: Check all products, variants, and categories created correctly
4. **Review Logs**: Check application logs for any warnings or errors
### Post-Import Verification
1. Navigate to **Products** page - verify product count
2. Check **Categories** page - verify all 4 categories exist
3. Open individual products - verify variants are created
4. Test ordering workflow through TeleBot (if applicable)
## Support & Troubleshooting
### Common Issues
**Issue**: Import fails with "Missing required column" error
**Solution**: Ensure CSV has all required headers matching the template
**Issue**: Categories not created
**Solution**: Categories are auto-created - check application logs for confirmation
**Issue**: Variants not showing
**Solution**: Verify variation format matches `Name:Qty:Price;Name:Qty:Price`
**Issue**: Price showing as 0
**Solution**: Check CSV uses decimal format (e.g., `10.00` not `£10`)
## File Locations
- **CSV Import File**: `/mnt/c/Production/Source/LittleShop/products_import.csv`
- **Import Service**: `LittleShop/Services/ProductImportService.cs`
- **Controller**: `LittleShop/Areas/Admin/Controllers/ProductsController.cs`
- **View**: `LittleShop/Areas/Admin/Views/Products/Import.cshtml`
## Next Steps
1. **Review CSV Data**: Verify product names, prices, and variants are correct
2. **Backup Current Data**: If you have existing products, export them first
3. **Import Products**: Use the Admin Panel to import the CSV
4. **Test Integration**: Verify TeleBot can access and display products
5. **Monitor Performance**: Check application logs for any issues
---
**Generated**: 2025-10-08
**LittleShop Version**: Production Baseline (Sept 2024+)
**Import Format**: CSV with auto-created categories and variants