'분류 전체보기'에 해당되는 글 68건
2011. 12. 15. 14:01
[코드]
2년 전에 간단한 급여 계산 영역을 하나 구현할 일이 있었다. 이 전에 구현된 시스템이 있었는데, 좀 더 범용적으로 (간단하게 말하자면, 한국과 중국에 모두 사용 가능한) 사용 가능하도록 조정해야 되는 것이었다.
말이 조정이지 사실 다시 처음부터 작업을 했다.
일단, 급여는 기본급여와, 세액과 보험액을 계산하기 위한 부가 정보, 수당, 공제내역이 필요하다. 세금과 보험은 공제내역에 해당되고 수당에는 개별적으로 이 수당이 과세인지? 혹은 비과세인지, 혹은 과세액 범위가 있는지가 필요하다.
한국 같은 경우는 기본적으로 세금으로 소득세(갑근세)와 주민세가 있고, 보험에는 5대 보험이 적용된다. 중국도 한국과는 조금 다르지만, 기본적으로 소득에 대한 세금이 있고, 항목이 조금 다른 5대 보험이 있다.
이러한 차이 항목의 공통 분모를 추려내어 보면
하나. 개인의 급여명세(PayCheck)가 있다.
둘. 급여명세는 기본급여 정보와 수당(Allowance), 그리고 공제(Deduction)로 나누어진다.
셋, 세금(Tax), 보험(Insurance)는 공제로 포함된다.
상기 내역에 대한 항목을 추출해 본다.
* 급여명세 (PayCheck)
* 수당 (Allowance)
* 공제 (Deduction)
* 보험 (Insurance)
* 세금 (Tax)
급여명세 이후에 네가지 항목은 급여명세에서 사용자가 받게될 최종 급여액을 계산하는 개별항목으로 적용된다.
* 급여액 = (기본급여액) + (수당) - (공제 [일반, 세금, 보험])
개별 항목을 계산하기 위해서는 각 항목이 어떠한 방식으로 계산되는지에 대한 정보가 필요하다. 그리고 이 계산 정보를 사용하여 실제 급여항목들에 대해 각 항목에 대한 금액을 산출해줄 계산기가 필요하고!
한국에 필요한 계산기 (Calculator)
* 갑근세 계산기 : (매년 세법이 조금씩 바뀌므로 매년 수정이 필요하다.)
* 과세표준액 계산기 : (수당 항목 중에 과세액에 해당하는 내역들을 집산해서 과세표준액을 산정한다.)
* 주민세 계산기 : (갑근세의 %)
중국에 필요한 계산기
* 소득세 계산기 : (중국 소득세는 의외로 간단하다.)
보험에 대한 계산기
기본적으로 보험은 보험금액이 산정되는 기준액에 대한 보험요율로 산정되며, 가입자와 사용자 부담요율이 나워져 있고, 금액에 대한 상한, 하한 인자가 들어간다.
이를 토대로 보험 정보(InsuranceInfo)를 구성한다.
* 사용자 부담요율
* 가입자 부담요율
* 보험 유형
* 상한액
* 하한액
이러한 인자에 사용자의 보험액 계산에 대한 부가정보를 넣어주면 계산되는 계산기를 만들어 주고, 이 보험 정보를 토대로 공통적인 보험액 계산을 해주는 계산기를 구현한다.
그리고 마지막으로 사용자 수식 계산기 하나, 이는 사용자가 특정 계산이 필요할 경우를 위해 구현한다. 수식문에 대한 처리는 NCalc 라이브러리를 사용했다.
여기까지 하면 급여명세(PayCheck)에 대해 각각 계산기가 계산 정보 (혹은 보험 정보)를 가지고 명세를 계산하게 된다. 사용자에게 필요한 것은 지역에 대한 로케일 설정, 그리고 사용하는 수당항목, 공제항목 설정이다. 이를 기반으로 계산을 수행하게 되는데 여기서 한가지 문제가 있다.
예를 한국 같은 경우, 주민세는 소득세액의 몇%를 기준으로 산정하고, 세액도 과세표준액을 기준으로 산정해야 된다. 고로 특정 계산기가 어떤 계산기 보다 우선적으로 처리되어야 할 순위가 필요하다.
이를 위해 계산기 전체 목록을 반환할 때 계산기를 사전 정렬한다.
음 여기까지 하면 명세에 대한 계산 부분이 정리가 된다. 계산기-명세 계산 부분은 Visitor 패턴으로 구현했고, 보험 정보는 따로 따로 제공자를 두어 지역 로케일에 따라 필요한 보험 정보를 잘 묶어서 관리하도록 처리했다.
차후에 세법이나 보험 정책이 바뀌면 해당 보험 정보나 계산기만 조정해 주면 되고, 필요할 경우, 계산기 정보와 기타 파트는 모두 다른 라이브러리로 분리 가능하도록 처리해 놨다.
뭐 더 필요한게 있을려나?
말이 조정이지 사실 다시 처음부터 작업을 했다.
일단, 급여는 기본급여와, 세액과 보험액을 계산하기 위한 부가 정보, 수당, 공제내역이 필요하다. 세금과 보험은 공제내역에 해당되고 수당에는 개별적으로 이 수당이 과세인지? 혹은 비과세인지, 혹은 과세액 범위가 있는지가 필요하다.
한국 같은 경우는 기본적으로 세금으로 소득세(갑근세)와 주민세가 있고, 보험에는 5대 보험이 적용된다. 중국도 한국과는 조금 다르지만, 기본적으로 소득에 대한 세금이 있고, 항목이 조금 다른 5대 보험이 있다.
이러한 차이 항목의 공통 분모를 추려내어 보면
하나. 개인의 급여명세(PayCheck)가 있다.
둘. 급여명세는 기본급여 정보와 수당(Allowance), 그리고 공제(Deduction)로 나누어진다.
셋, 세금(Tax), 보험(Insurance)는 공제로 포함된다.
상기 내역에 대한 항목을 추출해 본다.
* 급여명세 (PayCheck)
* 수당 (Allowance)
* 공제 (Deduction)
* 보험 (Insurance)
* 세금 (Tax)
급여명세 이후에 네가지 항목은 급여명세에서 사용자가 받게될 최종 급여액을 계산하는 개별항목으로 적용된다.
* 급여액 = (기본급여액) + (수당) - (공제 [일반, 세금, 보험])
개별 항목을 계산하기 위해서는 각 항목이 어떠한 방식으로 계산되는지에 대한 정보가 필요하다. 그리고 이 계산 정보를 사용하여 실제 급여항목들에 대해 각 항목에 대한 금액을 산출해줄 계산기가 필요하고!
한국에 필요한 계산기 (Calculator)
* 갑근세 계산기 : (매년 세법이 조금씩 바뀌므로 매년 수정이 필요하다.)
* 과세표준액 계산기 : (수당 항목 중에 과세액에 해당하는 내역들을 집산해서 과세표준액을 산정한다.)
* 주민세 계산기 : (갑근세의 %)
중국에 필요한 계산기
* 소득세 계산기 : (중국 소득세는 의외로 간단하다.)
보험에 대한 계산기
기본적으로 보험은 보험금액이 산정되는 기준액에 대한 보험요율로 산정되며, 가입자와 사용자 부담요율이 나워져 있고, 금액에 대한 상한, 하한 인자가 들어간다.
이를 토대로 보험 정보(InsuranceInfo)를 구성한다.
* 사용자 부담요율
* 가입자 부담요율
* 보험 유형
* 상한액
* 하한액
이러한 인자에 사용자의 보험액 계산에 대한 부가정보를 넣어주면 계산되는 계산기를 만들어 주고, 이 보험 정보를 토대로 공통적인 보험액 계산을 해주는 계산기를 구현한다.
그리고 마지막으로 사용자 수식 계산기 하나, 이는 사용자가 특정 계산이 필요할 경우를 위해 구현한다. 수식문에 대한 처리는 NCalc 라이브러리를 사용했다.
여기까지 하면 급여명세(PayCheck)에 대해 각각 계산기가 계산 정보 (혹은 보험 정보)를 가지고 명세를 계산하게 된다. 사용자에게 필요한 것은 지역에 대한 로케일 설정, 그리고 사용하는 수당항목, 공제항목 설정이다. 이를 기반으로 계산을 수행하게 되는데 여기서 한가지 문제가 있다.
예를 한국 같은 경우, 주민세는 소득세액의 몇%를 기준으로 산정하고, 세액도 과세표준액을 기준으로 산정해야 된다. 고로 특정 계산기가 어떤 계산기 보다 우선적으로 처리되어야 할 순위가 필요하다.
이를 위해 계산기 전체 목록을 반환할 때 계산기를 사전 정렬한다.
음 여기까지 하면 명세에 대한 계산 부분이 정리가 된다. 계산기-명세 계산 부분은 Visitor 패턴으로 구현했고, 보험 정보는 따로 따로 제공자를 두어 지역 로케일에 따라 필요한 보험 정보를 잘 묶어서 관리하도록 처리했다.
차후에 세법이나 보험 정책이 바뀌면 해당 보험 정보나 계산기만 조정해 주면 되고, 필요할 경우, 계산기 정보와 기타 파트는 모두 다른 라이브러리로 분리 가능하도록 처리해 놨다.
뭐 더 필요한게 있을려나?
반응형
2011. 12. 15. 13:09
[코드]
사내 프로젝트 관리 시스템으로 Redmine을 사용한지 벌써 3년이 넘어간다. 처음에 0.8.x 버젼에서 시작해서 약 세번정도 업데이트하여 현재 1.2.2 버젼을 사용 중이다.
거의 대부분의 기능을 활용하면서 쓴거 같은데, 요즘엔 사후관리 (추정/실제 시간) 부분은 거의 사용하지를 않고 있다. 이 부분에 대한 정확한 통계에 대한 리뷰가 없어서 그럴 듯.
초기에는 trac이나 Basecamp+잡것 연동 에도 기웃거려 봤지만, 이젠 사실 Redmine 하나면 충분하고, 가끔 간단하게 혹은 다른 개발 외 협업이 필요한 경우는 Trello 라는 대쉬보드형 협업 툴이 있으니 뭐 이걸로 사용하는 것도 좋다. Trello 사용 후에는 구글 할일 목록을 사용하는 빈도도 거의 없어졌다.
필요한 기능은 거의 다 기본으로 있고 (이슈 트랙킹, 위키, 게시판 등등), 그 외 잡다하게 필요한 것들 (자동화된 문서 게시 등등)은 플러그인 형태로 충분히 연동 가능하니, 그냥 이 우물 안에서 계속 놀게 된다.
그래도 뭐 새로운 툴이 나오면 계속 기웃거리겠지.
거의 대부분의 기능을 활용하면서 쓴거 같은데, 요즘엔 사후관리 (추정/실제 시간) 부분은 거의 사용하지를 않고 있다. 이 부분에 대한 정확한 통계에 대한 리뷰가 없어서 그럴 듯.
초기에는 trac이나 Basecamp+잡것 연동 에도 기웃거려 봤지만, 이젠 사실 Redmine 하나면 충분하고, 가끔 간단하게 혹은 다른 개발 외 협업이 필요한 경우는 Trello 라는 대쉬보드형 협업 툴이 있으니 뭐 이걸로 사용하는 것도 좋다. Trello 사용 후에는 구글 할일 목록을 사용하는 빈도도 거의 없어졌다.
필요한 기능은 거의 다 기본으로 있고 (이슈 트랙킹, 위키, 게시판 등등), 그 외 잡다하게 필요한 것들 (자동화된 문서 게시 등등)은 플러그인 형태로 충분히 연동 가능하니, 그냥 이 우물 안에서 계속 놀게 된다.
그래도 뭐 새로운 툴이 나오면 계속 기웃거리겠지.
반응형
2011. 5. 17. 18:10
반응형
2009. 6. 28. 20:41
[코드]
물론 방법론적으로나, 유지보수 측면에서 FormEx<TClass> : System.Windows.Forms.Form (혹은 UserControl)와 같은 디자인은 그다지 좋은 디자인 방법은 아니지만, 간혹 사용해야 될 경우가 있다.
문제는 코드 자체가 아니라 디자인타임에서 Generic Form이 정상적으로 표시되지 않는 문제가 있는 것.
이럴 때는 다음과 같은 방법으로 살짝 IDE를 속일 수 있다.
#FormEx.cs
문제는 코드 자체가 아니라 디자인타임에서 Generic Form이 정상적으로 표시되지 않는 문제가 있는 것.
이럴 때는 다음과 같은 방법으로 살짝 IDE를 속일 수 있다.
#FormEx.cs
/* Base Class */ public partial class FormEx<TClass> : System.Windows.Forms.Form { }#FormCustomEx.cs
/* 마지막으로.. : ) */ public partial class FormCustomEx : FormCustom { } /* 여기서 상속을 받아.. */ public partial class FormCustom : FormEx약간 IDE Hack에 가깝지만, 간혹 유용한 경우가 있다.{ }
refs::
반응형
2009. 2. 8. 21:44
[카테고리 없음]
아직도 어떤 사람들은 숙명과, 인도를 구분을 하지 못한 채, 자신이 무엇인가를 이루고, 믿을 수 있고, 또 믿고 있다는 착각에 빠져서 살아간다. 한 때 나도 그런 사람 중에 하나였다. 거기에 더하여, 절망 중에 포기한 사람이었다. 하지만, 이젠 절망도 포기도 없고, 실패도 없는 것을 알았다. 나의 실패의 고백이란 무엇인가? 실패는 없다. 기회는 있지만, 실패는 없다. 모든 것은 돌아봄에서 시작된다. 시작되지 않았어도, 우린 돌아볼 수 있다. 기억을 허락하신 시간부터 지금까지 기억하는 이유는 거기에 있다고 생각한다.
오늘 나는 빛의 속도를 다시 한번 생각했다. 초당 30만km, 어느 순간 피어져 있는 저 별은 지금 저 곳에 존재하는 것일까? 우리는 그 가시와, 순간의 영역에 살면서, 모든 것이 존재한다고 생각하며, 보이는 것과, 보이는 한계 안에서 보고 듣고 믿는다. 정말 그럴까? 그렇게 확신할 수 있을까? 객관적 확증만을 자신의 것으로 착각한 채 살아가는 사람들, 하루하루 열망과 땀과 피로 이루어진 고통스런 경험없이, 어떻게 남이 만들어 놓은 경험을 내 것이라고 속이고 살아 갈 수 있을까?
빛의 속도는 점점 느려진다. 봐라. 상상해 봐라, 빛의 속도가 초당 1분인 세상을, 당신이 볼 수 있는 것을 말해 봐라. 당신은 무엇을 말할 수 있겠는가?
그래도 아직 난 많은 것이 변하지 않았다. 다만, 하루, 어제보다는 더 큰 주기율안에서 큰 울림이 되기를 원하고 있다.
그렇게 누군가는 나를 믿어 주는 것을 알고 있다.
거기서 쉬자.
반응형
2009. 1. 13. 14:07
[카테고리 없음]
욕심 부리지 않겠습니다.
기꺼운 마음도, 아닌, 묵묵함으로,
그저 바라볼 뿐 입니다.
아는 자를 알게 하시는,
하루 앞에,
당신은 이 하루를 대신 사셨습니다.
그것이 내 몫 아니라면,
나는 그저 다시 바라볼 뿐입니다.
나는 그저 그 사랑안에서 춤 출 뿐입니다.
반응형
2008. 12. 19. 23:49
[카테고리 없음]
초원의 빛 / 윌리암 워즈워드
여기 적힌 먹빛이 희미해질수록
당신을 향한 마음이 희미해진다면
난 당신을 잊겠습니다.
초원의 빛이여
꽃의 영광이여
다시는 그것이 돌려지지 않는다 하더라도 서러워 말지니
차라리 그 속 깊이 간직한 오묘한 힘을 얻으소서
초원의 빛이여
그 빛 빛날 때 그대 영광 빛을 얻으소서!
한때 그렇게도 찬란한 빛이었건만
이젠 영원히 눈앞에서 사라져 버리고
초원의 빛이여
꽃의 영광이여
다시 찾을 길 없을 지라도 우리 서러워 말지니
도리어 뒤에 남은 것에서 힘을 얻으소서
여태 있었고 또 길이 있을 그 원시의 공감 가운데에서
인간의 고뇌에서 우러나는 그 위로의 생각 가운데에서
죽음을 뚫어 보는 그 믿음 가운데에서
현명한 마음을 부르는 세월 가운데.....
반응형
2008. 12. 16. 23:00
[카테고리 없음]
그림자, 아련히 떠도는 나뭇가지 아래
서린무늬
서린눈물
잃어버리고 다시 잃어버린
한켠에 스며버린
오늘
반응형
2008. 11. 17. 16:20
[카테고리 없음]
"세상에는 자기를 죄인시하는 의인, 자기를 의인시하는 죄인, 두 종류의 사람 밖에 없다."
- 파스칼
반응형
2008. 11. 3. 15:13
[카테고리 없음]
네피림의 망상을 버려라.
신앙 안에서의 끝임없는 책망.
그럼에도 불구하고,
그럼에도 불구하고,
반응형