72 lines
4.0 KiB
Markdown
72 lines
4.0 KiB
Markdown
# Walkthrough — Truck Status Management
|
|
|
|
We have successfully implemented the ability to edit and delete trucks from the admin dashboard, enforced Plate number read-only behavior post-creation, and automated active trip cancellation and collection team unassignment when a truck is moved to a non-active status (`maintenance` or `retired`).
|
|
|
|
## Changes Made
|
|
|
|
### 1. Backend Changes
|
|
- **Request Validation**: Updated [StoreTruckRequest.php](file:///c:/Users/procy/OneDrive/Desktop/Ver/Web/app/Http/Requests/Team/StoreTruckRequest.php) to ignore the current truck's ID when validating the unique `plate_number` constraint during updates.
|
|
- **Controller Logic**: Extended `update()` in [AdminTruckController.php](file:///c:/Users/procy/OneDrive/Desktop/Ver/Web/app/Http/Controllers/Api/V1/Admin/AdminTruckController.php):
|
|
- When the truck status is updated from `active` to a non-active status (`maintenance` or `retired`), any active/scheduled trips (`scheduled`, `in_progress`, `at_dumpsite`) for that truck are automatically marked as `cancelled` with a system note.
|
|
- The truck is unassigned from any active collection teams (setting `truck_id` to `null` on the team).
|
|
|
|
### 2. Frontend Changes
|
|
- **Table Actions**: Added an **Actions** column with an **Edit** button to the trucks list inside [trucks.blade.php](file:///c:/Users/procy/OneDrive/Desktop/Ver/Web/resources/views/admin/trucks.blade.php).
|
|
- **Edit & Delete slide-over modal**:
|
|
- Re-used the existing form structure for edit mode.
|
|
- Configured the plate number input field to be **read-only** (and visually styled as disabled) in edit mode.
|
|
- Added a **Delete** button at the bottom of the form when editing a truck, complete with an interactive confirm dialog.
|
|
- Form submit handler automatically switches between `POST` (create) and `PATCH` (update) based on the context.
|
|
|
|
---
|
|
|
|
## Walkthrough - Partner Store Portal Overhaul
|
|
|
|
I have successfully enhanced the Partner Store Portal with advanced search, LGU-scoped pricing, and professional PDF receipts.
|
|
|
|
## Key Changes
|
|
|
|
### 1. Dynamic LGU Pricing
|
|
- Added `qr_retail_price_centavos` to the `tenants` table.
|
|
- Each LGU can now set its own retail price for QR stickers.
|
|
- The Store Portal automatically fetches and displays the correct price for the current store's LGU.
|
|
|
|
### 2. Enhanced Household Search
|
|
- Integrated **TomSelect** for a lightning-fast, searchable dropdown.
|
|
- Search results are strictly scoped to the store's LGU.
|
|
- Added **Leaflet.js** map verification to show the resident's location upon selection.
|
|
|
|
### 3. Professional PDF Receipts
|
|
- Implemented professional receipt generation using **DomPDF**.
|
|
- Receipts include store details, transaction numbers, and branded formatting.
|
|
- Added a "Download Receipt" flow immediately after a successful sale.
|
|
|
|
## Technical Implementation
|
|
- **Migrations**: Added pricing field to `tenants`.
|
|
- **Controllers**: Updated `StorePortalController` with `settings`, `search`, and `downloadReceipt` methods.
|
|
- **Frontend**: Overhauled `sales.blade.php` with modern JS libraries and premium styling.
|
|
- **Security**: Implemented `StoreSalePolicy` to prevent unauthorized receipt downloads.
|
|
|
|
## Verification Results
|
|
|
|
### Automated Tests
|
|
Created and ran a new test file: [AdminTruckCrudTest.php](file:///c:/Users/procy/OneDrive/Desktop/Ver/Web/tests/Feature/Api/V1/Admin/AdminTruckCrudTest.php)
|
|
|
|
All test cases pass successfully:
|
|
```bash
|
|
PASS Tests\Feature\Api\V1\Admin\AdminTruckCrudTest
|
|
✓ admin can update truck details 14.39s
|
|
✓ admin updating plate uniqueness checks 0.16s
|
|
✓ changing status to maintenance cancels trips and unassigns teams 0.18s
|
|
✓ admin can delete truck 0.10s
|
|
|
|
Tests: 4 passed (13 assertions)
|
|
Duration: 15.17s
|
|
```
|
|
|
|
### Frontend Assets
|
|
Built the frontend assets successfully via Vite compilation:
|
|
```bash
|
|
✓ built in 3.40s
|
|
```
|