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