update
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m59s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 18s
Build, Push and Deploy / deploy-staging (push) Successful in 39s
Build, Push and Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-05-14 12:25:21 +07:00
parent ce2b815b07
commit 6f9bdff115

View File

@@ -1,24 +1,37 @@
# Walkthrough - Fixing PostgreSQL Compatibility # Fix: BadMethodCallException & PostgreSQL Compatibility Audit
I have resolved the SQL errors occurring in the Loss Profit History module when running on PostgreSQL. I have resolved the `BadMethodCallException` reported in the `AcnooSaleController` and performed a final "automated" audit to fix remaining PostgreSQL compatibility issues.
## Changes Made ## Changes Made
### Business Module Controllers ### 1. Fixed Missing `dueForBranch` Method
- **[AcnooLossProfitHistoryController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/Business/App/Http/Controllers/AcnooLossProfitHistoryController.php)**: - **File**: [Party.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/app/Models/Party.php)
- Quoted `saleDate`, `lossProfit`, `incomeDate`, `expenseDate`, and `date` columns in all `DB::raw` expressions. - **Fix**: Implemented the `dueForBranch($branchId = null)` method in the `Party` model.
- Changed double quotes (`"`) to single quotes (`'`) for string literals (`'positive'`, `'negative'`) in `CASE` statements. - **Logic**:
- **[AcnooLossProfitHistoryReportController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/Business/App/Http/Controllers/AcnooLossProfitHistoryReportController.php)**: - For **Suppliers**: Sums `dueAmount` from the `purchases` table for the specified branch.
- Applied identical fixes for PostgreSQL compatibility. - For **Customers**: Sums `dueAmount` from the `sales` table for the specified branch.
- **[AcnooProductLossProfitReportController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/Business/App/Http/Controllers/AcnooProductLossProfitReportController.php)**: - This resolves the crash on the Sale and Purchase creation screens.
- Quoted `lossProfit` in `CASE` statements.
### Export Classes ### 2. Automated PostgreSQL Audit & Fixes
- **[ExportLossProfitHistory.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/Business/App/Exports/ExportLossProfitHistory.php)**: I ran an audit script to find remaining MySQL-specific syntax or unquoted mixed-case identifiers.
- Fixed column quoting and string literals for Excel/CSV exports.
- **[ExportProductLossProfit.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/Business/App/Exports/ExportProductLossProfit.php)**:
- Fixed column quoting in `CASE` statements for product loss/profit exports.
## Verification Results - **[AcnooBranchController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/Modules/MultiBranchAddon/App/Http/Controllers/AcnooBranchController.php)**: Quoted `"lossProfit"` in `incomeExpense` reports.
- The code changes directly address the `SQLSTATE[42703]` (Undefined column) error by ensuring PostgreSQL recognizes the mixed-case column names. - **[Admin/DashboardController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/app/Http/Controllers/Admin/DashboardController.php)**:
- String literal fixes prevent PostgreSQL from interpreting `'positive'` and `'negative'` as column names. - Updated `TO_CHAR` format to `FMMonth` to avoid padded spaces.
- Fixed `groupBy` to use the full expression instead of an alias for better PostgreSQL compatibility.
- **[StatisticsController.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/app/Http/Controllers/Api/StatisticsController.php)**:
- Updated `groupBy` logic to use the `TO_CHAR` expression directly, preventing "must appear in the GROUP BY clause" errors.
## Verification
### Automated Audit
- The audit script was used to identify these locations.
- You can find the script here: [audit_postgres.py](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15Maret2026_to%20GTEA/public_html/scratch/audit_postgres.py).
### Manual Verification Required
1. **Sale Creation**: Open the "Create Sale" screen to verify that customer due amounts are now displayed correctly without error.
2. **Purchase Creation**: Open the "Create Purchase" screen to verify supplier due amounts.
3. **Reports**: Check the Branch Income/Expense report and Admin Dashboard to ensure charts are rendering correctly.
> [!NOTE]
> I have committed these changes locally. Please run `git push` from your terminal to upload the fixes to your repository.