{{ decision.title }}
{{ decision.summary }}
{{ isEmployee ? 'ترددها، نتیجهی محاسبه و درخواستهای خودت را در یک صفحه ببین.' : 'محاسبهی حضور، مرخصی و مجوزها با سابقهی قابل حسابرسی.' }}
{{ employeePortal.employee?.employee_id }} · فقط اطلاعات حساب پرسنلی شما نمایش داده میشود.
درخواستهای در انتظار از ماندهی قابل استفاده رزرو میشوند؛ مرخصی بدون حقوق فقط سابقهی مصرف دارد.
این جدول آخرین محاسبهی موفق دورهی انتخابشده را نشان میدهد و دادهی خام را تغییر نمیدهد.
| ردیف | تاریخ | روز | وضعیت | درخواست | ثبت | ورود | خروج | حضور عادی | کسرکار اولیه | کسرکار نهایی | اضافهکار عادی | عادی قابل پرداخت | اضافهکار تعطیلی | تعطیلی قابل پرداخت |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ day.work_date }} | {{ day.weekday }} | {{ day.source_status || '—' }} | — | رویداد: {{ day.unpaired_punch_time }}{{ day.entry || '—' }} | جهت نامشخص{{ day.exit || '—' }} | {{ formatMinutes(day.normal_presence_minutes) }} | {{ formatMinutes(day.gross_underwork_minutes) }} | {{ formatMinutes(day.underwork_minutes) }} | {{ formatMinutes(day.ordinary_overtime_minutes) }} | {{ formatMinutes(day.payable_ordinary_overtime_minutes) }} | {{ formatMinutes(day.holiday_overtime_minutes) }} | {{ formatMinutes(day.payable_holiday_overtime_minutes) }} |
{{ issue.message }}
تاریخ {{ issue.context?.work_date || issue.context?.from_date || '—' }}تا پیش از تصمیم مدیر میتوانی درخواست ثبتشدهی خودت را ویرایش یا پس بگیری.
| ردیف | تاریخ | نوع | مقدار | وضعیت تأیید | وضعیت تطبیق | شرح | عملیات |
|---|---|---|---|---|---|---|---|
| {{ employeeRequestRowNumber(index) }} | {{ item.work_date }} | {{ requestTypeLabel(item.request_type) }} | {{ requestAmountLabel(item) }} | {{ item.reason }} |
نمایش فشرده است؛ افزودن و ویرایش در پنجرهی مستقل انجام میشود.
| ردیف | شناسه | عنوان | ورود قابل محاسبه |
ورود بدون کسر |
موظفی عادی شنبه تا سهشنبه |
اضافهکار اجباری |
موظفی عادی چهارشنبه |
اضافهکار اجباری |
پنجشنبه | وضعیت | عملیات |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ profile.id }} |
{{ profile.name }} | {{ profile.ordinary_earliest_counted_entry }} | {{ profile.ordinary_latest_entry }} | {{ formatMinutes(profile.sat_tue_regular_minutes) }} | {{ formatMinutes(profile.sat_tue_mandatory_overtime_minutes) }} | {{ formatMinutes(profile.wednesday_regular_minutes) }} | {{ formatMinutes(profile.wednesday_mandatory_overtime_minutes) }} | {{ formatMinutes(profile.thursday_mandatory_overtime_minutes) }} |
|
|
کارکنان مستقل از CSV ماهانه ثبت میشوند. نام و نام خانوادگی عمداً جدا هستند و رکوردها بهجای حذف، غیرفعال میشوند.
| ردیف | وضعیت | عملیات | ||||
|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ employee.employee_id }} | {{ employeeDisplayName(employee) }} | {{ employee.source_employee_id || '—' }} | {{ employee.attendance_mode === 'exempt' ? 'معاف از ثبت تردد' : 'مشمول ثبت تردد' }} |
این فهرست مستقل از CSV ماهانه ذخیره میشود. موتور بدون انتساب معتبر هیچ برنامهای را حدس نمیزند.
| ردیف | برنامهی کاری | تاریخ شروع اثر |
|||
|---|---|---|---|---|---|
| {{ index + 1 }} | {{ row.employee_id }} | {{ employeeDisplayName(row) }} | {{ row.source_employee_id }} |
|
|
CSV را بازرسی یا استخراج کن؛ پس از ذخیرهی انتساب برنامههای کاری، محاسبهی آزمایشی دوره در دسترس است.
سهم هر دوره: ۲٫۵ روز باحقوق و ۱ روز استعلاجی. درخواستهای در انتظار از ماندهی قابل استفاده رزرو میشوند.
| ردیف | ماندهی انتقالی | سهم دوره | تعدیل | مصرف | در انتظار | مانده | سهم استعلاجی | مصرف | در انتظار | مانده | بدون حقوق | عملیات | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ item.employee_id }} | {{ employeeDisplayName(item) }} | {{ formatLeaveBalance(item.paid_opening_millidays) }} | {{ formatLeaveBalance(item.paid_entitlement_millidays) }} | {{ formatLeaveBalance(item.paid_adjustment_millidays) }} | {{ formatLeaveBalance(item.paid_used_millidays) }} | {{ formatLeaveBalance(item.paid_pending_millidays) }} | {{ formatLeaveBalance(item.paid_available_millidays) }} | {{ formatLeaveBalance(item.sick_entitlement_millidays) }} | {{ formatLeaveBalance(item.sick_used_millidays) }} | {{ formatLeaveBalance(item.sick_pending_millidays) }} | {{ formatLeaveBalance(item.sick_available_millidays) }} | {{ formatLeaveBalance(item.unpaid_used_millidays) }} |
فایل سالانه ابتدا اعتبارسنجی میشود؛ ثبت نسخهی جدید، سابقهی نسخههای پیشین را حذف نمیکند.
| ردیف | سال | نسخه | وضعیت | فایل | روزها | تعطیلات رسمی | ثبتکننده | زمان ثبت |
|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ item.calendar_year }} | {{ item.revision_number }} | {{ item.file_name }} | {{ item.day_count }} | {{ item.official_holiday_count }} | {{ item.imported_by }} | {{ formatDateTime(item.imported_at) }} |
تعطیلی آلودگی هوا یا تغییر روز کاری را روی همان تاریخ ثبت کن.
| ردیف | تاریخ شمسی | تاریخ میلادی | روز | نوع | اثر محاسباتی | مناسبت/عنوان | منبع | عملیات |
|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ day.jalali_date }} | {{ day.gregorian_date }} | {{ day.weekday }} | {{ calendarDayTypeLabel(day.day_type) }} | {{ calendarCalculationLabel(day.calculation_class) }} | {{ day.title || '—' }} |
دوره را پیش از دریافت CSV بساز؛ مهلت کارکنان، مدیران و زمان قفل برای هر دوره مستقل و قابل تنظیم است.
| ردیف | دوره | وضعیت | مهلت کارکنان | مهلت مدیران | قفل خودکار | منبع/محاسبه | کنترل آمادگی | عملیات |
|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ periodLabel(period) }} | {{ formatDateTime(period.employee_submission_deadline) }} | {{ formatDateTime(period.manager_decision_deadline) }} | {{ formatDateTime(period.lock_at) }} | {{ period.source_files?.length ? `${period.source_files.length} نسخه` : 'در انتظار CSV' }}{{ period.latest_calculated_at ? formatDateTime(period.latest_calculated_at) : 'بدون محاسبه' }} |
مرخصی، ورود زودهنگام و اضافهکار فقط پس از تأیید در محاسبه اعمال میشوند.
| ردیف | مدت | وضعیت تأیید | وضعیت تطبیق | شرح | عملیات | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ workflowRowNumber(index) }} | {{ employeeDisplayName(item) }} | {{ item.employee_id }} | {{ item.work_date }} | {{ requestTypeLabel(item.request_type) }} | {{ requestAmountLabel(item) }} | {{ item.reason }} |
گزارش محاسبهشدهی کارکنان مجاز را بر اساس دوره مشاهده و دریافت کن.
| ردیف | تاریخ | روز | وضعیت | درخواستها | ورود | خروج | حضور عادی | کسرکار اولیه | کسرکار نهایی | اضافهکار عادی | عادی قابل پرداخت | اضافهکار تعطیلی | تعطیلی قابل پرداخت |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ day.work_date }} | {{ day.weekday }} | {{ day.source_status || '—' }} | — | {{ day.entry || '—' }} | {{ day.exit || '—' }} | {{ formatMinutes(day.normal_presence_minutes) }} | {{ formatMinutes(day.gross_underwork_minutes) }} | {{ formatMinutes(day.underwork_minutes) }} | {{ formatMinutes(day.ordinary_overtime_minutes) }} | {{ formatMinutes(day.payable_ordinary_overtime_minutes) }} | {{ formatMinutes(day.holiday_overtime_minutes) }} | {{ formatMinutes(day.payable_holiday_overtime_minutes) }} |
این نگاشت تاریخدار، مسیر تأیید را تعیین میکند و جایگزین ساختار سازمانی TIAS Core نیست.
| ردیف | تأییدکننده | شروع اثر | ||
|---|---|---|---|---|
| {{ index + 1 }} | {{ row.employee_id }} | {{ employeeDisplayName(row) }} |
حساب اشتباه حذف فیزیکی نمیشود؛ آن را ویرایش یا غیرفعال کن تا سابقهی حسابرسی محفوظ بماند.
| ردیف | وضعیت | عملیات | |||||
|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ user.username }} | {{ accountDisplayName(user) }} | {{ user.display_name || '—' }} | {{ (user.roles || [user.role]).map(roleLabel).join('، ') }} | {{ user.employee_id || '—' }} |
نسخههای محاسبه و تغییرات مهم بدون بازنویسی سوابق قبلی نگهداری میشوند.
رویدادهای موفق و ناموفق احراز هویت؛ بدون ذخیرهی رمز عبور یا محتوای حساس.
| ردیف | زمان | رویداد | نام کاربری | نتیجه | IP | مرورگر |
|---|---|---|---|---|---|---|
| {{ (authenticationPagination.page - 1) * authenticationPagination.page_size + index + 1 }} | {{ formatDateTime(event.occurred_at) }} | {{ authenticationEventLabel(event.event_type) }} | {{ event.username }} | {{ event.ip_address || '—' }} | {{ event.user_agent || '—' }} |
| ردیف | شناسهی اجرا | زمان ثبت | فایل مبدأ | دوره | وضعیت | کارکنان | خروجی خلاصه |
|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ shortId(run.id) }} |
{{ formatDateTime(run.generated_at) }} | {{ run.source_file }} | {{ run.report_period?.from }} – {{ run.report_period?.to }} | {{ run.summary?.employee_count || 0 }} |
| ردیف | زمان | عملیات | نوع موجودیت | شناسه | عامل | دلیل |
|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ formatDateTime(event.occurred_at) }} | {{ actionLabel(event.action) }} | {{ event.entity_type }} | {{ shortId(event.entity_id) }} |
{{ event.actor }} | {{ event.reason || '—' }} |
{{ decision.summary }}
{{ requestTypeLabel(decisionForm.request.request_type) }} برای {{ decisionForm.request.employee_id }} در تاریخ {{ decisionForm.request.work_date }}
{{ decisionForm.request.start_time }} – {{ decisionForm.request.end_time || '—' }}
{{ passwordForm.user?.display_name }}
{{ action.note || 'بدون توضیح' }}
برای حذف «{{ scheduleToDelete.name }}» عنوان برنامه را وارد کن. برنامهی منتسبشده قابل حذف نیست.
| ردیف | شناسه | نام | روز نامعتبر |
موظفی عادی |
حضور خام |
حضور مؤثر |
حضور عادی |
کسرکار اولیه |
مرخصی باحقوق |
مرخصی استعلاجی |
مرخصی بدون حقوق |
کارکرد عادی قابل پرداخت |
مصرف باحقوق (روز) |
مانده باحقوق (روز) |
مصرف استعلاجی (روز) |
مانده استعلاجی (روز) |
کسرکار نهایی |
اضافهکار عادی |
عادی قابل پرداخت |
اضافهکار تعطیلی |
تعطیلی قابل پرداخت |
کسری تعهد اضافهکار |
تأخیر |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ index + 1 }} | {{ employee.employee_id }} | {{ employeeName(employee.employee_id) }} | {{ employee.summary.invalid_day_count }} | {{ formatMinutes(employee.summary.required_minutes) }} | {{ formatMinutes(employee.summary.raw_presence_minutes) }} | {{ formatMinutes(employee.summary.eligible_presence_minutes) }} | {{ formatMinutes(employee.summary.normal_presence_minutes) }} | {{ formatMinutes(employee.summary.gross_underwork_minutes) }} | {{ formatMinutes(employee.summary.paid_leave_minutes) }} | {{ formatMinutes(employee.summary.sick_leave_minutes) }} | {{ formatMinutes(employee.summary.unpaid_leave_minutes) }} | {{ formatMinutes(employee.summary.payable_regular_minutes) }} | {{ formatLeaveDays(employee.summary.paid_leave_consumed_millidays) }} | {{ formatLeaveDays(employee.summary.paid_leave_remaining_millidays) }} | {{ formatLeaveDays(employee.summary.sick_leave_consumed_millidays) }} | {{ formatLeaveDays(employee.summary.sick_leave_remaining_millidays) }} | {{ formatMinutes(employee.summary.underwork_minutes) }} | {{ formatMinutes(employee.summary.ordinary_overtime_minutes) }} | {{ formatMinutes(employee.summary.payable_ordinary_overtime_minutes) }} | {{ formatMinutes(employee.summary.holiday_overtime_minutes) }} | {{ formatMinutes(employee.summary.payable_holiday_overtime_minutes) }} | {{ formatMinutes(employee.summary.mandatory_overtime_shortfall_minutes) }} | {{ formatMinutes(employee.summary.late_minutes) }} |
{{ issue.message }}
شناسه {{ issue.context.employee_id || '—' }} · تاریخ {{ issue.context.work_date || issue.context.from_date || '—' }}| شناسهی تیاس |
شناسهی زمانپرداز |
نام | ردیفهای منبع |
روزها | بازههای تردد |
|---|---|---|---|---|---|
| {{ employee.employee_id || '—' }} | {{ employee.source_employee_id || '—' }} | {{ employee.employee_name || '—' }} | {{ employee.source_rows.first }}–{{ employee.source_rows.last }} | {{ employee.days.length }} | {{ employee.days.reduce((sum, day) => sum + day.intervals.length, 0) }} |
{{ issue.message }}
ردیف {{ issue.context.row || '—' }} · شناسه {{ issue.context.employee_id || '—' }} · تاریخ {{ issue.context.work_date || '—' }}