メインコンテンツまでスキップ

マクロ

夜間・日曜・祝日勤務の割増や、休暇・兵役における正確な労働時間計算は、すべての事業所に当てはまる固定の計算式ではカバーできません。設定 > マクロで、そのためにBASICに似た言語で独自の小さなスクリプトを記述します。

仕組み

マクロの用途: マクロは、ある勤務(Work)または雇用のデータから単一の戻り値 — 通常は時間または金額(フラン)による割増 — を計算します。結果はWork.Surchargesに保存され、自動的に労働時間集計(ClientPeriodHours)に反映されます。各マクロはあるタイプ — シフト/雇用または労働規則 — に属し、他の設定と同様に名前を付け、編集し、削除できます。

利用可能なデータ: IMPORTを通じて、スクリプト内ではhour(労働時間)、fromhour/untilhour(開始/終了時刻、10進数の時間表記)、weekday(ISO-8601: 1 = 月曜 … 7 = 日曜)、holiday/holidaynextday(当日または翌日が祝日かどうか)、さらに契約に定められた割増率nightrateholidayratesarate(土曜)、sorate(日曜)が利用できます。

言語仕様: このスクリプト言語には制御構造(IF…THEN…ELSEIF…ELSE…ENDIFSELECT CASEFOR…NEXTDO…LOOP)、独自の関数(FUNCTION)とプロシージャ(SUB、初回呼び出し前に定義されている必要があります)、さらに組み込みの文字列・数学・三角関数・時間関数(例: TimeToHours、深夜をまたぐ時間帯のためのTimeOverlap)があります。結果はOUTPUT typ, wertで返されます。

エディタでのテスト: マクロエディタには専用のテストタブがあります: インポートされる変数のサンプル値を入力し、構文をチェックし、スクリプトを試験的に実行します。DEBUGPRINT/DEBUGCLEARは、実際の戻り値に影響を与えることなく、テストウィンドウに追加の値を出力します。

セキュリティ: インタープリターは、ファイルシステムやネットワークへのアクセスを持たないサンドボックス内で動作します — マクロは計算を誤ることはあっても、計算の外に損害を及ぼすことはできません。

知っておくと良いこと

  • DIMは変数を宣言しますが、同時に初期化はしません — DIM x = 10は構文エラーです。まずDIM xとし、その後別途x = 10とします。
  • ENDIFENDFUNCTIONENDSUBのようなキーワードは、スペースを入れず一続きで記述します。
  • weekdayは一貫してISO-8601(1 = 月曜 … 7 = 日曜)に従います — 独自のSELECT CASEで「週末」を問い合わせる場合、これは6(土曜)と7(日曜)の値になります。

直接お試しください: Klacks Playground — ログイン admin@test.com / P@ssw0rt1、データは毎日リセットされます。