Faida Documentation
Profit (Faida) Controller Documentation
File: /controllers/FaidaController.php
Purpose: Manages profit/sales reports, customer specific reports, and promotional bill tracking
Last Updated: December 19, 2024
Total Functions: 17
Lines of Code: 1,106
---
๐ Overview
The Faida (Profit) Controller manages profit-related operations and customer-specific promotional reports in the ERP system. It handles:
- โข Creating and editing promotional/profit bills (Faida)
- โข Tracking customer-specific promotional offerings
- โข Managing profit bill products and details
- โข Calculating promotional pricing and discounts
- โข Inventory tracking for promotional items
- โข Profit analysis and reporting
- โข Quick profit calculations and cost analysis
- โข Integration with store management and accounting
Primary Functions
- โ Create promotional bills (Faida)
- โ Edit existing promotional bills
- โ Delete promotional bills
- โ View promotional bill details
- โ Track promotional products
- โ Calculate profit margins
- โ Update inventory quantities
- โ Generate profit reports
- โ Manage customer promotions
- โ Handle cost calculations
Related Controllers
- โข sellbillController.php - Sales operations
- โข buyBillController.php - Purchase operations
- โข clientController.php - Customer management
- โข productController.php - Product management
- โข storeController.php - Warehouse/store management
- โข balancereportController.php - Balance sheet reports
- โข storereportController.php - Stock reports
- โข FinancialPositionController.php - Financial position
---
๐๏ธ Database Tables
Primary Tables (Direct Operations)
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `faida` | Main promotional bills | id, clientId, premmium, installment_duration, total_amount, comment, user_id, storeId, conditions, presenter | |
| `faidaproduct` | Promotional bill products | id, faidaId, productId, pronum, proprice, faidaproducttotalprice, pricetypepro, discounttype |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `client` | Customer information | clientid, clientname, clientphone, clientaddress | |
| `product` | Product catalog | productId, productName, productBuyPrice, lastbuyprice, meanbuyprice | |
| `storedetail` | Product inventory | storedetailid, storeid, productid, productquantity | |
| `storereport` | Inventory movements | storereportid, productid, storeid, productquantity, processname | |
| `quickprofitstore` | Store profit tracking | storeId, theDate, sellVal, sellCostBuyPrice | |
| `quickprofitproduct` | Product profit tracking | productId, theDate, sellVal, sellCostMeanBuyPrice |
| Table Name | Purpose | Key Columns | |
|---|---|---|---|
| `store` | Warehouse/store master | storeid, storename, storeaddress | |
| `unit` | Unit of measures | unitid, unitname, unitsymbol | |
| `productunit` | Product-unit relationships | productid, unitid, productnumber | |
| `billname` | Bill type definitions | billnameid, billname, billdescription | |
| `billsettings` | Bill configuration | billsettingsid, billnameid, property, value |
๐ง Key Functions
Core Operations
add() (Lines 416-441)
Purpose: Creates a new promotional bill (Faida)
Parameters:
- โข
$_POST['supplier']- Client/customer ID - โข
$_POST['premium']- Premium time period - โข
$_POST['Installment_duration']- Payment installment duration - โข
$_POST['total_amount']- Total promotional amount - โข
$_POST['textDetails']- Comments/details - โข
$_POST['storeid']- Store ID - โข
$_POST['presenter']- Presenter ID
Process Flow:
Code Example:
$myFaida->clientId = $client_id;
$myFaida->premmium = $premium_time;
$myFaida->total_amount = $total_amount;
$myFaidaId = $myFaidaDAO->insert($myFaida);
addFaida($myFaidaId);
addFaida($myFaidaId) (Lines 443-524)
Purpose: Adds promotional products to a Faida bill and updates inventory
Parameters: $myFaidaId - The promotional bill ID
Process Flow:
Returns: Updates inventory and creates store reports
show() (Lines 526-545)
Purpose: Retrieves all promotional bills for display
Parameters: None (uses session user ID)
Process Flow:
Returns: Array of promotional bills with user and client names
update() (Lines 547-577)
Purpose: Updates existing promotional bill
Parameters:
- โข All POST parameters from add() function
- โข
$_POST['faida_id']- The promotional bill ID to update
Process Flow:
delete() (Lines 579-586)
Purpose: Deletes a promotional bill and its products
Parameters: $_GET['id'] - The promotional bill ID
Utility Functions
loadClient() (Lines 634-639)
Purpose: Loads all active clients for dropdown selection
Returns: Array of client data
loadUnit() (Lines 641-646)
Purpose: Loads all units for product unit selection
Returns: Array of unit data
loadProductUnitWithProductAndUnit($productId, $unitId) (Lines 648-657)
Purpose: Gets product-unit relationship data
Parameters: $productId, $unitId
Returns: Product unit data object
Inventory Management Functions
decreaseProductQuantity(...) (Lines 660-722)
Purpose: Decreases product quantity in store and handles size/color variants
Parameters: Multiple parameters for store detail, quantity changes, and tracking
Process Flow:
insertStoredetail(...) (Lines 725-759)
Purpose: Inserts new store detail record for product
Parameters: Store, product, and quantity information
getStoreDetails($storeId, $productId, $unittype, $sizeColorStoreDetailId, $sizeId, $colorId) (Lines 787-811)
Purpose: Retrieves current store detail information for a product
Returns: Array with store detail data, ID, and current quantity
Profit Calculation Functions
quickProfitRow(...) (Lines 896-962)
Purpose: Calculates and tracks profit data for promotional sales
Parameters: Product data, quantities, prices, and store information
Process Flow:
ifCollectiveProductReCalculateCost($buyProduct) (Lines 813-848)
Purpose: Recalculates cost for collective/bundle products
Parameters: $buyProduct - Product object
Returns: Updated product object with recalculated costs
lastAndMeanBuyPrice_Sell(...) (Lines 850-894)
Purpose: Updates last and mean buy prices for sold products
Parameters: Price tracking and calculation parameters
Specialized Functions
ifCollectiveDecreaseItsIngriedientsInStore(...) (Lines 964-1034)
Purpose: Handles inventory decrease for collective product ingredients
Parameters: Product data, quantities, and store information
onlineTempStoreDetailFunc(...) (Lines 1036-1054)
Purpose: Updates temporary online store detail for web integration
Parameters: Store, product, size, color, quantity, and edit status
insertStorereportupdate(...) (Lines 1080-1106)
Purpose: Inserts store report entries for audit trail
Parameters: Product, store, quantity changes, and process information
---
๐ Business Logic Flow
Creating a Promotional Bill
Start โ Validate User โ Load Form Data โ Select Products
โ
Display Form โ User Input โ Submit Data โ Validate Input
โ
Create Faida Record โ Add Products โ Update Inventory โ Generate Reports
โ
Calculate Profits โ Track Changes โ Update Online Store โ Complete
Promotional Product Management
Product Selection โ Unit Calculation โ Price Determination
โ
Discount Application โ Total Calculation โ Inventory Check
โ
Stock Decrease โ Cost Calculation โ Profit Tracking โ Report Generation
Inventory Integration Flow
Product Sale โ Check Store Details โ Update Quantities
โ
Handle Size/Color โ Calculate Costs โ Update Prices
โ
Generate Reports โ Track Movements โ Sync Online Store
---
โ ๏ธ Common Issues
PHP 8.2 Compatibility Issues
1. Object initialization issues: Function creates objects properly using new stdClass()
2. Count() usage: Uses proper array checking with count() and !empty()
3. Type casting: Properly handles numeric conversions
Performance Considerations
1. Complex calculations: Heavy profit calculation functions may impact performance
2. Multiple database operations: Each product addition triggers multiple DB updates
3. Store synchronization: Online store updates add overhead
Business Logic Warnings
1. Inventory validation: No validation for negative stock after promotional sales
2. Price calculations: Complex profit margin calculations may have rounding issues
3. Collective products: Bundle product handling adds complexity
---
๐ Dependencies
Required Files
- โข
../public/impOpreation.php- Core operations - โข
../public/config.php- Database configuration - โข
../public/authentication.php- User authentication - โข Various DAO and DTO files for data access
Database Dependencies
- โข MySQL database with proper table relationships
- โข Triggers or procedures for inventory management
- โข Views for reporting and profit calculations
External Dependencies
- โข Smarty templating engine for views
- โข Session management for user tracking
- โข Online store integration capabilities
Related Controllers
- โข Store management for inventory operations
- โข Client management for customer data
- โข Product management for catalog operations
- โข Billing system for promotional pricing
---
Database Schema Notes:
- โข
faidatable stores promotional bill headers - โข
faidaproducttable stores promotional bill line items - โข Complex relationships with inventory and profit tracking tables
- โข Integration with online store synchronization system