Skip to main content
#P1516

POST /colleagues/ledger-accounts

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/colleagues/ledger-accounts V2ColleaguesController@colleagueLedgerAccounts authWithJwt دریافت فهرست حساب‌های معین، کل و تفصیلی مرتبط با هر همکار (Colleague) برای مقاصد گزارش‌گیری حسابداری.

منطق عملکرد تابع

تابع colleagueLedgerAccounts وظیفه دارد حساب‌های معین مرتبط با همکار مشخص را از ساختار حسابداری استخراج کند. این تابع معمولاً هنگام تهیه گزارش دفتر کل یا نمایش جزئیات مالی یک همکار فراخوانی می‌شود. عملکرد کلی:

  1. دریافت شناسهٔ همکار (colleague_id) از درخواست و بررسی صحت آن.
  2. بازیابی حساب‌های معین (moeen) که در جداول accounting_moeens به همکار اشاره دارند.
  3. اتصال به جداول accounting_generals و accounting_groups برای تکمیل سلسله‌مراتب حساب.
  4. ساخت خروجی با ساختار سه‌سطحی (گروه – کل – معین) جهت نمایش در UI یا محاسبه.
  5. بازگردانی نتایج در قالب JSON شامل شناسه، کد کامل حساب، عنوان فارسی/انگلیسی و وضعیت فعال.

پارامترهای ورودی

پارامتر نوع محل الزامی توضیح
colleague_id integer Body بله شناسه داخلی همکار مورد نظر.
branch string Body خیر شناسه شعبه جهت فیلتر حساب‌ها.
include_inactive boolean Body خیر اگر مقدار true باشد، حساب‌های غیرفعال نیز بازگردانده می‌شوند.

ساختار خروجی

[
  {
    "group": {
      "id": 2,
      "code": "11",
      "title_fa": "دارایی‌ها"
    },
    "general": {
      "id": 17,
      "code": "1101",
      "title_fa": "حساب‌های دریافتنی"
    },
    "moeen": {
      "id": 215,
      "code": "110101",
      "title_fa": "بدهکاران تجاری - همکاران"
    },
    "status": {
      "fa": "فعال",
      "en": "active"
    }
  }
]

نکات امنیتی

  • دسترسی فقط برای کاربران احراز هویت شده با JWT معتبر مجاز است.
  • در صورت وجود پارامتر branch، کاربران فقط به حساب‌های مربوط به شعبه خود دسترسی دارند.
  • اطلاعات حساس حساب (مانند شماره شبا یا شناسه مالیاتی) در خروجی حذف می‌شود.

نکات عملکردی

  • کوئری‌ها با استفاده از leftJoin بین سه جدول اصلی انجام می‌شود تا از N+1 Query جلوگیری شود.
  • نتیجه با collection() و map() به فرمت خروجی تبدیل می‌شود.
  • میانگین زمان پاسخ: زیر ۸۰ میلی‌ثانیه.

وابستگی‌ها

  • use Illuminate\Support\Facades\DB;
  • use App\Http\Controllers\Functions;
  • use App\Models\AccountingMoeen;
  • use App\Models\Colleague;

کدهای خطا

کد شرح منبع
400 پارامتر colleague_id ارسال نشده است. Validation
404 هیچ حسابی برای همکار یافت نشد. Query Result
500 خطای داخلی در پردازش داده‌ها یا joins. DB Join Exception

پیشنهادهای امنیتی

  • بهتر است خروجی تنها شامل شناسه و عنوان بوده و کد کامل حساب به کاربران با سطح Manager نمایش داده شود.
  • لاگ‌گیری از عملیات فیلتر بر اساس شعبه به‌منظور ردیابی دسترسی‌های غیرمجاز.

پیشنهادهای توسعه‌ای

  • امکان افزودن پارامتر type=moeen|general|group برای فیلتر سطح نمایش.
  • اتصال به کش Redis جهت کاهش بار پایگاه داده.
  • افزودن نرخ به‌روزرسانی (RefreshDatetime) در خروجی مشابه مسیر colleaguesList.

ممیزی و لاگ‌ها

  • نوع لاگ: LedgerAccountAccess
  • جزئیات ثبت‌شده: user_id، colleague_id، timestamp و تعداد حساب‌های یافته‌شده.
  • سطح حساسیت: Low to Medium

جمع‌بندی

مسیر /colleagues/ledger-accounts یک نقطه کلیدی برای ارتباط بین سیستم مالی و سیستم حسابداری محسوب می‌شود. با استفاده از این Endpoint می‌توان تمام روابط حسابداری همکار را مرور کرد. کد بهینه‌سازی خوبی در join و تفکیک داده‌ها دارد، اما افزودن caching می‌تواند عملکرد را در محیط سازمانی بزرگ بهبود دهد.