Production Execution Controller Documentation
File: /controllers/productionExecutionController.php
Purpose: Manages manufacturing execution, BOM consumption, production output, and inventory updates
Last Updated: December 19, 2024
Total Functions: 17
Lines of Code: ~1,881
---
๐ Overview
The Production Execution Controller is the core component for executing manufacturing processes in the ERP system. It handles:
- โข Production execution based on task orders
- โข Bill of Materials (BOM) consumption tracking
- โข Raw material inventory deduction during production
- โข Finished goods output tracking
- โข Waste/damaged product management during production
- โข Inventory updates with buy price history
- โข Production costing calculations
- โข Daily accounting entries for manufacturing
Primary Functions
- โ Execute production orders from task orders
- โ Consume raw materials per BOM formulas
- โ Track finished goods output
- โ Manage production waste
- โ Update inventory quantities
- โ Calculate production costs
- โ Generate accounting entries
- โ Handle buy price history for FIFO/LIFO costing
- โ Support size/color variants in production
Related Controllers
- โข productionOrderController.php - Production order management
- โข taskOrderController.php - Task order creation
- โข productController.php - Product and BOM management
- โข storeController.php - Warehouse management
- โข storedetailController.php - Inventory management
- โข simpleManufactureSettingsController.php - Manufacturing settings
- โข productionEquationController.php - BOM equations
- โข dailyentryController.php - Accounting entries
---
๐๏ธ Database Tables
Primary Tables (Direct Operations)
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `productionexecution` | Main production execution records | `id`, `taskorderid`, `num`, `notes`, `executiondate` | |
| `productionexecutionproduct` | Raw materials consumed | `id`, `productionexecutionid`, `productid`, `quantity`, `actualquantity` | |
| `productionexecutionoutput` | Finished goods produced | `id`, `productionexecutionid`, `productid`, `num` | |
| `productionexecutionwaste` | Production waste/scrap | `id`, `productionexecutionid`, `productid`, `num` | |
| `taskorder` | Source production orders | `taskorderid`, `name`, `num`, `startdate`, `enddate` | |
| `taskorderproducts` | Task order materials list | `id`, `taskorderid`, `productid`, `quantity` |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `storedetail` | Current inventory quantities | `storedetailid`, `storeid`, `productid`, `productquantity` | |
| `storereport` | Inventory movement history | `storereportid`, `productid`, `storeid`, `productquantity`, `processname` | |
| `buypriceshistorybook` | Purchase price tracking | `id`, `storeid`, `productid`, `buyprice`, `buyquantity`, `sellquantity` | |
| `sizecolorstoredetail` | Size/color variant inventory | `id`, `productid`, `sizeid`, `colorid`, `quantity` | |
| `productionrate` | BOM header | `productionRateId`, `ratename`, `finalproductid` | |
| `productionrateproduct` | BOM line items | `id`, `productionRateId`, `productid`, `quantity` |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `product` | Product master data | `productId`, `productName`, `productBuyPrice`, `productSellPrice` | |
| `store` | Warehouse/location master | `storeid`, `storeName` | |
| `simplemanufacturesetting` | Manufacturing configuration | `id`, `storeid`, `reducestoreamount` |
๐ง Key Functions
1. add() - Create Production Execution
Line: 549
Purpose: Creates a new production execution record from task order
Parameters:
- โข
$_POST['taskorderid']- Source task order ID - โข
$_POST['executiondate']- Production execution date - โข
$_POST['notes']- Production notes - โข
$_POST['storeid']- Target warehouse for production
Process Flow:
Return: Redirects to success/error page
---
2. executeAdd() - Process Material Consumption
Line: 702
Purpose: Handles raw material deduction from inventory during production execution
Parameters:
- โข Task order materials from database
- โข Production quantity from form
- โข Store ID for inventory updates
Process Flow:
Code Example:
// Calculate material consumption based on BOM
$requiredQty = $productionQty * $bomQty * $conversionFactor;
// Reduce inventory
$newInventory = decreaseProductQuantity($storeDetailId, $currentQty, $requiredQty);
// Update buy price history for costing
getBuyPriceFromAndHandleBuyPricesHistoryBook($storeId, $productId, $sizeId, $colorId, $buyPrice, $requiredQty, 0);
---
3. execute() - Complete Production Process
Line: 1074
Purpose: Completes production by adding finished goods to inventory
Parameters:
- โข
$_POST['productionexecutionid']- Production execution ID - โข
$_POST['output_*']- Output quantities for each product - โข
$_POST['waste_*']- Waste quantities for each product
Process Flow:
---
4. update() - Modify Production Execution
Line: 926
Purpose: Updates existing production execution with new quantities
Process Flow:
---
5. delete() - Remove Production Execution
Line: 1442
Purpose: Deletes production execution and reverses all inventory effects
Process Flow:
---
6. getBuyPriceFromAndHandleBuyPricesHistoryBook() - FIFO Costing
Line: 1746
Purpose: Manages buy price history for FIFO/LIFO inventory costing
Parameters:
- โข
$storeId- Warehouse ID - โข
$productid- Product ID - โข
$sizeid,$colorid- Variant identifiers - โข
$productBuyPrice- Current buy price - โข
$soldQuantity- Quantity being consumed - โข
$type- 0=consumption, 1=return
Process Flow:
---
7. doInventoryDailyEntry() - Accounting Integration
Line: 1849
Purpose: Creates daily accounting entries for production costs
Parameters:
- โข
$productionExecution- Production execution object
Process Flow:
---
๐ Business Logic Flow
Production Execution Workflow
BOM Consumption Formula
Required Quantity = Production Qty ร BOM Qty ร Unit Conversion Factor
Example:
- Produce 100 units of Product A
- BOM requires 2.5kg Material X per unit
- Material X stored in grams (conversion factor = 1000)
- Required = 100 ร 2.5 ร 1000 = 250,000 grams
---
โ ๏ธ Common Issues
1. Inventory Shortage During Production
Symptoms: Production fails with insufficient stock error
Causes:
- โข BOM consumption exceeds available inventory
- โข Incorrect unit conversion factors
- โข Concurrent production orders
Solutions:
- โข Implement inventory reservation system
- โข Add stock validation before production start
- โข Verify unit conversion in product setup
2. Buy Price History Inconsistencies
Symptoms: Incorrect cost calculations, negative inventory values
Causes:
- โข FIFO queue corruption during concurrent operations
- โข Manual inventory adjustments without price history updates
Solutions:
- โข Add database transactions for atomic operations
- โข Rebuild buy price history after manual adjustments
- โข Implement inventory locking during production
3. BOM Formula Calculation Errors
Symptoms: Wrong material consumption amounts
Causes:
- โข Missing or incorrect production rate equations
- โข Unit conversion factor mismatches
- โข Formula version control issues
Solutions:
- โข Validate BOM formulas before production
- โข Add audit trail for BOM changes
- โข Implement formula testing environment
---
๐ Dependencies
Required Files
- โข
../public/impOpreation.php- Core operations - โข
../public/config.php- Database configuration - โข
../public/include_dao.php- Data access objects - โข
dailyentryfun.php- Accounting entry functions
Required DAOs
- โข
ProductionexecutionDAO- Production execution data - โข
TaskorderDAO- Source task orders - โข
ProductionrateDAO- BOM formulas - โข
StoredetailDAO- Inventory management - โข
BuypriceshistorybookDAO- Costing history - โข
StorereportDAO- Inventory audit trail
Required Session Variables
- โข
$_SESSION['userid']- Current user ID - โข
$_SESSION['storenegative']- Allow negative inventory flag
External Dependencies
- โข Smarty templating engine
- โข Daily entry accounting system
- โข Inventory management system
- โข Product variant (size/color) system
---
๐งฎ Manufacturing Formulas
Cost Calculation
// Weighted average cost per unit
$newMeanPrice = (($oldQuantity ร $oldMeanPrice) + ($newQuantity ร $newPrice)) / ($oldQuantity + $newQuantity);
// Total production cost
$totalCost = $materialCost + $laborCost + $overheadCost;
// Unit production cost
$unitCost = $totalCost / $outputQuantity;
Inventory Valuation Methods
- โข FIFO (First In, First Out): Oldest purchase prices used first for consumption
- โข Weighted Average: Recalculated after each purchase/production
- โข Standard Cost: Predetermined costs updated periodically
---
Manufacturing Concepts Covered: Production Execution, BOM Management, Material Consumption, FIFO Costing, Inventory Valuation, Production Costing, Waste Tracking, Quality Control Integration, Accounting Integration