๐Ÿ“š ERP Documentation Viewer

Beautiful, colorful documentation for your ERP system

Setting Operation Controller Documentation

File: /controllers/settingOperationController.php

Purpose: Manages manufacturing operation settings including workstations, assets, and worker configurations

Last Updated: December 20, 2024

Total Functions: 8 main functions + 6 utility functions

Lines of Code: ~400

---

๐Ÿ“‹ Overview

The Setting Operation Controller is a comprehensive manufacturing management module that handles the configuration of production operations. It manages:

Primary Functions

Related Controllers

---

๐Ÿ—„๏ธ Database Tables

Primary Tables (Direct Operations)

Table NamePurposeKey Columns
**settingoperation**Manufacturing operation configurationssettingOperationID, settingOperationName, workStationID, assetesID, workersNo, realTime, conditions, operationType
**workstation**Manufacturing workstationsworkStationID, workStationName
**workstationworker**Worker assignments to workstationsworkstationworkerid, workstationid, workerid
**assets**Manufacturing assets/equipmentassetsID, assetsName
### Reference Tables

Table NamePurposeKey Columns
**user**System usersuserid, username
**youtubelink**Tutorial videosyoutubelinkid, title, url
### Key Relationships

-- Operation settings
settingoperation.workStationID -> workstation.workStationID
settingoperation.assetesID -> assets.assetsID
settingoperation.userID -> user.userid

-- Worker assignments
workstationworker.workstationid -> workstation.workStationID

---

๐Ÿ”‘ Key Functions

1. Default Action (empty $do) - Add Form Display

Location: Lines 112-131

Purpose: Display form for creating new manufacturing operations

Process Flow:

1. Check user authentication

2. Load all workstations via getWorkStation()

3. Get worker count via getworkersNo()

4. Load all assets via getAsetesName()

5. Display add form with all reference data

Template Variables:

---

2. add ($do == "add") - Create Operation

Location: Lines 134-145 (function at 281-311)

Purpose: Create new manufacturing operation with all configurations

Function Signature:

function add()

Process Flow:

1. Extract form data from POST

2. Set operation defaults (conditions = 0, operationType = 1)

3. Set current user and date

4. Insert operation via DAO

5. Redirect to success page

Form Fields:

Database Operation:

$settingOperation->settingOperationName = $settingOperationName;
$settingOperation->workStationID = $workStationID;
$settingOperation->realTime = $realTime;
$settingOperation->assetesID = $assetesID;
$settingOperation->workersNo = $workersNo;
$settingOperation->operationType = 1;
$settingOperation->conditions = 0;
$settingOperation->userID = $_SESSION['userid'];
$settingOperation->operationDate = date('Y-m-d');

$settingOperationDAO->insert($settingOperation);

---

3. show ($do == "show") - Display Operations List

Location: Lines 148-162 (function at 315-323)

Purpose: Display all manufacturing operations with workstation details

Function Signature:

function showAllDatat()

Process Flow:

1. Load YouTube tutorial links

2. Query all operations with workstation join via queryAllWithWorkstation()

3. Display operations list with edit/delete options

Template Variables:

---

4. edit ($do == "edit") - Edit Form Display

Location: Lines 165-186 (function at 325-336)

Purpose: Display edit form for existing operation

Parameters:

Process Flow:

1. Load workstations and assets for dropdowns

2. Load operation data via load($id)

3. Display edit form with pre-filled data

Function Signature:

function edit()

---

5. update ($do == "update") - Update Operation

Location: Lines 189-200 (function at 338-369)

Purpose: Update existing manufacturing operation

Function Signature:

function update()

Process Flow:

1. Extract form data including operation ID

2. Load existing operation object

3. Update all fields except ID

4. Save updated operation

5. Redirect to success

Form Fields:

---

6. stop ($do == "stop") - Toggle Operation Status

Location: Lines 201-209 (function at 371-387)

Purpose: Start or stop operation (toggle active status)

Parameters:

Function Signature:

function stopOperation()

Process Flow:

1. Load operation by ID

2. Toggle conditions field (0 โ†” 1)

3. Update operation status

4. Redirect to success

Status Logic:

if ($settingOperation->conditions == 0) {
    $settingOperation->conditions = 1; // Stop operation
} elseif ($settingOperation->conditions == 1) {
    $settingOperation->conditions = 0; // Start operation
}

---

7. delete ($do == "delete") - Delete Operation

Location: Lines 212-225 (function at 389-398)

Purpose: Permanently delete manufacturing operation

Parameters:

Function Signature:

function delete()

Process Flow:

1. Check user authentication

2. Delete operation via DAO

3. Redirect to success page

---

๐Ÿ”„ Workflows

Workflow 1: Manufacturing Operation Creation

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
START: Create Manufacturing Operation
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
1Load Reference Data
โ†’ Load all workstations
โ†’ Get worker counts per workstation
โ”‚ โ””โ”€โ†’ Load all available assets โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
2Display Creation Form
โ†’ Show workstation dropdown
โ†’ Show asset selection
โ†’ Input fields for operation details
โ”‚ โ””โ”€โ†’ Worker count and time inputs โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
3Process Form Submission
โ†’ Validate required fields
โ†’ Set operation defaults
โ†’ Assign current user and date
โ”‚ โ””โ”€โ†’ Insert into settingoperation table โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
4Confirmation
โ”‚ โ””โ”€โ†’ Redirect to success page โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

---

Workflow 2: Operation Management

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
START: Manage Operations
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
1Display Operations List
โ†’ Query operations with workstation details
โ†’ Show operation name and configuration
โ†’ Display status (active/stopped)
โ”‚ โ””โ”€โ†’ Provide action buttons (edit/stop/delete) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
2Handle User Actions
โ”‚
โ†’ EDIT: Load operation data and show edit form
โ”‚
โ”œโ†’ STOP/START: Toggle operation conditions field
โ”‚
โ”‚ โ””โ”€โ†’ DELETE: Remove operation from system โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
3Update Database
โ†’ Apply changes via DAO layer
โ†’ Update audit fields (user, date)
โ”‚ โ””โ”€โ†’ Maintain data integrity โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

---

๐ŸŒ URL Routes & Actions

URL ParameterFunction CalledDescription
`do=` (empty)Default actionDisplay operation creation form
`do=add``add()`Create new manufacturing operation
`do=show``showAllDatat()`Display list of all operations
`do=edit``edit()`Display edit form for operation
`do=update``update()`Update existing operation
`do=stop``stopOperation()`Toggle operation start/stop status
`do=delete``delete()`Delete operation permanently
### Required Parameters by Action

Edit Operation (do=edit):

Update Operation (do=update):

Stop/Start Operation (do=stop):

Delete Operation (do=delete):

---

๐Ÿงฎ Calculation Methods

Worker Count Calculation

function getworkersNo() {
    global $workstationworkerEX;
    
    $allworkerhours = $workstationworkerEX->queryByWorkstationid($dropval);
    $workersNo = count($allworkerhours);
    return $workersNo;
}

Operation Status Toggle

// Toggle between active (0) and stopped (1)
if ($settingOperation->conditions == 0) {
    $settingOperation->conditions = 1; // Stop
} elseif ($settingOperation->conditions == 1) {
    $settingOperation->conditions = 0; // Start
}

Standard Time Tracking

// Store standard operation time for planning
$settingOperation->realTime = $realTime; // Duration in minutes/hours

---

๐Ÿ”’ Security & Permissions

Access Control

// Authentication required for all actions
include_once("../public/authentication.php");

User Tracking

// Track user who creates/modifies operations
$settingOperation->userID = $_SESSION['userid'];
$settingOperation->operationDate = date('Y-m-d');

Input Sanitization

---

๐Ÿ“Š Performance Considerations

Database Optimization

1. Indexes Recommended:

   CREATE INDEX idx_settingop_workstation ON settingoperation(workStationID);
   CREATE INDEX idx_settingop_asset ON settingoperation(assetesID);
   CREATE INDEX idx_settingop_conditions ON settingoperation(conditions);
   CREATE INDEX idx_workstationworker_station ON workstationworker(workstationid);
   ```

2. **Query Performance**:
   - Use of extended DAO for JOIN queries (`queryAllWithWorkstation()`)
   - Efficient foreign key relationships
   - Minimal data loading per operation

3. **Memory Management**:
   - Lightweight operations list
   - Reference data loaded once per form display
   - No complex calculations or large datasets

---

## ๐Ÿ› Common Issues & Troubleshooting

### 1. **Missing Reference Data**
**Issue**: Dropdowns show empty or incomplete data  
**Cause**: No workstations, assets, or workers configured

**Debug**:
sql

-- Check workstations

SELECT * FROM workstation;

-- Check assets

SELECT * FROM assets;

-- Check worker assignments

SELECT w.*, ws.workStationName

FROM workstationworker w

JOIN workstation ws ON w.workstationid = ws.workStationID;

### 2. **Operation Creation Fails**
**Issue**: Add operation returns error  
**Cause**: Missing required fields or invalid foreign key references

**Fix**:
php

// Validate required fields before insert

if (empty($settingOperationName) || empty($workStationID)) {

throw new Exception("Missing required fields");

}

// Verify foreign key exists

$workStation = $workStationDAO->load($workStationID);

if (!$workStation) {

throw new Exception("Invalid workstation ID");

}

### 3. **Worker Count Not Updating**
**Issue**: Worker number shows old value  
**Cause**: `getworkersNo()` function not called with correct workstation ID

**Debug**:
sql

-- Check worker assignments for workstation

SELECT COUNT(*) as worker_count

FROM workstationworker

WHERE workstationid = [WORKSTATION_ID];

### 4. **Operation Status Issues**
**Issue**: Start/stop operation not working  
**Cause**: Conditions field not properly toggled

**Fix**:
php

// Ensure proper status handling

$operation = $settingOperationDAO->load($id);

if ($operation) {

$operation->conditions = ($operation->conditions == 0) ? 1 : 0;

$settingOperationDAO->update($operation);

}

---

## ๐Ÿงช Testing Scenarios

### Test Case 1: Complete Operation Setup

1. Create test workstation

2. Create test assets

3. Assign workers to workstation

4. Create new manufacturing operation

5. Verify all relationships are correct

6. Test operation start/stop functionality

### Test Case 2: Operation Management

1. Create multiple operations

2. Edit operation details

3. Change workstation assignments

4. Update worker requirements

5. Test delete functionality

6. Verify data consistency

### Test Case 3: Reference Data Validation

1. Create operation with invalid workstation ID

2. Test with missing assets

3. Verify error handling

4. Check foreign key constraints

5. Test with empty worker assignments

```

---

๐Ÿ“š Related Documentation

---

Documented By: AI Assistant

Review Status: โœ… Complete

Next Review: When manufacturing requirements change

โ†‘