5.2 KiB
5.2 KiB
پیادهسازی بخش لیست هزینه و درآمد
خلاصه پیادهسازی
این پیادهسازی شامل بخش کاملی برای مدیریت اسناد هزینه و درآمد است که بر اساس الگوی موجود در بخش دریافت و پرداخت طراحی شده است.
فایلهای ایجاد شده
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
- ✅ اعتبارسنجی و مدیریت خطا
ساختار داده
سند هزینه/درآمد
{
"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": "بانک ملی"
}
]
}
نحوه استفاده
اضافه کردن به منوی اصلی
// در فایل منوی اصلی
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,
),
),
);
},
)
تست عملکرد
// استفاده از صفحه تست
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ExpenseIncomeTestPage(),
),
)
نکات مهم
-
تعادل حسابها: سیستم تضمین میکند که مجموع حسابهای هزینه/درآمد با مجموع طرفحسابها برابر باشد.
-
انواع طرفحساب: پشتیبانی از بانک، صندوق، تنخواهگردان، چک و شخص.
-
کد سند: فرمت
EI-YYYYMMDD-XXXXXبرای اسناد هزینه/درآمد. -
امنیت: تمام endpoint ها نیاز به احراز هویت و مجوز مناسب دارند.
-
چندزبانه: پشتیبانی از تقویم شمسی و میلادی.
مراحل بعدی
- تست کامل: تست تمام سناریوهای ممکن
- بهینهسازی: بهبود عملکرد و UX
- مستندسازی: تکمیل مستندات API
- گزارشگیری: اضافه کردن گزارشهای پیشرفته
- یکپارچهسازی: اتصال به سایر بخشهای سیستم
مشکلات احتمالی
- وابستگیها: ممکن است نیاز به نصب پکیجهای اضافی باشد
- API: باید مطمئن شوید که backend در حال اجرا است
- دسترسی: بررسی مجوزهای کاربر برای دسترسی به بخش
پشتیبانی
برای گزارش مشکلات یا درخواست ویژگیهای جدید، لطفاً با تیم توسعه تماس بگیرید.