chinh sua theo tieu chuan phan mem BDS_1
This commit is contained in:
51
AGENTS.md
51
AGENTS.md
@@ -1,7 +1,7 @@
|
||||
# HQLAND - TRẠNG THÁI CODEBASE & LỘ TRÌNH PHÁT TRIỂN
|
||||
|
||||
> File này được tạo để lưu trữ ngữ cảnh dự án cho các phiên làm việc sau.
|
||||
> **Cập nhật:** 24/04/2026
|
||||
> **Cập nhật:** 28/04/2026
|
||||
> **Dự án:** HQLand - Hệ thống quản lý Bất động sản
|
||||
> **Stack:** Laravel 13 + Filament v5.5 (Schemas Architecture) + PostgreSQL + UUID
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
**Quan hệ:**
|
||||
- `product()`, `customers()` (belongsToMany qua contract_customers)
|
||||
- `paymentTemplate()` (belongsTo PaymentTemplate)
|
||||
- `salesPhase()` (belongsTo SalesPhase)
|
||||
- `appendices()`, `paymentSchedule()`, `scheduleItems()` (HasManyThrough)
|
||||
- `payments()`, `paymentFines()`
|
||||
|
||||
@@ -214,6 +215,38 @@
|
||||
|
||||
---
|
||||
|
||||
### 3.6. Sales Phases (Đợt mở bán)
|
||||
**Models:** `SalesPhase`, `SalesPhaseProduct` (pivot)
|
||||
|
||||
**SalesPhase:**
|
||||
- `project_id`, `name`, `code`, `status` (Chuẩn bị | Đang mở bán | Tạm dừng | Đã đóng)
|
||||
- `start_date`, `end_date`, `description`
|
||||
- `payment_template_id` - Mẫu lịch thanh toán mặc định cho đợt
|
||||
- `discount_policy` (JSONB) - Chính sách chiết khấu mặc định
|
||||
|
||||
**SalesPhaseProduct (pivot):**
|
||||
- `sales_phase_id`, `product_id`
|
||||
- `sale_price`, `land_value`, `foundation_value` - Giá bán riêng của đợt
|
||||
- `discount_details` (JSONB) - Chiết khấu riêng cho từng sản phẩm trong đợt
|
||||
- `status` (Còn hàng | Đã giữ | Đã bán | Khóa)
|
||||
|
||||
**Quan hệ:**
|
||||
- `SalesPhase` belongsTo `Project`, belongsTo `PaymentTemplate`
|
||||
- `SalesPhase` belongsToMany `Product` qua `sales_phase_products`
|
||||
- `Product` belongsToMany `SalesPhase`
|
||||
- `Project` hasMany `SalesPhase`
|
||||
- `Contract` belongsTo `SalesPhase` (nullable)
|
||||
|
||||
**Logic tích hợp:**
|
||||
- `ContractForm`: Khi chọn `sales_phase_id` + `product_id`, tự động populate giá trị tài chính từ `SalesPhaseProduct` pivot
|
||||
- `CreateContract`: Nếu HĐ có `sales_phase_id` và không có `payment_template_id` trực tiếp, tự động lấy template từ `salesPhase->paymentTemplate`
|
||||
- `SalesPhaseForm`: Repeater `phaseProducts` cho phép thêm sản phẩm với giá và chiết khấu riêng
|
||||
|
||||
**Filament Resources:**
|
||||
- `SalesPhaseResource` → `SalesPhaseForm` + `SalesPhasesTable`
|
||||
|
||||
---
|
||||
|
||||
## 4. CÁC COMMAND IMPORT DỮ LIỆU
|
||||
|
||||
### `import:products-excel {file=sanpham.xlsx}`
|
||||
@@ -269,6 +302,7 @@
|
||||
- [x] **Discount Engine:** Tính toán tự động chiết khấu + hiển thị `final_value` trong ContractForm
|
||||
- [x] **Calculation Pipeline:** Kiến trúc tính toán tường minh (Step-by-step) với làm tròn tại mỗi bước
|
||||
- [x] **Form Templates:** Mail Merge Engine cho phiếu tính giá, HĐ, phụ lục - Admin tự tạo template
|
||||
- [x] **Sales Phase Module:** Quản lý đợt mở bán, giá bán riêng theo đợt, tích hợp vào ContractForm
|
||||
|
||||
### 5.2. Đang dở / Cần tiếp tục
|
||||
- [x] **Dashboard thống kê:** Đã tạo `ContractStatsOverview` + `UpcomingPaymentsTable`
|
||||
@@ -334,6 +368,8 @@ DB_HOST=127.0.0.1 php artisan migrate
|
||||
- `database/migrations/2026_04_24_083000_add_payment_template_id_to_contracts.php`
|
||||
- `database/migrations/2026_04_28_013900_add_calculation_log_to_contracts.php`
|
||||
- `database/migrations/2026_04_28_020000_create_form_templates_tables.php`
|
||||
- `database/migrations/2026_04_28_030000_create_sales_phases_tables.php`
|
||||
- `database/migrations/2026_04_28_031000_add_sales_phase_id_to_contracts.php`
|
||||
|
||||
### Services mới
|
||||
- `app/Services/DiscountEngine.php` - Tính toán chiết khấu
|
||||
@@ -346,20 +382,27 @@ DB_HOST=127.0.0.1 php artisan migrate
|
||||
- `app/Filament/Resources/Appendices/` (Resource + Form + Table + Pages)
|
||||
- `app/Filament/Resources/Settlements/` (Resource + Form + Table + Pages)
|
||||
- `app/Filament/Resources/FormTemplates/` (Resource + Form + Table + Pages)
|
||||
- `app/Filament/Resources/SalesPhases/` (Resource + Form + Table + Pages)
|
||||
|
||||
### Widgets mới
|
||||
- `app/Filament/Widgets/ContractStatsOverview.php` - Dashboard tổng quan tài chính
|
||||
- `app/Filament/Widgets/UpcomingPaymentsTable.php` - Danh sách đợt TT sắp đến hạn
|
||||
|
||||
### Models mới
|
||||
- `app/Models/SalesPhase.php` - Đợt mở bán
|
||||
- `app/Models/SalesPhaseProduct.php` - Pivot model giá bán theo đợt
|
||||
|
||||
### Models sửa đổi
|
||||
- `app/Models/Contract.php` - Thêm `paymentTemplate()`, accessor `final_value`
|
||||
- `app/Models/Contract.php` - Thêm `paymentTemplate()`, `salesPhase()`, accessor `final_value`
|
||||
- `app/Models/PaymentScheduleItem.php` - Thêm accessor `paid_amount`, `remaining_amount`
|
||||
- `app/Models/Product.php` - Thêm `salesPhases()`, `activeSalesPhase()`
|
||||
- `app/Models/Project.php` - Thêm `salesPhases()`
|
||||
- `app/Models/User.php` - Thêm `FilamentUser` interface để user có quyền truy cập panel
|
||||
|
||||
### Forms/Tables sửa đổi
|
||||
- `app/Filament/Resources/Contracts/ContractResource.php` - Fix action `EditAction` namespace (`Filament\Actions\EditAction`)
|
||||
- `app/Filament/Resources/Contracts/Schemas/ContractForm.php` - Fix `payment_template_id`, thêm `final_value_display`
|
||||
- `app/Filament/Resources/Contracts/Pages/CreateContract.php` - Refactor dùng `$contract->payment_template_id`
|
||||
- `app/Filament/Resources/Contracts/Schemas/ContractForm.php` - Fix `payment_template_id`, thêm `final_value_display`, thêm `sales_phase_id` với auto-populate giá từ SalesPhaseProduct
|
||||
- `app/Filament/Resources/Contracts/Pages/CreateContract.php` - Refactor dùng `$contract->payment_template_id`, fallback lấy từ `salesPhase->paymentTemplate`
|
||||
- `app/Filament/Resources/Payments/Schemas/PaymentForm.php` - Thêm validation amount + helper text công nợ
|
||||
- `app/Filament/Resources/Payments/Tables/PaymentsTable.php` - Thêm cột Loại đợt, Đối soát, Còn thiếu
|
||||
- `app/Filament/Resources/Payments/PaymentResource.php` - Thêm eager load `scheduleItem.payments`
|
||||
|
||||
Reference in New Issue
Block a user