forked from hesabix/arc
4.4 KiB
Executable file
4.4 KiB
Executable file
وضعیت نهایی پیادهسازی: انتخاب کالاهای یونیک در فاکتور
تاریخ: 2024
✅ کارهای انجام شده
Backend (کامل ✅)
-
اعتبارسنجی selected_instance_ids (
invoice_service.py)- تابع
_validate_selected_instancesایجاد شد - بررسی اینکه کالا یونیک است
- بررسی اینکه تعداد instance ها دقیقاً برابر quantity باشد
- بررسی تکرار در لیست
- بررسی دسترس بودن همه instance ها
- فقط برای فاکتور فروش و برگشت از خرید
- تابع
-
انتقال selected_instance_ids به حواله (
warehouse_service.py)- در تابع
create_from_invoice - خواندن
selected_instance_idsازextra_infoخط فاکتور - انتقال به
instance_idsدر حواله - بهروزرسانی وضعیت instance ها (status = "sold")
- در تابع
Frontend (کامل ✅)
-
مدل InvoiceLineItem
- فیلد
selectedInstanceIdsاضافه شد - در constructor و copyWith اضافه شد
- فیلد
-
تابع فرمت ویژگیها (
attribute_formatter.dart)- تابع
formatAttributeValueبرای فرمت بر اساس data_type - پشتیبانی از text, number, date, select, boolean
- تابع
formatAttributesForDisplayبرای نمایش چند ویژگی - پشتیبانی از تقویم شمسی و میلادی
- تابع
-
دیالوگ انتخاب instance ها (
unique_product_instance_selector_dialog.dart)- دیالوگ کامل برای انتخاب instance ها
- بارگذاری ویژگیهای کالا با data_type
- فرمت ویژگیها برای نمایش
- جستجو و فیلتر
- اعتبارسنجی تعداد انتخاب شده
-
UI در line_items_table
- CalendarController اضافه شد به پارامترها
- Import دیالوگ و ProductService اضافه شد
- Cache برای اطلاعات کالاها (
_productCache) - تابع
_shouldShowInstanceSelectorبرای بررسی نمایش دکمه - تابع
_loadProductInfoبرای بارگذاری اطلاعات کالا - تابع
_selectUniqueProductInstancesبرای باز کردن دیالوگ - دکمه "انتخاب کالای یونیک" در سطر سوم هر ردیف
- نمایش خلاصه instance های انتخاب شده
- بارگذاری اطلاعات کالاها در initState
-
new_invoice_page
- CalendarController به InvoiceLineItemsTable ارسال شد
- در
_serializeLineItem،selected_instance_idsبه extra_info اضافه شد
-
edit_invoice_page
- CalendarController به InvoiceLineItemsTable ارسال شد
- در
_serializeLineItem،selected_instance_idsبه extra_info اضافه شد - در
_loadInvoice،selected_instance_idsاز extra_info بارگذاری شد
📝 نکات مهم
-
فقط برای فاکتور فروش و برگشت از خرید
- این قابلیت فقط برای فاکتورهایی که حواله خارج ایجاد میکنند معنا دارد
-
اختیاری بودن انتخاب
- اگر instance انتخاب نشود، میتوان در زمان ایجاد حواله انتخاب کرد
-
اعتبارسنجی
- تعداد instance های انتخاب شده باید دقیقاً برابر quantity باشد
- همه instance ها باید در دسترس باشند (status == "available")
-
فرمت ویژگیها
- تاریخ بر اساس تقویم انتخاب شده کاربر (شمسی یا میلادی)
- عدد با جداکننده هزارگان
- select: نمایش label به جای value
-
نمایش در حواله
- instance های انتخاب شده در فاکتور به صورت خودکار به حواله منتقل میشوند
- در حواله، instance_ids در extra_info ذخیره میشود
- در Frontend حواله، دکمه انتخاب instance برای ویرایش موجود است
🎉 خلاصه
همه بخشهای اصلی پیادهسازی شده است:
- ✅ Backend: اعتبارسنجی و انتقال
- ✅ Frontend: UI انتخاب در فاکتور
- ✅ Frontend: بارگذاری و ذخیره
- ✅ Frontend: نمایش در حواله
سیستم آماده استفاده است! 🚀