حساب رصيد الإجازة المتراكم مع الحد الأقصى
تحول هذه الحاسبة معدل استحقاق الإجازة لكل فترة دفع إلى الرصيد الحالي. أدخلوا المقدار المستحق في كل فترة وعدد الفترات المكتملة. إذا كانت السياسة تضع حداً للرصيد الذي يجوز الاحتفاظ به، فأضيفوا ذلك الحد. تعرض النتيجة أيضاً المبلغ قبل التقييد وما إذا كان الحد قد غيّر الرصيد النهائي، مما يتيح لكم شرح الحساب ومراجعته وإعادة استخدامه بسهولة.
شغّل الأداة مجانًا
حولوا سياسة الاستحقاق إلى مدخلات صحيحة
ابدؤوا بمعدل الاستحقاق الوارد في سياسة الإجازات. قد يكون بالساعات لكل فترة دفع أسبوعية أو نصف شهرية أو شهرية، أو بالأيام إذا كانت المؤسسة تسجل الإجازات بالأيام دائماً. أدخلوا هذا المقدار بوصفه معدل الاستحقاق، ثم احسبوا الفترات التي اكتملت فعلاً حتى التاريخ المطلوب فقط. تضرب الحاسبة القيمتين، ولذلك يجب أن تستندا إلى الأساس الزمني نفسه. يجب إقران المعدل نصف الشهري بفترات نصف شهرية، لا بأشهر تقويمية. تقبل كسور الفترات عندما تنص السياسة على الاستحقاق النسبي، لكن يجب أن يأتي الكسر من القاعدة الرسمية. لا تخلطوا الساعات بالأيام، لأن النتيجة تحتفظ بوحدة المعدل. لا تفترض الأداة جدولاً أو تاريخ تعيين أو تقويم رواتب. وهكذا تبقى الافتراضات واضحة، ويمكن لإدارة الموارد البشرية أو الرواتب تقديم عدد الفترات الدقيق الذي تعترف به السياسة.
افهموا الرصيد قبل الحد وبعده
الرصيد غير المقيد هو حاصل ضرب معدل الاستحقاق في عدد الفترات المنقضية. عند عدم إدخال حد أقصى، يكون هذا الناتج هو الرصيد المتراكم أيضاً، ويكون مؤشر تطبيق الحد غير صحيح. إذا أدخلتم حداً، تقارن الحاسبة القيمتين. عندما يكون الناتج أكبر، يخفض الرصيد النهائي إلى الحد ويصبح المؤشر صحيحاً. تبقى القيمة الأصلية في الإجابة لبيان ما كان سيستحق دون القيد. إذا ساوى الناتج الحد تماماً، فلم يحدث تخفيض، ولذلك يبقى المؤشر غير صحيح رغم بلوغ السقف. يجوز أن يكون الحد صفراً، كما يجوز أن يكون المعدل أو عدد الفترات صفراً. لا يزيل الحساب إلا ضوضاء الفاصلة العائمة الضئيلة، ولا يفرض قاعدة تقريب خاصة بالرواتب. طبقوا قاعدة التقريب المعتمدة لدى مؤسستكم قبل إرسال المدخلات أو بعد استلام النتيجة.
استخدموا النتيجة في إجراءات الرواتب والإجازات
استخدموا الرصيد المتراكم كنقطة تحقق، لا كسجل إجازات كامل. فقد يحتاج السجل الفعلي إلى رصيد افتتاحي وإجازات مستخدمة وتعديلات يدوية وقواعد ترحيل وفترات انتظار وتوقفات في الاستحقاق. لا تفترض هذه القدرة تلك الأحداث، بل تجيب عن سؤال محدد: كم يتراكم بمعدل ثابت خلال عدد معلوم من الفترات مع حد اختياري؟ لذلك تناسب جداول البيانات وتقديرات التعيين ومطابقة الرواتب ومقارنة السياسات والتدقيق الآلي. احتفظوا بالمدخلات مع النتيجة كي يستطيع مراجع آخر إعادة الحساب وتأكيد نسخة السياسة المستخدمة. تبلغ كلفة كل طلب آلي $0.002. ترفض معدلات الاستحقاق السلبية؛ فسجلوا استخدام الإجازة والتصحيحات بصورة منفصلة. إذا تغير المعدل خلال السنة، فاحسبوا كل مقطع مستقلاً واجمعوا النتائج وفق السياسة المعتمدة.
حالات الاستخدام
التحقق من الاستحقاق الحالي
اضربوا معدل السياسة في الفترات المكتملة وتحققوا مما إذا كان الحد الأقصى يقيد النتيجة.
مطابقة حسابات الرواتب
قارنوا قيمة نظام الرواتب بالمبلغ غير المقيد والرصيد النهائي ومؤشر تطبيق الحد.
نمذجة سياسة الإجازات
اختبروا المعدلات والحدود عبر عدد مختار من الفترات دون إنشاء صيغة في جدول بيانات.
الأسئلة الشائعة
ما كلفة الحساب؟
تبلغ كلفة كل طلب API مقدار $0.002. ويحسب عنصر واحد لكل طلب.
ما الوحدة المستخدمة في النتيجة؟
تستخدم النتيجة وحدة المعدل نفسها؛ فالساعات تنتج ساعات، والأيام تنتج أياماً.
ماذا يحدث عند تجاوز الحد؟
يضبط الرصيد النهائي على الحد، وتصبح cap_applied صحيحة، بينما تحتفظ uncapped_balance بالناتج الأصلي.
هل يجوز أن يكون المعدل سلبياً؟
لا. ينتج المعدل السلبي خطأ في الإدخال. سجلوا الاستخدام أو الخصم في عملية منفصلة.
هل تقبل كسور فترات الدفع؟
نعم، عندما تنص السياسة على الاستحقاق النسبي ويلتزم الكسر بقاعدتها المعتمدة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/biz/pto-accrual-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"accrual_rate":3.5,"pay_periods_elapsed":12}'const res = await fetch("https://api.kit.forhosting.com/biz/pto-accrual-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"accrual_rate": 3.5,
"pay_periods_elapsed": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/pto-accrual-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"accrual_rate": 3.5,
"pay_periods_elapsed": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/pto-accrual-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"accrual_rate":3.5,"pay_periods_elapsed":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"accrual_rate":3.5,"pay_periods_elapsed":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/pto-accrual-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"accrual_rate": 3.5,
"pay_periods_elapsed": 12
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.pto_accrual_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |