إنتقل إلى المحتوى الرئيسي

الماكرو

لا يمكن تغطية بدلات العمل الليلي أو عمل الأحد أو أيام العطل، أو حساب الساعات الدقيق للإجازات والخدمة العسكرية، بصيغة ثابتة واحدة تناسب كل مؤسسة. لهذا السبب، في الإعدادات > الماكرو، تكتبون نصوصًا برمجية صغيرة خاصة بكم بلغة تشبه BASIC.

كيف يعمل الأمر

الغرض من الماكرو: يحسب الماكرو من بيانات دوام عمل (Work) أو وظيفة قيمة إرجاع واحدة — عادة بدل بالساعات أو بالفرنك. تُحفظ النتيجة في Work.Surcharges وتدخل تلقائيًا في تقييم الساعات (ClientPeriodHours). ينتمي كل ماكرو إلى نوع معين — وردية/وظيفة أو قواعد عمل — ويمكن تسميته وتعديله وحذفه مثل أي إعداد آخر.

البيانات المتاحة: عبر IMPORT تتوفر في النص البرمجي، من بين أمور أخرى، hour (ساعات العمل)، وfromhour/untilhour (وقت البدء/الانتهاء كساعات عشرية)، وweekday (وفق ISO-8601: 1 = الاثنين … 7 = الأحد)، وholiday/holidaynextday (ما إذا كان اليوم الحالي أو التالي عطلة)، بالإضافة إلى نسب البدلات المحددة في العقد nightrate وholidayrate وsarate (السبت) وsorate (الأحد).

نطاق اللغة: تحتوي لغة البرمجة على بنى تحكم (IF…THEN…ELSEIF…ELSE…ENDIF، SELECT CASE، FOR…NEXT، DO…LOOP)، ودوال خاصة (FUNCTION) وإجراءات (SUB، يجب تعريفها قبل أول استدعاء لها)، كما تحتوي على دوال مدمجة للنصوص والرياضيات والمثلثات والوقت (مثل TimeToHours وTimeOverlap للفترات الممتدة عبر منتصف الليل). تُعاد النتيجة عبر OUTPUT typ, wert.

الاختبار في المحرر: يحتوي محرر الماكرو على تبويب اختبار خاص به: تُدخلون قيمًا نموذجية للمتغيرات المستوردة، وتتحققون من صحة الصياغة، وتنفذون النص البرمجي تجريبيًا. تعرض DEBUGPRINT/DEBUGCLEAR قيمًا إضافية في نافذة الاختبار دون التأثير على قيمة الإرجاع الفعلية.

الأمان: يعمل المفسِّر في بيئة معزولة (sandbox) دون إمكانية الوصول إلى نظام الملفات أو الشبكة — يمكن للماكرو أن يخطئ في الحساب، لكن لا يمكنه إحداث ضرر خارج نطاق الحساب.

من الجيد معرفته

  • تُعرِّف DIM متغيرًا دون تهيئته في الوقت نفسه — فـ DIM x = 10 خطأ في الصياغة، بل يجب DIM x أولًا ثم x = 10 بشكل منفصل.
  • تُكتب الكلمات المفتاحية مثل ENDIF وENDFUNCTION وENDSUB متصلة، وليس بفراغ بينها.
  • تتبع weekday معيار ISO-8601 دائمًا (1 = الاثنين … 7 = الأحد) — عند كتابة استعلامات SELECT CASE خاصة بـ"نهاية الأسبوع"، فإن القيمتين المقصودتين هما 6 (السبت) و7 (الأحد).

جرّبوا مباشرة: ملعب Klacks — تسجيل الدخول admin@test.com / P@ssw0rt1، تتم إعادة ضبط البيانات يوميًا.