6.8 KiB
Executable file
سناریوی حذف کامل inventory_transfer
سوال اصلی
آیا میتوان inventory_transfer را به عنوان document_type کاملاً حذف کرد؟
وضعیت فعلی
استفاده از inventory_transfer:
-
در
warehouse_service.py:- وقتی یک Warehouse Document با
doc_type='transfer'پست میشود - یک سند حسابداری با
document_type='inventory_transfer'ایجاد میشود - این سند در کاردکس و محاسبات موجودی استفاده میشود
- وقتی یک Warehouse Document با
-
در
kardex_service.py:- mapping برای نمایش نام:
"inventory_transfer": "انتقال موجودی"
- mapping برای نمایش نام:
-
در
document_repository.py:- mapping برای نمایش نام:
"inventory_transfer": "انتقال موجودی"
- mapping برای نمایش نام:
-
در
kardex_page.dart:- فیلتر برای نمایش در کاردکس:
FilterOption(value: 'inventory_transfer', label: t.warehouseTransfers)
- فیلتر برای نمایش در کاردکس:
-
در
document_model.dart:- case برای نمایش نام سند
گزینههای حذف
گزینه 1: استفاده از document_type دیگر
استفاده از manual یا warehouse_transfer:
مزایا:
- حذف کامل
inventory_transfer - استفاده از
document_typeموجود یا جدید
معایب:
- نیاز به تغییر در تمام mappingها
- نیاز به migration دادههای موجود
- ممکن است با سایر اسناد manual تداخل داشته باشد
تغییرات لازم:
- تغییر
warehouse_service.py: استفاده ازdocument_type='warehouse_transfer'یا'manual' - تغییر mappingها در
kardex_service.pyوdocument_repository.py - تغییر فیلتر در
kardex_page.dart - تغییر
document_model.dart - Migration دادههای موجود از
inventory_transferبهwarehouse_transfer
گزینه 2: عدم ایجاد سند حسابداری برای انتقال موجودی
فلسفه:
- انتقال موجودی بین انبارها یک عملیات فیزیکی است
- نیازی به ثبت در حسابداری ندارد (چون مبلغی ندارد)
- فقط در موجودی فیزیکی انبار ثبت میشود
مزایا:
- حذف کامل
inventory_transfer - سادهتر شدن سیستم
- تفکیک کامل بین حسابداری و انبارداری
معایب:
- انتقال موجودی در کاردکس نمایش داده نمیشود
- محاسبات موجودی حسابداری شامل انتقالها نمیشود
- ممکن است برای گزارشگیری مشکل ایجاد کند
تغییرات لازم:
- حذف ایجاد سند حسابداری از
post_warehouse_document - حذف
inventory_transferاز تمام mappingها - حذف فیلتر از
kardex_page.dart - حذف case از
document_model.dart
گزینه 3: استفاده از document_type جدید: warehouse_transfer
مزایا:
- نام واضحتر و متمایز
- حذف
inventory_transfer - عدم تداخل با سایر
document_typeها
معایب:
- نیاز به تغییر در تمام mappingها
- نیاز به migration دادههای موجود
تغییرات لازم:
- تغییر
warehouse_service.py: استفاده ازdocument_type='warehouse_transfer' - تغییر mappingها در
kardex_service.pyوdocument_repository.py - تغییر فیلتر در
kardex_page.dart - تغییر
document_model.dart - Migration دادههای موجود
توصیه
گزینه 3 (استفاده از warehouse_transfer) پیشنهاد میشود:
- نام واضحتر:
warehouse_transferبهتر ازinventory_transferاست - تفکیک بهتر: نشان میدهد که این سند از Warehouse Document ایجاد شده
- عدم تداخل: با سایر
document_typeها تداخل ندارد - سازگاری: همچنان در کاردکس و محاسبات موجودی استفاده میشود
فایلهای نیاز به تغییر
Backend
-
hesabixAPI/app/services/warehouse_service.py:- تغییر
document_type="inventory_transfer"بهdocument_type="warehouse_transfer" - تغییر prefix کد سند از
"ITR"به"WHT"(اختیاری)
- تغییر
-
hesabixAPI/app/services/kardex_service.py:- حذف
"inventory_transfer": "انتقال موجودی" - اضافه کردن
"warehouse_transfer": "انتقال موجودی"
- حذف
-
hesabixAPI/adapters/db/repositories/document_repository.py:- حذف
"inventory_transfer": "انتقال موجودی" - اضافه کردن
"warehouse_transfer": "انتقال موجودی"
- حذف
Frontend
-
hesabixUI/hesabix_ui/lib/pages/business/kardex_page.dart:- تغییر
FilterOption(value: 'inventory_transfer', ...)بهFilterOption(value: 'warehouse_transfer', ...)
- تغییر
-
hesabixUI/hesabix_ui/lib/models/document_model.dart:- تغییر
case 'inventory_transfer':بهcase 'warehouse_transfer':
- تغییر
Migration
- Migration Script:
- تبدیل تمام اسناد با
document_type='inventory_transfer'بهdocument_type='warehouse_transfer'
- تبدیل تمام اسناد با
سناریوی جایگزین: حذف کامل (گزینه 2)
اگر تصمیم بگیرید که انتقال موجودی نیازی به ثبت در حسابداری ندارد:
تغییرات:
-
hesabixAPI/app/services/warehouse_service.py:- حذف کامل بخش ایجاد سند حسابداری از
post_warehouse_document - فقط تغییر وضعیت Warehouse Document به
posted
- حذف کامل بخش ایجاد سند حسابداری از
-
حذف از mappingها:
kardex_service.pydocument_repository.py
-
حذف از Frontend:
kardex_page.dart(فیلتر)document_model.dart(case)
نتیجه:
- انتقال موجودی فقط در
warehouse_documentsثبت میشود - در کاردکس و محاسبات موجودی حسابداری نمایش داده نمیشود
- تفکیک کامل بین حسابداری و انبارداری
سوالات برای تصمیمگیری
-
آیا انتقال موجودی باید در کاردکس نمایش داده شود؟
- اگر بله → گزینه 3 (استفاده از
warehouse_transfer) - اگر خیر → گزینه 2 (عدم ایجاد سند حسابداری)
- اگر بله → گزینه 3 (استفاده از
-
آیا محاسبات موجودی حسابداری باید شامل انتقالها باشد؟
- اگر بله → گزینه 3
- اگر خیر → گزینه 2
-
آیا دادههای موجود از
inventory_transferدارید؟- اگر بله → نیاز به migration
- اگر خیر → میتوانید مستقیماً تغییر دهید