Thanks to visit codestin.com
Credit goes to github.com

Skip to content

junhyeong9812/payroll-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💰 payroll-calculator

대한민국 근로기준법 기반 급여 자동 계산 시스템

근무 기록을 입력하면 기본급, 연장근로수당, 야간근로수당, 휴일근로수당, 주휴수당을 자동으로 계산합니다.


📋 목차


개요

이 시스템은 시간 단위 분해(Hourly Decomposition) 방식을 사용하여, 날짜 경계를 넘는 연속 근무나 하루 여러 번 출근 등 복잡한 케이스를 정확하게 처리합니다.

⚠️ 적용 대상: 상시 근로자 5인 이상 사업장 (5인 미만 사업장은 가산수당 지급 의무 없음)

해결하는 문제들

상황 기존 방식의 문제 본 시스템의 해결
3일 연속 근무 날짜 경계에서 시간 누락 매 시간을 해당 날짜에 자동 배치
하루 두 번 출근 연장근로 합산 실패 날짜별 Map에 자동 합산
휴일→평일 연속 근무 평일에 휴일수당 오적용 날짜별로 수당 정확히 분리
주차 경계 근무 주휴수당 계산 오류 각 시간을 해당 주차에 배치

수당 계산 규칙 (근로기준법 기준)

1. 기본급 (Base Pay)

  • 조건: 실제 근무한 모든 시간
  • 계산: 총 근무 시간 × 통상시급
  • 근거: 근로계약에 따른 임금 지급

📌 주의: 3일 연속 근무의 경우, 날짜 경계에서 시간이 누락되지 않도록 각 날짜별로 정확히 분리하여 합산해야 합니다.


2. 연장근로수당 (Overtime Pay)

  • 조건: 1일 8시간 또는 1주 40시간을 초과하는 근로
  • 계산: 연장근로시간 × 통상시급 × 0.5 (가산분)
  • 가산율: 50%
  • 근거: 근로기준법 제56조 제1항

📌 핵심: 하루에 두 번 출근해서 4시간 + 5시간 일한 경우, 합산하여 9시간으로 인식해야 하며, 1시간의 연장근로수당이 발생합니다.

예시) 통상시급 10,000원, 하루 10시간 근무
- 기본급: 10시간 × 10,000원 = 100,000원
- 연장근로수당(가산분): 2시간 × 10,000원 × 0.5 = 10,000원
- 총액: 110,000원

3. 야간근로수당 (Night Shift Pay)

  • 조건: 오후 10시(22:00) ~ 오전 6시(06:00) 사이의 근로
  • 계산: 야간근로시간 × 통상시급 × 0.5 (가산분)
  • 가산율: 50%
  • 근거: 근로기준법 제56조 제1항

📌 특이점: 야간근로가 연장근로와 중복되는 경우, 각각의 가산수당이 별도로 적용됩니다.

예시) 통상시급 10,000원, 22:00~02:00 근무 (4시간, 연장근로 해당)
- 기본급: 4시간 × 10,000원 = 40,000원
- 연장근로수당(가산분): 4시간 × 10,000원 × 0.5 = 20,000원
- 야간근로수당(가산분): 4시간 × 10,000원 × 0.5 = 20,000원
- 총액: 80,000원 (통상시급의 200%)

4. 휴일근로수당 (Holiday Pay)

  • 조건: 근로기준법상 휴일(주휴일, 근로자의 날, 공휴일 등)에 근로
  • 계산:
    • 8시간 이내: 휴일근로시간 × 통상시급 × 0.5 (가산율 50%)
    • 8시간 초과: 초과시간 × 통상시급 × 1.0 (가산율 100%)
  • 근거: 근로기준법 제56조 제2항

📌 핵심: 휴일에서 평일로 넘어가는 연속 근무 시, 날짜가 바뀌는 **자정(00:00)**을 기점으로 수당 적용을 분리해야 합니다.

예시) 통상시급 10,000원, 일요일(휴일) 10시간 근무
- 기본급: 10시간 × 10,000원 = 100,000원
- 휴일근로수당(8시간 이내): 8시간 × 10,000원 × 0.5 = 40,000원
- 휴일근로수당(8시간 초과): 2시간 × 10,000원 × 1.0 = 20,000원
- 총액: 160,000원

5. 주휴수당 (Weekly Holiday Pay)

  • 조건:
    1. 1주 소정근로시간이 15시간 이상
    2. 1주간 소정근로일을 개근
  • 계산:
    • 주 40시간 이상 근무자: 8시간 × 통상시급
    • 주 40시간 미만 근무자: (주 소정근로시간 ÷ 40) × 8 × 통상시급
  • 근거: 근로기준법 제55조, 제18조 제3항

📌 핵심: 1주차 일요일 밤에 시작해 2주차 월요일 새벽에 끝난 근무는 각 주차별로 분리하여 해당 주의 근로시간에 포함시켜야 합니다.

예시) 통상시급 10,000원, 주 20시간 근무 (개근)
- 주휴수당: (20 ÷ 40) × 8 × 10,000원 = 40,000원

수당 중복 적용 정리

상황 적용 수당 총 가산율
평일 8시간 이내 기본급만 100%
평일 연장근로 기본급 + 연장 150%
평일 야간근로 (8시간 이내) 기본급 + 야간 150%
평일 연장 + 야간 기본급 + 연장 + 야간 200%
휴일 8시간 이내 기본급 + 휴일 150%
휴일 8시간 초과 기본급 + 휴일(100%) 200%
휴일 야간 (8시간 이내) 기본급 + 휴일 + 야간 200%
휴일 8시간 초과 + 야간 기본급 + 휴일(100%) + 야간 250%

핵심 설계 원칙

시간 단위 분해 (Hourly Decomposition)

근무 기록: 토요일 22시 ~ 월요일 06시 (휴일: 일요일)

→ 분해 결과:
  토요일: 22시, 23시 (2시간) - 야간 ✓
  일요일: 00시~23시 (24시간) - 휴일 ✓, 야간(00~06시) ✓
  월요일: 00시~05시 (6시간) - 야간(00~06시) ✓

각 시간이 자동으로 올바른 날짜/주차에 배치되어, 모든 수당이 정확하게 계산됩니다.


사용법

PayrollCalculator calc = new PayrollCalculator();

int[][] records = {
    {시작일, 시작시간, 종료일, 종료시간},
    // ...
};

long totalPay = calc.calculate(records, wage);

입력 형식

근무 기록 (int[][] records)

int[][] records = {
    {10, 22, 13, 6},   // 10일 22시 ~ 13일 06시
    {15, 9, 15, 13},   // 15일 09시 ~ 15일 13시
    {15, 18, 15, 23}   // 15일 18시 ~ 15일 23시
};
인덱스 의미 범위
0 시작일 1~31
1 시작시간 0~23
2 종료일 1~31
3 종료시간 0~23

통상시급 (int wage)

  • 시간당 임금 (원 단위)
  • 예: 10030 (2025년 최저시급 기준)

예제

예제 1: 휴일 포함 연속 근무

int[][] records = {
    {11, 22, 13, 6}  // 토요일 22시 ~ 월요일 06시 (일요일이 주휴일)
};
int wage = 10000;

// 분해:
// - 11일(토): 2시간 (야간 2시간)
// - 12일(일/휴일): 24시간 (휴일 24시간, 야간 6시간)
// - 13일(월): 6시간 (야간 6시간)

예제 2: 하루 두 번 출근 (연장근로 발생)

int[][] records = {
    {15, 9, 15, 13},   // 4시간
    {15, 18, 15, 23}   // 5시간
};
int wage = 10000;

// 15일 총 근무: 9시간
// 연장근로: 1시간 (9 - 8 = 1)
// 야간근로: 1시간 (22시~23시)

예제 3: 주휴수당 적용

int[][] records = {
    {1, 9, 1, 18},    // 월요일 9시간 (1시간 연장)
    {3, 9, 3, 15}     // 수요일 6시간
};
int wage = 10000;

// 1주차 총 근무: 15시간 (15시간 이상, 개근)
// 주휴수당: (15 ÷ 40) × 8 × 10,000 = 30,000원

계산 결과 예시

┌─────────────────────────────────────────┐
│            급 여 명 세 서                │
├─────────────────────────────────────────┤
│ 기본급                 │    560,000원   │
│ 연장근로수당 (50%)     │    160,000원   │
│ 야간근로수당 (50%)     │     70,000원   │
│ 휴일근로수당 (50%/100%)│    240,000원   │
│ 주휴수당               │     80,000원   │
├─────────────────────────────────────────┤
│ 총 지급액              │  1,110,000원   │
└─────────────────────────────────────────┘

참고 법령

조항 내용
근로기준법 제50조 법정근로시간: 1일 8시간, 1주 40시간
근로기준법 제53조 연장근로: 당사자 합의 시 1주 12시간 한도
근로기준법 제55조 주휴일: 1주 1회 이상 유급휴일 부여
근로기준법 제56조 제1항 연장/야간근로: 통상임금의 50% 이상 가산
근로기준법 제56조 제2항 휴일근로: 8시간 이내 50%, 초과 시 100% 가산
근로기준법 제18조 제3항 주 15시간 미만 근로자: 주휴일/연차 미적용

주의사항

  • 본 시스템은 5인 이상 사업장 기준으로 설계되었습니다.
  • 4인 이하 사업장은 가산수당(연장/야간/휴일) 지급 의무가 없습니다.
  • 실제 급여 계산 시 단체협약, 취업규칙, 근로계약서를 우선 확인하세요.
  • 본 계산기는 참고용이며, 정확한 급여 산정은 노무사 상담을 권장합니다.

라이선스

MIT License

About

자동급여 계산 시스템

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages