Skip to main content
#P1544

POST /personnel/bill

Route Info

Method Endpoint Controller Middleware Purpose
POST /personnel/bill OfficialController@personnelBill authWithJwt بازیابی و نمایش صورت‌حساب مالی پرسنل با جزییات اسناد و مانده

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

این متد بر اساس شناسه پرسنل داده‌شده، تمام تراکنش‌های مالی مرتبط (دریافت، پرداخت، اسناد دستی، افتتاحیه/اختتامیه) را واکشی می‌کند، آن‌ها را بر اساس تاریخ مرتب می‌نماید و در قالب ساختار صورت‌حساب یکپارچه بازمی‌گرداند.

  1. دریافت پارامترهای جستجو از $Data->advanced و اعمال فیلتر بازه تاریخ یا شماره سند.
  2. واخوانی فاکتورهای پرداخت (pay) از جدول pays با شرایط مربوط به پرسنل (functor/object).
  3. تشخیص نوع سند: سند عملیات رفرنس، سند کارمزدی، سند دستی، یا عملیات دریافت/پرداخت.
  4. ساخت آبجکت‌ جزئیات شامل عنوان، نوع سند، مبلغ بدهکار/بستانکار و تشخیص وضعیت (diagnosis).
  5. مرتب‌سازی آیتم‌ها بر اساس زمان.
  6. افزودن سند افتتاحیه از جدول financial_pasts اگر موجود بود و شرایط اجازه می‌داد.
  7. بازگرداندن پاسخ شامل داده‌ها، جزئیات شخص، و اطلاعات فیلتر.

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

نام محل نوع الزامی توضیح
id Body integer بله شناسه پرسنل
Data.advanced.from Body string خیر تاریخ شروع (YYYY-MM-DD)
Data.advanced.to Body string خیر تاریخ پایان (YYYY-MM-DD)
Data.advanced.r Body mixed خیر شماره/سریال سند
Data.draw Body integer خیر شناسه درخواست برای DataTables

ساختار خروجی

{
  "draw": 1,
  "recordsTotal": 100,
  "recordsFiltered": 10,
  "filtered": {
    "from": "2025-05-01",
    "to": "2025-06-01"
  },
  "details": {
    "id": 23,
    "first_name": "مریم",
    "last_name": "اکبری",
    "branch": "اصفهان"
  },
  "data": [
    {
      "serial_id": "5100",
      "system_serial": 23,
      "datetime": "1404/02/15 00:00:00",
      "details": {
        "title": {
          "html": "سند افتتاحیه",
          "text": "سند افتتاحیه"
        },
        "type": {
          "subject": "financial_past",
          "title": "افتتاحیه"
        }
      },
      "credit": 2000000,
      "debit": 0,
      "diagnosis": "creditor"
    }
  ]
}

نکات امنیتی

  • دسترسی فقط برای کاربران احراز شده با JWT.
  • اطمینان از اینکه id درخواست‌شده متعلق به پرسنل مجاز است.

عملکرد

  • چندین کوئری به جداول pays، manual_documents، financial_pasts با ایندکس مناسب.
  • مرتب‌سازی آرایه‌ها در PHP — بهینه‌سازی با usort.

Dependencies

  • Illuminate\Support\Facades\DB
  • Carbon\Carbon
  • Morilog\Jalali\Jalalian

کدهای خطا

کد شرح منبع
404 پرسنل یافت نشد DB query
500 خطای داخلی دیتابیس/پردازش Exception Handler

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

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

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

  • افزودن قابلیت صفحه‌بندی نتایج برای درخواست‌های بزرگ.
  • گزارش PDF خروجی صورت‌حساب.

ممیزی و ثبت وقایع

  • ثبت همه درخواست‌های صورت‌حساب در جدول audit با شناسه کاربر و زمان درخواست.

جمع‌بندی

personnelBill امکان مشاهده جامع تاریخچه مالی پرسنل را فراهم می‌کند و داده‌ها را در قالب ساختار سندی استاندارد بازمی‌گرداند.