# POST /check/operation/update

<div id="bkmrk-" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"><table border="1" cellpadding="6" style="width: 96%; margin: 15px auto; text-align: center; border-collapse: collapse;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>Method</td><td>Endpoint</td><td>Controller</td><td>Middleware</td><td>Purpose</td></tr><tr><td dir="ltr">POST</td><td dir="ltr">/api/v2/check/operation/update</td><td dir="ltr">V2CreditDebitController@operationUpdateCheck</td><td dir="ltr">authWithJwt</td><td dir="rtl">به‌روزرسانی اطلاعات عملیات چک (operation record) شامل نوع، تاریخ و توضیحات، و بروز رسانی کش مالی.</td></tr></tbody></table>

</div>### منطق عملکرد تابع

تابع **operationUpdateCheck** برای تغییر جزئیات یک عملیات ثبت‌شده روی چک استفاده می‌شود، مانند اصلاح نوع عملیات (`type`)، تاریخ اجرا، توضیحات یا وضعیت آن.

ابتدا رکورد عملیات از جدول `check_operations` واکشی و اعتبارسنجی می‌شود. سپس تغییرات ذخیره شده و هرگونه وابستگی مبلغ یا وضعیت چک هماهنگ می‌گردد. پس از آن کش Redis مرتبط با گزارش چک و مالی شعبه ریفرش می‌شود.

<div id="bkmrk--1" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"></div>### ورودی‌ها

<div id="bkmrk-%D9%86%D8%A7%D9%85-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D9%85%D9%86%D8%A8%D8%B9" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"><table border="1" cellpadding="6" style="width: 94%; margin: 15px auto; text-align: center; border-collapse: collapse;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>نام پارامتر</td><td>نوع</td><td>منبع</td><td>الزامی</td><td>توضیح</td></tr><tr><td>operation\_id</td><td>integer</td><td>Body</td><td>بله</td><td>شناسه عملیات چک که باید بروزرسانی شود.</td></tr><tr><td>type</td><td>string</td><td>Body</td><td>خیر</td><td>نوع جدید عملیات (مانند `assignment`، `cash`، `clearing`).</td></tr><tr><td>date</td><td>string (YYYY-MM-DD)</td><td>Body</td><td>خیر</td><td>تاریخ جدید عملیات.</td></tr><tr><td>description</td><td>string</td><td>Body</td><td>خیر</td><td>توضیحات عملیات.</td></tr><tr><td>branch</td><td>integer</td><td>JWT/Header</td><td>بله</td><td>شناسه شعبه مالی مرتبط.</td></tr><tr><td>operator</td><td>object</td><td>JWT</td><td>بله</td><td>اطلاعات کاربری اجراکننده تغییر.</td></tr></tbody></table>

</div>### خروجی (Response)

```
{
  "status": true,
  "time": 1732287600,
  "result": {
    "operation_id": 305,
    "updated_fields": ["type", "description"],
    "cache": "financial:branch:5:refreshed",
    "message": "جزئیات عملیات چک با موفقیت بروزرسانی شد"
  }
}
```

<div id="bkmrk--2" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"></div>### نکات امنیتی

<div id="bkmrk-%D9%85%D8%AC%D9%88%D8%B2-%D9%86%D9%82%D8%B4%3A-financial." style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- مجوز نقش: `financial.check.operation.update` ضروری است.
- رکورد عملیات باید به شعبه کاربر تعلق داشته باشد.
- تمام تغییرات در جدول ممیزی `audit_logs` ذخیره می‌شود.

</div>### نکات عملکردی

<div id="bkmrk-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-%D8%A8%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%DB%8C-%D8%AF%D8%B1-" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- عملیات بروزرسانی در تراکنش پایگاه داده انجام می‌شود.
- بازسازی کش محدود به این چک و شعبه انجام می‌گیرد.
- TTL کش‌های جدید: 300 ثانیه.

</div>### وابستگی‌ها

<div id="bkmrk-use-illuminate%5Csuppo" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- use Illuminate\\Support\\Facades\\DB;
- use Illuminate\\Support\\Facades\\Redis;
- use Carbon\\Carbon;
- use App\\Models\\CheckOperation;
- use App\\Helpers\\Functions;

</div>### کدهای خطا

<div id="bkmrk-%DA%A9%D8%AF-%D8%B4%D8%B1%D8%AD-%D8%AE%D8%B7%D8%A7-%D9%85%D9%86%D8%A8%D8%B9-400-" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"><table border="1" cellpadding="6" style="width: 90%; margin: 15px auto; text-align: center; border-collapse: collapse;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>کد</td><td>شرح خطا</td><td>منبع</td></tr><tr><td>400</td><td>ورودی‌ها ناقص یا نامعتبر.</td><td>Validator</td></tr><tr><td>403</td><td>دسترسی غیرمجاز برای بروزرسانی عملیات چک.</td><td>authWithJwt</td></tr><tr><td>404</td><td>شناسه عملیات یافت نشد.</td><td>DB</td></tr><tr><td>500</td><td>خطا در به‌روزرسانی یا بازسازی کش.</td><td>Exception Handler</td></tr></tbody></table>

</div>### پیشنهادهای امنیتی

<div id="bkmrk-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D8%AA%D8%A3%DB%8C%DB%8C%D8%AF-%D8%AF%D9%88%D9%85%D8%B1%D8%AD%D9%84%D9%87%E2%80%8C" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- اعمال تأیید دومرحله‌ای برای تغییرات حساس.
- ثبت IP و User-Agent اپراتور در لاگ ممیزی.
- اعمال محدودیت تعداد تغییر در بازه زمانی مشخص.

</div>### پیشنهادهای بهبود

<div id="bkmrk-%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86-%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D9%86" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- افزودن پشتیبانی از نسخه‌بندی تغییرات عملیات چک.
- امکان بروزرسانی گروهی عملیات‌های مشابه.
- ارسال اعلان خودکار به ذینفعان در تغییر وضعیت عملیات.

</div>### ممیزی و لاگ‌ها

<div id="bkmrk-%D9%86%D9%88%D8%B9-%D9%84%D8%A7%DA%AF%3A-operationup" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;">- نوع لاگ: `OperationUpdateCheck`.
- فیلدها: `operation_id, branch, operator_id, updated_fields, timestamp`.
- مدت نگهداری: ۹۰ روز.

</div>### جمع‌بندی

تابع **operationUpdateCheck** ابزار اصلی برای اصلاح داده‌های عملیات ثبت‌شده روی چک است و با اعتبارسنجی، حفظ وابستگی‌ها و بازسازی کش‌ها داده‌ها را پایدار و به‌روز نگه می‌دارد.

<div id="bkmrk-operation-update-check" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"></div>