ProductionOrder Documentation
Production Order Controller Documentation
File: /controllers/productionOrderController.php
Purpose: Manages production orders, work orders, manufacturing schedules, and production planning
Last Updated: December 19, 2024
Total Functions: 23
Lines of Code: ~1,517
---
๐ Overview
The Production Order Controller is responsible for managing production orders and work orders in the ERP system. It handles:
- โข Creating and managing production orders (work orders)
- โข Production planning and scheduling
- โข Stage-based manufacturing workflows
- โข Raw material requirement planning (MRP)
- โข Production order lifecycle management
- โข Production cost estimation and tracking
- โข Damage/waste tracking during production
- โข YouTube training video integration
- โข Production order reports and analytics
Primary Functions
- โ Create new production orders
- โ Edit and update production orders
- โ Delete production orders with inventory reversal
- โ View production order details and costs
- โ Generate production reports by date range
- โ Manage production stages and workflows
- โ Track raw material consumption requirements
- โ Handle damaged products during production
- โ Calculate production costs and profitability
- โ Integrate with inventory management
Related Controllers
- โข productionExecutionController.php - Manufacturing execution
- โข taskOrderController.php - Task order management
- โข productController.php - Product and BOM management
- โข storeController.php - Warehouse management
- โข stageController.php - Manufacturing stages
- โข workstationController.php - Workstation management
- โข employeeController.php - Worker assignment
- โข assetController.php - Machine/equipment tracking
- โข damagedProductController.php - Damage tracking
---
๐๏ธ Database Tables
Primary Tables (Direct Operations)
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `productionorder` | Main production orders | `productionOrderid`, `name`, `orderDate`, `startDate`, `endDate`, `outQuantity`, `orderStatus` | |
| `productionrate` | Production formulas/BOM | `productionRateId`, `ratename`, `finalproductid` | |
| `productionrateproduct` | BOM line items | `id`, `productionRateId`, `productid`, `quantity`, `productBuyPrice` | |
| `damagedproduct` | Production waste/damage | `damagedProductId`, `productionOrderId`, `productId`, `productQuantity` |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `stage` | Manufacturing stages | `stageid`, `stagename` | |
| `stagestep` | Stage operations | `id`, `stageId`, `operationId` | |
| `workstation` | Production workstations | `workstationid`, `workstationname` | |
| `workstationworker` | Worker assignments | `id`, `workstationid`, `employeeid`, `Hourlyrate` | |
| `workstationassets` | Machine assignments | `id`, `workstationid`, `assetsId`, `Hourlyrate` | |
| `settingoperation` | Operation time settings | `id`, `operationid`, `workStationID`, `realTime` |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `storedetail` | Current inventory | `storedetailid`, `storeid`, `productid`, `productquantity` | |
| `storereport` | Inventory movements | `storereportid`, `productid`, `processname`, `productbefore`, `productafter` | |
| `productunit` | Unit conversions | `productunitid`, `productid`, `unitid`, `productnumber` |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `product` | Product master data | `productId`, `productName`, `productBuyPrice` | |
| `store` | Warehouse locations | `storeid`, `storeName` | |
| `employee` | Workers | `employeeid`, `employeename`, `Hourlyrate` | |
| `assets` | Equipment/machines | `assetsId`, `assetsName`, `Hourlyrate` |
๐ง Key Functions
1. add() - Create Production Order
Line: 779
Purpose: Creates a new production order and reserves raw materials
Parameters:
- โข
$_POST['orderName']- Production order name - โข
$_POST['productId']- Final product to manufacture - โข
$_POST['outQuantity']- Quantity to produce - โข
$_POST['from'],$_POST['to']- Start and end dates - โข
$_POST['stage']- Manufacturing stage ID - โข
$_POST['store']- Source warehouse ID
Process Flow:
Code Example:
// Calculate required raw material quantity
$finalquantity = $_POST["outQuantity"] * $productnumber * $Finalproductnumber * $Productionrateproduct[$i]->quantity;
// Reduce inventory
if (count($allStoredetailData) > 0) {
$productquantityAfter = decreaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity);
insertStorereport($productId, $_POST["store"], $finalquantity, $productquantityBefore, $productquantityAfter, 1, $productionOrderId, "ุชุตููุน", "productionOrderController.php");
}
---
2. update() - Modify Production Order
Line: 887
Purpose: Updates production order quantities and adjusts material reservations
Parameters:
- โข
$_POST['productionOrderid']- Order ID to update - โข
$_POST['outQuantity']- New production quantity - โข
$_POST['oldOutQuantity']- Previous quantity
Process Flow:
Business Rule: Only allows quantity increases to prevent inventory complications
---
3. recievedone() - Complete Production Order
Line: 1005
Purpose: Completes production by adding finished goods to inventory
Process Flow:
---
4. details() - Production Cost Analysis
Line: 336
Purpose: Displays detailed production cost breakdown
Process Flow:
---
5. getRawMaterialsAndTotalCostOfIt() - BOM Costing
Line: 1240
Purpose: Calculates raw material requirements and costs for production
Parameters:
- โข
$myfinalProductId- Final product ID - โข
$myunitId- Unit of measure ID - โข
$myOutQuantity- Production quantity
Process Flow:
Formula:
Required Quantity = Output Quantity ร BOM Quantity ร Unit Conversion Factor
Component Cost = Required Quantity ร Buy Price ร Unit Factor
Total Material Cost = ฮฃ(Component Costs)
---
6. addDamageProduct() - Track Production Waste
Line: 1052
Purpose: Records damaged/waste products during production
Parameters:
- โข
$_POST['productId']- Damaged product ID - โข
$_POST['productQuantity']- Waste quantity - โข
$_POST['cost']- Waste cost
Process Flow:
---
7. getuniqueArrayAndTotal() - Resource Aggregation
Line: 1295
Purpose: Aggregates worker/machine time and costs across production stages
Parameters:
- โข
$OnelevelArray- Array of resource assignments - โข
$type- 1=workers, 2=assets, 3=materials
Process Flow:
---
8. delete() - Remove Production Order
Line: 1183
Purpose: Deletes production order and reverses all inventory effects
Process Flow:
---
๐ Business Logic Flow
Production Order Lifecycle
Stage-Based Manufacturing
Stage 1: Preparation
โโ Material preparation
โโ Workstation setup
โโ Worker assignment
Stage 2: Processing
โโ Raw material consumption
โโ Manufacturing operations
โโ Quality control checks
Stage 3: Assembly
โโ Component assembly
โโ Finishing operations
โโ Final inspection
Stage 4: Packaging
โโ Product packaging
โโ Labeling
โโ Transfer to finished goods
---
โ ๏ธ Common Issues
1. Insufficient Raw Material Inventory
Symptoms: Production order creation fails with inventory shortage
Causes:
- โข BOM requirements exceed available stock
- โข Concurrent production orders consuming same materials
- โข Incorrect unit conversions in BOM
Solutions:
- โข Implement material requirement planning (MRP)
- โข Add inventory reservation system
- โข Validate BOM unit conversions
2. Production Cost Calculation Errors
Symptoms: Incorrect unit costs, negative costs
Causes:
- โข Missing or incorrect worker/machine hourly rates
- โข BOM formula errors
- โข Unit conversion mismatches
Solutions:
- โข Validate all rate data before production
- โข Add formula testing for BOM equations
- โข Implement cost validation rules
3. Production Order Status Inconsistencies
Symptoms: Orders stuck in "In Progress" status
Causes:
- โข Incomplete production execution
- โข Manual database modifications
- โข System errors during completion
Solutions:
- โข Add automated status tracking
- โข Implement production milestone checkpoints
- โข Create order status audit trail
---
๐ Dependencies
Required Files
- โข
../public/impOpreation.php- Core operations - โข
../public/config.php- Database configuration - โข
../public/include_dao.php- Data access objects - โข
../public/authentication.php- User authentication
Required DAOs
- โข
ProductionorderDAO- Production order data - โข
ProductionrateDAO- BOM formulas - โข
StageDAO- Manufacturing stages - โข
StoredetailDAO- Inventory management - โข
EmployeeDAO- Worker information - โข
AssetDAO- Equipment data
Session Variables
- โข
$_SESSION['userid']- Current user ID for audit trail - โข
$_SESSION['erp_lang']- Language settings
External Systems
- โข Inventory management system
- โข Cost accounting system
- โข Stage/workflow management
- โข Employee scheduling system
---
๐ Production Formulas
Material Requirement Calculation
// Basic BOM calculation
$requiredQuantity = $outputQuantity ร $bomQuantity ร $unitConversionFactor;
// Multi-level BOM (recursive)
function calculateTotalRequirement($finalProduct, $quantity, $level = 0) {
$totalRequirements = [];
$bom = getBOMForProduct($finalProduct);
foreach ($bom as $component) {
$required = $quantity ร $component->quantity;
if (hasSubBOM($component->productId)) {
$subRequirements = calculateTotalRequirement($component->productId, $required, $level + 1);
$totalRequirements = array_merge($totalRequirements, $subRequirements);
} else {
$totalRequirements[] = ['product' => $component->productId, 'quantity' => $required];
}
}
return $totalRequirements;
}
Production Cost Formula
// Total production cost calculation
$materialCost = ฮฃ(component_quantity ร component_unit_cost);
$laborCost = ฮฃ(worker_hours ร hourly_rate);
$equipmentCost = ฮฃ(machine_hours ร hourly_rate);
$wasteCost = ฮฃ(waste_quantity ร waste_unit_cost);
$totalProductionCost = $materialCost + $laborCost + $equipmentCost + $wasteCost;
$unitProductionCost = $totalProductionCost / $outputQuantity;
Efficiency Metrics
// Material yield efficiency
$materialYield = ($outputQuantity ร standardMaterialPerUnit) / $actualMaterialUsed ร 100;
// Labor efficiency
$laborEfficiency = $standardLaborHours / $actualLaborHours ร 100;
// Overall Equipment Effectiveness (OEE)
$oee = $availability ร $performance ร $quality;
---
Manufacturing Concepts Covered: Production Orders, Work Order Management, Bill of Materials (BOM), Material Requirements Planning (MRP), Stage-Based Manufacturing, Production Costing, Resource Planning, Waste Tracking, Production Scheduling, Inventory Reservation