Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        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" });
        }
Ejemplo n.º 8
0
        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);
        }