using System; using System.Text; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Collections; using Cosmos.Win; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using Cosmos.UI; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 선택상품할인 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ //************************************************************************************************ // 변경 이력 : 바코드 중복 처리 //------------------------------------------------------------------------------------------------ // - 작 업 자 : 서광원B // - 작업일자 : 2017.11.10 // - 작업분류 : 2017.10.28 정보운영 판매 바코드 인식 // - 화면설명 : 만약 사용자가 입력한 바코드 정보가 여러개일 경우 // 사용자가 원하는 상품을 선택할 수 있도록 동일한 바코드의 상품을 표시하는 화면 //************************************************************************************************ namespace Cosmos.Win { public partial class frmMultiItem : Form { #region 변수 선언 private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리 private PosOLEDevice.DelegateOlePos delegatePos; private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 private IDataProcessUs m_cDataService = null; private ISalePluItemUs m_cPluService = null; // 판매 등록 관리 // 전달받은 데이터 설정에 필요한 데이터 테이블 선언 ----- private DataTable _m_dtItemInit = null; // 전달받은 데이터 리스트 private DataTable m_dtItemInit = null; // 조회 데이터 리스트 // 사용자가 선택한 그리드 행번호(초기값: -1) ----- private int intSelectRow = -1; // 사용자가 선택한 매장코드 ----- public string strStorCD = ""; // 사용자가 선택한 상품코드 ----- public string strSelectItemCD = ""; #endregion #region 생성자 & 소멸자 & 폼초기화 public frmMultiItem() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); } public frmMultiItem(DataTable _dtDataInfo) { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); //--------------------------------------------------------- // 이전 폼에서 전달받은 데이터 테이블을 폼 변수에 저장한다. //--------------------------------------------------------- #region 이전 폼에서 전달받은 데이터 테이블을 폼 변수에 저장한다. _m_dtItemInit = _dtDataInfo.Copy(); // 전달받은 데이터 테이블을 저장 m_dtItemInit = new DataTable("INIT"); // 타켓 데이터 테이블 설정 m_dtItemInit.Columns.Add(new DataColumn("NO", typeof(string))); m_dtItemInit.Columns.Add(new DataColumn("STOR_CD", typeof(string))); m_dtItemInit.Columns.Add(new DataColumn("ITEM_CD", typeof(string))); m_dtItemInit.Columns.Add(new DataColumn("ITEM_NM", typeof(string))); m_dtItemInit.Columns.Add(new DataColumn("SALE_AMT", typeof(string))); m_dtItemInit.Clear(); #endregion } private void frmMultiItem_Load(object sender, EventArgs e) { // 컨트롤 초기화 함수 호출 ----- InitControl(); // LOG Write ----- UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ""); } private void frmMultiItem_FormClosing(object sender, FormClosingEventArgs e) { // LOG Write ----- UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text); } /// /// 폼 컨트롤 초기화 /// private void InitControl() { // 그리드 초기화 함수 호출 ----- SetListColumn(); //===================================== // 만약 전달받은 데이터가 존재할 경우 // 전달받은 데이터를 그리드에 표시한다. //===================================== #region 만약 전달받은 데이터가 존재할 경우 전달받은 데이터를 그리드에 표시한다. if (_m_dtItemInit != null && _m_dtItemInit.Rows.Count > 0) { for (int i = 0; i < _m_dtItemInit.Rows.Count; i++) { DataRow dr = m_dtItemInit.NewRow(); dr["NO"] = i + 1; dr["STOR_CD"] = _m_dtItemInit.Rows[i]["STOR_CD"].ToString(); dr["ITEM_CD"] = _m_dtItemInit.Rows[i]["ITEM_CD"].ToString(); dr["ITEM_NM"] = _m_dtItemInit.Rows[i]["ITEM_NM"].ToString(); long _lngSaleAmt = Convert.ToInt32(_m_dtItemInit.Rows[i]["SALE_AMT"]); dr["SALE_AMT"] = _lngSaleAmt.ToString("n0"); m_dtItemInit.Rows.Add(dr); } // 전달받은 데이터를 그리드에 표시한다. ----- dgvData.CsmGridDataSource = m_dtItemInit; } #endregion // 그리드 클릭 이벤트 호출(초기화) ----- dgvData_GridClickEvent(null, "0"); } private void SetListColumn() { try { // 간이영수증 정보 dgvData.CsmGridColumnHeadersVisible = true; //DataGridView 자체의 컬럼 헤더 Visible 여부 dgvData.CsmGridColumnHeadersHeight = 37; //DataGridView 자체의 컬럼 헤더 높이 dgvData.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 12, FontStyle.Bold); //DataGridView 자체의 컬럼 헤더 폰트 dgvData.CsmGridRowsHeight = 35; dgvData.CsmGridColumnCount = 5; //그리드의 컬럼수(5) dgvData.CsmGridShowPageRowsCount = 4; //그리드의 한 화면에 보이는 로우수 dgvData.CsmGridSetHeaderBackColor(236, 238, 239); //그리드 헤더 배경색 dgvData.CsmGridDefaultRowBackColor = Color.FromArgb(255, 255, 255); //그리드 홀수(Default)행의 배경색 지정 dgvData.CsmGridAlternateRowBackColor = Color.FromArgb(251, 253, 255); //그리드 짝수(Alternate)행의 배경색 지정 dgvData.CsmGridBackGroundColor = Color.FromArgb(251, 253, 255); //기본 백그라운드 컬러 dgvData.CsmGridHighlightColor = Color.FromArgb(255, 251, 211); //그리드 선택 백 컬러 dgvData.CsmGridHighlightTextColor = Color.Black; //그리드 선택 글자 컬러 dgvData.CsmGridSetColumnWidth(new int[] { 30, 100, 100, 150, 100 }); //컬럼넓이 지정(480) dgvData.CsmGridAlignment(new int[] { 1, 1, 1, 1, 2 }); //컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽 //각 컬럼별 이름 지정 dgvData.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0014)); dgvData.CsmGridColumnName(1, "매장코드"); dgvData.CsmGridColumnName(2, "상품코드"); dgvData.CsmGridColumnName(3, "상품명"); dgvData.CsmGridColumnName(4, "단가"); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명)) System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)) ex.Message); } } #endregion #region 버튼 입력 처리 /// /// 선택 /// /// private void btnSelection_Click(object sender, EventArgs e) { if (intSelectRow > -1) { // 사용자가 선택한 매장코드 저장 ----- string _strStorCD = m_dtItemInit.Rows[intSelectRow]["STOR_CD"].ToString(); strStorCD = _strStorCD; // 사용자가 선택한 상품코드 저장 ----- string _strSelectItemCD = m_dtItemInit.Rows[intSelectRow]["ITEM_CD"].ToString(); strSelectItemCD = _strSelectItemCD; //------------ // 리턴값 설정 //------------ this.DialogResult = DialogResult.OK; } } /// /// 닫기 /// /// /// private void btnExit_Click(object sender, EventArgs e) { // 리턴값 설정 ----- this.DialogResult = DialogResult.Cancel; this.Close(); } #endregion #region 조회 그리드 클릭 이벤트 /// /// 조회 그리드 클릭 이벤트 /// /// /// private void dgvData_GridClickEvent(object sender, string rowIndex) { // 사용자가 선택한 행 값(intSelectRow)을 저장한다. ----- if (dgvData.CsmGridRowsCount == 0) return; intSelectRow = Convert.ToInt16(rowIndex); // 행 값(intSelectRow) 저장 } #endregion #region 업/다운 클릭 이벤트 /// /// 조회 그리드 업/다운 클릭 이벤트 /// /// /// private void btnSelProc_Click(object sender, EventArgs e) { if ((UI.CsmButton)sender == btnUp) { dgvData.CsmGridScroll("UP"); } else if ((UI.CsmButton)sender == btnDw) { dgvData.CsmGridScroll("DOWN"); } } #endregion } }