매크로
야간·일요일·공휴일 근무 수당이나 휴가 및 군 복무 시의 정확한 시간 계산은 모든 사업장에 맞는 하나의 고정된 공식으로 커버할 수 없습니다. 설정 > 매크로에서 이를 위해 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 유형, 값을 통해 반환됩니다.
에디터에서 테스트하기: 매크로 에디터에는 자체 테스트 탭이 있습니다: 가져온 변수의 예시 값을 입력하고, 구문을 검사하고, 스크립트를 시험 삼아 실행할 수 있습니다. DEBUGPRINT/DEBUGCLEAR는 실제 반환 값에 영향을 주지 않으면서 테스트 창에 추가 값을 출력합니다.
보안: 인터프리터는 파일 시스템이나 네트워크에 접근할 수 없는 샌드박스에서 실행됩니다 — 매크로가 계산을 잘못 할 수는 있지만 계산 범위 밖에서 피해를 일으킬 수는 없습니다.
알아두면 좋은 점
DIM은 변수를 선언하지만 동시에 초기화하지는 않습니다 —DIM x = 10은 구문 오류이며, 먼저DIM x를 쓰고 별도로x = 10을 써야 합니다.ENDIF,ENDFUNCTION,ENDSUB같은 키워드는 띄어쓰기 없이 붙여서 씁니다.weekday는 항상 ISO-8601을 따릅니다(1 = 월요일 … 7 = 일요일) — 직접 "주말"을 판별하는SELECT CASE조건을 작성할 때는 6(토요일)과 7(일요일) 값을 사용해야 합니다.
직접 사용해 보기: Klacks Playground — 로그인 admin@test.com / P@ssw0rt1, 데이터는 매일 초기화됩니다.