검색결과 리스트
분류 전체보기에 해당되는 글 784건
- 2025.03.13 퇴직 효력발생 시기
- 2025.01.10 구글 스프레드 시트에서 날짜와 시간을 계산하는 방법
- 2024.11.29 엑셀로 IPA 분석하기, VBA 활용 1
- 2024.11.06 PDF 나누기(split) 2
- 2024.11.01 PDF 파일 합치기(수정) 1
글
퇴직 효력발생 시기
어느날 근로자가 더이상 근무를 못하겠다고 사표를 제출한다.
그럼 사직의사를 표현한 날로부터 출근하지 않아도 되는 것일까?
사용자가 그 사표를 수리했다면, 그렇다.
그런데 만일 사용자가 수리하지 않는다면 어떻게 될까?
이에 대해서는 민법 제660조 제2항과 제3항에서 다루고 있다.
민법 제660조(기간의 약정이 없는 고용의 해지통고) ①고용기간의 약정이 없는 때에는 당사자는 언제든지 계약해지의 통고를 할 수 있다. ②전항의 경우에는 상대방이 해지의 통고를 받은 날로부터 1월이 경과하면 해지의 효력이 생긴다. ③기간으로 보수를 정한 때에는 상대방이 해지의 통고를 받은 당기후의 일기를 경과함으로써 해지의 효력이 생긴다. |
이와 그리고 관련해서는 노동부 예규 제37호(퇴직의 효력발생시, 1981. 6. 5.)에서 좀더 자세히 다루고 있다.
https://www.law.go.kr/행정규칙/퇴직의%20효력발생%20시기
1. 근로자가 사용자에게 퇴직의 의사표시(사표 제출)을 한 경우 사용자가 이를 수리하였거나 또는 당사자 사이에 계약 종료시기에 관한 특약(단체협약, 취업규칙 및 근로계약)이 있다면 각각 그 시기(사표를 수리한 시기 또는 특약에 따라 정한 시기)에 계약해지의 효력이 발생한 것임. 다만, 이 경우 해당 특약 내용이 관계 법규에 저촉되어서는 아니 됨 2. 근로자가 사용자에게 퇴직의 의사표시(사표 제출)를 하였음에도 불구하고 사용자가 근로자의 퇴직의 의사표시를 수리하지 아니하거나 또는 계약 종료시기에 관한 특약이 없다면 사용자가 해당 퇴직의 의사표시를 통고 받은 날부터 1개월이 지날 때까지는 계약해지의 효력이 발생치 않으므로 고용종속관계는 존속되는 것으로 취급하여야 할 것임(「민법」 제660조제2항 참조) 3. 제1항 및 제2항의 경우 사용자가 근로자에게 지급하는 임금을 일정한 기간급으로 정하여 정기지급하고 있다면 사용자가 근로자의 퇴직의 의사표시를 통고 받은 당기(當期) 후의 1 임금지급기가 지난 때에 계약해지의 효력이 발생하는 것으로 취급하여야 할 것임(「민법」 제660조제3항 참조) |
하지만 해석이 너무 어려우니 다시한번 정리해보자.
1. 근로자가 사직서를 제출하고 사용자가 수리하면, 사직서에서 정한 시기에 계약 해지
2. 근로자가 사직서를 제출했으나 사용자가 이를 수리하지 않는다면, 1개월이 지난 다음날 퇴직 효력 발생
예를 들어 3월 10일에 퇴직하겠다고 사직서로 의사를 표했다면, 4월 11일에 근로계약 자동 종료
3. 월급을 받는 근로자라면, 제출한 다다음달 1일에 근로계약 자동 종료
예를 들어 1일부터 말일까지의 임금을 당월 25일에 급여로 받는다고 가정했을 때,
3월 10일 사직서를 제출하면, 5월 1일 퇴직 효력 발생
- 3월 10일: 사직서 제출 - 당기
- 4월 1일 ~ 4월 30일 - 당기후 1임금지급기
- 5월 1일 - 퇴직 효력 발생
ps)
한편 근로자가 언제든 사직의사를 표할 수 있듯이, 사용자는 고용관계를 계속할 것을 희망하여 사직서 수리를 지연할 수 있고, 이러한 사직서 수리지연 행위는 정당하다.
따라서 위 예시에서 근로계약이 자연종료되는 5월 1일 전까지는 당사자간의 근로계약관계가 존속하므로 근로자는 업무인수인계를 포함해 근로제공의 의무가 유지된다. 만일 이를 위반해 임의로 출근을 하지 않으면 무단결근에 해당하며, 이로 인해 사용자에게 손해가 발생했다면, 근로자에게 손해배상을 청구할 수도 있다.
[출처] https://www.nodong.kr/bestqna/788903
근로계약이 만료되었는데, 계약만료 기간 이후에도 계속하여 회사에 출근할 의무가 있나요? - BES
근로계약의 묵시적 연장 계약기간은 1년단위로 계약기간 만료후 재계약을 하는 회사 입니다. 작년 12월 초순이 계약만료 기간이었는데. 그 이후에 재계약을 하지 않고 오늘까지 출근을 하고 있
www.nodong.kr
실제로 법정의무교육의 연 1회는 회계연도를 기준으로 한다는 사실을 포스팅한 바 있다.
만일 신입직원이 입사 1개월 만에 사직서를 제출한다면 어떨까?
법정 의무교육 중에는 과태료 대상도 있다.
이로 인해 행정처분이나 과태료를 부과받는다면, 사용자 입장에서는 이를 이유로 사직서 수리를 지연하거나 손해배상을 청구할 수도 있을 것이다.
이와 관련해서는 현행을 유지코자 한다면, 최소한 과태료 부과 대상 의무교육은 채용 전에 이수하고 자격요건으로 정하게 할 필요가 있다. 아니라면 법정의무교육 연 1회의 해석이 조금더 유연해질 필요가 있다고 생각한다.
'[정보] 복지 이야기 > [法] 복지관련 법령' 카테고리의 다른 글
사회복지시설의 “보조금전용카드”는 신용카드인가? (0) | 2024.06.25 |
---|---|
사회복지시설에서의 구매거래에 따른 지출 방법 정리 (0) | 2024.06.25 |
“소규모”의 정의 (0) | 2024.05.07 |
개인정보 보호법 개정 시행 - 손해배상보험 가입 (0) | 2023.08.31 |
채용시 채용신체검사는 의무인가? (0) | 2023.08.14 |
설정
트랙백
댓글
글
구글 스프레드 시트에서 날짜와 시간을 계산하는 방법
1. 일반적인 경우 날짜와 시간의 연산
날짜와 시간의 연산은 상식의 범위 내에서 계산됩니다. 예를 들어, 2025. 1. 2에서 2025. 1. 1을 빼면 1이 나옵니다.
시간 연산도 마찬가지로, 8:00에서 3:00을 더하면 11:00이 나옵니다.
2. 날짜와 시간이 함께 있는 경우
2025. 1. 2 오후 6:00에서 2025. 1. 1 오전 9:00을 빼면 1.375가 나옵니다.
서식을 수정하면 33:00으로 표시될 수 있습니다. 이는 33시간의 차이를 의미합니다.
3. 1.375의 의미
2025. 1. 1은 숫자 45,658에 해당합니다. 이는 1900. 1. 1을 기준으로 45,658번째 날임을 의미합니다.
오전 9:00은 9/24, 즉 0.375로 표현됩니다. 따라서 2025. 1. 1 오전 9:00은 45658.375가 됩니다.
같은 방식으로 2025. 1. 2 오후 6:00은 45659.75가 됩니다.
이 둘을 빼면 1.375가 됩니다.
4. 근무 시간 계산
일반적으로 1일 8시간을 근무합니다. 따라서 1시간은 1/8, 즉 0.125로 계산됩니다.
8시간을 1일로 계산하려면 날짜와 시간을 따로 추출하여 계산해야 합니다.
5. INT와 MOD 함수 활용
INT 함수는 소수점 이하를 버리고 정수 부분만 반환합니다. 예를 들어, =INT(B1)은 날짜값만 반환합니다.
MOD 함수는 나머지를 구하는 함수입니다. 예를 들어, =MOD(B1, 1)은 시간값만 반환합니다.
날짜와 시간을 따로 추출하여 연산할 수 있습니다. 예를 들어, =INT(B1)-INT(C1)과 =MOD(B1, 1)-MOD(C1, 1)을 사용합니다.
6. 8시간을 1일로 계산
INT로 구한 날짜값은 그대로 두고, MOD로 구한 시간값을 다시 INT로 몫을 구해 날짜에 더해줍니다.
MOD로 구한 나머지는 시간으로 나타냅니다.
'[정보] IT정보&활용' 카테고리의 다른 글
엑셀로 IPA 분석하기, VBA 활용 (1) | 2024.11.29 |
---|---|
PDF 나누기(split) (2) | 2024.11.06 |
PDF 파일 합치기(수정) (1) | 2024.11.01 |
[구글 Apps Script] PDF로 출력하기 (0) | 2024.10.23 |
[구글 스프레드 시트] 서명받기 (0) | 2024.08.27 |
설정
트랙백
댓글
글
엑셀로 IPA 분석하기, VBA 활용
IPA(Importance Performance Analysis) 분석이란 응답자가 지각하는 특정 요소에 대한 성과(만족도)와 중요도를 각각 X와 Y축으로 하는 2차원상의 평면위에 좌표로 각 요소를 표현하는 분석방법을 말합니다.
응답자가 인식하는 중요도와 다른 하나의 변수(만족도, 성과, 필요도 등)와 비교하는 것인데, 같은 질문에 대해 두가지 속성으로 물어보는 경우 사분면으로 그려서 시각적으로 보여줄 수 있어 유용합니다.
방법은 항목별 평균을 전체평균을 기준으로 그보다 높은가 낮은가를 비교하는 방식이라 구현이 그렇게 어려운 것은 아닙니다.
다만 그래프로 시각화하는 과정이 손이 많이 가는 바, VBA로 그래프를 만드는 과정을 자동화해 보았습니다.
'[정보] IT정보&활용' 카테고리의 다른 글
구글 스프레드 시트에서 날짜와 시간을 계산하는 방법 (0) | 2025.01.10 |
---|---|
PDF 나누기(split) (2) | 2024.11.06 |
PDF 파일 합치기(수정) (1) | 2024.11.01 |
[구글 Apps Script] PDF로 출력하기 (0) | 2024.10.23 |
[구글 스프레드 시트] 서명받기 (0) | 2024.08.27 |
설정
트랙백
댓글
글
PDF 나누기(split)
PDF를 두개로 나누는 html입니다.
pdf-lib (MIT 라이선스): https://github.com/Hopding/pdf-lib
pdf.js (Apache 2.0 라이선스): https://github.com/mozilla/pdf.js
위 라이브러리를 사용하였으며, chatGPT 등의 도움을 받아 실습 삼아 만들어 보았습니다.
아래는 html 스크립트 입니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PDF 나누기 (Split)</title>
<!-- pdf-lib 및 pdf.js 라이브러리 로드 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f3f4f6;
margin: 0;
}
.container {
width: 100%;
max-width: 500px;
padding: 20px;
background: white;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
h1 {
font-size: 24px;
color: #333;
text-align: center;
}
p {
font-size: 14px;
color: #555;
text-align: left;
}
input[type="file"] {
width: 100%;
padding: 10px;
margin: 10px 0;
font-size: 14px;
}
input[type="number"] {
width: 50%;
padding: 10px;
margin: 10px 0;
font-size: 14px;
}
#split-button {
width: 100%;
padding: 12px;
background-color: #28a745;
color: white;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
margin-top: 10px;
}
#split-button:hover {
background-color: #218838;
}
footer {
text-align: left;
font-size: 12px;
color: #777;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1>PDF 나누기</h1>
<p>PDF를 두 개의 파일로 나눌 수 있습니다.</p>
<p>1. "파일 선택" 버튼을 눌러 나눌 PDF 파일을 선택하세요.</p>
<input type="file" id="file-input" accept="application/pdf" />
<p>2. 나눌 페이지 번호를 입력하세요. <br>
(예: 3을 입력하면 1-3페이지와 4-마지막 페이지로 나뉩니다.)</p>
<input type="number" id="split-page" min="1" />
<p>3. "PDF 나누기" 버튼을 누르세요.</p>
<button id="split-button">PDF 나누기</button>
<footer>
<p><strong>사용된 라이브러리</strong></p>
<ul>
<li>pdf-lib (MIT 라이선스): <a href="https://github.com/Hopding/pdf-lib">https://github.com/Hopding/pdf-lib</a></li>
<li>pdf.js (Apache 2.0 라이선스): <a href="https://github.com/mozilla/pdf.js">https://github.com/mozilla/pdf.js</a></li>
</ul>
</footer>
</div>
<script>
const fileInput = document.getElementById('file-input');
const splitPage = document.getElementById('split-page');
const splitButton = document.getElementById('split-button');
splitButton.addEventListener('click', async () => {
if (!fileInput.files[0]) {
alert('PDF 파일을 선택해주세요.');
return;
}
const pageNumber = parseInt(splitPage.value);
if (isNaN(pageNumber) || pageNumber < 1) {
alert('유효한 페이지 번호를 입력해주세요.');
return;
}
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();
const pdfDoc = await PDFLib.PDFDocument.load(arrayBuffer);
if (pageNumber >= pdfDoc.getPageCount()) {
alert('입력한 페이지 번호가 PDF의 총 페이지 수보다 크거나 같습니다.');
return;
}
// 첫 번째 PDF 생성 (1부터 pageNumber까지)
const firstPdf = await PDFLib.PDFDocument.create();
const firstPages = await firstPdf.copyPages(pdfDoc, Array.from({length: pageNumber}, (_, i) => i));
firstPages.forEach(page => firstPdf.addPage(page));
// 두 번째 PDF 생성 (pageNumber+1부터 끝까지)
const secondPdf = await PDFLib.PDFDocument.create();
const secondPages = await secondPdf.copyPages(pdfDoc, Array.from({length: pdfDoc.getPageCount() - pageNumber}, (_, i) => i + pageNumber));
secondPages.forEach(page => secondPdf.addPage(page));
// PDF 저장 및 다운로드
const firstPdfBytes = await firstPdf.save();
const secondPdfBytes = await secondPdf.save();
downloadPdf(firstPdfBytes, 'split_first.pdf');
downloadPdf(secondPdfBytes, 'split_second.pdf');
});
function downloadPdf(pdfBytes, fileName) {
const blob = new Blob([pdfBytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = fileName;
a.click();
URL.revokeObjectURL(url);
}
</script>
</body>
</html>
'[정보] IT정보&활용' 카테고리의 다른 글
구글 스프레드 시트에서 날짜와 시간을 계산하는 방법 (0) | 2025.01.10 |
---|---|
엑셀로 IPA 분석하기, VBA 활용 (1) | 2024.11.29 |
PDF 파일 합치기(수정) (1) | 2024.11.01 |
[구글 Apps Script] PDF로 출력하기 (0) | 2024.10.23 |
[구글 스프레드 시트] 서명받기 (0) | 2024.08.27 |
설정
트랙백
댓글
글
PDF 파일 합치기(수정)
위 파일을 자신의 컴퓨터로 다운 받아서 그냥 실행하시면 됩니다.
pdf-lib (MIT 라이선스): https://github.com/Hopding/pdf-lib
pdf.js (Apache 2.0 라이선스): https://github.com/mozilla/pdf.js
위 두 개의 라이브러리를 사용하였으며, chatGPT 등의 도움을 받아 실습 삼아 만들어 보았습니다.
아래는 html 스크립트입니다.
---------------------------------------------
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PDF 합치기 (Merge)</title>
<!-- pdf-lib 및 pdf.js 라이브러리 로드 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
<!-- 스타일링 -->
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f3f4f6;
margin: 0;
}
.container {
width: 100%;
max-width: 500px;
padding: 20px;
background: white;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
h1 {
font-size: 24px;
color: #333;
text-align: center;
}
p {
font-size: 14px;
color: #555;
text-align: left;
}
input[type="file"] {
width: 100%;
padding: 10px;
margin: 10px 0;
font-size: 14px;
}
#file-list {
list-style: none;
padding: 0;
margin: 10px 0;
}
#file-list li {
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
margin: 5px 0;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #f9f9f9;
}
.move-buttons button {
padding: 5px;
margin: 0 2px;
background: #4a90e2;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 12px;
}
.move-buttons button:hover {
background: #357ABD;
}
#merge-button {
width: 100%;
padding: 12px;
background-color: #28a745;
color: white;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
margin-top: 10px;
}
#merge-button:hover {
background-color: #218838;
}
footer {
text-align: left;
font-size: 12px;
color: #777;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1>PDF 합치기</h1>
<p>여러 개의 PDF를 하나로 합칠 수 있습니다.</p>
<p>1. "파일 선택" 버튼을 눌러 합칠 파일을 선택하세요.</p>
<input type="file" id="file-input" multiple accept="application/pdf" />
<p>2. 아래 목록에서 ↑↓를 눌러 순서를 조정하세요.</p>
<ul id="file-list"></ul>
<p>3. 순서를 확인한 후 "PDF 합치기" 버튼을 누르세요.</p>
<button id="merge-button">PDF 합치기</button>
<footer>
<p><strong>사용된 라이브러리</strong></p>
<ul>
<li>pdf-lib (MIT 라이선스): <a href="https://github.com/Hopding/pdf-lib">https://github.com/Hopding/pdf-lib</a></li>
<li>pdf.js (Apache 2.0 라이선스): <a href="https://github.com/mozilla/pdf.js">https://github.com/mozilla/pdf.js</a></li>
</ul>
</footer>
</div>
<script>
const fileInput = document.getElementById('file-input');
const fileList = document.getElementById('file-list');
fileInput.addEventListener('change', () => {
fileList.innerHTML = '';
Array.from(fileInput.files).forEach((file, index) => {
const li = document.createElement('li');
li.textContent = file.name;
li.dataset.index = index;
// 이동 버튼 추가
const moveButtons = document.createElement('div');
moveButtons.classList.add('move-buttons');
const upButton = document.createElement('button');
upButton.textContent = '↑';
upButton.addEventListener('click', () => moveItem(li, -1));
const downButton = document.createElement('button');
downButton.textContent = '↓';
downButton.addEventListener('click', () => moveItem(li, 1));
// 삭제 버튼 추가
const deleteButton = document.createElement('button');
deleteButton.textContent = '삭제';
deleteButton.style.background = '#dc3545';
deleteButton.style.marginLeft = '5px';
deleteButton.addEventListener('click', () => li.remove());
moveButtons.appendChild(upButton);
moveButtons.appendChild(downButton);
moveButtons.appendChild(deleteButton);
li.appendChild(moveButtons);
fileList.appendChild(li);
});
});
function moveItem(item, direction) {
const sibling = (direction === -1) ? item.previousElementSibling : item.nextElementSibling;
if (sibling) {
fileList.insertBefore(item, direction === -1 ? sibling : sibling.nextElementSibling);
}
}
document.getElementById('merge-button').addEventListener('click', async () => {
const files = Array.from(fileList.children).map(li => fileInput.files[li.dataset.index]);
const mergedPdf = await PDFLib.PDFDocument.create();
for (let file of files) {
const arrayBuffer = await file.arrayBuffer();
const pdfDoc = await PDFLib.PDFDocument.load(arrayBuffer);
const pages = await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices());
pages.forEach(page => mergedPdf.addPage(page));
}
const pdfBytes = await mergedPdf.save();
const blob = new Blob([pdfBytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'merged.pdf';
a.click();
URL.revokeObjectURL(url);
});
</script>
</body>
</html>
'[정보] IT정보&활용' 카테고리의 다른 글
엑셀로 IPA 분석하기, VBA 활용 (1) | 2024.11.29 |
---|---|
PDF 나누기(split) (2) | 2024.11.06 |
[구글 Apps Script] PDF로 출력하기 (0) | 2024.10.23 |
[구글 스프레드 시트] 서명받기 (0) | 2024.08.27 |
컴퓨터 예약 종료 배치파일(.bat) 만들기 (0) | 2024.06.21 |
RECENT COMMENT