Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/INVENTORY_TRANSFER_COMPLETE_REMOVAL_SCENARIO.md
2026-04-14 19:34:55 +03:30

6.8 KiB
Executable file
Raw Permalink Blame History

سناریوی حذف کامل inventory_transfer

سوال اصلی

آیا می‌توان inventory_transfer را به عنوان document_type کاملاً حذف کرد؟

وضعیت فعلی

استفاده از inventory_transfer:

  1. در warehouse_service.py:

    • وقتی یک Warehouse Document با doc_type='transfer' پست می‌شود
    • یک سند حسابداری با document_type='inventory_transfer' ایجاد می‌شود
    • این سند در کاردکس و محاسبات موجودی استفاده می‌شود
  2. در kardex_service.py:

    • mapping برای نمایش نام: "inventory_transfer": "انتقال موجودی"
  3. در document_repository.py:

    • mapping برای نمایش نام: "inventory_transfer": "انتقال موجودی"
  4. در kardex_page.dart:

    • فیلتر برای نمایش در کاردکس: FilterOption(value: 'inventory_transfer', label: t.warehouseTransfers)
  5. در document_model.dart:

    • case برای نمایش نام سند

گزینه‌های حذف

گزینه 1: استفاده از document_type دیگر

استفاده از manual یا warehouse_transfer:

مزایا:

  • حذف کامل inventory_transfer
  • استفاده از document_type موجود یا جدید

معایب:

  • نیاز به تغییر در تمام mapping‌ها
  • نیاز به migration داده‌های موجود
  • ممکن است با سایر اسناد manual تداخل داشته باشد

تغییرات لازم:

  1. تغییر warehouse_service.py: استفاده از document_type='warehouse_transfer' یا 'manual'
  2. تغییر mapping‌ها در kardex_service.py و document_repository.py
  3. تغییر فیلتر در kardex_page.dart
  4. تغییر document_model.dart
  5. Migration داده‌های موجود از inventory_transfer به warehouse_transfer

گزینه 2: عدم ایجاد سند حسابداری برای انتقال موجودی

فلسفه:

  • انتقال موجودی بین انبارها یک عملیات فیزیکی است
  • نیازی به ثبت در حسابداری ندارد (چون مبلغی ندارد)
  • فقط در موجودی فیزیکی انبار ثبت می‌شود

مزایا:

  • حذف کامل inventory_transfer
  • ساده‌تر شدن سیستم
  • تفکیک کامل بین حسابداری و انبارداری

معایب:

  • انتقال موجودی در کاردکس نمایش داده نمی‌شود
  • محاسبات موجودی حسابداری شامل انتقال‌ها نمی‌شود
  • ممکن است برای گزارش‌گیری مشکل ایجاد کند

تغییرات لازم:

  1. حذف ایجاد سند حسابداری از post_warehouse_document
  2. حذف inventory_transfer از تمام mapping‌ها
  3. حذف فیلتر از kardex_page.dart
  4. حذف case از document_model.dart

گزینه 3: استفاده از document_type جدید: warehouse_transfer

مزایا:

  • نام واضح‌تر و متمایز
  • حذف inventory_transfer
  • عدم تداخل با سایر document_typeها

معایب:

  • نیاز به تغییر در تمام mapping‌ها
  • نیاز به migration داده‌های موجود

تغییرات لازم:

  1. تغییر warehouse_service.py: استفاده از document_type='warehouse_transfer'
  2. تغییر mapping‌ها در kardex_service.py و document_repository.py
  3. تغییر فیلتر در kardex_page.dart
  4. تغییر document_model.dart
  5. Migration داده‌های موجود

توصیه

گزینه 3 (استفاده از warehouse_transfer) پیشنهاد می‌شود:

  1. نام واضح‌تر: warehouse_transfer بهتر از inventory_transfer است
  2. تفکیک بهتر: نشان می‌دهد که این سند از Warehouse Document ایجاد شده
  3. عدم تداخل: با سایر document_typeها تداخل ندارد
  4. سازگاری: همچنان در کاردکس و محاسبات موجودی استفاده می‌شود

فایل‌های نیاز به تغییر

Backend

  1. hesabixAPI/app/services/warehouse_service.py:

    • تغییر document_type="inventory_transfer" به document_type="warehouse_transfer"
    • تغییر prefix کد سند از "ITR" به "WHT" (اختیاری)
  2. hesabixAPI/app/services/kardex_service.py:

    • حذف "inventory_transfer": "انتقال موجودی"
    • اضافه کردن "warehouse_transfer": "انتقال موجودی"
  3. hesabixAPI/adapters/db/repositories/document_repository.py:

    • حذف "inventory_transfer": "انتقال موجودی"
    • اضافه کردن "warehouse_transfer": "انتقال موجودی"

Frontend

  1. hesabixUI/hesabix_ui/lib/pages/business/kardex_page.dart:

    • تغییر FilterOption(value: 'inventory_transfer', ...) به FilterOption(value: 'warehouse_transfer', ...)
  2. hesabixUI/hesabix_ui/lib/models/document_model.dart:

    • تغییر case 'inventory_transfer': به case 'warehouse_transfer':

Migration

  1. Migration Script:
    • تبدیل تمام اسناد با document_type='inventory_transfer' به document_type='warehouse_transfer'

سناریوی جایگزین: حذف کامل (گزینه 2)

اگر تصمیم بگیرید که انتقال موجودی نیازی به ثبت در حسابداری ندارد:

تغییرات:

  1. hesabixAPI/app/services/warehouse_service.py:

    • حذف کامل بخش ایجاد سند حسابداری از post_warehouse_document
    • فقط تغییر وضعیت Warehouse Document به posted
  2. حذف از mapping‌ها:

    • kardex_service.py
    • document_repository.py
  3. حذف از Frontend:

    • kardex_page.dart (فیلتر)
    • document_model.dart (case)

نتیجه:

  • انتقال موجودی فقط در warehouse_documents ثبت می‌شود
  • در کاردکس و محاسبات موجودی حسابداری نمایش داده نمی‌شود
  • تفکیک کامل بین حسابداری و انبارداری

سوالات برای تصمیم‌گیری

  1. آیا انتقال موجودی باید در کاردکس نمایش داده شود؟

    • اگر بله → گزینه 3 (استفاده از warehouse_transfer)
    • اگر خیر → گزینه 2 (عدم ایجاد سند حسابداری)
  2. آیا محاسبات موجودی حسابداری باید شامل انتقال‌ها باشد؟

    • اگر بله → گزینه 3
    • اگر خیر → گزینه 2
  3. آیا داده‌های موجود از inventory_transfer دارید؟

    • اگر بله → نیاز به migration
    • اگر خیر → می‌توانید مستقیماً تغییر دهید