Instructions to Complete Product Name Integration
Current Status
✅ Database already has name column in products table
✅ ProductModel updated (create and update methods now handle name and product_type)
✅ Excel template already includes "Product Name" field

Remaining Tasks
1. Update ProductController
File: Z:/hnsims/v2/app/Controllers/ProductController.php

In the add() method, update the data array to include name:

// Find where product data is prepared (around line 50-80)
$productData = [
    'part_number' => $_POST['part_number'],
    'name' => $_POST['name'], // ADD THIS
    'product_type' => $_POST['product_type'], // ADD THIS
    'type_id' => $typeId,
    'category_id' => $categoryId,
    'description' => $_POST['description'] ?? '',
    'low_stock_threshold' => $_POST['low_stock_threshold'] ?? 5,
    'qr_code' => $qrCodePath ?? null,
    'available_sizes' => $availableSizes
];

Copy

Insert

In the edit() method, do the same for update data.

In validation, add name as required field.

2. Update Product Add/Edit Form
File: Z:/hnsims/v2/app/views/products/add.php

Add name input field after part_number (around line 50-60):

<!-- Product Name Field -->
<div class="group">
    <label for="name" class="block text-sm font-semibold text-gray-700 mb-2">
        <i class="fas fa-tag text-blue-500 mr-1"></i>
        Product Name <span class="text-red-400">*</span>
    </label>
    <input type="text"
           id="name"
           name="name"
           required
           class="block w-full px-4 py-3 rounded-lg border-2 border-gray-200 shadow-sm focus:border-blue-500 focus:ring-4 focus:ring-blue-100 transition-all duration-200 text-sm font-medium hover:border-blue-300"
           placeholder="Enter product name">
</div>

Copy

Insert

Update JavaScript to handle name field in product selection and form population (search for where part_number is set and add name handling).

3. Update Product Display Pages
File: Z:/hnsims/v2/app/views/products/index.php

Update table headers (around line 150):

<th>Part Number</th>
<th>Product Name</th> <!-- ADD THIS -->
<th>Type</th>
<th>Category</th>

Copy

Insert

Update table rows (around line 180):

<td><?php echo htmlspecialchars($product['part_number']); ?></td>
<td><?php echo htmlspecialchars($product['name'] ?? 'N/A'); ?></td> <!-- ADD THIS -->
<td><?php echo htmlspecialchars($product['type_name'] ?? 'N/A'); ?></td>

Copy

Insert

File: Z:/hnsims/v2/app/views/products/detail.php

Add name display in product details section (around line 50-80).

4. Update Stock Views
Files to update:

Z:/hnsims/v2/app/views/stock/add.php
Z:/hnsims/v2/app/views/stock/out.php
Z:/hnsims/v2/app/views/stock/in-stock.php
In product dropdown/display, show name along with part_number:

// In JavaScript where products are displayed
displayName = `${product.part_number} - ${product.name}`;

Copy

Insert

5. Update Reports
File: Z:/hnsims/v2/app/Models/TransactionModel.php

Update SELECT queries to include p.name:

SELECT p.part_number, p.name, p.product_type, ...

Copy

Insert

File: Z:/hnsims/v2/app/views/reports/index.php

Add name column to transaction reports table.

6. Update Bulk Upload Handler
File: Z:/hnsims/v2/app/Controllers/ProductController.php

In bulkAdd() method, update CSV/Excel parsing to handle name column:

// Map Excel columns
$productData = [
    'part_number' => $row[0],
    'name' => $row[1], // Product Name column
    'category_name' => $row[2], // Category
    'product_type' => $row[3], // Product Type (from type dropdown)
    'description' => $row[4],
    'low_stock_threshold' => $row[5],
    'available_sizes' => $row[6]
];

Copy

Insert

Note: You'll need to handle Excel file reading with PhpSpreadsheet. The template controller already generates proper Excel files.

7. Update Stock Out Form (v2)
Task from original request: Adjust selector flow on stock out page: File: Z:/hnsims/v2/app/views/stock/out.php

Desired flow: Product → Location → (if selected) Department → Employee → Size → Quantity

Currently it's "zig-zagging". Update the form field order and JavaScript to follow this linear flow.

Testing Checklist
Add new product with name field
Edit existing product and add name
View product list shows name
Product detail page shows name
Stock add/out shows product name
Reports include product name
Bulk upload with Excel template works
Stock out form follows correct flow
Quick Reference: Database Structure
products table:
- part_number (SKU)
- name (Product Name) ← NEW FIELD
- product_type (Subcategory/Type name)
- type_id → types table
- category_id → categories table
- description
- low_stock_threshold
- available_sizes