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; //#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 start /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 제조음료 Take In/Out // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Win { public partial class frmTakeInOutProd : 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 IICReaderUs m_cDeviceICReader = null; private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 private IDataProcessUs m_cDataService = null; private ISalePluItemUs m_cPluService = null; // 판매 등록 관리 private IPaymentUs m_cCouponDC = null; #endregion 변수 선언 #region 생성자 & 소멸자 & 폼초기화 public frmTakeInOutProd() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); //this.UpdateStyles(); 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_cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER); 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); m_cCouponDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.COUPONDC); delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent); } private void frmTakeInOut_Load(object sender, EventArgs e) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ""); InitControl(); } private void frmTakeInOut_Activated(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(delegatePos); } private void frmTakeInOut_Deactivate(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(null); } private void frmTakeInOut_FormClosing(object sender, FormClosingEventArgs e) { 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() { try { // 이미지 로딩 처리 picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_800X600); btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE); if (btnExit.Image != null) btnExit.Text = ""; FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT); FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol , m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol); lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1175); lblProd.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1176); btn_AllTakeIn.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1177); btn_AllTakeOut.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1178); btnSave.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0225); btnGridUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_GRID_UP_ARROW); btnGridUp.ImageAlign = ContentAlignment.MiddleCenter; btnGridUp.BorderStyle = BorderStyle.None; btnGridDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_GRID_DOWN_ARROW); btnGridUp.ImageAlign = ContentAlignment.MiddleCenter; btnGridDown.BorderStyle = BorderStyle.None; DataGridSetting(); // 그리드 초기화 LoadItemToGridView(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 그리드 설정 및 사용 private void DataGridSetting() { try { btnGridUp.Top = dgvPluItem.Top; btnGridUp.Height = dgvPluItem.Height / 2; btnGridDown.Top = btnGridUp.Top + btnGridUp.Height; btnGridDown.Height = dgvPluItem.Height / 2; dgvPluItem.Rows.Clear(); dgvPluItem.AllowUserToAddRows = false; dgvPluItem.EnableHeadersVisualStyles = false; dgvPluItem.RowsDefaultCellStyle.BackColor = Color.White; dgvPluItem.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(249, 249, 249); dgvPluItem.Font = this.Font; dgvPluItem.DefaultCellStyle.Font = new Font(m_cPosStatus.Base.FONT, 10); dgvPluItem.Font = new Font(m_cPosStatus.Base.FONT, 10); dgvPluItem.RowHeadersDefaultCellStyle.Font = new Font(m_cPosStatus.Base.FONT, 10); dgvPluItem.Columns[0].HeaderText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0410); //순번 dgvPluItem.Columns[1].HeaderText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0015); //상품명 dgvPluItem.Columns[2].HeaderText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0302); //take in dgvPluItem.Columns[3].HeaderText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0303); //take out dgvPluItem.Columns[4].HeaderText = ""; //상품코드 dgvPluItem.Columns[5].HeaderText = ""; //rowseq dgvPluItem.Columns[6].HeaderText = ""; //제조음료 Take In/Out 설정값 dgvPluItem.Columns[7].HeaderText = ""; //서브점포코드 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region Control Event private void dgvPluItem_CellClick(object sender, DataGridViewCellEventArgs e) { try { if (dgvPluItem.CurrentCell != null) { if (e.RowIndex == -1) { dgvPluItem.ClearSelection(); dgvPluItem.CurrentCell = null; for (int iRow = 0; iRow < dgvPluItem.Rows.Count; iRow++) { TakeInOutPrcDisp(e.ColumnIndex, iRow); } } else { TakeInOutPrcDisp(e.ColumnIndex, e.RowIndex); } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 버튼 입력 처리 /// /// 버튼 입력 처리 /// /// /// private void btnProc_Click(object sender, EventArgs e) { try { if (((Cosmos.UI.CsmButton)sender) == btn_AllTakeIn) { dgvPluItem.ClearSelection(); dgvPluItem.CurrentCell = null; for (int iRow = 0; iRow < dgvPluItem.Rows.Count; iRow++) { TakeInOutPrcDisp(2, iRow); } } else if (((Cosmos.UI.CsmButton)sender) == btn_AllTakeOut) { dgvPluItem.ClearSelection(); dgvPluItem.CurrentCell = null; for (int iRow = 0; iRow < dgvPluItem.Rows.Count; iRow++) { TakeInOutPrcDisp(3, iRow); } } else if (((Cosmos.UI.CsmButton)sender) == btnSave) { if (SaveData() == false) return; this.DialogResult = DialogResult.OK; this.Close(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 닫기 /// /// /// private void btnExit_Click(object sender, EventArgs e) { try { this.DialogResult = DialogResult.Cancel; this.Close(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion Control Event #region User Method /// /// 등록 상품 로드 /// private void LoadItemToGridView() { try { int iRowSeq = 0; // 상품정보 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iLoop = 0; iLoop < aSaleItem.Count; iLoop++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iLoop]; int iRow = dgvPluItem.Rows.Add(); //지정취소 상품은 제외 if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { dgvPluItem.Rows[iRow].Visible = false; continue; } else { dgvPluItem.Rows[iRow].Visible = true; } //Take In/Out 설정이 필요한 제품이면 그리드에 표시 if (cSaleItem.PROD_TAKEINOUT_YN == "1") { dgvPluItem.Rows[iRow].Visible = true; } else { dgvPluItem.Rows[iRow].Visible = false; continue;// 지정취소 } iRowSeq++; dgvPluItem.Rows[iRow].Cells[0].Value = iRowSeq; // 순번 dgvPluItem.Rows[iRow].Cells[1].Value = cSaleItem.ITEM_NAME; // 상품명 //상품 배열에 설정된 데이터 우선 반영, 없다면 기본값 반영 if (cSaleItem.PROD_TAKEINOUT_DIV == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN) { dgvPluItem.Rows[iRow].Cells[2].Value = true; dgvPluItem.Rows[iRow].Cells[3].Value = false; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN; // 제조음료 Take In/Out 설정값 } else if (cSaleItem.PROD_TAKEINOUT_DIV == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT) { dgvPluItem.Rows[iRow].Cells[2].Value = false; dgvPluItem.Rows[iRow].Cells[3].Value = true; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT; // 제조음료 Take In/Out 설정값 } else if (m_cPosStatus.Base.ProdTakeInOutDiv == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN) { dgvPluItem.Rows[iRow].Cells[2].Value = true; dgvPluItem.Rows[iRow].Cells[3].Value = false; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN; // 제조음료 Take In/Out 설정값 } else if (m_cPosStatus.Base.ProdTakeInOutDiv == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT) { dgvPluItem.Rows[iRow].Cells[2].Value = false; dgvPluItem.Rows[iRow].Cells[3].Value = true; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT; // 제조음료 Take In/Out 설정값 } dgvPluItem.Rows[iRow].Cells[4].Value = cSaleItem.ITEM_PLU_CD; // 상품코드 dgvPluItem.Rows[iRow].Cells[5].Value = iLoop; // rowseq dgvPluItem.Rows[iRow].Cells[7].Value = cSaleItem.SUB_SHOP_CD; // 서브점포코드 } dgvPluItem.Refresh(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } private void TakeInOutPrcDisp(int iColumnIndex ,int iRow) { try { //안보이는 row는 제외 if (dgvPluItem.Rows[iRow].Visible == false) return; //Take In 컬럼 선택시 if (iColumnIndex == 2) { if (dgvPluItem.Rows[iRow].Cells[2].Value.Equals(false)) { dgvPluItem.Rows[iRow].Cells[2].Value = true; dgvPluItem.Rows[iRow].Cells[3].Value = false; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN; } } //Take Out 컬럼 선택시 else if (iColumnIndex == 3) { if (dgvPluItem.Rows[iRow].Cells[3].Value.Equals(false)) { dgvPluItem.Rows[iRow].Cells[2].Value = false; dgvPluItem.Rows[iRow].Cells[3].Value = true; dgvPluItem.Rows[iRow].Cells[6].Value = PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT; } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } private bool SaveData() { bool bRet = false; int sSelectPos = 0; string sMainItemCd = ""; string sMainSubStorCd = ""; string sSubItemCd = ""; string sSubItemNm = ""; int iAddCnt = 0; try { // 상품정보 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); //그리드 돌면서 해당 상품에 부가상품으로 Take In/Out 추가 for (int iRow = 0; iRow < dgvPluItem.Rows.Count; iRow++) { //대상 상품이 아닌 경우 제외 if (dgvPluItem.Rows[iRow].Visible == false) continue; //메인상품 sSelectPos = CmUtil.IntParse(dgvPluItem.Rows[iRow].Cells[5].Value.ToString()); //메인상품코드 sMainItemCd = dgvPluItem.Rows[iRow].Cells[4].Value.ToString(); //메인상품 서브점포코드 sMainSubStorCd = dgvPluItem.Rows[iRow].Cells[7].Value.ToString(); //Take In 선택된 상태인 경우 if (dgvPluItem.Rows[iRow].Cells[6].Value.ToString() == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_IN) { sSubItemNm = "Take In"; sSubItemCd = "9901"; } //Take Out 선택된 상태인 경우 else if (dgvPluItem.Rows[iRow].Cells[6].Value.ToString() == PosConst.PROD_TAKE_IN_OUT_DIV.PROD_TAKE_OUT) { sSubItemNm = "Take Out"; sSubItemCd = "9902"; } // 메인 상품에 take in/out 값 설정 // 2019-04-19 - 1997fx11 : POS에서 Take In / Take Out 판매 데이터에 설정 Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[sSelectPos + iAddCnt]; cSaleItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString(); // 부가 상품 정보 생성 Column.TR_PLU.DATA cPluItem = new Column.TR_PLU.DATA(); cPluItem.SUB_SHOP_CD = sMainSubStorCd; cPluItem.ITEM_PLU_CD = sSubItemCd; cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; cPluItem.SALE_QTY = 1; cPluItem.ITEM_NAME = ">>" + sSubItemNm; cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) cPluItem.NONSALES_RSN_CD = "0"; cPluItem.NONSALES_RSN_NM = ""; cPluItem.SUB_MENU_MAIN_CD = sMainItemCd; cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString(); if (sSelectPos >= dgvPluItem.Rows.Count - 1) { aSaleItem.Add(cPluItem); // 등록 처리 } else { sSelectPos = sSelectPos + 1; aSaleItem.Insert(sSelectPos + iAddCnt, cPluItem); // 등록 처리 iAddCnt++; } // 상품 판매가 계산 //ItemAmountExeccute(true, true); } bRet = true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } #endregion User Method #region DeviceEvent 관련 /// /// DeviceEvent 관련 /// /// /// /// /// public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3) { try { switch (sDevice) { case PosConst.OPOS_DEVICE.MSR: this.Invoke(new EventHandler(OnMSREvent)); break; case PosConst.OPOS_DEVICE.SCANNER: this.Invoke(new EventHandler(OnScannerEvent)); break; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// MSR Event /// /// /// private void OnMSREvent(object source, EventArgs e) { } /// /// 스캐너 이벤트 처리 /// /// /// private void OnScannerEvent(object source, EventArgs e) { } #endregion } }