public async Task <ScFinancialIndexT> AddScFinancialIndexTAsync(ScFinancialIndexT sit) { var rstFinancialIndexT = _scFinancialIndexRepository.Insert(sit); if (rstFinancialIndexT != null) { await SaveDbContextAsync(); } return(rstFinancialIndexT); }
public async Task<ScFinancialIndexT> AddScFinancialIndexTAsync(ScFinancialIndexT sit) { var rstFinancialIndexT = _scFinancialIndexRepository.Insert(sit); if (rstFinancialIndexT != null) { await SaveDbContextAsync(); } return rstFinancialIndexT; }
public async Task <double> GetCompanyTotalPoint(int qustionSn, ScFinancialIndexT sboFinancialIndexT) { double totalPoint = 0; totalPoint = totalPoint + await GetOverAllManagementTotalPoint(qustionSn); totalPoint = totalPoint + await GetTechMng(qustionSn, sboFinancialIndexT); totalPoint = totalPoint + await GetHumanResourceMng(qustionSn); totalPoint = totalPoint + await GetFinanceMng(qustionSn, sboFinancialIndexT); return(totalPoint); }
// bizInMkt를 계산하기위한 function public async Task <double> GetTechMng(int questionSn, ScFinancialIndexT sboFinancialIndexT) { double totalPoint = 0; // 리턴할 총점 double preReserchAmt = 0.0; // 전기 연구개발비 var rpt = _rptMasterRepository.GetRptMasterByQuestionSn(rm => rm.QuestionSn == questionSn); var pre = _scCompanyFinanceRepository.getScCompanyFinance(scf => scf.CompSn == rpt.CompSn && scf.FnYear == int.Parse(sboFinancialIndexT.Year) - 1); if (pre != null) { preReserchAmt = Convert.ToDouble(pre.CiOrdevexp + pre.CiResearch + pre.McRndexp); } { double avg = 0D; double numerator = (Convert.ToDouble(sboFinancialIndexT.ReserchAmt) + preReserchAmt) / 2.0; double denominator = Convert.ToDouble(sboFinancialIndexT.CurrentSale); if (denominator != 0) // 매출액 있을 때 { if (numerator == 0) // 연구개발비가 0이면 { avg = 0; } else // 연구개발비가 0이 아니면 { avg = (numerator / denominator) * 100; } } else // 매출액이 0일 때 { if (numerator != 0) // 연구개발비가 있으면 { avg = 3D; // 최고점 } else // 연구개발비가 0이면 { avg = 0; } } totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeM(avg), 2); } //연구개발 인력의 비율 var quesResult2sEmpRate = (await _quesResult2Repository.GetQuesResult2sAsync(qrt => qrt.QuestionSn == questionSn && qrt.QuesCheckList.CurrentUseYn == "Y" && qrt.QuesCheckList.SmallClassCd == "A1B102")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); //전체임직원수 var TotalEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10202"); //연구개발인력 var RndEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10201"); if (TotalEmp != null) { if (int.Parse(TotalEmp.D) != 0) { double avg = (int.Parse(RndEmp.D) / double.Parse(TotalEmp.D)) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 1); } } //연구개발 인력의 능력 var quesResult2sEmpCapa = (await _quesResult2Repository.GetQuesResult2sAsync(qrt => qrt.QuestionSn == questionSn && qrt.QuesCheckList.CurrentUseYn == "Y" && qrt.QuesCheckList.SmallClassCd == "A1B103")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); //박사급 var DoctorEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10301"); //석사급 var MasterEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10302"); //학사급 var CollegeEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10303"); //기능사급 var TechEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10304"); //고졸이하급 var HighEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10305"); if ((int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D) + int.Parse(CollegeEmp.D) + int.Parse(TechEmp.D) + int.Parse(HighEmp.D)) != 0) { double avg = ((int.Parse(DoctorEmp.D) * 5) + (int.Parse(MasterEmp.D) * 4) + (int.Parse(CollegeEmp.D) * 3) + (int.Parse(TechEmp.D) * 2) + (int.Parse(HighEmp.D) * 1)) / (double.Parse(DoctorEmp.D) + double.Parse(MasterEmp.D) + double.Parse(CollegeEmp.D) + double.Parse(TechEmp.D) + double.Parse(HighEmp.D)); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 3); } // A1B104 : 사업화역량 var quesResult1sBizCapa = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1B104")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sBizCapa)), 5); // A1B105 : 사업화실적 var quesResult2sBizResult = (await _quesResult2Repository.GetQuesResult2sAsync(qrt => qrt.QuestionSn == questionSn && qrt.QuesCheckList.CurrentUseYn == "Y" && qrt.QuesCheckList.SmallClassCd == "A1B105")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); //사업화실적 총 건수 var BizResultCnt = quesResult2sBizResult.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10502"); { double avg = (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)) / 3.0; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 4); } // A1B106 : 생산설비의 운영체제 및 관리 var quesResult1sFacMng = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1B106")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sFacMng)), 2); // A1B107 : 공정관리 var quesResult1sProcess = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1B107")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sProcess)), 2); // A1B108 : 품질관리 var quesResult1sQaMng = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1B108")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sQaMng)), 3); // A1C101 : 마케팅 전략의 수립 및 실행 var quesResult1sMarketing = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1C101")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeG(ReportHelper.CalcCheckCount(quesResult1sMarketing)), 8); // A1C102 : 고객관리 var quesResult1sCustMng = (await _quesResult1Repository.GetQuesResult1sAsync(qro => qro.QuestionSn == questionSn && qro.QuesCheckList.CurrentUseYn == "Y" && qro.QuesCheckList.SmallClassCd == "A1C102")) .OrderBy(qr => qr.QuesCheckList.SmallClassCd) .ToList(); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sCustMng)), 9); return(totalPoint); }
public async Task <double> GetFinanceMng(int questionSn, ScFinancialIndexT sboFinancialIndexT) { //산식엑셀 1-20 ~ 1-22 double totalPoint = 0; int maxYear = await scCavService.getMaxYear(); var obj = scCavService.GetCavAsync(maxYear); //var objList = scCavService.GetCavList(2014); //var obj = objList.First(); // 재무적성과 totalPoint = totalPoint + ((ReportHelper.CalcFinancialPoint(sboFinancialIndexT, obj) / 100) * 26); // A1E102 : 지적재산권성과 var quesResult2sPatent = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E102"); //등록 특허 var RegPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10201"); //등록 실용신안 var RegUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10202"); //출원 특허 var ApplyPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10203"); //출원 실용신안 var ApplyUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10204"); //기타 var Etc = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10205"); { if (RegPatent.D == null) { RegPatent.D = "0"; } if (ApplyPatent.D == null) { ApplyPatent.D = "0"; } if (RegUtilityModel.D == null) { RegUtilityModel.D = "0"; } if (ApplyUtilityModel.D == null) { ApplyUtilityModel.D = "0"; } if (Etc.D == null) { Etc.D = "0"; } double avg = (int.Parse(RegPatent.D) * 3) + (int.Parse(ApplyPatent.D) * 2) + (int.Parse(RegUtilityModel.D) * 2) + int.Parse(ApplyUtilityModel.D) + int.Parse(Etc.D); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeH(avg), 3); } // A1E103 : 임직원 수 var quesResult2sTotalEmp = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E103"); //전체 임직원 var TotalEmploy = quesResult2sTotalEmp.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10301"); if (int.Parse(TotalEmploy.D451) != 0) { //double avg = (int.Parse(TotalEmploy.D) / double.Parse(TotalEmploy.D451)) - 1; double avg = (int.Parse(TotalEmploy.D) - double.Parse(TotalEmploy.D451)) / double.Parse(TotalEmploy.D451) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeI(avg), 3); } return(totalPoint); }
/// <summary> /// 기술경영,마케팅 /// </summary> public async Task <double> GetTechMng(int questionSn, ScFinancialIndexT sboFinancialIndexT) { //산식엑셀 1-8 ~ 1-17 double totalPoint = 0; double preReserchAmt = 0.0; // 전기 연구개발비 var rpt = rptMasterService.GetRptMasterByQuestionSn(questionSn); // QuestionSn 기준으로 CompSn 가져오기 var pre = scCompanyFinanceService.getScCompanyFinance(rpt.CompSn, int.Parse(sboFinancialIndexT.Year) - 1); // CompSn과 Year를 기준으로 입력된 D-1년도 재무제표 데이터 가져오기 if (pre != null) { preReserchAmt = Convert.ToDouble(pre.CiOrdevexp + pre.CiResearch + pre.McRndexp); } // 연구개발 투자 { double avg = 0D; double numerator = (Convert.ToDouble(sboFinancialIndexT.ReserchAmt) + preReserchAmt) / 2.0; double denominator = Convert.ToDouble(sboFinancialIndexT.CurrentSale); if (denominator != 0) // 매출액 있을 때 { if (numerator == 0) // 연구개발비가 0이면 { avg = 0; } else // 연구개발비가 0이 아니면 { avg = (numerator / denominator) * 100; } } else // 매출액이 0일 때 { if (numerator != 0) // 연구개발비가 있으면 { avg = 3D; // 최고점 } else // 연구개발비가 0이면 { avg = 0; } } totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeM(avg), 2); } //연구개발 인력의 비율 var quesResult2sEmpRate = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B102"); //전체임직원수 var TotalEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10202"); //연구개발인력 var RndEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10201"); if (TotalEmp != null) { if (int.Parse(TotalEmp.D) != 0) { double avg = (int.Parse(RndEmp.D) / double.Parse(TotalEmp.D)) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 1); } } //연구개발 인력의 능력 var quesResult2sEmpCapa = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B103"); //박사급 var DoctorEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10301"); //석사급 var MasterEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10302"); //학사급 var CollegeEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10303"); //기능사급 var TechEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10304"); //고졸이하급 var HighEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10305"); if ((int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D) + int.Parse(CollegeEmp.D) + int.Parse(TechEmp.D) + int.Parse(HighEmp.D)) != 0) { double avg = ((int.Parse(DoctorEmp.D) * 5) + (int.Parse(MasterEmp.D) * 4) + (int.Parse(CollegeEmp.D) * 3) + (int.Parse(TechEmp.D) * 2) + (int.Parse(HighEmp.D) * 1)) / (double.Parse(DoctorEmp.D) + double.Parse(MasterEmp.D) + double.Parse(CollegeEmp.D) + double.Parse(TechEmp.D) + double.Parse(HighEmp.D)); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 3); } // A1B104 : 사업화역량 var quesResult1sBizCapa = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B104"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sBizCapa)), 5); // A1B105 : 사업화실적 var quesResult2sBizResult = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B105"); //사업화실적 총 건수 var BizResultCnt = quesResult2sBizResult.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10502"); { double avg = (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)) / 3.0; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 4); } // A1B106 : 생산설비의 운영체제 및 관리 var quesResult1sFacMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B106"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sFacMng)), 2); // A1B107 : 공정관리 var quesResult1sProcess = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B107"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sProcess)), 2); // A1B108 : 품질관리 var quesResult1sQaMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B108"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sQaMng)), 3); // A1C101 : 마케팅 전략의 수립 및 실행 var quesResult1sMarketing = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1C101"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeG(ReportHelper.CalcCheckCount(quesResult1sMarketing)), 8); // A1C102 : 고객관리 var quesResult1sCustMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1C102"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sCustMng)), 9); return(totalPoint); }
public async Task<ActionResult> FinanceCheck02(FinanceCheckViewModel fcvm) { ViewBag.Left = Global.Report; int QuestionSn = fcvm.QuestionSn; string compSn = Session[Global.CompSN].ToString(); // 기업식별자 int basicYear = fcvm.BasicYear; // 입력된 년도 if (QuestionSn > 0) { if (fcvm.SubmitType == "N") { fcvm.SaveStatus = 0; } // ScCompanyFinance 테이블에 값을 저장하는 부분 // 당기 fcvm.Current.CompSn = int.Parse(compSn); fcvm.Current.FnYear = basicYear; var scfCur = Mapper.Map<ScCompanyFinance>(fcvm.Current); // 전기 fcvm.Previous.CompSn = int.Parse(compSn); fcvm.Previous.FnYear = basicYear - 1; var scfPre = Mapper.Map<ScCompanyFinance>(fcvm.Previous); var saveFinanceCur = await _scCompanyFinanceService.AddScCompanyFinanceAsync(scfCur); var saveFinancePre = await _scCompanyFinanceService.AddScCompanyFinanceAsync(scfPre); // ScCompanyFinance 테이블에 값 넣기 완료 // FinancialIndexT에 값 넣기 필요 ScFinancialIndexT sit = new ScFinancialIndexT(); // 객체에 값 할당 필요 sit.CompSn = int.Parse(compSn); // 기업일련번호 sit.Year = basicYear + ""; // 기준년도 sit.ReserchAmt = (scfCur.FpARndcost - scfPre.FpARndcost) + (scfCur.CiOrdevexp + scfCur.CiResearch) + scfCur.McRndexp; // 연구개발투자비 sit.CurrentSale = scfCur.CiSales; // 당기매출액 sit.PrevSale = scfPre.CiSales; // 전기매출액 sit.CurrentEarning = scfCur.CiProfit; // 당기순이익 sit.PrevEarning = scfPre.CiProfit; // 전기순이익 sit.OperatingEarning = scfCur.CiOpincome; // 영업이익 sit.TotalCapital = scfCur.FpCSum; // 자본총계 sit.CurrentAsset = scfCur.FpACa; // 유동자산 sit.InventoryAsset = scfCur.FpAIntent; // 재고자산 sit.CurrentLiability = scfCur.FpLCurrent; // 유동부채 sit.TotalLiability = scfCur.FpLSum; // 부채총계 sit.TotalAsset = scfCur.FpASum; // 자산총계 sit.NonOperEar = scfCur.CiOthergains; // 영업외손익 sit.InterstCost = scfCur.CiIntexpanses; // 이자비용 sit.SalesCredit = scfCur.FpATraderecv; // 매출채권 sit.ValueAdded = scfCur.CiPlt + scfCur.CiWages + (scfCur.CiIntincome - scfCur.CiIntexpanses) + scfCur.CiRental + scfCur.CiTax + scfCur.CiDepexp; // 부가가치 sit.MaterialCost = scfCur.McRaw + scfCur.McPart; // 재료비 // 종업원수 구해오기 추가 필요 var saveFinancialIndexT = await _scFinancialIndexTService.AddScFinancialIndexTAsync(sit); } else { return View(fcvm); } return RedirectToAction("OrgCheck01", "Report", new { area = "Company" }); }
public static double CalcFinancialPoint(ScFinancialIndexT sboFinancialIndexT, ScCav obj) { //매출영업이익률(영업이익 ÷ 매출액)×100 //if(sboFinancialIndexT.CurrentSale.Value == 0) ? double a = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.CurrentSale.Value) * 100); double aPoint = 0.0; if (sboFinancialIndexT.OperatingEarning.Value == 0 || sboFinancialIndexT.CurrentSale.Value == 0) { aPoint = 0; } else { // 소수 3.4000000004 식으로 왜?? //double ex = Convert.ToDouble(obj.CavOp); //double gw = getWeight(a, ex); //aPoint = gw * 17D; aPoint = getWeight(a, Convert.ToDouble(obj.CavOp)) * 17; } //double aPoint = (a / (5.2 + a)) * 17; //자기자본순이익률(당기순이익 ÷ 자본총계)×100 double b = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentEarning.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double bPoint = 0.0; if (sboFinancialIndexT.CurrentEarning.Value == 0 || sboFinancialIndexT.TotalCapital.Value == 0) { bPoint = 0; } else { bPoint = getWeight(b, Convert.ToDouble(obj.CavRe)) * 6; } //double bPoint = (b / (5.19 + b)) * 6; //매출증가율((당기매출액 - 전기매출액) ÷ 전기매출액)×100 double c = (sboFinancialIndexT.PrevSale.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.PrevSale.Value) / sboFinancialIndexT.PrevSale.Value) * 100); //double cPoint = ((c / (4.93 + c)) * 9); double cPoint = 0.0; //전기매출액이 0 이고 당기매출액이 0 일때 = 0점 if (sboFinancialIndexT.PrevSale.Value == 0) { if (sboFinancialIndexT.CurrentSale.Value == 0) { cPoint = 0; } else if (sboFinancialIndexT.CurrentSale > 0) { cPoint = 9; } } else { cPoint = getWeight(c, Convert.ToDouble(obj.CavSg)) * 9; } //순이익증가율((당기순이익 - 전기순이익) ÷ 전기순이익)×100 double d = (sboFinancialIndexT.PrevEarning.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentEarning.Value - sboFinancialIndexT.PrevEarning.Value) / sboFinancialIndexT.PrevEarning.Value) * 100); //double dPoint = (d / (19.96 + d)) * 14; double dPoint = 0.0; //당기손익이 0이하일때 = 0점 if (sboFinancialIndexT.CurrentEarning.Value <= 0) { dPoint = 0; } //당기손익이 이익(양수)이고 전기손익이 0이하일때 = 14점 else if (sboFinancialIndexT.CurrentEarning.Value > 0 && sboFinancialIndexT.PrevEarning.Value <= 0) { dPoint = 14; } else { dPoint = getWeight(d, (Convert.ToDouble(obj.CavNg))) * 14; } //당좌비율((유동자산 - 재고자산) ÷ 유동부채)×100 double e = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) / sboFinancialIndexT.CurrentLiability.Value) * 100); double ePoint = 0.0; // double ePoint = (e / (102.09 + e)) * 4; // 유동부채가 0일 경우 4점 if ((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) == 0 && sboFinancialIndexT.CurrentLiability.Value == 0) { ePoint = 0; } else if ((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) == 0) { ePoint = 0; } else { if (sboFinancialIndexT.CurrentLiability.Value == 0) { ePoint = 4; } else { ePoint = getWeight(e, Convert.ToDouble(obj.CavQr)) * 4; } } //유동비율(유동자산 ÷ 유동부채)×100 double f = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentAsset.Value / sboFinancialIndexT.CurrentLiability.Value) * 100); double fPoint = 0.0; // 유동부채가 0일 경우 13점 if (sboFinancialIndexT.CurrentAsset.Value == 0 && sboFinancialIndexT.CurrentLiability.Value == 0) { fPoint = 0; } else if (sboFinancialIndexT.CurrentAsset.Value == 0) { fPoint = 0; } else { if (sboFinancialIndexT.CurrentLiability.Value == 0) { fPoint = 13; } else { fPoint = getWeight(f, (Convert.ToDouble(obj.CavCr))) * 13; } //double fPoint = (f / (136.27 + f)) * 13; } //부채비율(부채 ÷ 자본총계)×100 double g = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.TotalLiability.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double gPoint = 0.0; if (sboFinancialIndexT.TotalLiability.Value == 0 && sboFinancialIndexT.TotalCapital.Value == 0) { gPoint = 0; } else if (sboFinancialIndexT.TotalLiability.Value == 0) { gPoint = 9; } else { gPoint = getWeight(g, Convert.ToDouble(obj.CavDebt)) * 9; } //이자보상비율(영업이익 ÷ 이자비용)×100 double h = (sboFinancialIndexT.InterstCost.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.InterstCost.Value) * 100); double hPoint = 0; if (sboFinancialIndexT.OperatingEarning.Value == 0 && sboFinancialIndexT.InterstCost.Value == 0) { hPoint = 0; } else if (sboFinancialIndexT.OperatingEarning.Value == 0) { hPoint = 0; } else { // 이자비용이 0일 경우 7 if (sboFinancialIndexT.InterstCost.Value == 0) { hPoint = 7; } else { hPoint = getWeight(h, Convert.ToDouble(obj.CavIcr)) * 7; } //double hPoint = (h / (333.63 + h)) * 7; } //총자산회전율(매출액 ÷ 총자산)×100 double i = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.TotalAsset.Value) * 100); double iPoint = 0.0; if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.TotalAsset.Value == 0) { iPoint = 0; } else if (sboFinancialIndexT.CurrentSale.Value == 0) { iPoint = 0; } else { // 총 자산이 0일 경우 if (sboFinancialIndexT.TotalAsset.Value == 0) { iPoint = 3; } else { iPoint = getWeight(i, Convert.ToDouble(obj.CavTat)) * 3; } //double iPoint = (i / (114.75 + i)) * 3; } //매출채권회전율(매출액 ÷ 매출채권(=외상매출금,미수금,받을어음))×100 double j = (sboFinancialIndexT.SalesCredit.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.SalesCredit.Value) * 100); double jPoint = 0; if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.SalesCredit.Value == 0) { jPoint = 0; } else if (sboFinancialIndexT.CurrentSale.Value == 0) { jPoint = 0; } else { // 매출채권이 0인 경우 if (sboFinancialIndexT.SalesCredit.Value == 0) { jPoint = 3; } else { jPoint = getWeight(j, Convert.ToDouble(obj.CavTrt)) * 3; } //double jPoint = (j / (569.36 + j)) * 3; } //재고자산회전율(매출액 ÷ 재고자산)×100 double k = (sboFinancialIndexT.InventoryAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.InventoryAsset.Value) * 100); double kPoint = 0; if (sboFinancialIndexT.CurrentSale.Value == 0 && sboFinancialIndexT.InventoryAsset.Value == 0) { kPoint = 0; } else if (sboFinancialIndexT.CurrentSale.Value == 0) { kPoint = 0; } else { //재고자산이 0일때 = 4점 if (sboFinancialIndexT.InventoryAsset.Value == 0) { kPoint = 4; } else { kPoint = getWeight(k, Convert.ToDouble(obj.CavIt)) * 4; } //double kPoint = (k / (915.48 + k)) * 4; } // 부가가치율(부가가치 ÷ 매출액)×100 double l = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.CurrentSale.Value) * 100); double lPoint = 0; if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.CurrentSale.Value == 0) { lPoint = 0; } else if (sboFinancialIndexT.ValueAdded.Value == 0) { lPoint = 0; } else { // 당기매출액이 0이면 if (sboFinancialIndexT.CurrentSale.Value == 0) { lPoint = 4; } else { lPoint = getWeight(l, (Convert.ToDouble(obj.CavVr))) * 4; } //double lPoint = (l / (24.02 + l)) * 4; } // 노동생산성 = 부가가치 ÷ 종업원수 double m = (sboFinancialIndexT.QtEmp.Value == 0) ? 0 : Convert.ToDouble(sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.QtEmp.Value); double mPoint = 0; if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.QtEmp.Value == 0) { mPoint = 0; } else if (sboFinancialIndexT.ValueAdded.Value == 0) { mPoint = 0; } else { // 종업원 수가 0이면 if (sboFinancialIndexT.QtEmp.Value == 0) { mPoint = 4; } else { mPoint = getWeight(Math.Truncate(m / 1000), Convert.ToDouble(obj.CavLp)) * 4; } } //double mPoint = (m / (16163671 + m)) * 4; //자본생산성((부가가치 ÷ 자본총계)×100 double n = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double nPoint = 0; if (sboFinancialIndexT.ValueAdded.Value == 0 && sboFinancialIndexT.TotalCapital.Value == 0) { nPoint = 0; } else if (sboFinancialIndexT.ValueAdded.Value == 0) { nPoint = 0; } else { // 자본총계가 0이면 if (sboFinancialIndexT.TotalCapital.Value == 0) { nPoint = 3; } else { nPoint = getWeight(n, Convert.ToDouble(obj.CavCp)) * 3; } //double nPoint = (n / (137.01 + n)) * 3; } //재무점수로 환산 double point = aPoint + bPoint + cPoint + dPoint + ePoint + fPoint + gPoint + hPoint + iPoint + jPoint + kPoint + lPoint + mPoint + nPoint; return(point); }