797 lines
29 KiB
Java
797 lines
29 KiB
Java
package kcc.ve.cmm;
|
|
|
|
import java.util.List;
|
|
|
|
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO;
|
|
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService;
|
|
|
|
public class VeInstrFeeMng {
|
|
|
|
//청소년강사용 강사료 계산
|
|
public VEInstrFeeAcmdtVO VeInstrFeeMng(VEInstrFeeService vEInstrFeeService , String eduAplctOrd, String eduChasiOrd) throws Exception {
|
|
|
|
// 강사료
|
|
VEInstrFeeAcmdtVO infoVO = new VEInstrFeeAcmdtVO();
|
|
infoVO.setEduAplctOrd(eduAplctOrd);
|
|
infoVO.setEduChasiOrd(eduChasiOrd);
|
|
VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = vEInstrFeeService.selectDetail(infoVO);
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getInstrFeeOrd() == null) {
|
|
|
|
List<VEInstrFeeAcmdtVO> selectChasiList = vEInstrFeeService.selectChasiList(vEInstrFeeAcmdtVO);
|
|
System.out.println("@@ "+selectChasiList.get(0).getTotCnt());
|
|
|
|
boolean check = false;
|
|
|
|
System.out.println(" 조회 차시 정보 "+vEInstrFeeAcmdtVO.getEduChasiOrd());
|
|
System.out.println(" 첫번쨰 차시 정보 "+selectChasiList.get(0).getEduChasiOrd());
|
|
if(selectChasiList.get(0).getEduChasiOrd().equals(vEInstrFeeAcmdtVO.getEduChasiOrd())) {
|
|
check = true;
|
|
}
|
|
|
|
/*
|
|
* 강사료 계산 정리
|
|
* 강사료 계산 : 기본요금 * 차시 수량
|
|
* 도서벽지수당 : 오프라인 교육이며 AND 교육지역이 도서벽지에 해당이 되면 기본 값 15,000원 * 차시 수량
|
|
* 교통비 : 왕복 거리 * 160원
|
|
*
|
|
* */
|
|
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
int instrFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_INSTR_FEE);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ instrFee : "+instrFee);
|
|
vEInstrFeeAcmdtVO.setInstrFee(Integer.toString(instrFee));
|
|
|
|
// 온라인 여부 확인(10:온라인, 20:오프라인)
|
|
if("20".equals(vEInstrFeeAcmdtVO.getEduSlctCd())){
|
|
|
|
// 도서벽지수당 계산(강의 차시 * 15,000원) 22.06.15 도서벽지 수당 중복하도록 요청으로 인한 변경
|
|
try {
|
|
if(vEInstrFeeAcmdtVO.getIsltnScholYn().equals("Y")) {
|
|
int isltnFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_ISLTN_FEE);
|
|
vEInstrFeeAcmdtVO.setSpecialWorkAllow(Integer.toString(isltnFee));
|
|
}
|
|
}catch(Exception ex) {
|
|
System.out.println(ex.getMessage());
|
|
}
|
|
|
|
|
|
if(check) {
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getOnewayDstnc() == null || vEInstrFeeAcmdtVO.getOnewayDstnc().equals("")) {
|
|
vEInstrFeeAcmdtVO.setOnewayDstnc("0");
|
|
}
|
|
|
|
// 거리비교 200Km 이상 : 40000원, 100Km 이상 : 30000원, 12Km 이상 : 20000원, 1Km 이상 10000원
|
|
int dstnc = (Integer.parseInt(vEInstrFeeAcmdtVO.getOnewayDstnc()) * 2);
|
|
|
|
String passCityList = "강원도,경기도,경상북도,경상남도,충청북도,충청남도,전라북도,전라남도,제주특별자치도";
|
|
String[] passCityArray = passCityList.split(",");
|
|
|
|
boolean passCity = true;
|
|
|
|
try {
|
|
|
|
String[] scholArea = vEInstrFeeAcmdtVO.getScholArea().split(" ");
|
|
String[] instrRsdnc = vEInstrFeeAcmdtVO.getInstrRsdnc().split(" ");
|
|
|
|
|
|
System.out.println("학교 : "+scholArea[0]+" "+scholArea[1]+" _강사 :"+instrRsdnc[0]+" "+instrRsdnc[1]+" _거리 :" + dstnc);
|
|
|
|
/*
|
|
강원도,경기도,경상북도,경상남도,충청북도,충청남도,전라북도,전라남도,제주특별자치도
|
|
광주광역시,대구광역시,대전광역시,부산광역시,서울특별시,세종특별자치시,울산광역시,인천광역시
|
|
*/
|
|
|
|
|
|
|
|
// 주소 앞자리 비교
|
|
passCity = true;
|
|
if(scholArea[0].contains(instrRsdnc[0])){
|
|
|
|
for(int i=0; i < passCityArray.length; i++) {
|
|
if(passCityArray[i].equals(scholArea[0])) {
|
|
if(!scholArea[1].equals(instrRsdnc[1])){
|
|
System.out.println("타지역 ");
|
|
passCity = false;
|
|
break;
|
|
}else {
|
|
System.out.println("거주지");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
// 다르면 끝
|
|
passCity = false;
|
|
}
|
|
}catch(Exception ex) {
|
|
System.out.println(ex.getMessage());
|
|
}
|
|
|
|
|
|
|
|
// 장거리교육수당 확인(거주지 : 10000)
|
|
if(passCity || dstnc < 12){ // 거주지 인경우
|
|
System.out.println("거주지");
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("10000");
|
|
}else { // 타지역 인경우
|
|
System.out.println("타지역 : " + vEInstrFeeAcmdtVO.getOnewayDstnc());
|
|
|
|
if(dstnc >= 200) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("40000");
|
|
}else if(dstnc >= 100 && dstnc < 200) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("30000");
|
|
}else if(dstnc >= 12 && dstnc < 100) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("20000");
|
|
}else {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("10000");
|
|
}
|
|
|
|
// 교통비 계산 (거리 * 교통비 기본값)
|
|
int trafficFee = (Integer.parseInt(vEInstrFeeAcmdtVO.getOnewayDstnc()) * 2) * Integer.parseInt(VeConstants.BASE_TRAFFIC_FEE);
|
|
vEInstrFeeAcmdtVO.setTrafficFee(Integer.toString(trafficFee));
|
|
}
|
|
vEInstrFeeAcmdtVO.setLikeCheckYn("N");
|
|
}else {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("0");
|
|
vEInstrFeeAcmdtVO.setLikeCheckYn("Y");
|
|
}
|
|
|
|
//식비지급
|
|
vEInstrFeeAcmdtVO.setFoodExpenses("7000");
|
|
|
|
// 수당 합계
|
|
int sum = + Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow());
|
|
vEInstrFeeAcmdtVO.setAllowance(sum);
|
|
|
|
// 여비 합계
|
|
sum = Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee());
|
|
vEInstrFeeAcmdtVO.setSpareFee(String.format("%,d", sum));
|
|
|
|
|
|
|
|
}else if("10".equals(vEInstrFeeAcmdtVO.getEduSlctCd())){
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// 강사료 합계
|
|
int instrFeeSum = Integer.parseInt(vEInstrFeeAcmdtVO.getInstrFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getFoodExpenses())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee())
|
|
;
|
|
vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
|
|
// 세금 합계 -> 세금 제거 요청으로 제거
|
|
// int taxSum = Integer.parseInt(vEInstrFeeAcmdtVO.getIncomeTax())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getLocalIncomeTax());
|
|
// vEInstrFeeAcmdtVO.setTaxSum(taxSum);
|
|
|
|
// 강사료 합계-세금 합계
|
|
// int totalSum = instrFeeSum - taxSum;
|
|
|
|
return vEInstrFeeAcmdtVO;
|
|
}
|
|
|
|
//청소년강사용 강사료 계산-excel 전용 (excel의 경우는 거리계산, 식대가 다른 row와 연결되어서 결정되어야 하므로, 별도 함수로 처리한다.
|
|
//
|
|
public VEInstrFeeAcmdtVO VeInstrFeeMng4Excel(
|
|
VEInstrFeeService vEInstrFeeService
|
|
, String eduAplctOrd
|
|
, String eduChasiOrd
|
|
|
|
, String p_rankNo //순위 1 이고, 값이 없으면 가상값을 넣어준다. 2이상이고, 값이 없으면 0
|
|
, String p_foodExpenses //식비 존재여부 확인 용 - 값 or null
|
|
, String p_trafficFee //교통비 존재여부 확인 용 - 값 or null
|
|
|
|
) throws Exception {
|
|
|
|
System.out.println("p_rankNo");
|
|
System.out.println(p_rankNo);
|
|
System.out.println(p_foodExpenses);
|
|
System.out.println(p_trafficFee);
|
|
//System.out.println(vEInstrFeeAcmdtVO.getInstrFeeOrd());
|
|
|
|
// 강사료
|
|
VEInstrFeeAcmdtVO infoVO = new VEInstrFeeAcmdtVO();
|
|
infoVO.setEduAplctOrd(eduAplctOrd);
|
|
infoVO.setEduChasiOrd(eduChasiOrd);
|
|
VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = vEInstrFeeService.selectDetail(infoVO);
|
|
|
|
|
|
//if(vEInstrFeeAcmdtVO.getInstrFeeOrd() == null) {
|
|
if(true) {
|
|
|
|
List<VEInstrFeeAcmdtVO> selectChasiList = vEInstrFeeService.selectChasiList(vEInstrFeeAcmdtVO);
|
|
System.out.println("@@ "+selectChasiList.get(0).getTotCnt());
|
|
|
|
boolean check = true;
|
|
|
|
System.out.println(" 조회 차시 정보 "+vEInstrFeeAcmdtVO.getEduChasiOrd());
|
|
System.out.println(" 첫번쨰 차시 정보 "+selectChasiList.get(0).getEduChasiOrd());
|
|
/*
|
|
if(selectChasiList.get(0).getEduChasiOrd().equals(vEInstrFeeAcmdtVO.getEduChasiOrd())) {
|
|
check = true;
|
|
}
|
|
*/
|
|
|
|
/*
|
|
* 강사료 계산 정리
|
|
* 강사료 계산 : 기본요금 * 차시 수량
|
|
* 도서벽지수당 : 오프라인 교육이며 AND 교육지역이 도서벽지에 해당이 되면 기본 값 15,000원 * 차시 수량
|
|
* 교통비 : 왕복 거리 * 160원
|
|
*
|
|
* */
|
|
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
int instrFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_INSTR_FEE);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ instrFee : "+instrFee);
|
|
vEInstrFeeAcmdtVO.setInstrFee(Integer.toString(instrFee));
|
|
|
|
// 온라인 여부 확인(10:온라인, 20:오프라인)
|
|
if("20".equals(vEInstrFeeAcmdtVO.getEduSlctCd())){
|
|
|
|
// 도서벽지수당 계산(강의 차시 * 15,000원) 22.06.15 도서벽지 수당 중복하도록 요청으로 인한 변경
|
|
try {
|
|
if(vEInstrFeeAcmdtVO.getIsltnScholYn().equals("Y")) {
|
|
int isltnFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_ISLTN_FEE);
|
|
vEInstrFeeAcmdtVO.setSpecialWorkAllow(Integer.toString(isltnFee));
|
|
}
|
|
}catch(Exception ex) {
|
|
System.out.println(ex.getMessage());
|
|
}
|
|
|
|
|
|
if(check) {
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getOnewayDstnc() == null || vEInstrFeeAcmdtVO.getOnewayDstnc().equals("")) {
|
|
vEInstrFeeAcmdtVO.setOnewayDstnc("0");
|
|
}
|
|
|
|
// 거리비교 200Km 이상 : 40000원, 100Km 이상 : 30000원, 12Km 이상 : 20000원, 1Km 이상 10000원
|
|
int dstnc = (Integer.parseInt(vEInstrFeeAcmdtVO.getOnewayDstnc()) * 2);
|
|
|
|
String passCityList = "강원도,경기도,경상북도,경상남도,충청북도,충청남도,전라북도,전라남도,제주특별자치도";
|
|
String[] passCityArray = passCityList.split(",");
|
|
|
|
boolean passCity = true;
|
|
|
|
try {
|
|
|
|
String[] scholArea = vEInstrFeeAcmdtVO.getScholArea().split(" ");
|
|
String[] instrRsdnc = vEInstrFeeAcmdtVO.getInstrRsdnc().split(" ");
|
|
|
|
|
|
System.out.println("학교 : "+scholArea[0]+" "+scholArea[1]+" _강사 :"+instrRsdnc[0]+" "+instrRsdnc[1]+" _거리 :" + dstnc);
|
|
|
|
/*
|
|
강원도,경기도,경상북도,경상남도,충청북도,충청남도,전라북도,전라남도,제주특별자치도
|
|
광주광역시,대구광역시,대전광역시,부산광역시,서울특별시,세종특별자치시,울산광역시,인천광역시
|
|
*/
|
|
|
|
|
|
|
|
// 주소 앞자리 비교
|
|
passCity = true;
|
|
if(scholArea[0].contains(instrRsdnc[0])){
|
|
|
|
for(int i=0; i < passCityArray.length; i++) {
|
|
if(passCityArray[i].equals(scholArea[0])) {
|
|
if(!scholArea[1].equals(instrRsdnc[1])){
|
|
System.out.println("타지역 ");
|
|
passCity = false;
|
|
break;
|
|
}else {
|
|
System.out.println("거주지");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
// 다르면 끝
|
|
passCity = false;
|
|
}
|
|
}catch(Exception ex) {
|
|
System.out.println(ex.getMessage());
|
|
}
|
|
|
|
|
|
|
|
// 장거리교육수당 확인(거주지 : 10000)
|
|
if(passCity || dstnc < 12){ // 거주지 인경우
|
|
System.out.println("거주지");
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("10000");
|
|
}else { // 타지역 인경우
|
|
System.out.println("타지역 : " + vEInstrFeeAcmdtVO.getOnewayDstnc());
|
|
|
|
if(dstnc >= 200) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("40000");
|
|
}else if(dstnc >= 100 && dstnc < 200) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("30000");
|
|
}else if(dstnc >= 12 && dstnc < 100) {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("20000");
|
|
}else {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("10000");
|
|
}
|
|
|
|
// 교통비 계산 (거리 * 교통비 기본값)
|
|
int trafficFee = (Integer.parseInt(vEInstrFeeAcmdtVO.getOnewayDstnc()) * 2) * Integer.parseInt(VeConstants.BASE_TRAFFIC_FEE);
|
|
//vEInstrFeeAcmdtVO.setTrafficFee(Integer.toString(trafficFee));
|
|
|
|
if ("1".equals(p_rankNo)) {
|
|
if (p_trafficFee == null) {
|
|
vEInstrFeeAcmdtVO.setTrafficFee(Integer.toString(trafficFee));
|
|
}
|
|
}
|
|
|
|
}
|
|
vEInstrFeeAcmdtVO.setLikeCheckYn("N");
|
|
}else {
|
|
vEInstrFeeAcmdtVO.setDistanceAllow("0");
|
|
vEInstrFeeAcmdtVO.setLikeCheckYn("Y");
|
|
}
|
|
|
|
//식비지급
|
|
//vEInstrFeeAcmdtVO.setFoodExpenses("7000");
|
|
if ("1".equals(p_rankNo)) {
|
|
if (p_foodExpenses == null) {
|
|
vEInstrFeeAcmdtVO.setFoodExpenses("7000");
|
|
}
|
|
}
|
|
|
|
|
|
// 수당 합계(a+b)
|
|
int sum = + Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow());
|
|
vEInstrFeeAcmdtVO.setAllowance(sum);
|
|
|
|
// 여비 합계(c+d)
|
|
sum = Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee());
|
|
vEInstrFeeAcmdtVO.setSpareFee(String.format("%,d", sum));
|
|
|
|
System.out.println("Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())");
|
|
System.out.println(Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow()));
|
|
System.out.println(Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow()));
|
|
System.out.println(Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee()));
|
|
System.out.println(Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee()));
|
|
|
|
|
|
|
|
}else if("10".equals(vEInstrFeeAcmdtVO.getEduSlctCd())){
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// 강사료 합계
|
|
int instrFeeSum = Integer.parseInt(vEInstrFeeAcmdtVO.getInstrFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getFoodExpenses())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee())
|
|
;
|
|
vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
|
|
// 세금 합계 -> 세금 제거 요청으로 제거
|
|
// int taxSum = Integer.parseInt(vEInstrFeeAcmdtVO.getIncomeTax())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getLocalIncomeTax());
|
|
// vEInstrFeeAcmdtVO.setTaxSum(taxSum);
|
|
|
|
// 강사료 합계-세금 합계
|
|
// int totalSum = instrFeeSum - taxSum;
|
|
|
|
return vEInstrFeeAcmdtVO;
|
|
}
|
|
|
|
//성인강사용 강사료 계산 - just instrFee
|
|
public int VeInstrFeePreCalc4Adult(String p_divCd, String p_lrnTm) throws Exception {
|
|
int instrFee = 0;
|
|
|
|
instrFee = this._calcInstrFee(p_divCd, p_lrnTm);
|
|
|
|
return instrFee;
|
|
}
|
|
//성인강사용 강사료 계산
|
|
public VEInstrFeeAcmdtVO VeInstrFeeMng4Adult(VEInstrFeeService vEInstrFeeService , String eduAplctOrd, String eduChasiOrd) throws Exception {
|
|
|
|
// 강사료
|
|
VEInstrFeeAcmdtVO infoVO = new VEInstrFeeAcmdtVO();
|
|
infoVO.setEduAplctOrd(eduAplctOrd);
|
|
infoVO.setEduChasiOrd(eduChasiOrd);
|
|
VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = vEInstrFeeService.selectDetail(infoVO);
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getInstrFeeOrd() == null) {
|
|
|
|
List<VEInstrFeeAcmdtVO> selectChasiList = vEInstrFeeService.selectChasiList(vEInstrFeeAcmdtVO);
|
|
System.out.println("@@ "+selectChasiList.get(0).getTotCnt());
|
|
|
|
boolean check = false;
|
|
|
|
System.out.println(" 조회 차시 정보 "+vEInstrFeeAcmdtVO.getEduChasiOrd());
|
|
System.out.println(" 첫번쨰 차시 정보 "+selectChasiList.get(0).getEduChasiOrd());
|
|
if(selectChasiList.get(0).getEduChasiOrd().equals(vEInstrFeeAcmdtVO.getEduChasiOrd())) {
|
|
check = true;
|
|
}
|
|
|
|
/*
|
|
* 강사료 계산 정리
|
|
* 강사료 계산 : 기본요금 * 차시 수량
|
|
* 도서벽지수당 : 오프라인 교육이며 AND 교육지역이 도서벽지에 해당이 되면 기본 값 15,000원 * 차시 수량
|
|
* 교통비 : 왕복 거리 * 160원
|
|
*
|
|
* */
|
|
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
//성인은 구분에 따라 강사료가 다르다
|
|
String s_divCd = vEInstrFeeAcmdtVO.getDivCd();
|
|
int i_lrnTm = Integer.parseInt(selectChasiList.get(0).getLrnTm());
|
|
int i_lrnCnt = 0;
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ divCd : "+s_divCd);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ lrnTm : "+i_lrnTm);
|
|
/*
|
|
* (금액기준)
|
|
10,60)입문은 시간당 150,000원(최초3시간까지, 이후 시간당 75,000원) - 2급
|
|
20,50)전문은 시간당 200,000원(최초3시간까지, 이후 시간당 100,000원) - 1급
|
|
30)내부는 시간당 100,000원(최초3시간까지, 이후 시간당 50,000원)
|
|
|
|
50)1급은 전문과 동일
|
|
60)2급은 입문과 동일
|
|
|
|
40)청년은 청년강사만 해당
|
|
|
|
*/
|
|
int instrFee = 0;
|
|
|
|
instrFee = this._calcInstrFee(vEInstrFeeAcmdtVO.getDivCd(), selectChasiList.get(0).getLrnTm());
|
|
|
|
/*
|
|
while(i_lrnTm>=30 && i_lrnCnt<3) { //비용 정산을 위한 시간이 남았음
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 60; //기본 시간제외
|
|
|
|
i_lrnCnt = i_lrnCnt +1;
|
|
}
|
|
|
|
|
|
|
|
//나머지 시간에 대한 강사 비용추가(3시간 이상은 시간수당이 다름)
|
|
while(i_lrnTm>=30) { //비용 정산을 위한 시간이 남았음
|
|
//구분에 따라서 추가 비용 지급
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10_A);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20_A);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30_A);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 60; //기본 시간제외
|
|
}
|
|
*/
|
|
|
|
if (!"02".equals(vEInstrFeeAcmdtVO.getFeeInsttCd())) {
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ instrFee : "+instrFee);
|
|
vEInstrFeeAcmdtVO.setInstrFee(Integer.toString(instrFee));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 강사료 합계
|
|
int instrFeeSum = Integer.parseInt(vEInstrFeeAcmdtVO.getInstrFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getFoodExpenses())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee())
|
|
;
|
|
vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
|
|
// 세금 합계 -> 세금 제거 요청으로 제거
|
|
// int taxSum = Integer.parseInt(vEInstrFeeAcmdtVO.getIncomeTax())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getLocalIncomeTax());
|
|
// vEInstrFeeAcmdtVO.setTaxSum(taxSum);
|
|
|
|
// 강사료 합계-세금 합계
|
|
// int totalSum = instrFeeSum - taxSum;
|
|
|
|
return vEInstrFeeAcmdtVO;
|
|
}
|
|
|
|
//기반, 기소유예 강사료 계산
|
|
public VEInstrFeeAcmdtVO VeInstrFeeMng4Fndth(VEInstrFeeService vEInstrFeeService , String eduAplctOrd, String eduChasiOrd) throws Exception {
|
|
|
|
// 강사료
|
|
VEInstrFeeAcmdtVO infoVO = new VEInstrFeeAcmdtVO();
|
|
infoVO.setEduAplctOrd(eduAplctOrd);
|
|
infoVO.setEduChasiOrd(eduChasiOrd);
|
|
VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = vEInstrFeeService.selectDetail4Fndth(infoVO);
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getInstrFeeOrd() == null) {
|
|
|
|
/*
|
|
* 강사료 계산 정리
|
|
* 강사료 계산 : 기본요금 * 차시 수량
|
|
* 도서벽지수당 : 오프라인 교육이며 AND 교육지역이 도서벽지에 해당이 되면 기본 값 15,000원 * 차시 수량
|
|
* 교통비 : 왕복 거리 * 160원
|
|
*
|
|
* */
|
|
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
//성인은 구분에 따라 강사료가 다르다
|
|
String s_divCd = vEInstrFeeAcmdtVO.getDivCd();
|
|
//int i_lrnTm = Integer.parseInt(selectChasiList.get(0).getLrnTm());
|
|
int i_lrnTm = 0; //기소유예, 기반강화는 교육시간을 알수 없어서 추가 교육 시간 강사비용 계산이 안됨
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ divCd : "+s_divCd);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ lrnTm : "+i_lrnTm);
|
|
/*
|
|
* (금액기준)
|
|
10,60)입문은 시간당 150,000원(최초3시간까지, 이후 시간당 75,000원) - 2급
|
|
20,50)전문은 시간당 200,000원(최초3시간까지, 이후 시간당 100,000원) - 1급
|
|
30)내부는 시간당 100,000원(최초3시간까지, 이후 시간당 50,000원)
|
|
|
|
50)1급은 전문과 동일
|
|
60)2급은 입문과 동일
|
|
|
|
40)청년은 청년강사만 해당
|
|
|
|
*/
|
|
int instrFee = 0;
|
|
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 180; //기본 시간제외
|
|
|
|
//나머지 시간에 대한 강사 비용추가
|
|
while(i_lrnTm>0) { //비용 정산을 위한 시간이 남았음
|
|
//구분에 따라서 추가 비용 지급
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10_A);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20_A);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30_A);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 180; //기본 시간제외
|
|
}
|
|
|
|
//int instrFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_INSTR_FEE);
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ instrFee : "+instrFee);
|
|
vEInstrFeeAcmdtVO.setInstrFee(Integer.toString(instrFee));
|
|
|
|
}
|
|
|
|
|
|
// 강사료 합계
|
|
int instrFeeSum = Integer.parseInt(vEInstrFeeAcmdtVO.getInstrFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getFoodExpenses())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee())
|
|
;
|
|
|
|
if ("Y".equals(vEInstrFeeAcmdtVO.getSbmtYn())) {
|
|
//vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
}
|
|
|
|
vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
|
|
// 세금 합계 -> 세금 제거 요청으로 제거
|
|
// int taxSum = Integer.parseInt(vEInstrFeeAcmdtVO.getIncomeTax())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getLocalIncomeTax());
|
|
// vEInstrFeeAcmdtVO.setTaxSum(taxSum);
|
|
|
|
// 강사료 합계-세금 합계
|
|
// int totalSum = instrFeeSum - taxSum;
|
|
|
|
return vEInstrFeeAcmdtVO;
|
|
}
|
|
|
|
//기반, 기소유예 강사료 계산
|
|
public VEInstrFeeAcmdtVO VeInstrFeeMng4Fndth4Excel(VEInstrFeeService vEInstrFeeService , String eduAplctOrd, String eduChasiOrd) throws Exception {
|
|
|
|
// 강사료
|
|
VEInstrFeeAcmdtVO infoVO = new VEInstrFeeAcmdtVO();
|
|
infoVO.setEduAplctOrd(eduAplctOrd);
|
|
infoVO.setEduChasiOrd(eduChasiOrd);
|
|
VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = vEInstrFeeService.selectDetail4Fndth(infoVO);
|
|
|
|
|
|
if(vEInstrFeeAcmdtVO.getInstrFeeOrd() == null) {
|
|
|
|
/*
|
|
* 강사료 계산 정리
|
|
* 강사료 계산 : 기본요금 * 차시 수량
|
|
* 도서벽지수당 : 오프라인 교육이며 AND 교육지역이 도서벽지에 해당이 되면 기본 값 15,000원 * 차시 수량
|
|
* 교통비 : 왕복 거리 * 160원
|
|
*
|
|
* */
|
|
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
//성인은 구분에 따라 강사료가 다르다
|
|
String s_divCd = vEInstrFeeAcmdtVO.getDivCd();
|
|
//int i_lrnTm = Integer.parseInt(selectChasiList.get(0).getLrnTm());
|
|
int i_lrnTm = 0; //기소유예, 기반강화는 교육시간을 알수 없어서 추가 교육 시간 강사비용 계산이 안됨
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ divCd : "+s_divCd);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ lrnTm : "+i_lrnTm);
|
|
/*
|
|
* (금액기준)
|
|
10,60)입문은 시간당 150,000원(최초3시간까지, 이후 시간당 75,000원) - 2급
|
|
20,50)전문은 시간당 200,000원(최초3시간까지, 이후 시간당 100,000원) - 1급
|
|
30)내부는 시간당 100,000원(최초3시간까지, 이후 시간당 50,000원)
|
|
|
|
50)1급은 전문과 동일
|
|
60)2급은 입문과 동일
|
|
|
|
40)청년은 청년강사만 해당
|
|
|
|
*/
|
|
int instrFee = 0;
|
|
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 180; //기본 시간제외
|
|
|
|
//나머지 시간에 대한 강사 비용추가
|
|
while(i_lrnTm>0) { //비용 정산을 위한 시간이 남았음
|
|
//구분에 따라서 추가 비용 지급
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10_A);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20_A);
|
|
|
|
}else { //maybe 30
|
|
instrFee = instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30_A);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 180; //기본 시간제외
|
|
}
|
|
|
|
//int instrFee = Integer.parseInt(vEInstrFeeAcmdtVO.getChasi()) * Integer.parseInt(VeConstants.BASE_INSTR_FEE);
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ instrFee : "+instrFee);
|
|
vEInstrFeeAcmdtVO.setInstrFee(Integer.toString(instrFee));
|
|
|
|
}
|
|
|
|
|
|
// 강사료 합계
|
|
int instrFeeSum = Integer.parseInt(vEInstrFeeAcmdtVO.getInstrFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getSpecialWorkAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getDistanceAllow())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getTrafficFee())
|
|
+ Integer.parseInt(vEInstrFeeAcmdtVO.getFoodExpenses())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getAcmdtFee())
|
|
;
|
|
|
|
if ("Y".equals(vEInstrFeeAcmdtVO.getSbmtYn())) {
|
|
vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
}
|
|
|
|
//vEInstrFeeAcmdtVO.setInstrFeeSum(instrFeeSum);
|
|
|
|
// 세금 합계 -> 세금 제거 요청으로 제거
|
|
// int taxSum = Integer.parseInt(vEInstrFeeAcmdtVO.getIncomeTax())
|
|
// + Integer.parseInt(vEInstrFeeAcmdtVO.getLocalIncomeTax());
|
|
// vEInstrFeeAcmdtVO.setTaxSum(taxSum);
|
|
|
|
// 강사료 합계-세금 합계
|
|
// int totalSum = instrFeeSum - taxSum;
|
|
|
|
return vEInstrFeeAcmdtVO;
|
|
}
|
|
|
|
private int _calcInstrFee(
|
|
String p_divCd
|
|
, String p_lrnTm
|
|
)throws Exception {
|
|
// 강사료 계산 (강의차시 * 강사 기본값)
|
|
//성인은 구분에 따라 강사료가 다르다
|
|
String s_divCd = p_divCd;
|
|
int i_lrnTm = Integer.parseInt(p_lrnTm);
|
|
int i_lrnCnt = 0;
|
|
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ divCd : "+s_divCd);
|
|
System.out.println(" @@@@@@@@@@@@@@@@@@@@@@ lrnTm : "+i_lrnTm);
|
|
/*
|
|
* (금액기준)
|
|
10,60)입문은 시간당 150,000원(최초3시간까지, 이후 시간당 75,000원) - 2급
|
|
20,50)전문은 시간당 200,000원(최초3시간까지, 이후 시간당 100,000원) - 1급
|
|
30)내부는 시간당 100,000원(최초3시간까지, 이후 시간당 50,000원)
|
|
|
|
50)1급은 전문과 동일
|
|
60)2급은 입문과 동일
|
|
|
|
40)청년은 청년강사만 해당
|
|
|
|
*/
|
|
int v_instrFee = 0;
|
|
|
|
while(i_lrnTm>=30 && i_lrnCnt<3) { //비용 정산을 위한 시간이 남았음
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20);
|
|
|
|
}else { //maybe 30
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 60; //기본 시간제외
|
|
|
|
i_lrnCnt = i_lrnCnt +1;
|
|
}
|
|
|
|
|
|
|
|
//나머지 시간에 대한 강사 비용추가(3시간 이상은 시간수당이 다름)
|
|
while(i_lrnTm>=30) { //비용 정산을 위한 시간이 남았음
|
|
//구분에 따라서 추가 비용 지급
|
|
if ("10".equals(s_divCd) || "60".equals(s_divCd)) {
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A10_A);
|
|
|
|
}else if ("20".equals(s_divCd) || "50".equals(s_divCd)) {
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A20_A);
|
|
|
|
}else { //maybe 30
|
|
v_instrFee = v_instrFee + Integer.parseInt(VeConstants.BASE_INSTR_FEE_A30_A);
|
|
}
|
|
|
|
i_lrnTm = i_lrnTm - 60; //기본 시간제외
|
|
}
|
|
|
|
return v_instrFee;
|
|
}
|
|
}
|