diff --git a/FO/Controllers/CourseController.cs b/FO/Controllers/CourseController.cs index 566938f..f924d7a 100644 --- a/FO/Controllers/CourseController.cs +++ b/FO/Controllers/CourseController.cs @@ -1,16 +1,12 @@ -using System; +using NP.Base.Controllers; +using NP.Model; +using NP.Model.ENUM; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Web; using System.Web.Mvc; - -using NP.Model; -using NP.Base; -using System.Collections; - using XPayClientNet; -using NP.Model.ENUM; -using System.Xml.Linq; namespace NP.FO.Controllers { @@ -295,10 +291,7 @@ namespace NP.FO.Controllers { return Redirect("/Course/Offs"); } - //else if (Response.IsRequestBeingRedirected) - //{ - // return RedirectToAction("OffDetail", new { cmno = vm.cmno }); - //} + vm.viewname3 = vm.viewname3 ?? ""; vm.previewname = vm.previewname ?? "/Course/Offs"; vm.CM = Dao.Get("cm.cms.forbuy", new System.Collections.Hashtable() { { "cmno", vm.cmno }, { "userno", SUserInfo.UserNo }, { "contents", vm.Contents } }).First(); @@ -421,82 +414,6 @@ namespace NP.FO.Controllers d.isbig = isbig ? 1 : 0; } } - //if (iscm && !string.IsNullOrEmpty(vm.CM.tasteurl)) - //{ - // var d = vm.CM; - // //Thumbnail 확인 - // if (!System.IO.File.Exists(Server.MapPath(vm.Thumbnails + "/" + d.cmno + ".jpg"))) - // { - // if (!System.IO.Directory.Exists(Server.MapPath(vm.Files + vm.Thumbnails))) - // { - // System.IO.Directory.CreateDirectory(Server.MapPath(vm.Files + vm.Thumbnails + "/")); - // } - // String thumbargs = "-i " + Server.MapPath(vm.Contents + d.tasteurl) + " -vframes 1 -ss 00:00:07 -s 150x150 " + Server.MapPath(vm.Thumbnails + "/" + d.cmno + ".jpg"); - // System.Diagnostics.Process thumbproc = new System.Diagnostics.Process(); - // thumbproc = new System.Diagnostics.Process(); - // thumbproc.StartInfo.FileName = GetConfig("thumbnailexe"); - // thumbproc.StartInfo.Arguments = thumbargs; - // thumbproc.StartInfo.UseShellExecute = false; - // thumbproc.StartInfo.CreateNoWindow = false; - // thumbproc.StartInfo.RedirectStandardOutput = false; - // try - // { - // thumbproc.Start(); - // d.tasteurl = vm.Thumbnails + "/" + d.cmno + ".jpg"; - // } - // catch (Exception ex) - // { - // SetError("ffmpeg: " + ex.Message); - // d.tasteurl = isbig ? "/img/online/fair_sample01.jpg" : "/img/main/main_edu_thumb01.jpg"; - // } - // thumbproc.WaitForExit(); - // thumbproc.Close(); - // //_repository.CreateUniqueFullPath(_path); - // } - // else - // { - // d.tasteurl = vm.Thumbnails + "/" + d.cmno + ".jpg"; - // } - //} - //else if (!iscm) - //{ - // foreach (var d in vm.CMs.Where(w => !string.IsNullOrEmpty(w.tasteurl))) - // { - // //Thumbnail 확인 - // if (!System.IO.File.Exists(Server.MapPath(vm.Thumbnails + "/" + d.cmno + ".jpg"))) - // { - // if (!System.IO.Directory.Exists(Server.MapPath(vm.Files + vm.Thumbnails))) - // { - // System.IO.Directory.CreateDirectory(Server.MapPath(vm.Files + vm.Thumbnails + "/")); - // } - // String thumbargs = "-i " + Server.MapPath(vm.Contents + d.tasteurl) + " -vframes 1 -ss 00:00:07 -s 150x150 " + Server.MapPath(vm.Thumbnails + "/" + d.cmno + ".jpg"); - // System.Diagnostics.Process thumbproc = new System.Diagnostics.Process(); - // thumbproc = new System.Diagnostics.Process(); - // thumbproc.StartInfo.FileName = GetConfig("thumbnailexe"); - // thumbproc.StartInfo.Arguments = thumbargs; - // thumbproc.StartInfo.UseShellExecute = false; - // thumbproc.StartInfo.CreateNoWindow = false; - // thumbproc.StartInfo.RedirectStandardOutput = false; - // try - // { - // thumbproc.Start(); - // d.tasteurl = vm.Thumbnails + "/" + d.cmno + ".jpg"; - // } - // catch (Exception ex) - // { - // SetError("ffmpeg: " + ex.Message); - // d.tasteurl = "/img/main/main_edu_thumb01.jpg"; - // } - // thumbproc.WaitForExit(); - // thumbproc.Close(); - // //_repository.CreateUniqueFullPath(_path); - // } - // else - // { - // d.tasteurl = vm.Thumbnails + "/" + d.cmno + ".jpg"; - // } - // } - //} } @@ -772,32 +689,48 @@ namespace NP.FO.Controllers return PayReturn(vm); } + #region 스마트검색 / 스마트검색 결과 + // 로그인을 하지 않았읋 때 스마트검색에서 교육신청을 하면 스마트검색 결과 페이지가 나온다 + // 로그인을 한 상태에서 스마트검색에서 교육신청을 하면 스마트검색 결과 페이지는 나오지 않는다. + + + /// + /// 스마트검색 + /// + /// + /// public ActionResult SmartSearch(VMCourse vm) { - // 2024.08.07 로그인제한 해제 - //if (SUserInfo.UserNo == 0) { - // return RedirectToAction(nameof(HomeController.Index), "Home"); - //} + /* + stringval : 0: 건설기술진흥법교육 (현재 고정됨) + stringval2 : SKILL (1: 교육장, 2:온라인) - cshape + stringval3 : 기술인분류 (SELECT * FROM comcode WHERE cgroup = 'typeman' AND isuse = 1) + stringval4 : 교육목적 (SELECT * FROM comcode WHERE cgroup = 'typeedu' AND isuse = 1) + stringval5 : 등급 (SELECT * FROM comcode WHERE cgroup = 'typegrade' AND isuse = 1 ) + stringval6 : 직무분야 (SELECT * FROM comcode WHERE cgroup = 'typejob' AND isuse = 1) + stringval7 : 전문분야 (SELECT * + FROM comcode + WHERE isuse = 1 + AND cgroup IN ('typejob40','typejob41','typejob42','typejob43','typejob44','typejob45','typejob46','typejob47','typejob48','typejob49')) + */ + + var p = new Hashtable(); + + // 교육장소 vm.ComCodes = GetComCodes("studyplace"); - vm.CMsEtc = Dao.Get("cm.cgetc", new System.Collections.Hashtable() { { "cgcode", "2" } });//cgcode = 기타교육 // 기타교육 cgcode 바뀌면 파라미터도 변경해야함 - vm.CM = Dao.Get("cm.cms", new System.Collections.Hashtable()).First(); + + // 아스팔트포장전문교육 + p.Clear(); + p.Add("cgcode", "2"); + vm.CMsEtc = Dao.Get("cm.cgetc", p); + + p.Clear(); + vm.CM = Dao.Get("cm.cms", p).First(); + var hsData = SetHash(vm); + if (vm.stringval == "0" || string.IsNullOrEmpty(vm.stringval)) //건설기술진흥법교육 { - //hsData.Add("ismaster", 1); - //hsData.Add("cshape", vm.stringval2); - //hsData.Add("typeman", vm.stringval3); - //hsData.Add("typeedu", vm.stringval4); - //hsData.Add("typegrade", vm.stringval5); - //hsData.Add("typejob", vm.stringval6); - //hsData.Add("typejobitem", vm.stringval7); - - ////vm.CMs = Dao.Get("cm.cms", new System.Collections.Hashtable() { { "ismaster", "1" }, { "cshape", vm.stringval2 }, { "typeman", vm.stringval3 }, { "typeedu", vm.stringval4 }, { "typegrade", vm.stringval5 }, { "typejob", vm.stringval6 }, { "typejobitem", vm.stringval7 } }).Where(w=>w.isuse == 1).ToList(); - //vm.CMs = Dao.Get("cm.cms", hsData).Where(w => w.isuse == 1).ToList(); - - // 20220726 공개+현재수강신청가능한 강좌목록 구하기 - //20220726 소스 정리 - //hsData = SetHash(vm); hsData.Add("cshape", vm.stringval2); hsData.Add("typeman", vm.stringval3); hsData.Add("typeedu", vm.stringval4); @@ -806,17 +739,19 @@ namespace NP.FO.Controllers hsData.Add("typejobitem", vm.stringval7); hsData.Add("isuse", 1); hsData.Add("orderby", " a.pcmno, a.cname"); + vm.CMs = Dao.Get("cm.subcms", hsData).ToList(); } else if (vm.stringval == "1") //기타교육 { - vm.CMs = Dao.Get("cm.cms", new System.Collections.Hashtable() { { "ismaster", "1" }, { "cshape", vm.stringval2 }, { "cgno", vm.stringval3 }, { "isuse", 1 } }).ToList(); - } + p.Clear(); + p.Add("ismaster", "1"); + p.Add("cshape", vm.stringval2); + p.Add("cgno", vm.stringval3); + p.Add("isuse", 1); - //hsData.Clear(); - //hsData = SetHash(vm); - ////hsData.Add("month", (vm.scdMonth == null) ? DateTime.Now.Month : vm.scdMonth); - //vm.CMInningscds = Dao.Get("cm.cminningscds.applyedu", hsData).Where(w => w.studyplace != null).ToList(); + vm.CMs = Dao.Get("cm.cms", p).ToList(); + } vm.ComCodes2 = GetComCodes("typeman"); vm.ComCodes3 = GetComCodes("typeedu"); @@ -825,14 +760,19 @@ namespace NP.FO.Controllers vm.ComCodes6 = GetComCodes("typejobitem"); bool getComCheck = true; - var typeman = vm.ComCodes2.Where(w => w.ccode == (!string.IsNullOrEmpty(vm.stringval3) ? int.Parse(vm.stringval3) : 0)).FirstOrDefault(); - var typemanName = typeman != null ? typeman.cname : string.Empty; - var typeedu = vm.ComCodes3.Where(w => w.ccode == (!string.IsNullOrEmpty(vm.stringval4) ? int.Parse(vm.stringval4) : 0)).FirstOrDefault(); - var typeeduName = typeedu != null ? typeedu.cname : string.Empty; + + // 기술인분류 + ComCode typeman = vm.ComCodes2.Where(w => w.ccode == (!string.IsNullOrEmpty(vm.stringval3) ? int.Parse(vm.stringval3) : 0)).FirstOrDefault(); + string typemanName = typeman != null ? typeman.cname : string.Empty; + + // 교육목적 + ComCode typeedu = vm.ComCodes3.Where(w => w.ccode == (!string.IsNullOrEmpty(vm.stringval4) ? int.Parse(vm.stringval4) : 0)).FirstOrDefault(); + string typeeduName = typeedu != null ? typeedu.cname : string.Empty; if (typemanName.Contains("설계시공기술인")) { vm.ComCodes3 = vm.ComCodes3.Where(x => x.cname != "안전관리계속교육(16시간)").ToList(); + if (typeeduName.Contains("승급교육")) { vm.ComCodes4 = vm.ComCodes4.Where(x => x.cname != "초급").ToList(); @@ -841,7 +781,8 @@ namespace NP.FO.Controllers { vm.ComCodes4 = vm.ComCodes4.Where(x => x.cname == "특급").ToList(); } - vm.ComCodes5 = vm.ComCodes5.Where(x => x.cname != "품질관리").ToList(); + + vm.ComCodes5 = vm.ComCodes5.Where(x => x.cname != "품질관리").ToList(); } else if (typemanName.Contains("건설사업관리기술인")) { @@ -849,15 +790,18 @@ namespace NP.FO.Controllers { vm.ComCodes4 = vm.ComCodes4.Where(x => x.cname != "초급").ToList(); } + vm.ComCodes5 = vm.ComCodes5.Where(x => x.cname != "품질관리").ToList(); } else if (typemanName.Contains("품질관리기술인")) { vm.ComCodes3 = vm.ComCodes3.Where(x => x.cname != "안전관리계속교육(16시간)").ToList(); + if (typeeduName.Contains("승급교육")) { vm.ComCodes4 = vm.ComCodes4.Where(x => x.cname != "초급").ToList(); } + vm.ComCodes5 = vm.ComCodes5.Where(x => x.cname == "품질관리").ToList(); } else if (typemanName.Contains("발주청기술인")) @@ -869,8 +813,9 @@ namespace NP.FO.Controllers { vm.ComCodes3 = vm.ComCodes3.Where(x => x.ccode == 0).ToList(); vm.ComCodes4 = vm.ComCodes4.Where(x => x.ccode == 0).ToList(); - vm.ComCodes5 = vm.ComCodes5.Where(x => x.ccode == 0).ToList(); + vm.ComCodes5 = vm.ComCodes5.Where(x => x.ccode == 0).ToList(); vm.ComCodes6 = vm.ComCodes6.Where(x => x.ccode == 0).ToList(); + getComCheck = false; } @@ -882,12 +827,17 @@ namespace NP.FO.Controllers return View(vm); } - public ActionResult SmartSearchResult(VMCourse vm) + /// + /// 스마트검색 결과 + /// + /// + /// + public ActionResult SmartSearchResult(VMCourse vm) { + #region + 개발 시 참고사항인듯 하다 /* * https://www.ynicte.com/Course/SmartSearchResult?stringval=&stringval2=2&stringval3=25&stringval4=29&stringval5=36&stringval6=40&stringval7=58&stringval17=859&stringval18=33&stringval19=50085&stringval20=14795&stringval21=101 - * - * + string rslt = ""; rslt += "stringval=" + vm.stringval; rslt += "
stringval2=" + vm.stringval2; @@ -905,48 +855,302 @@ namespace NP.FO.Controllers rslt += "
userno=" + SUserInfo.UserNo; */ + #endregion + + var p = new Hashtable(); ViewBag.IsMain = true; - Base.Controllers.FOCommonController fOCommonController = new Base.Controllers.FOCommonController(); - fOCommonController.Dao = new Dao.CommonDao(); + #region + (사용중) ViewBag.rslt 신청 제약 조건 + var fOCommonController = new Base.Controllers.FOCommonController(); + fOCommonController.Dao = new Dao.CommonDao(); ViewBag.rslt = fOCommonController.CheckUserLect(vm.stringval3, vm.stringval21, vm.stringval4, vm.stringval5, int.Parse(vm.stringval17), int.Parse(vm.stringval18), SUserInfo.UserNo); - //vm.ComCodes = GetComCodes("studyplace"); + #endregion + + #region + 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) + //var result = new KeyValuePair(); + //result = CheckUserLectInfo( + // cmno: Convert.ToInt16(vm.stringval17), + // pcmno: Convert.ToInt16(vm.stringval18), + // userno: SUserInfo.UserNo, + // man: vm.stringval3, + // cgcode: vm.stringval21, + // edu: vm.stringval4, + // grade: vm.stringval5, + // job1: vm.stringval6 + // ); + + //ViewBag.rslt = result.Key; + #endregion + + #region + ComCodes2 ~ 6 까지 설정 vm.ComCodes2 = GetComCodes("typeman"); vm.ComCodes3 = GetComCodes("typeedu"); vm.ComCodes4 = GetComCodes("typegrade"); vm.ComCodes5 = GetComCodes("typejob"); vm.ComCodes6 = GetComCodes("typejob40,typejob41,typejob42,typejob43,typejob44,typejob45,typejob46,typejob47,typejob48,typejob49,typejob57"); - vm.CM = Dao.Get("cm.cms", new System.Collections.Hashtable() { { "cmno", vm.stringval17 } }).FirstOrDefault(); + #endregion - Hashtable hsData = new Hashtable(); - hsData.Add("cmno", vm.stringval17); - vm.CMInningscds= Dao.Get("cm.cminningscds.applyedu" , hsData); - vm.SelectCMInningscd = vm.CMInningscds.Where(c => c.cmisno == long.Parse(vm.stringval20) && c.cmino == long.Parse(vm.stringval19)).First(); - vm.intval = Dao.Get("lect.count.user4", new Hashtable { { "userno", SUserInfo.UserNo }, { "pcmno", long.Parse(vm.stringval18) } }).FirstOrDefault(); - vm.intval2 = Dao.Get("cm.lectcheckuser", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo }, { "cmno", vm.stringval17 } }).First(); + #region + Get: "cm.cms + p.Clear(); + p.Add("cmno", vm.stringval17); + vm.CM = Dao.Get("cm.cms", p).FirstOrDefault(); + #endregion + + #region + Get: cm.cminningscds.applyedu + p.Clear(); + p.Add("cmno", vm.stringval17); + vm.CMInningscds = Dao.Get("cm.cminningscds.applyedu", p); + #endregion + + vm.SelectCMInningscd = vm.CMInningscds + .Where(c => c.cmisno == long.Parse(vm.stringval20) && c.cmino == long.Parse(vm.stringval19)) + .First(); + + #region + Get: lect.count.user4 + p.Clear(); + p.Add("userno", SUserInfo.UserNo); + p.Add("pcmno", long.Parse(vm.stringval18)); + vm.intval = Dao.Get("lect.count.user4", p).FirstOrDefault(); + #endregion + + #region + Get: cm.lectcheckuser + p.Clear(); + p.Add("userno", SUserInfo.UserNo); + p.Add("cmno", vm.stringval17); + vm.intval2 = Dao.Get("cm.lectcheckuser", p).First(); + #endregion - /* - * - * applyClassEdu(" + d.cmno + ", " + d.pcmno + ", " + d.cmino + ", " + d.cmisno + ");" }); - * - */ return View(vm); } - //private string GetComCode6CodeList(IList comCodes) - //{ - // string result = ""; + #region ++ 2025-09 (스마트검색 개발 건 미사용으로 주석처리, 필요시 복원) - // foreach(var item in comCodes) - // { - // result += (result == "" ? "" : ",") + "typejob" + item.ccode; - // } + // 본문에 주석이 너무많아 주석처리는 아니고 그냥 미사용 (메서드 이름이 다름) + // FO > CourseController.CheckUserLect, FOCommonController.CheckUserLect 동일한 코드 (Dao문제로 2개구현, 공통이나, 서비스로 뺴야한다) - // return result; - //} + /// + /// 수강 제약조건 확인 (FOCommonController.CheckUserLect 와 동일, 함께 수정해야함 => Dao문제로 2개구현) + /// + /// 강좌키 + /// 연계강좌키 + /// 회원번호 + /// 기술인분류 + /// + /// 교육목적 + /// 등급 + /// Code (0:수강가능, -2,동일한과정 재신청 제약, -10:최초교육제약, -20:승급교육제약, -100:에러) , Message + public KeyValuePair CheckUserLectInfo(int cmno, int pcmno, long userno, string man, string cgcode, string edu, string grade, string job1 = "") + { + var result = new KeyValuePair(0, "수강신청 가능"); + + #region + DB에서 코드 값 찾기 + /***************************************************************************************************** + * a) 기술인분류 SELECT * FROM comcode WHERE cgroup = 'typeman' AND isUse = 1 + * b) 과정분류 SELECT * FROM cg WHERE isUse = 1 + * c) 교육목적 SELECT * FROM comcode WHERE cgroup = 'typeedu' AND isUse = 1 + * d) 등급 SELECT * FROM comcode WHERE cgroup = 'typegrade' AND isUse = 1 + * e) 직무분야 SELECT * FROM comcode WHERE cgroup = 'typejob' AND isUse = 1 + * f) 직무분야 전체 SELECT * FROM comcode WHERE cgroup LIKE 'typejob%' AND isUse = 1 + *******************************************************************************************************/ + #endregion + + // result (0:수강가능, 이 외 수강불가) + + try + { + + #region + (탈출) 1. 건설사업관리기술인 관련 제한 조건 (lectEnrolls 참조하지 않음, Request 값만...) + // 조건: 건설사업관리기술인(28) + 초급/중급(36,37) + 역량강화(103,104) 은 신청불가 + if (edu == "31") + { + bool isRestrictedContinueEdu = + man == "28" + && (grade == "36" || grade == "37") + && (cgcode == "103" || cgcode == "104"); + + if (isRestrictedContinueEdu) + { + return new KeyValuePair(-30, "계속교육 제약"); + } + } + #endregion + + #region + Get: lect.enroll.get (lectEnrolls = 회원 수강신청 내역) + var p = new Hashtable(); + p.Add("uno", userno); + + IList lectEnrolls = Dao.Get("lect.enroll.get", p); + #endregion + + // 회원의 이전 수강신청내역이 있다면 + if (lectEnrolls != null && lectEnrolls.Any()) + { + + #region + (탈출) 2. 동일한 과정은 1개만 수강 가능 (cm.cmno) + if (lectEnrolls.Any(l => l.cmno == cmno)) + { + // -2는 동일 과정 중복 + return new KeyValuePair(-2, "동일강좌 중복제약"); + } + #endregion + + #region + (탈출) 3. 교육목적 -> 기본교육(29) 관련 제한 조건 + if (edu == "29") + { + // 기존 신청 내역 중 기본교육(29)이 있는지 확인 (기본교육은 1개만 신청가능) + bool hasExistingBasicEdu = lectEnrolls.Any(l => l.TYPEEDU == 29); + if (hasExistingBasicEdu) + { + return new KeyValuePair(-30, "기본교육 제약"); + } + } + #endregion + + #region + (탈출) 4. 교육목적 -> 최초교육(30) 관련 제한 조건 + // - 최초교육(30)의 기술인분류(25,27,28)가 과정분류 역량강화(103,104)인 최초교육은 1개만 신청 가능. + if (edu == "30") + { + // 1) 현재 신청하는 교육이 제한 대상인지 확인 + bool isApplyingForRestrictedFirstEdu = + (man == "25" || man == "27" || man == "28") + && (cgcode == "103" || cgcode == "104"); + + if (isApplyingForRestrictedFirstEdu) + { + // 2) 이미 신청 내역 중에 제한 대상에 해당하는 최초교육이 있는지 확인 + bool hasExistingRestrictedFirstEdu = lectEnrolls.Any(l => + l.TYPEEDU == 30 + && (l.TYPEMAN == 25 || l.TYPEMAN == 27 || l.TYPEMAN == 28) + && (l.CGCODE == "103" || l.CGCODE == "104") + ); + + // 조건을 만족하는 기존 교육이 발견되면, 중복신청 막기 처리 + if (hasExistingRestrictedFirstEdu) + { + return new KeyValuePair(-10, "최초교육 제약"); + } + } + } + #endregion + + #region + (탈출) 5. 교육목적 -> 승급교육(35) 관련 제한 조건 + // 승급교육(35) 관련 제한 조건 (A, B, C, D 그룹) + if (edu == "35") + { + // 제약의 공통 전제조건: 고급(38) 또는 특급(39) 등급인 경우에만 적용 + bool isAdvancedGrade = grade == "38" || grade == "39"; + + if (isAdvancedGrade) + { + // A: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 + // ((설계시공 또는 건설사업관리) / (역량강화 또는 전문분야)) + bool isApplyingForGroupA = (man == "25" || man == "28") && (cgcode == "103" || cgcode == "104" || cgcode == "105"); + if (isApplyingForGroupA) + { + bool hasExistingInGroupA = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "25" || l.TYPEMAN.ToString() == "28") + && (l.CGCODE == "103" || l.CGCODE == "104" || l.CGCODE == "105") + ) + ); + + if (hasExistingInGroupA) + { + return new KeyValuePair(-20, "승급교육 제약A"); + } + } + + // B: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 + // ((설계시공/특성화) 또는 (건설사업관리/전문분야)) + bool isApplyingForGroupB = (man == "25" && cgcode == "107") || (man == "28" && cgcode == "105"); + if (isApplyingForGroupB) + { + bool hasExistingInGroupB = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") + || (l.TYPEMAN.ToString() == "28" && l.CGCODE == "105") + ) + ); + + if (hasExistingInGroupB) + { + return new KeyValuePair(-20, "승급교육 제약B"); + } + } + + // C: 등급, 동일 직무분야 내에서 1개만 신청 가능 + // ((설계시공/특성화) 또는 (건설사업관리/역량강화)) + bool isApplyingForGroupC = (man == "25" && cgcode == "107") || (man == "28" && (cgcode == "103" || cgcode == "104")); + if (isApplyingForGroupC) + { + bool hasExistingInGroupC = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && ( + (l.TYPEMAN.ToString() == "25" && l.CGCODE == "107") + || (l.TYPEMAN.ToString() == "28" && (l.CGCODE == "103" || l.CGCODE == "104")) + ) + ); + + if (hasExistingInGroupC) + { + return new KeyValuePair(-20, "승급교육 제약C"); + } + } + + // D: 동일 등급, 동일 직무분야 내에서 1개만 신청 가능 + // ((건설사업관리/건설기술인 전문교육)) + bool isApplyingForGroupD = man == "28" && cgcode == "102"; + if (isApplyingForGroupD) + { + bool hasExistingInGroupD = lectEnrolls.Any(l => + l.TYPEEDU == 35 + && l.TYPEGRADE.ToString() == grade + && l.TYPEJOB.ToString() == job1 + && (l.TYPEMAN.ToString() == "28" && l.CGCODE == "102") + ); + + if (hasExistingInGroupD) + { + return new KeyValuePair(-20, "승급교육 제약D"); + } + } + } + } + + + #endregion + + } + else + { + // 이전에 수강 신청한 내역이 아무것도 없기에 제약조건을 걸 필요가 없음. + result = new KeyValuePair(0, "이전에 아무것도 수강신청한 내역이 없음"); + } + + } + catch (Exception ex) + { + SetError($"CheckUserLectInfo: {ex.Message}"); + result = new KeyValuePair(-100, ex.Message); + } + + return result; + } + #endregion + + + #endregion [NP.Base.Auth.CFilter] public ActionResult ApplyEdu(VMCourse vm) @@ -970,20 +1174,7 @@ namespace NP.FO.Controllers vm.Assign = Dao.Get("cm.assign.applyedu", new Hashtable() { { "userno", SUserInfo.UserNo } }).FirstOrDefault(); if (vm.Assign != null) { - vm.Assign.mname = null; - //if (!string.IsNullOrEmpty(vm.Assign.MphoneFormat) && vm.Assign.MphoneFormat.IndexOf("-") >= 0) - //{ - //string[] mphoneArr = vm.Assign.MphoneFormat.Split('-'); - //vm.Assign.mphone1 = mphoneArr.Length > 0 ? mphoneArr[0] : string.Empty; - //vm.Assign.mphone2 = mphoneArr.Length > 1 ? mphoneArr[1] : string.Empty; - //vm.Assign.mphone3 = mphoneArr.Length > 2 ? mphoneArr[2] : string.Empty; - //} - //if (!string.IsNullOrEmpty(vm.Assign.taxemail) && vm.Assign.taxemail.IndexOf("@") >= 0) - //{ - //string[] taxemailArr = vm.Assign.taxemail.Split('@'); - //vm.Assign.taxemail1 = taxemailArr.Length > 0 ? taxemailArr[0] : string.Empty; - //vm.Assign.taxemail2 = taxemailArr.Length > 1 ? taxemailArr[1] : string.Empty; - //} + vm.Assign.mname = null; vm.FileList = new List() { }; if (vm.Assign.fgnobno != null) { @@ -1209,6 +1400,13 @@ namespace NP.FO.Controllers return View(vm); } + + + /// + /// 교육신청확인 + /// + /// + /// [NP.Base.Auth.CFilter] public ActionResult ApplyAgree(VMCourse vm) { @@ -1273,6 +1471,7 @@ namespace NP.FO.Controllers return View(vm); } + public ActionResult ApplyComplete(VMPay vm) { if (vm.payno < 1) diff --git a/FO/Views/Course/ApplyAgree.cshtml b/FO/Views/Course/ApplyAgree.cshtml index 7680aec..dde522d 100644 --- a/FO/Views/Course/ApplyAgree.cshtml +++ b/FO/Views/Course/ApplyAgree.cshtml @@ -59,11 +59,6 @@ } strEduInfo += string.Format("교육비 : {0}원", Model.CM.infee.ToString("#,0")); - - - //Model.SelectCMInningscd.eend2 교육종료일 - //strEduInfo = string.Format("교육기간 {0} | 교육종료일 {1} | {2}시간과정 | {3}과정
교육비 : {4}원", - // Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); } } @@ -168,22 +163,17 @@

@if (Model.CM.cshape == 1) - { - @* if (Model.CM.cshape != 1) - {*@ - @*

교육수료조건

+ { + if (Model.CM != null && Model.CM.isrefund == 1) + { // 환급과정일때만 환급 주의사항 보임 +

환급과정 신청 시 환급대상자 필수확인사항

- 1. 총점 70점 이상 득점 : 시험평가(80점) + 출결점수(20점) =100점
- 2. 총 35시간 교육 중 28시간 이상 이수 -

*@ - @*}*@ -

환급과정 신청 시 환급대상자 필수확인사항

-

- - 입교 전 출결관리를 위해 어플 설치 및 로그인(고용노동부 HRD-NET 및 출결관리 어플), 위탁계약서(회사 직인 필수) 지참
- - 교육비 입금 시 신용카드는 반드시 법인카드로만 결제, 무통장 입금은 입금자명을 회사상호+교육생 형식으로 작성
- 예) 현대건설 이지은인 경우 → 현대이지은 으로 작성
- ※ 출결관리 어플 설치 방법은 홈페이지 자료실에 있는 설치가이드를 참고 부탁드립니다. -

+ - 입교 전 출결관리를 위해 어플 설치 및 로그인(고용노동부 HRD-NET 및 출결관리 어플), 위탁계약서(회사 직인 필수) 지참
+ - 교육비 입금 시 신용카드는 반드시 법인카드로만 결제, 무통장 입금은 입금자명을 회사상호+교육생 형식으로 작성
+ 예) 현대건설 이지은인 경우 → 현대이지은 으로 작성
+ ※ 출결관리 어플 설치 방법은 홈페이지 자료실에 있는 설치가이드를 참고 부탁드립니다. +

+ }

교육시행 여부 관련 안내 @@ -213,10 +203,7 @@ 3. 시험평가 60점 이상 득점
4. 집체교육7시간 참석

- ※ 위 4가지 조건 모두 만족하셔야 수료가 가능합니다.
- @*※ 하루 최대 학습 시간은 10차시 입니다.
- ※ 현재 코로나로 인하여 기존 (동영상강의 시청 28시간 + 현장집체7시간 참석)에서 한시적으로 (동영상강의 시청 35시간)으로 진행합니다.*@ - @*※ 국토부 장관이 인정하는 사유로 집체교육을 실시 하지 못할 시 에는 동영상강의로 대체되며 7시간을 100% 이수하셔야 수료가 가능합니다.
*@ + ※ 위 4가지 조건 모두 만족하셔야 수료가 가능합니다.

@@ -246,7 +233,7 @@

교육비 환불 조건 안내

교육신청일로부터 9일이내로 해당 과정의 전체 학습진도율이 10% 미만일때 환불가능합니다. -

+

주의사항

diff --git a/FO/Views/Course/ApplyAgree_old.cshtml b/FO/Views/Course/ApplyAgree_old.cshtml deleted file mode 100644 index 584de9f..0000000 --- a/FO/Views/Course/ApplyAgree_old.cshtml +++ /dev/null @@ -1,228 +0,0 @@ -@model NP.Model.VMCourse -@{ - var isallday = Model.CM.retimeymd == "2099-12-31" ? true : false; -} -

- @*강좌번호*@ - @*법정교육/기타교육*@ - @*교육유형*@ - @*기술인분류*@ - @*교육목적*@ - @*등급*@ - @*직무분야*@ - @*전문분야*@ - @*pplno*@ - @*교육일정선택(selMonth)*@ - @*업체/개인 선택*@ - - - - -

신청강좌

-
    -
  • -
      -
    • -

      - - @(Model.CM.cshape == 0 ? "온라인" : Model.CM.cshape == 1 ? "교육장교육" : "온라인교육") - - @{ - string strStudyPlaceTmp = ""; - string strStudyPlaceTmp2 = ""; - string strEduInfo = ""; - if (Model.SelectCMInningscd.studyplace != null) - { - strStudyPlaceTmp = Model.SelectCMInningscd.studyplacename + "교육장"; - strStudyPlaceTmp2 = Model.CM.cname; - } - else - { - strStudyPlaceTmp = Model.CM.cname; - } - if (Model.CM.cshape == 1) - { - strEduInfo = string.Format("교육기간 {0} | {2}시간과정 | {3}과정
      교육비 : {4}원", - Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); - } - else - { - //Model.SelectCMInningscd.eend2 교육종료일 - strEduInfo = string.Format("교육기간 {0} | 교육종료일 {1} | {2}시간과정 | {3}과정
      교육비 : {4}원", - Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); - } - } - - @if (Model.SelectCMInningscd.studyplace == null) - { -
      - } - else if (Model.SelectCMInningscd.studyplace != null) - { -
      - } - -

      -
    • -
    -
    - @if (Model.PPLog.isaccommodation != 1) - { - 결제금액:@Model.CM.infee.ToString("#,0") - } - else - { - 결제금액:@((Model.CM.infee + Model.CM.accommofee).ToString("#,0"))원 (합숙 : @(Model.CM.accommofee.ToString("#,0"))원 포함) - } -
    -
  • -
- @if (Model.CM.isaccommodation == 1) - { -

합숙여부

-

- @(Model.PPLog.isaccommodation == 1 ? string.Format("합숙 ({0}원 추가)",Model.CM.accommofee.ToString("#,0")) : "비합숙") -

- } - @if (Model.stringval == "0") - { -

신청내용 (필수확인)

- if (Model.CM.cshape == 2) - { -

교육종료일 : @(Model.PPLog.eendymd)까지

- } - - - - @if (!string.IsNullOrEmpty(Model.stringval3)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval4)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval5)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval6)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval7)) - { - - } - - - - @if (!string.IsNullOrEmpty(Model.stringval3)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval4)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval5)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval6)) - { - - } - @if (!string.IsNullOrEmpty(Model.stringval7)) - { - - } - -
교육유형기술인분류교육목적등급직무분야전문분야
@(Model.stringval2 == "0" ? "온라인교육" : Model.stringval2 == "1" ? "교육장교육" : "온라인교육")@Model.ComCodes2.Where(w => w.cgroup.ToString() == "typeman" && w.ccode == int.Parse(Model.stringval3)).First().cname@Model.ComCodes3.Where(w => w.cgroup.ToString() == "typeedu" && w.ccode == int.Parse(Model.stringval4)).First().cname@Model.ComCodes4.Where(w => w.cgroup.ToString() == "typegrade" && w.ccode == int.Parse(Model.stringval5)).First().cname@Model.ComCodes.Where(w => w.cgroup.ToString() == "typejob" && w.ccode == int.Parse(Model.stringval6)).First().cname@Model.ComCodes.Where(w => w.ccode == int.Parse(Model.stringval7)).First().cname
- } -

- -
- ※ 반드시 확인하세요
- - 실제 이수해야 할 내용과 신청내용이 다른 경우 교육인정 및 수정이 불가능 하오니 정확하게 확인 해주세요.
- - 상기 신청내용의 등급이 직무분야의 등급으로 맞게 기재되어 있는지 확인해주세요.(전문분야 등급 아님)
- - 건설사업관리기술인은 감리업무를 수행하는 기술인을 말합니다.
- - 승급교육일 경우 등급은 승급 후 등급이 기재되어야 하며 승급대상 여부 등을 반드시 협회로 확인 해주세요.
- - 승급교육 또는 계속교육을 인정받으려면 기본교육 및 최초교육을 먼저 이수하여야 합니다.
- - 모든 최초,승급,계속 교육 등은 직무분야 교육이며 전문분야 관련으로 따로 이수하여야 할 교육은 없습니다. -
-

- - @if (Model.CM.cshape == 1) - { - @* if (Model.CM.cshape != 1) - {*@ - @*

교육수료조건

-

- 1. 총점 70점 이상 득점 : 시험평가(80점) + 출결점수(20점) =100점
- 2. 총 35시간 교육 중 28시간 이상 이수 -

*@ - @*}*@ -

환급과정 신청 시 환급대상자 필수확인사항

-

- - 입교 전 출결관리를 위해 어플 설치 및 로그인(고용노동부 HRD-NET 및 출결관리 어플), 위탁계약서(회사 직인 필수) 지참
- - 교육비 입금 시 신용카드는 반드시 법인카드로만 결제, 무통장 입금은 입금자명을 회사상호+교육생 형식으로 작성
- 예) 현대건설 이지은인 경우 → 현대이지은 으로 작성
- ※ 출결관리 어플 설치 방법은 홈페이지 자료실에 있는 설치가이드를 참고 부탁드립니다. -

- - } - else - { -

교육수료조건

-

- 1. 동영상강의 35시간 진도율 90% 이상
- 2. 과제물 제출(표지 제외 A4 2장 이상 분량)
- 3. 시험평가 58점 이상 득점
- 4. 총점 70점 이상 득점 : 시험평가(60점) + 과제(20점) + 진도율(20점) =100%(점)

- - ※ 위 4가지 조건 모두 만족하셔야 수료가 가능합니다.
- ※ 하루 최대 학습 시간은 10차시 입니다.
- ※ 현재 코로나로 인하여 기존 (동영상강의 시청 28시간 + 현장집체7시간 참석)에서 한시적으로 (동영상강의 시청 35시간)으로 진행합니다. - @*※ 국토부 장관이 인정하는 사유로 집체교육을 실시 하지 못할 시 에는 동영상강의로 대체되며 7시간을 100% 이수하셔야 수료가 가능합니다.
*@ -

- -

교육수강기한

-

- 온라인교육은 신청일로 부터 최대 1년 이내에 수료하셔야 하며 1년 이내에 교육수료가 되지 않으면 수료 및 환불이 불가능합니다. -

- - - } -

주의사항

-

- 교육생이 이수하여야 할 교육은 소속된 협회에서만 조회가 가능합니다.
- 따라서 협회 확인 없이 잘못된 내용으로 교육수료 시 그 책임은 교육생 본인에게 있으므로
- 저희 교육원과 상담을 하셨더라도 교육신청 전에 반드시 협회를 통하여 한 번 더 확인을 하시고 신청해 주시기 바랍니다.
- ※ 신청내용(필수확인)부분의 내용을 반드시 협회에 확인해 보시기 바랍니다. -

-

- -

- -
- diff --git a/FO/Views/Course/ApplyPay.cshtml b/FO/Views/Course/ApplyPay.cshtml index 55216c7..d1f0156 100644 --- a/FO/Views/Course/ApplyPay.cshtml +++ b/FO/Views/Course/ApplyPay.cshtml @@ -64,9 +64,7 @@ Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); } else - { - //Model.SelectCMInningscd.eend2 교육종료일 - + { strEduInfo += string.Format("교육기간 {0} |", Model.SelectCMInningscd.scdInfoSummary); strEduInfo += string.Format(" 교육종료일 {0} | ", Model.SelectCMInningscd.eend2); strEduInfo += string.Format("{0}시간과정 |", Model.CM.studytime); @@ -77,10 +75,7 @@ strEduInfo += string.Format("집체교육 참석일 : {0}
", Model.SelectCMInningscd.estart.ToString("yyyy년 MM월 dd일")); } - strEduInfo += string.Format("교육비 : {0}원", Model.CM.infee.ToString("#,0")); - - //strEduInfo = string.Format("교육기간 {0} | 교육종료일 {1} | {2}시간과정 | {3}과정
교육비 : {4}원", - // Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); + strEduInfo += string.Format("교육비 : {0}원", Model.CM.infee.ToString("#,0")); } } @@ -111,143 +106,144 @@ @if (Model.PPLog.cshape != 2) { -

환급과정 신청 시 환급대상자의 입금방법(중요)

+ if (Model.CM != null && Model.CM.isrefund == 1) + { // 환급과정일때만 환급 주의사항 보임 +

환급과정 신청 시 환급대상자의 입금방법(중요)

+

+ ■ 카드결제 시
+ - 반드시 소속 회사의 법인카드로 결제 해 주세요. (개인카드 결제 시 환급불가)
+ - 법인카드결제 후 결제한 법인카드 앞면을 복사하여 입교 시 지참해 주세요.
+ ※ 결제 한 법인카드가 법인명의라는 것을 증빙하기 위하여 노동부에서 요청하는 서류 이며 회사 명이 잘 보이도록 앞면 만 복사하시면 됩니다.

+

+

+ ■ 무통장입금 시
+ - 계좌이체로 입금하실 경우 반드시 법인계좌에서 이체가 되어야 합니다. (타 계좌에서 이체 시 환급불가)
+ - 입금자명은 반드시 소속회사 + 교육생이름 으로 기재해주세요.(소속회사명이 없는 경우 환급불가)
+ - 입교 시 이체확인증을 지참해 주세요.
+ ※ 이체확인증은 입금자명이 법인이라는 것을 노동부에 증빙하기 위하여 필요한 서류입니다.
+   예) 현대건설 이지은 인 경우 -> 현대건설이지은

+ + + + ■ 환급과정 신청 시 환급대상자는 계산서 의무 발행 이므로 현금영수증 발행이 불가 합니다. + +
+

+ } + } + +

결제 시 주의사항

- ■ 카드결제 시
- - 반드시 소속 회사의 법인카드로 결제 해 주세요. (개인카드 결제 시 환급불가)
- - 법인카드결제 후 결제한 법인카드 앞면을 복사하여 입교 시 지참해 주세요.
- ※ 결제 한 법인카드가 법인명의라는 것을 증빙하기 위하여 노동부에서 요청하는 서류 이며 회사 명이 잘 보이도록 앞면 만 복사하시면 됩니다.

+ + - 개인카드 결제 시 법인으로 증빙서류 발급이 되지 않습니다.
+ - 계산서 발급을 원하시는 경우 반드시 업체로 신청해주세요.
+ - 카드결제의 경우 계산서 발급이 불가능하며 카드 영수증이 발행 됩니다.
+ - 교육신청이 완료된 이후 에는 결제방식 변경이 불가능 하므로 다시 한번 확인해 주세요.
+

-

- ■ 무통장입금 시
- - 계좌이체로 입금하실 경우 반드시 법인계좌에서 이체가 되어야 합니다. (타 계좌에서 이체 시 환급불가)
- - 입금자명은 반드시 소속회사 + 교육생이름 으로 기재해주세요.(소속회사명이 없는 경우 환급불가)
- - 입교 시 이체확인증을 지참해 주세요.
- ※ 이체확인증은 입금자명이 법인이라는 것을 노동부에 증빙하기 위하여 필요한 서류입니다.
-   예) 현대건설 이지은 인 경우 -> 현대건설이지은

- - - ■ 환급과정 신청 시 환급대상자는 계산서 의무 발행 이므로 현금영수증 발행이 불가 합니다. -
-

- } -

결제 시 주의사항

-

- @*- 개인카드 결제 시 법인으로 증빙서류 발급이 되지 않습니다.
- - 계산서 발급을 원하시는 경우 반드시 업체로 신청해주세요.
- - 카드결제의 경우 계산서 발급이 불가능하며 카드 영수증이 발행 됩니다.
- - 교육신청이 완료된 이후 에는 결제방식 변경이 불가능 하므로 다시 한번 확인해 주세요.
*@ - - 개인카드 결제 시 법인으로 증빙서류 발급이 되지 않습니다.
- - 계산서 발급을 원하시는 경우 반드시 업체로 신청해주세요.
- - 카드결제의 경우 계산서 발급이 불가능하며 카드 영수증이 발행 됩니다.
- - 교육신청이 완료된 이후 에는 결제방식 변경이 불가능 하므로 다시 한번 확인해 주세요.
-
-

- -

결제방법(신용카드 선택 시 계산서 발급불가)

-
    - @if (Model.CM.infee > 0) - { -
  • -
  • - } - else - { -
  • - } -
- - - @Html.HiddenFor(m => m.payno) - @Html.HiddenFor(m => m.exno) - @Html.Hidden("pplno", Model.PPLog.pplno) - - - + + @Html.HiddenFor(m => m.payno) + @Html.HiddenFor(m => m.exno) + @Html.Hidden("pplno", Model.PPLog.pplno) + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + @section scriptsHeader{ - @Html.Partial("./Partial/ScriptDate") - } - diff --git a/FO/Views/Course/ApplyPay_221227.cshtml b/FO/Views/Course/ApplyPay_221227.cshtml deleted file mode 100644 index ceda34b..0000000 --- a/FO/Views/Course/ApplyPay_221227.cshtml +++ /dev/null @@ -1,333 +0,0 @@ -@model NP.Model.VMCourse -@{ - var isallday = Model.CM.retimeymd == "2099-12-31" ? true : false; -} -
- @*강좌번호*@ - @*법정교육/기타교육*@ - @*교육유형*@ - @*기술인분류*@ - @*교육목적*@ - @*등급*@ - @*직무분야*@ - @*전문분야*@ - @*pplno*@ - @*교육일정선택(selMonth)*@ - @*업체/개인 선택*@ - - - - -
- -
- @Html.HiddenFor(m => m.payno) - @*강좌번호*@ - @*법정교육/기타교육*@ - @*교육유형*@ - @*기술인분류*@ - @*교육목적*@ - @*등급*@ - @*직무분야*@ - @*직무분야*@ - - - - @*업체/개인 선택*@ - - -

신청강좌

-
    -
  • -
      -
    • -

      - - @(Model.CM.cshape == 0 ? "온라인" : Model.CM.cshape == 1 ? "교육장교육" : "온라인교육") - - @{ - string strStudyPlaceTmp = ""; - string strStudyPlaceTmp2 = ""; - string strEduInfo = ""; - if (Model.SelectCMInningscd.studyplace != null) - { - strStudyPlaceTmp = Model.SelectCMInningscd.studyplacename + "교육장"; - strStudyPlaceTmp2 = Model.CM.cname; - } - else - { - strStudyPlaceTmp = Model.CM.cname; - } - if (Model.CM.cshape == 1) - { - strEduInfo = string.Format("교육기간 {0} | {2}시간과정 | {3}과정
      교육비 : {4}원", - Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); - } - else - { - //Model.SelectCMInningscd.eend2 교육종료일 - strEduInfo = string.Format("교육기간 {0} | 교육종료일 {1} | {2}시간과정 | {3}과정
      교육비 : {4}원", - Model.SelectCMInningscd.scdInfoSummary, Model.SelectCMInningscd.eend2, Model.CM.studytime, (Model.CM.isrefund == 1 ? "환급" : "비환급"), Model.CM.infee.ToString("#,0")); - } - } - - - @if (Model.SelectCMInningscd.studyplace == null) - { -
      - } - else if (Model.SelectCMInningscd.studyplace != null) - { -
      - } - -

      -
    • -
    -
    - @if (Model.PPLog.isaccommodation != 1) - { - 결제금액:@Model.CM.infee.ToString("#,0") - } - else - { - 결제금액:@((Model.CM.infee + Model.CM.accommofee).ToString("#,0"))원 (합숙 : @(Model.CM.accommofee.ToString("#,0"))원 포함) - } -
    -
  • -
- @if (Model.PPLog.cshape != 2) - { -

환급과정 신청 시 환급대상자의 입금방법(중요)

-

- ■ 카드결제 시
- - 반드시 소속 회사의 법인카드로 결제 해 주세요. (개인카드 결제 시 환급불가)
- - 카드결제 후 결제한 카드 앞면을 복사하여 입교 시 지참해 주세요.
- ※ 결제 한 카드가 법인명의라는 것을 노동부에 증빙하기 위하여 필요한 서류 이며 회사 명이 잘 보이도록 앞면 만 복사하시면 됩니다.

-

-

- ■ 무통장입금 시
- - 계좌이체로 입금하실 경우 반드시 법인계좌에서 이체가 되어야 합니다. (타 계좌에서 이체 시 환급불가)
- - 입금자명은 반드시 소속회사 + 교육생이름 으로 기재해주세요.

-   예) 현대건설 이지은 인 경우 -> 현대건설이지은

- - ■ 환급과정 신청 시 환급대상자는 계산서 의무 발행 이므로 현금영수증 발행이 불가 합니다.
-

- } - -

결제 시 주의사항

-

- @*- 개인카드 결제 시 법인으로 증빙서류 발급이 되지 않습니다.
- - 계산서 발급을 원하시는 경우 반드시 업체로 신청해주세요.
- - 카드결제의 경우 계산서 발급이 불가능하며 카드 영수증이 발행 됩니다.
- - 교육신청이 완료된 이후 에는 결제방식 변경이 불가능 하므로 다시 한번 확인해 주세요.
*@ - - 개인카드 결제 시 법인으로 증빙서류 발급이 되지 않습니다.
- - 계산서 발급을 원하시는 경우 반드시 업체로 신청해주세요.
- - 카드결제의 경우 계산서 발급이 불가능하며 카드 영수증이 발행 됩니다.
- - 교육신청이 완료된 이후 에는 결제방식 변경이 불가능 하므로 다시 한번 확인해 주세요.
-
-

- -

결제방법(신용카드 선택 시 계산서 발급불가)

-
    - @if (Model.CM.infee > 0) - { -
  • -
  • - } - else - { -
  • - } -
- - - - @Html.HiddenFor(m => m.payno) - @Html.HiddenFor(m => m.exno) - @Html.Hidden("pplno", Model.PPLog.pplno) - - - - - - - - - - - - - - - - - - - - - - - - -
- @section scriptsHeader{ - - @Html.Partial("./Partial/ScriptDate") - } -