157 lines
5.2 KiB
Markdown
157 lines
5.2 KiB
Markdown
|
|
# پیادهسازی بخش لیست هزینه و درآمد
|
|||
|
|
|
|||
|
|
## خلاصه پیادهسازی
|
|||
|
|
|
|||
|
|
این پیادهسازی شامل بخش کاملی برای مدیریت اسناد هزینه و درآمد است که بر اساس الگوی موجود در بخش دریافت و پرداخت طراحی شده است.
|
|||
|
|
|
|||
|
|
## فایلهای ایجاد شده
|
|||
|
|
|
|||
|
|
### Frontend (Flutter)
|
|||
|
|
|
|||
|
|
#### مدلها
|
|||
|
|
- `lib/models/expense_income_document.dart` - مدل اصلی سند هزینه/درآمد
|
|||
|
|
- `lib/models/account_model.dart` - مدل حساب
|
|||
|
|
|
|||
|
|
#### سرویسها
|
|||
|
|
- `lib/services/expense_income_list_service.dart` - سرویس لیست و عملیات گروهی
|
|||
|
|
- `lib/services/expense_income_service.dart` - سرویس CRUD
|
|||
|
|
|
|||
|
|
#### صفحات
|
|||
|
|
- `lib/pages/business/expense_income_list_page.dart` - صفحه اصلی لیست
|
|||
|
|
- `lib/pages/test/expense_income_test_page.dart` - صفحه تست
|
|||
|
|
|
|||
|
|
#### ویجتها
|
|||
|
|
- `lib/widgets/expense_income/expense_income_form_dialog.dart` - دیالوگ ایجاد/ویرایش
|
|||
|
|
- `lib/widgets/expense_income/expense_income_details_dialog.dart` - دیالوگ مشاهده جزئیات
|
|||
|
|
- `lib/widgets/invoice/account_combobox_widget.dart` - ویجت انتخاب حساب
|
|||
|
|
|
|||
|
|
### Backend (Python)
|
|||
|
|
|
|||
|
|
#### API Endpoints
|
|||
|
|
- `hesabixAPI/adapters/api/v1/expense_income.py` - تمام endpoint های مورد نیاز
|
|||
|
|
|
|||
|
|
#### سرویسها
|
|||
|
|
- `hesabixAPI/app/services/expense_income_service.py` - منطق کسب و کار
|
|||
|
|
|
|||
|
|
## ویژگیهای پیادهسازی شده
|
|||
|
|
|
|||
|
|
### Frontend
|
|||
|
|
- ✅ لیست اسناد با جدول پیشرفته
|
|||
|
|
- ✅ فیلتر بر اساس نوع سند (هزینه/درآمد)
|
|||
|
|
- ✅ فیلتر تاریخ (از/تا)
|
|||
|
|
- ✅ جستجو و صفحهبندی
|
|||
|
|
- ✅ انتخاب چندگانه و حذف گروهی
|
|||
|
|
- ✅ خروجی Excel و PDF
|
|||
|
|
- ✅ دیالوگ ایجاد سند جدید
|
|||
|
|
- ✅ دیالوگ ویرایش سند موجود
|
|||
|
|
- ✅ دیالوگ مشاهده جزئیات
|
|||
|
|
- ✅ اعتبارسنجی تعادل حسابها
|
|||
|
|
|
|||
|
|
### Backend
|
|||
|
|
- ✅ API لیست اسناد با فیلتر و صفحهبندی
|
|||
|
|
- ✅ API ایجاد سند جدید
|
|||
|
|
- ✅ API ویرایش سند موجود
|
|||
|
|
- ✅ API حذف سند (تکی و گروهی)
|
|||
|
|
- ✅ API مشاهده جزئیات سند
|
|||
|
|
- ✅ API خروجی Excel
|
|||
|
|
- ✅ API خروجی PDF
|
|||
|
|
- ✅ اعتبارسنجی و مدیریت خطا
|
|||
|
|
|
|||
|
|
## ساختار داده
|
|||
|
|
|
|||
|
|
### سند هزینه/درآمد
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"code": "EI-20250115-12345",
|
|||
|
|
"document_type": "expense",
|
|||
|
|
"document_type_name": "هزینه",
|
|||
|
|
"document_date": "2025-01-15",
|
|||
|
|
"currency_id": 1,
|
|||
|
|
"total_amount": 1000000,
|
|||
|
|
"description": "توضیحات سند",
|
|||
|
|
"item_lines": [
|
|||
|
|
{
|
|||
|
|
"account_id": 123,
|
|||
|
|
"account_name": "هزینه اداری",
|
|||
|
|
"amount": 1000000,
|
|||
|
|
"description": "توضیحات خط"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"counterparty_lines": [
|
|||
|
|
{
|
|||
|
|
"transaction_type": "bank",
|
|||
|
|
"amount": 1000000,
|
|||
|
|
"transaction_date": "2025-01-15T10:00:00",
|
|||
|
|
"bank_account_id": 456,
|
|||
|
|
"bank_account_name": "بانک ملی"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## نحوه استفاده
|
|||
|
|
|
|||
|
|
### اضافه کردن به منوی اصلی
|
|||
|
|
```dart
|
|||
|
|
// در فایل منوی اصلی
|
|||
|
|
ListTile(
|
|||
|
|
leading: const Icon(Icons.trending_up),
|
|||
|
|
title: const Text('هزینه و درآمد'),
|
|||
|
|
onTap: () {
|
|||
|
|
Navigator.push(
|
|||
|
|
context,
|
|||
|
|
MaterialPageRoute(
|
|||
|
|
builder: (context) => ExpenseIncomeListPage(
|
|||
|
|
businessId: businessId,
|
|||
|
|
calendarController: calendarController,
|
|||
|
|
authStore: authStore,
|
|||
|
|
apiClient: apiClient,
|
|||
|
|
),
|
|||
|
|
),
|
|||
|
|
);
|
|||
|
|
},
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### تست عملکرد
|
|||
|
|
```dart
|
|||
|
|
// استفاده از صفحه تست
|
|||
|
|
Navigator.push(
|
|||
|
|
context,
|
|||
|
|
MaterialPageRoute(
|
|||
|
|
builder: (context) => const ExpenseIncomeTestPage(),
|
|||
|
|
),
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## نکات مهم
|
|||
|
|
|
|||
|
|
1. **تعادل حسابها**: سیستم تضمین میکند که مجموع حسابهای هزینه/درآمد با مجموع طرفحسابها برابر باشد.
|
|||
|
|
|
|||
|
|
2. **انواع طرفحساب**: پشتیبانی از بانک، صندوق، تنخواهگردان، چک و شخص.
|
|||
|
|
|
|||
|
|
3. **کد سند**: فرمت `EI-YYYYMMDD-XXXXX` برای اسناد هزینه/درآمد.
|
|||
|
|
|
|||
|
|
4. **امنیت**: تمام endpoint ها نیاز به احراز هویت و مجوز مناسب دارند.
|
|||
|
|
|
|||
|
|
5. **چندزبانه**: پشتیبانی از تقویم شمسی و میلادی.
|
|||
|
|
|
|||
|
|
## مراحل بعدی
|
|||
|
|
|
|||
|
|
1. **تست کامل**: تست تمام سناریوهای ممکن
|
|||
|
|
2. **بهینهسازی**: بهبود عملکرد و UX
|
|||
|
|
3. **مستندسازی**: تکمیل مستندات API
|
|||
|
|
4. **گزارشگیری**: اضافه کردن گزارشهای پیشرفته
|
|||
|
|
5. **یکپارچهسازی**: اتصال به سایر بخشهای سیستم
|
|||
|
|
|
|||
|
|
## مشکلات احتمالی
|
|||
|
|
|
|||
|
|
1. **وابستگیها**: ممکن است نیاز به نصب پکیجهای اضافی باشد
|
|||
|
|
2. **API**: باید مطمئن شوید که backend در حال اجرا است
|
|||
|
|
3. **دسترسی**: بررسی مجوزهای کاربر برای دسترسی به بخش
|
|||
|
|
|
|||
|
|
## پشتیبانی
|
|||
|
|
|
|||
|
|
برای گزارش مشکلات یا درخواست ویژگیهای جدید، لطفاً با تیم توسعه تماس بگیرید.
|