/// <summary> /// 전월 사용량 반영 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnApplyPreMonth_Click(object sender, EventArgs e) { if (Global.YYYYMM == null) { return; } string message = "전월 사용량을 다시 가져옵니다." + Environment.NewLine + Environment.NewLine + "현재 사용량을 다시 입력하고 직접 확인 해야 합니다."; DialogResult result = HBMessageBox.Show(message, "", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } // 결과 메시지 Util.MessageSaveResult(AdmExpQuery.UpdateAdmExpPreMonth(Global.YYYYMM)); // 재조회 SelectAdmExp(false); }
/// <summary> /// 데이터 변경 사항 체크 및 저장 확인 /// </summary> public void CheckUnsavedData() { if (Global.admExpDT != null) { DataTable chkDT = Global.admExpDT.GetChanges(); if (chkDT != null && chkDT.Rows.Count > 0) { string message = "저장 되지 않은 내역이 존재합니다." + Environment.NewLine + Environment.NewLine + "저장 하시겠습니까?"; DialogResult result = HBMessageBox.Show(message, "", MessageBoxButtons.YesNo); // 예 를 선택한 경우 저장. if (result == DialogResult.Yes) { SaveAdmExp(false); // false : 저장 후 조회안함 } } } }
/// <summary> /// 변경 내용 저장 및 닫기 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { // 마지막 조회 후 변경된 행만 가져온다 DataTable saveDT = Global.homeInfoDT.GetChanges(); // 저장 대상이 없으면 그냥 닫는다 if (saveDT == null || saveDT.Rows.Count == 0) { HBMessageBox.Show("변경 된 내용이 없습니다"); return; } // 저장 int result = HomeInfoQuery.SaveHomeInfo(saveDT); // 결과 메시지 Util.MessageSaveResult(result); // 성공 시 창을 닫는다 if (result > 0) { Close(); } }
/// <summary> /// csv 내보내기 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExportAdmExp_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Csv|*.csv"; sfd.Title = "Save an Csv File"; sfd.ShowDialog(); // 취소 검사 if (sfd.FileName != "") { StringBuilder export_data = new StringBuilder(); // 내보낼 데이터 조회 DataTable dt_homeinfo = HomeInfoQuery.GetHomeInfo(); // 세대정보 DataTable dt_comcode = ComCodeQuery.GetComCode(); // 공통코드 DataTable dt_admexp = AdmExpQuery.GetAdmExp(); // 관리비 // 조회된 데이터를 변수에 담는다 export_data = _exportTable("homeinfo", dt_homeinfo, export_data); export_data = _exportTable("comcode", dt_comcode, export_data); export_data = _exportTable("admexp", dt_admexp, export_data); // 쓰기 스트림 생성 StreamWriter file = new StreamWriter(sfd.FileName); // 파일에 쓰기 file.Write(export_data); // 파일 닫기 file.Close(); // 작업완료 안내 HBMessageBox.Show("내보내기 완료"); } }
/// <summary> /// 관리비 조회 /// </summary> /// <param name="yyyymm"></param> public void SelectAdmExp(bool msgShow) { // 변경 된 데이터 저장 여부 확인 CheckUnsavedData(); // 공통코드 데이터 로드 Global.comcodeDT ComCodeQuery.GetComCode(); /* * 1. 해당 월의 데이터가 있으면 조회한다. * 2. 데이터가 없는 경우 새로 양식을 생성한다. * 3. 조회 시 세대 정보는 해당 시점에 실제 저장된 것을 가져온다. * 4. 전월사용량은 전월데이터를 참고하여 가져온다. (없으면 가져오지 않는다) * */ // [버그수정] 조회 전 기존내용 초기화 // 조회된 상태 -> 새로 생성 조회 되는 경우 그리드 헤더가 설정 안되는 문제 + 색상 적용 오류 문제 수정. // ---------------------------------------------------------------------------------------------------- gridAdmExp.DataSource = null; Init_GridAdmExp(); // ---------------------------------------------------------------------------------------------------- // 현재년월 데이터 조회 gridAdmExp.DataSource = AdmExpQuery.GetAdmExpInfo(Global.YYYYMM); // 저장된 내용이 없으면 빈 셀 출력 if (Global.admExpDT.Rows.Count == 0) { // 더미 데이터 생성 if (AdmExpQuery.CreateAdmExpInfo(Global.YYYYMM) > 0) { HBMessageBox.Show("데이터 생성 완료", "관리비 조회"); } // 저장된 데이터 불러오기 gridAdmExp.DataSource = AdmExpQuery.GetAdmExpInfo(Global.YYYYMM); } else { if (msgShow) { HBMessageBox.Show("조회 완료", "관리비 조회"); } } // 합계 부분 추가 gridAdmExp.ShowRowHighlight = false; Global.admExpDT.Rows.Add(new object[] { "", "합계", "", "", "", "", "", "", "", "", "9999" }); // 합계 계산 _CalcAdmExpSum(); // 콤마 추가 //NumCommaAll(true); // 변경사항 커밋 Global.admExpDT.AcceptChanges(); gridAdmExp.ShowRowHighlight = true; // 당월 사용량 입력 가능하도록 준비 gridAdmExp.Focus(); gridAdmExp.CurrentCell = gridAdmExp.Rows[0].Cells[(int)Common.AdmExp.nowmonth]; }
/// <summary> /// 관리비 저장 /// </summary> public void SaveAdmExp(bool select) { /* 변경사항 체크 -> 저장 시 조회 하지 않도록 하기 위해 파라미터 추가 * true : 조회 * false : 미 조회 */ // 마지막 조회 후 변경된 행만 가져온다. DataTable saveDT = Global.admExpDT.GetChanges(); // 저장 대상이 없으면 그냥 닫는다. if (saveDT == null || saveDT.Rows.Count == 0) { HBMessageBox.Show("변경 된 내용이 없습니다"); return; } // 콤마 제거 for (int i = 0; i < saveDT.Rows.Count; i++) { Util.NumComma(saveDT, i, (int)Common.AdmExp.premonth, false); // 전월지침 Util.NumComma(saveDT, i, (int)Common.AdmExp.nowmonth, false); // 당월지침 Util.NumComma(saveDT, i, (int)Common.AdmExp.useamount, false); // 사용량 Util.NumComma(saveDT, i, (int)Common.AdmExp.usecost, false); // 사용금액 Util.NumComma(saveDT, i, (int)Common.AdmExp.admexpcost, false); // 관리비 Util.NumComma(saveDT, i, (int)Common.AdmExp.totalcost, false); // 합계 } // 데이터 저장 int saveResult = AdmExpQuery.SaveAdmExpInfo(saveDT); // 성공, 실패 여부 메시지 출력 Util.MessageSaveResult(saveResult); // 저장 성공 시 그리드 데이터 비운다 if (saveResult > 0) { // 성공 시 테이블을 비운다 /* * [버그] AcceptChanges()는 프로그램 종료단계에서 저장 시 잘못된 인덱스 참조 오류가 발생. * 그리드 이벤트 관련 문제 인듯 한데 정확한 원인은 확인 안됨. * * 어차피 저장 후 새로 조회하면 되므로 성공적으로 저장된 경우에 한해 비운다. */ Global.admExpDT = null; } // 저장 후 결과 메시지 출력 //Util.MessageSaveResult(AdmExpQuery.SaveAdmExpInfo(saveDT)); // 변경사항 커밋 Global.admExpDT = null; // 이미 저장은 끝났고, //Global.admExpDT.AcceptChanges(); [버그수정] 창 닫으면서 저장 시 수행 후 잘못된 인덱스 참조 오류 발생. // 조회 if (select) { SelectAdmExp(false); // false : 조회 완료 메시지 출력 안함. } }
/// <summary> /// csv 복원 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnImportAdmExp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Csv|*.csv"; ofd.Title = "Save an Csv File"; ofd.ShowDialog(); // 취소가 아닌 경우 진행 if (ofd.FileName != "") { // 읽기 스트림 생성 StreamReader file = new StreamReader(ofd.FileName); DataTable impDT = new DataTable(); impDT.Columns.Add("01"); impDT.Columns.Add("02"); impDT.Columns.Add("03"); impDT.Columns.Add("04"); impDT.Columns.Add("05"); impDT.Columns.Add("06"); impDT.Columns.Add("07"); impDT.Columns.Add("08"); impDT.Columns.Add("09"); impDT.Columns.Add("10"); impDT.Columns.Add("11"); impDT.Columns.Add("12"); impDT.Columns.Add("13"); impDT.Columns.Add("14"); string line = ""; int col = 0; // 파일의 끝까지 줄단위로 읽어들인다 while ((line = file.ReadLine()) != null) { col = 0; DataRow dr = impDT.NewRow(); // 읽어들인 라인을 , 단위로 쪼개서 분리 string[] rowData = line.Split(','); // 쪼개진 데이터 개별 처리 foreach (string str in rowData) { dr[col] = str; col++; } impDT.Rows.Add(dr); dr = null; } // 파일 닫기 file.Close(); // 데이터 저장 // [미구현] // 완료 메시지 표시 HBMessageBox.Show("복원 완료"); } }