spc-kiosk-pb/Window/TableConfiguration/frmTableEditor.cs
2019-06-16 14:12:09 +09:00

2084 lines
83 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
using Cosmos.Win;
namespace TableConfiguration
{
/// <summary>
/// 테이블 편집
/// </summary>
public partial class frmTableEditor : Form
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private ITableUs m_cTableSvr = null;
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
/// <summary>
/// 사용자ID
/// </summary>
private string userId = string.Empty;
/// <summary>
/// 사용자명
/// </summary>
private string userNm = string.Empty;
/// <summary>
/// 원 사용자ID
/// </summary>
private string orgUserId = string.Empty;
/// <summary>
/// 원 사용자명
/// </summary>
private string orgUserNm = string.Empty;
/// <summary>
/// 컨트롤 편집기
/// </summary>
private ControlDesigner m_ctrlDesigner = null;
/// <summary>
/// 기능키 버튼 목록
/// </summary>
private List<CsmButton> m_btnFuncList;
/// <summary>
/// 현재 명령
/// </summary>
private string m_currentOperation = string.Empty;
#region ##
/// <summary>
/// Floor Master Buffer
/// </summary>
private List<Column.MST_FLOOR.FLOOR_DATA> m_floorMst = new List<Column.MST_FLOOR.FLOOR_DATA>();
/// <summary>
/// Floor Button Constrl List
/// </summary>
private List<CsmButton> m_btnFloorList = new List<CsmButton>();
/// <summary>
/// Current Floor Code
/// </summary>
private string m_currentFloorCd = string.Empty;
/// <summary>
/// Total Floor Page
/// </summary>
private int m_totalFloorPage = 0;
/// <summary>
/// Current Floor Page
/// </summary>
private int m_currentFloorPage = -1;
/// <summary>
/// Floor Button Default BackColor
/// </summary>
private Color m_FloorDefaultBackColor = Color.FromArgb(115, 143, 165); //Color.FromArgb(236, 241, 249);
/// <summary>
/// Floor Button Default ForeColor
/// </summary>
private Color m_FloorDefaultForeColor = Color.White; //Color.FromArgb(64, 64, 64);
/// <summary>
/// Floor Button Select BackColor
/// </summary>
private Color m_FloorSelectBackColor = Color.FromArgb(22, 187, 238); //Color.FromArgb(101, 115, 126);
/// <summary>
/// Floor Button Select ForeColor
/// </summary>
private Color m_FloorSelectForeColor = Color.White;
/// <summary>
/// Max Floor Count
/// </summary>
private const int MAX_FLOOR_COUNT = 10;
#endregion
#region ##
/// <summary>
/// Table Master Buffer
/// </summary>
private List<Column.MST_TABLE.TABLE_DATA> m_tableMst = new List<Column.MST_TABLE.TABLE_DATA>();
/// <summary>
/// Table Default Color
/// </summary>
private Color m_tblDefaultColor = Color.FromArgb(75, 140, 229);// Color.FromArgb(187, 201, 222);
/// <summary>
/// Table Selected Color
/// </summary>
private Color m_tblSelectColor = Color.FromArgb(188, 106, 246);
/// <summary>
/// 선택된 테이블 번호
/// </summary>
private string m_currentTableNo = string.Empty;
#endregion
#region ##
/// <summary>
/// 화면 너비 (969)
/// </summary>
private const int SCR_SIZE_WIDTH = 986;
/// <summary>
/// 화면 높이 (477)
/// </summary>
private const int SCR_SIZE_HEIGHT = 550;
/// <summary>
/// 컨트롤 최대 가로 갯수 (6)
/// </summary>
private const int CTRL_MAX_COUNT_X = 6;
/// <summary>
/// 컨트롤 최대 세로 갯수 (5)
/// </summary>
private const int CTRL_MAX_COUNT_Y = 5;
/// <summary>
/// 테이블버튼 최소 너비 (150)
/// </summary>
private const int CTRL_MIN_WIDTH = 150;
/// <summary>
/// 테이블버튼 최소 높이 (90)
/// </summary>
private const int CTRL_MIN_HEIGHT = 90;
/// <summary>
/// 컨트롤 간격 (3)
/// </summary>
private const int CTRL_CAP = 3;
#endregion
private Color m_FuncDefaultBackColor = Color.FromArgb(45, 61, 74);
private Color m_FuncDefalutForeColor = Color.White;
private Color m_FuncClickBackColor = Color.FromArgb(115, 143, 165);
private Color m_FuncClickForeColor = Color.White;
/// <summary>
/// 테이블 편집 생성자
/// </summary>
public frmTableEditor()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
// 서비스
m_cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE);
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
#region ##
m_btnFloorList = new List<CsmButton>();
m_btnFloorList.Add(this.btnFloor1);
m_btnFloorList.Add(this.btnFloor2);
m_btnFloorList.Add(this.btnFloor3);
m_btnFloorList.Add(this.btnFloor4);
m_btnFloorList.Add(this.btnFloor5);
m_btnFloorList.Add(this.btnFloor6);
m_btnFloorList.Add(this.btnFloor7);
m_btnFloorList.Add(this.btnFloor8);
m_btnFloorList.Add(this.btnFloor9);
m_btnFloorList.Add(this.btnFloor10);
#endregion
#region ##
m_btnFuncList = new List<CsmButton>();
m_btnFuncList.Add(this.btnOperation1);
m_btnFuncList.Add(this.btnOperation2);
m_btnFuncList.Add(this.btnOperation3);
m_btnFuncList.Add(this.btnOperation4);
m_btnFuncList.Add(this.btnOperation5);
m_btnFuncList.Add(this.btnOperation6);
m_btnFuncList.Add(this.btnOperation7);
m_btnFuncList.Add(this.btnOperation8);
m_btnFuncList.Add(this.btnOperation9);
m_btnFuncList.Add(this.btnOperation10);
#endregion
}
private void Form_Load(object sender, EventArgs e)
{
try
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
PosOLEDevice.SetEventHandle(null);
this.Tag = "START";
lblUser.Text = string.Format("{0} {1}", m_cPosStatus.Base.CashierNo, m_cPosStatus.Base.CashierName);
// 컨트롤 편집기 생성
m_ctrlDesigner = new ControlDesigner();
//m_ctrlDesigner.MinSize = new Size(150, 90);
m_ctrlDesigner.MinSize = new Size(50, 50);
m_ctrlDesigner.HandleSize = 10;
// 초기화
InitControl();
// 기능버트 설정
SetFuncMenu();
// 층 마스터 로드
if (LoadFloorMaster(false) == false)
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0078);
this.DialogResult = System.Windows.Forms.DialogResult.Abort;
this.Close();
}
// 테이블 마스터 로드
if (LoadTableMaster(false) == false)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0496);
this.DialogResult = System.Windows.Forms.DialogResult.Abort;
this.Close();
}
string floorCd = string.Empty;
FloorButtonClear();
DisplayFloorButton();
if (m_floorMst.Count > 0) floorCd = m_floorMst[0].FLOOR_CD;
SelectFloorButton(floorCd);
DisplayTableButton(floorCd);
tmrSaleTimer.Enabled = 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);
}
}
private void Form_Activated(object sender, EventArgs e)
{
try
{
if (string.IsNullOrWhiteSpace(this.Tag.ToString()) == false)
{
this.Tag = string.Empty;
}
}
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 Form_Closing(object sender, FormClosingEventArgs e)
{
try
{
tmrSaleTimer.Enabled = false;
// 자원 해제
if (m_currentTableNo != null) m_currentTableNo = null;
if (m_ctrlDesigner != null) m_ctrlDesigner.Dispose();
PanelTableClear();
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
}
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 tmrSaleTimer_Tick(object sender, EventArgs e)
{
try
{
tmrSaleTimer.Enabled = false;
// 시간 처리
lblDateTime.Text = m_cPosStatus.Global.DateToCulture(DateTime.Now.ToString("yyyyMMdd")) + " " + DateTime.Now.ToString("HH:mm:ss");
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
finally
{
tmrSaleTimer.Enabled = true;
}
}
/// <summary>
/// 기능버튼
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOperation_Click(object sender, EventArgs e)
{
try
{
CsmButton btn = (CsmButton)sender;
if (string.IsNullOrWhiteSpace(btn.Text)) return;
if (string.IsNullOrWhiteSpace(btn.Tag.ToString())) return;
switch (btn.Tag.ToString())
{
case PosKey.MENU_KEY.FLOOR_MANAGER:
FloorManangerProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_PROPERTY:
TableManangerProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_INSERT:
TableInsertProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_COPY:
TableCopyProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_DELETE:
TableDeleteProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_RESET:
TableResetProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_RESTORE:
TableRestoreProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_BACKUP:
TableBackupProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_SAVE:
TableSaveProcess(btn);
break;
case PosKey.MENU_KEY.TABLE_EXIT:
if (TableSaveProcess(btn) == false) return;
OperationButtonSelect(true, btn);
this.Close();
return;
}
ShowCurentTableCount();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
/// <summary>
/// 층버튼
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFloor_Click(object sender, EventArgs e)
{
try
{
tmrSaleTimer.Enabled = false;
string floorCd = string.Empty;
int targetPage = m_currentFloorPage;
if (sender == btnFloorPre)
{
targetPage--;
if (targetPage < 0) targetPage = m_totalFloorPage - 1;
DisplayFloorButton(targetPage);
floorCd = m_btnFloorList[0].Tag.ToString();
}
else if (sender == btnFloorNext)
{
targetPage++;
if (targetPage >= m_totalFloorPage) targetPage = 0;
DisplayFloorButton(targetPage);
floorCd = m_btnFloorList[0].Tag.ToString();
}
else
{
CsmButton btn = (CsmButton)sender;
floorCd = btn.Tag.ToString();
}
pnlTable_Click(null, null);
//SetChangedTableProperty();
SelectFloorButton(floorCd);
DisplayTableButton(floorCd);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
finally
{
tmrSaleTimer.Enabled = true;
txtFixedX.Value = string.Empty;
txtFixedY.Value = string.Empty;
pnlTable.Focus();
}
}
/// <summary>
/// Table Button Click Event
/// </summary>
/// <param name="sender"></param>
/// <param name="tableKey"></param>
private void TableButton_ClickEvent(object sender, string tableKey)
{
try
{
m_ctrlDesigner.Attach((Control)sender);
m_currentTableNo = tableKey.Split('-')[1].Trim();
SetSelectInfo(m_currentFloorCd, m_currentTableNo);
TableButton_DesignChanged(sender, null);
if (string.IsNullOrWhiteSpace(m_currentOperation)) return;
switch (m_currentOperation)
{
case PosKey.MENU_KEY.TABLE_PROPERTY:
TableManangerProcess(null);
break;
case PosKey.MENU_KEY.TABLE_DELETE:
TableDeleteProcess(null);
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);
}
finally
{
pnlTable.Refresh();
}
}
private void TableButton_DesignChanged(object sender, EventArgs e)
{
var info = string.Empty;
try
{
if (sender is CsmButtonTable)
{
if (string.IsNullOrWhiteSpace(m_currentTableNo) == false)
{
Column.MST_TABLE.TABLE_DATA cTable = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd
&& x.TABLE_NO == m_currentTableNo);
if (cTable == null) return;
var ctrl = (CsmButtonTable)sender;
info = string.Format("【{0}】 X:{1} Y:{2} W:{3} H:{4}"
, GetTableName(m_currentFloorCd, m_currentTableNo)
, ctrl.Location.X, ctrl.Location.Y
, ctrl.Size.Width, ctrl.Size.Height);
if (ctrl.Location.X != cTable.X_COORD || ctrl.Location.Y != cTable.Y_COORD ||
ctrl.Size.Width != cTable.WIDTH || ctrl.Size.Height != cTable.HEIGHT)
{
cTable.X_COORD = ctrl.Location.X;
cTable.Y_COORD = ctrl.Location.Y;
cTable.WIDTH = ctrl.Size.Width;
cTable.HEIGHT = ctrl.Size.Height;
if (cTable.STATUS == PosConst.DB_ROW_STATUS.NONE)
cTable.STATUS = PosConst.DB_ROW_STATUS.UPDATE;
}
// Debug logging
//string log = DateTime.Now.ToString("hh:mm:ss ")
// + " CtrlName:" + ctrl.Name + " Floor:" + cTable.FLOOR_CD + " Table:" + cTable.TABLE_NO
// + " X:" + cTable.X_COORD.ToString() + " Y:" + cTable.Y_COORD.ToString()
// + " W:" + cTable.WIDTH.ToString() + " H:" + cTable.HEIGHT.ToString()
// + " STATUS:" + cTable.STATUS;
//System.Diagnostics.Debug.Print(log);
}
}
}
catch { }
finally
{
lblTableInfo.Text = info;
}
}
private void btnFixedCreate_Click(object sender, EventArgs e)
{
try
{
if (CheckInputValue(null) == false) return;
int x = CmUtil.IntParse(txtFixedX.Value);
int y = CmUtil.IntParse(txtFixedY.Value);
this.TableFixedCreate(x, y);
}
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 txtFixed_Enter(object sender, EventArgs e)
{
try
{
btnFixedCreate.BackColor = Color.FromArgb(22, 187, 238);
}
catch { }
}
private void txtFixed_Leave(object sender, EventArgs e)
{
try
{
btnFixedCreate.BackColor = Color.FromArgb(33, 33, 33);
}
catch { }
}
private void txtFixed_KeyDownEvent(object sender, string sFuncValue)
{
if (sFuncValue == PosKey.MENU_KEY.ENTER)
{
CheckInputValue(sender);
}
}
private void btnFixedUp_Click(object sender, EventArgs e)
{
try
{
int value = 0;
if (sender == btnUpY)
{
value = CmUtil.IntParse(txtFixedY.Value) + 1;
if (value > 5) value = 1;
txtFixedY.Value = value.ToString();
txtFixedY.Select();
}
else if (sender == btnUpX)
{
value = CmUtil.IntParse(txtFixedX.Value) + 1;
if (value > 6) value = 1;
txtFixedX.Value = value.ToString();
txtFixedX.Select();
}
}
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 CheckInputValue(object sender)
{
try
{
if (string.IsNullOrWhiteSpace(m_currentFloorCd))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0079);
return false;
}
int coord = 0;
if (sender == null || sender == txtFixedX)
{
coord = CmUtil.IntParse(txtFixedX.Value);
if (coord == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0511);
txtFixedX.Value = "0";
txtFixedX.Focus();
txtFixedX.SelectText();
return false;
}
if (coord > CTRL_MAX_COUNT_X)
{
WinManager.ErrorMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0512), CTRL_MAX_COUNT_X));
txtFixedX.Focus();
txtFixedX.SelectText();
return false;
}
if (sender != null) txtFixedY.Select();
}
if (sender == null || sender == txtFixedY)
{
coord = CmUtil.IntParse(txtFixedY.Value);
if (coord == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0511);
txtFixedY.Value = "0";
txtFixedY.Focus();
txtFixedY.SelectText();
return false;
}
if (coord > CTRL_MAX_COUNT_Y)
{
WinManager.ErrorMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0512), CTRL_MAX_COUNT_Y));
txtFixedY.Focus();
txtFixedY.SelectText();
return false;
}
if (sender != null) txtFixedX.Select();
}
return 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 false;
}
}
/// <summary>
/// 화면초기화
/// </summary>
private void InitControl()
{
try
{
this.Location = new Point(0, 0);
this.Size = new Size(1024, 768);
//picTop.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MAIN_TOP_BG);
picTop.Location = new Point(0, 0);
picTop.Size = new Size(1024, 50);
//picBtm.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MAIN_TOP_BG);
picBtm.Location = new Point(0, 746);
picBtm.Size = new Size(1024, 22);
FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0810);
lblStoreNm.Text = m_cPosStatus.Mst.StorName;
lblTableInfo.Text = string.Empty;
lblGuideMsg.Text = string.Empty;
lblTableCnt.Text = string.Empty;
m_totalFloorPage = 0;
m_currentFloorPage = -1;
m_currentFloorCd = string.Empty;
m_currentTableNo = string.Empty;
txtFixedX.Value = string.Empty;
txtFixedY.Value = string.Empty;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
/// <summary>
/// 기능버튼 화면 출력
/// </summary>
/// <returns></returns>
private bool SetFuncMenu()
{
try
{
string btnText = string.Empty;
// 메뉴버튼 초기화
for (var i = 0; i < m_btnFuncList.Count; i++)
{
m_btnFuncList[i].Tag = string.Empty;
m_btnFuncList[i].Text = string.Empty;
m_btnFuncList[i].BorderStyle = BorderStyle.FixedSingle;
m_btnFuncList[i].BackColor = Color.FromArgb(70, 86, 99);
m_btnFuncList[i].ForeColor = Color.White;
m_btnFuncList[i].Visible = false;
}
// 후불 테이블 기능키 그룹 로딩
DataTable dtData = m_cDataCommon.SeletFuncKeyGroup(PosKey.MENU_KEY.TABLE_EDIT);
if (dtData == null || dtData.Rows.Count <= 0)
{
// 기능키 마스터가 없으면, 기본값 설정.
Dictionary<string, string> funcKeys = new Dictionary<string, string>();
funcKeys.Add(PosKey.MENU_KEY.FLOOR_MANAGER, "Floor\nManage");
funcKeys.Add(PosKey.MENU_KEY.TABLE_INSERT, "Table\nInsert");
funcKeys.Add(PosKey.MENU_KEY.TABLE_COPY, "Table\nCopy");
funcKeys.Add(PosKey.MENU_KEY.TABLE_DELETE, "Table\nDelete");
funcKeys.Add(PosKey.MENU_KEY.TABLE_PROPERTY, "Table\nProperty");
funcKeys.Add(PosKey.MENU_KEY.TABLE_RESTORE, "Restore");
funcKeys.Add(PosKey.MENU_KEY.TABLE_BACKUP, "Server\nBackup");
funcKeys.Add(PosKey.MENU_KEY.TABLE_SAVE, "Save");
funcKeys.Add(PosKey.MENU_KEY.TABLE_RESET, "Table\nReset");
funcKeys.Add(PosKey.MENU_KEY.TABLE_EXIT, "Exit");
for (var i = 0; i < funcKeys.Count; i++)
{
var func = funcKeys.ElementAt(i);
m_btnFuncList[i].Tag = func.Key;
m_btnFuncList[i].Text = func.Value;
m_btnFuncList[i].BackColor = m_FuncDefaultBackColor;
m_btnFuncList[i].ForeColor = m_FuncDefalutForeColor;
m_btnFuncList[i].BorderStyle = BorderStyle.FixedSingle;
m_btnFuncList[i].Visible = true;
}
return false;
}
int idx = 0;
foreach (DataRow dr in dtData.Rows)
{
m_btnFuncList[idx].Tag = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID);
m_btnFuncList[idx].Text = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_NM);
m_btnFuncList[idx].BackColor = m_FuncDefaultBackColor;
m_btnFuncList[idx].ForeColor =m_FuncDefalutForeColor;
m_btnFuncList[idx].BorderStyle = BorderStyle.FixedSingle;
m_btnFuncList[idx].Visible = true;
idx++;
}
return 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 false;
}
}
private bool LoadFloorMaster(bool isShowMsg = true)
{
try
{
this.m_floorMst.Clear();
DataTable dtData = null;
string ret = m_cTableSvr.SelectFloor(new string[] { PosConst.QueryTagDef.QueryFloorDef.FLOOR_ALL_SEARCH, string.Empty }, out dtData);
if (ret == UserCom.RST_IGNORE)
{
if (isShowMsg) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0079);
return true;
}
if (ret != UserCom.RST_OK)
{
if (isShowMsg) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0078);
return false;
}
foreach (DataRow dr in dtData.Rows)
{
Column.MST_FLOOR.FLOOR_DATA cFloor = new Column.MST_FLOOR.FLOOR_DATA();
cFloor.FLOOR_CD = CmUtil.GetDataRowStr(dr, "FLOOR_CD");
cFloor.FLOOR_NM = CmUtil.GetDataRowStr(dr, "FLOOR_NM");
cFloor.UPD_DT = CmUtil.GetDataRowStr(dr, "UPD_DT");
cFloor.REG_DT = CmUtil.GetDataRowStr(dr, "REG_DT");
cFloor.STATUS = PosConst.DB_ROW_STATUS.NONE;
this.m_floorMst.Add(cFloor);
}
return 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 false;
}
}
private bool LoadTableMaster(bool isShowMsg = true)
{
try
{
this.m_tableMst.Clear();
DataTable dtData = null;
string ret = m_cTableSvr.SelectTable(new string[] { PosConst.QueryTagDef.QueryTableDef.TABLE_ALL_SEARCH }, out dtData);
if (ret == UserCom.RST_IGNORE)
{
if (isShowMsg) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0495);
return true;
}
if (ret != UserCom.RST_OK)
{
if (isShowMsg) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0496);
return false;
}
foreach (DataRow dr in dtData.Rows)
{
Column.MST_TABLE.TABLE_DATA cTable = new Column.MST_TABLE.TABLE_DATA();
m_cTableSvr.SetTableInfo(dr, ref cTable);
this.m_tableMst.Add(cTable);
}
return 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 false;
}
}
private void FloorButtonClear()
{
try
{
// 층버튼 초기화
for (var i = 0; i < this.m_btnFloorList.Count; i++)
{
m_btnFloorList[i].BackColor = this.m_FloorDefaultBackColor;
m_btnFloorList[i].ForeColor = this.m_FloorDefaultForeColor;
m_btnFloorList[i].BorderStyle = BorderStyle.FixedSingle;
m_btnFloorList[i].Text = string.Empty;
m_btnFloorList[i].Tag = string.Empty;
m_btnFloorList[i].Enabled = false;
}
}
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 DisplayFloorButton(int targetFloorPage = 0, bool force = false)
{
try
{
//this.SuspendLayout();
var tmpFloorMst = m_floorMst.Where(x => x.STATUS != PosConst.DB_ROW_STATUS.DELETE).ToList()
.OrderBy(x => x.FLOOR_CD).ToList();
int totalCount = tmpFloorMst.Count;
if (totalCount == 0 || m_btnFloorList.Count == 0)
{
FloorButtonClear();
return false;
}
m_totalFloorPage = (totalCount / MAX_FLOOR_COUNT) + (totalCount % MAX_FLOOR_COUNT != 0 ? 1 : 0);
if (m_currentFloorPage == targetFloorPage && force == false) return false;
if (targetFloorPage > totalCount) targetFloorPage = totalCount - 1;
m_currentFloorPage = targetFloorPage;
// 층버튼 초기화
FloorButtonClear();
// 층버튼 화면표시
var strIdx = targetFloorPage * MAX_FLOOR_COUNT;
var endIdx = strIdx + MAX_FLOOR_COUNT;
var btnIdx = 0;
for (var i = strIdx; i < endIdx; i++)
{
if (i >= tmpFloorMst.Count) break;
m_btnFloorList[btnIdx].BackColor = this.m_FloorDefaultBackColor;
m_btnFloorList[btnIdx].ForeColor = this.m_FloorDefaultForeColor;
m_btnFloorList[btnIdx].BorderStyle = BorderStyle.FixedSingle;
m_btnFloorList[btnIdx].Text = tmpFloorMst[i].FLOOR_NM;
m_btnFloorList[btnIdx].Tag = tmpFloorMst[i].FLOOR_CD;
m_btnFloorList[btnIdx].Enabled = true;
btnIdx++;
}
return 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 false;
}
finally
{
//this.ResumeLayout(false);
}
}
private void SelectFloorButton(string floorCd)
{
try
{
if (string.IsNullOrWhiteSpace(floorCd)) return;
for (var i = 0; i < m_btnFloorList.Count; i++)
{
if (floorCd == m_btnFloorList[i].Tag.ToString())
{
m_btnFloorList[i].BackColor = m_FloorSelectBackColor;
m_btnFloorList[i].ForeColor = m_FloorSelectForeColor;
m_btnFloorList[i].BorderStyle = BorderStyle.FixedSingle;
}
else
{
m_btnFloorList[i].BackColor = this.m_FloorDefaultBackColor;
m_btnFloorList[i].ForeColor = this.m_FloorDefaultForeColor;
m_btnFloorList[i].BorderStyle = BorderStyle.FixedSingle;
}
}
}
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 DisplayTableButton(string floorCd)
{
try
{
this.pnlTable.SuspendLayout();
if (m_currentFloorCd != floorCd)
{
m_ctrlDesigner.Detach();
PanelTableClear();
}
if (string.IsNullOrWhiteSpace(floorCd)) return;
m_currentFloorCd = floorCd;
SetSelectInfo(floorCd, string.Empty);
foreach (var tmpTable in from x in m_tableMst
where x.FLOOR_CD == floorCd
orderby x.FLOOR_CD, x.TABLE_NO
select x)
{
CsmButtonTable tableButton = null;
var tableNm = string.Empty;
var key = string.Format("{0}-{1}", tmpTable.FLOOR_CD, tmpTable.TABLE_NO);
if (pnlTable.Controls.ContainsKey(key))
{
tableButton = (CsmButtonTable)pnlTable.Controls[key];
if (tmpTable.STATUS == PosConst.DB_ROW_STATUS.DELETE)
{
this.PanelTableRemove(tableButton);
continue;
}
tableNm = tmpTable.TABLE_NM;
}
else
{
if (tmpTable.STATUS == PosConst.DB_ROW_STATUS.DELETE) continue;
tableButton = new CsmButtonTable();
tableButton.Name = key;
tableButton.Tag = tmpTable.TABLE_NO;
tableButton.TableKey = key;
tableButton.DefaultColor = this.m_tblDefaultColor;
tableButton.ClickColor = this.m_tblSelectColor;
tableNm = string.Format("【{0}】", tmpTable.TABLE_NM);
this.PanelTableAdd(tableButton);
}
tableButton.SetTableInfo(tmpTable.TABLE_NM
, tableNm
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0137)
, m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol
+ m_cPosStatus.Global.NumericTOCurrency(1000)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0755)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0812));
tableButton.Font = new Font(tmpTable.FONT_NM, tmpTable.FONT_SIZE);
tableButton.SetBounds(tmpTable.X_COORD, tmpTable.Y_COORD, tmpTable.WIDTH, tmpTable.HEIGHT);
if (tableButton != null)
{
tableButton.OccupancyLevel = -1;
tableButton.BorderStyle = BorderStyle.None;
tableButton.IsWaited = false;
tableButton.BringToFront();
}
}
ShowCurentTableCount();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
finally
{
this.pnlTable.ResumeLayout();
}
}
/// <summary>
/// 선택한 층 및 테이블 정보 화면표시
/// </summary>
/// <param name="floorCd"></param>
/// <param name="tableNo"></param>
private void SetSelectInfo(string floorCd, string tableNo)
{
string text = string.Empty;
try
{
if (string.IsNullOrWhiteSpace(floorCd))
{
lblTableInfo.Text = string.Empty;
return;
}
text += string.Format("{0} : {1} [{2}]", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0175), floorCd, GetFloorName(floorCd));
if (string.IsNullOrWhiteSpace(tableNo))
{
lblTableInfo.Text = string.Empty;
return;
}
text += string.Format(" {0} : {1} [{2}]", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0176), tableNo, GetTableName(floorCd, tableNo));
}
catch { }
finally
{
lblSelectInfo.Text = text;
}
}
private string GetFloorName(string floorCd)
{
string retValue = floorCd;
try
{
string name = m_floorMst.Find(x => x.FLOOR_CD == floorCd).FLOOR_NM;
if (string.IsNullOrWhiteSpace(name) == false) retValue = name;
}
catch { }
return retValue;
}
private string GetTableName(string floorCd, string tableNo)
{
string retValue = tableNo;
try
{
string name = m_tableMst.Find(x => x.FLOOR_CD == floorCd && x.TABLE_NO == tableNo).TABLE_NM;
if (string.IsNullOrWhiteSpace(name) == false) retValue = name;
}
catch { }
return retValue;
}
private void PanelTableAdd(CsmButtonTable tableButton)
{
try
{
tableButton.ButtonClickHandler += new CsmButtonTable.ButtonClickEventHandler(TableButton_ClickEvent);
tableButton.LocationChanged += new EventHandler(TableButton_DesignChanged);
tableButton.SizeChanged += new EventHandler(TableButton_DesignChanged);
this.pnlTable.Controls.Add(tableButton);
}
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 PanelTableRemove(CsmButtonTable tableButton)
{
try
{
pnlTable.Controls.Remove(tableButton);
tableButton.ButtonClickHandler -= new CsmButtonTable.ButtonClickEventHandler(TableButton_ClickEvent);
tableButton.LocationChanged -= new EventHandler(TableButton_DesignChanged);
tableButton.SizeChanged -= new EventHandler(TableButton_DesignChanged);
tableButton.Dispose();
}
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 PanelTableClear()
{
try
{
foreach (Control ctrl in pnlTable.Controls)
{
if (ctrl is CsmButtonTable)
{
PanelTableRemove((CsmButtonTable)ctrl);
}
else
{
pnlTable.Controls.Remove(ctrl);
}
}
this.pnlTable.Controls.Clear();
}
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 pnlTable_Click(object sender, EventArgs e)
{
try
{
// 테이블 선택 해제
m_ctrlDesigner.Detach();
m_currentTableNo = string.Empty;
SetSelectInfo(m_currentFloorCd, string.Empty);
//SetChangedTableProperty();
}
catch { }
}
/// <summary>
/// 기능버튼 선택효과 처리
/// </summary>
/// <param name="selected"></param>
private void OperationButtonSelect(bool selected, CsmButton button = null)
{
try
{
if (selected == false && button == null)
{
for (var i = 0; i < m_btnFuncList.Count; i++)
{
//m_btnFuncList[i].BorderStyle = BorderStyle.FixedSingle;
m_btnFuncList[i].BackColor = m_FuncDefaultBackColor;
m_btnFuncList[i].ForeColor = m_FuncDefalutForeColor;
}
return;
}
if (button is CsmButton)
{
button.BackColor = selected ? m_FuncClickBackColor : m_FuncDefaultBackColor;
button.ForeColor = selected ? m_FuncClickForeColor : m_FuncDefalutForeColor;
button.Update();
}
}
catch { }
}
/// <summary>
/// 층 관리
/// </summary>
/// <returns></returns>
private bool FloorManangerProcess(CsmButton button)
{
try
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
m_currentOperation = string.Empty;
frmFloorManager frm = (frmFloorManager)FormManager.GetForm(FormManager.FORM_FLOOR_MGR);
if (frm == null)
{
frm = new frmFloorManager();
FormManager.AddForm(FormManager.FORM_FLOOR_MGR, frm);
}
frm.FloorCode = m_currentFloorCd;
frm.FloorMaster = m_floorMst;
DialogResult dr = frm.ShowDialog();
m_floorMst = frm.FloorMaster;
int count = m_floorMst.Count(x => x.STATUS != PosConst.DB_ROW_STATUS.DELETE);
if (count > 0)
{
string floorCd = m_floorMst[0].FLOOR_CD;
DisplayFloorButton(0, true);
SelectFloorButton(floorCd);
DisplayTableButton(floorCd);
}
else
{
DisplayFloorButton(0, true);
DisplayTableButton(string.Empty);
m_currentFloorCd = string.Empty;
}
return 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 false;
}
finally
{
m_currentOperation = string.Empty;
OperationButtonSelect(false, button);
}
}
/// <summary>
/// 테이블 속성 관리
/// </summary>
/// <returns></returns>
private bool TableManangerProcess(CsmButton button)
{
try
{
if (string.IsNullOrWhiteSpace(m_currentTableNo))
{
if (m_currentOperation != PosKey.MENU_KEY.TABLE_PROPERTY)
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
lblGuideMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0142);
m_currentOperation = PosKey.MENU_KEY.TABLE_PROPERTY;
}
else
{
OperationButtonSelect(false, button);
lblGuideMsg.Text = string.Empty;
m_currentOperation = string.Empty;
}
return true;
}
frmTableManager frm = (frmTableManager)FormManager.GetForm(FormManager.FORM_TABLE_MGR);
if (frm == null)
{
frm = new frmTableManager();
FormManager.AddForm(FormManager.FORM_TABLE_MGR, frm);
}
frm.TableMaster = m_tableMst;
frm.FloorCode = m_currentFloorCd;
frm.FloorName = GetFloorName(m_currentFloorCd);
frm.TableNo = m_currentTableNo;
DialogResult dr = frm.ShowDialog();
DisplayTableButton(m_currentFloorCd);
lblGuideMsg.Text = string.Empty;
m_currentOperation = string.Empty;
m_ctrlDesigner.Detach();
OperationButtonSelect(false, button);
return 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 false;
}
finally
{
pnlTable_Click(null, null);
}
}
/// <summary>
/// 테이블 추가 처리
/// </summary>
/// <returns></returns>
private bool TableInsertProcess(CsmButton button)
{
try
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
lblGuideMsg.Text = string.Empty;
m_currentOperation = string.Empty;
if (string.IsNullOrWhiteSpace(m_currentFloorCd))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0079);
return false;
}
string newCode = GetNewTableNo();
string key = string.Format("{0}-{1}", m_currentFloorCd, newCode);
Point newPoint = GetNewTableLoation();
// 테이블 객체 생성
var cTable = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd && x.TABLE_NO == newCode);
if (cTable == null)
{
cTable = new Column.MST_TABLE.TABLE_DATA();
m_tableMst.Add(cTable);
}
cTable.FLOOR_CD = m_currentFloorCd;
cTable.TABLE_NO = newCode;
cTable.TABLE_NM = newCode;
cTable.FONT_NM = m_cPosStatus.Base.FONT;
cTable.FONT_SIZE = 10;
cTable.X_COORD = newPoint.X;
cTable.Y_COORD = newPoint.Y;
cTable.WIDTH = CTRL_MIN_WIDTH;
cTable.HEIGHT = CTRL_MIN_HEIGHT;
cTable.STATUS = PosConst.DB_ROW_STATUS.INSERT;
// 테이블 컨트롤 생성
CsmButtonTable tableButton = new CsmButtonTable();
tableButton.Name = key;
tableButton.Tag = cTable.TABLE_NO;
tableButton.TableKey = key;
tableButton.DefaultColor = this.m_tblDefaultColor;
tableButton.ClickColor = this.m_tblSelectColor;
tableButton.SetTableInfo(cTable.TABLE_NM
, string.Format("【{0}】", cTable.TABLE_NM)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0137)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0231)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0812));
tableButton.Font = new Font(cTable.FONT_NM, cTable.FONT_SIZE);
tableButton.SetBounds(cTable.X_COORD, cTable.Y_COORD, cTable.WIDTH, cTable.HEIGHT);
tableButton.OccupancyLevel = -1;
tableButton.IsWaited = false;
tableButton.Visible = true;
tableButton.BringToFront();
this.PanelTableAdd(tableButton);
// 테이블 컨트롤 선택
TableButton_ClickEvent(tableButton, key);
return 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 false;
}
finally
{
OperationButtonSelect(false, button);
}
}
/// <summary>
/// 테이 고정갯수 생성
/// </summary>
/// <param name="xCnt">가로갯수</param>
/// <param name="yCnt">세로갯수</param>
/// <returns></returns>
private bool TableFixedCreate(int xCnt, int yCnt)
{
const int MARGIN = 2;
try
{
if (xCnt > CTRL_MAX_COUNT_X) return false;
if (yCnt > CTRL_MAX_COUNT_Y) return false;
// 객체 초기화
foreach (var tmpTable in from x in m_tableMst
where x.FLOOR_CD == m_currentFloorCd
select x)
{
tmpTable.STATUS = PosConst.DB_ROW_STATUS.DELETE;
}
// 컨트롤 초기화
m_ctrlDesigner.Detach();
PanelTableClear();
int table = 0;
int w = (SCR_SIZE_WIDTH / xCnt);
int h = (SCR_SIZE_HEIGHT / yCnt);
for (var row = 0; row < yCnt; row++)
{
for (var col = 0; col < xCnt; col++)
{
var x = w * col;
var y = h * row;
var tableNo = (++table).ToString("000");
var key = string.Format("{0}-{1}", m_currentFloorCd, tableNo);
// 객체생성
var cTable = m_tableMst.Find(c => c.FLOOR_CD == m_currentFloorCd && c.TABLE_NO == tableNo);
if (cTable == null)
{
cTable = new Column.MST_TABLE.TABLE_DATA();
m_tableMst.Add(cTable);
}
cTable.FLOOR_CD = m_currentFloorCd;
cTable.TABLE_NO = tableNo;
cTable.TABLE_NM = tableNo;
cTable.FONT_NM = m_cPosStatus.Base.FONT;
cTable.FONT_SIZE = 10;
cTable.X_COORD = x + CTRL_CAP;
cTable.Y_COORD = y + CTRL_CAP;
cTable.WIDTH = w - CTRL_CAP * MARGIN;
cTable.HEIGHT = h - CTRL_CAP * MARGIN;
cTable.STATUS = PosConst.DB_ROW_STATUS.UPDATE;
// 테이블 컨트롤 생성
CsmButtonTable tableButton = new CsmButtonTable();
tableButton.Name = key;
tableButton.Tag = cTable.TABLE_NO;
tableButton.TableKey = key;
tableButton.DefaultColor = this.m_tblDefaultColor;
tableButton.ClickColor = this.m_tblSelectColor;
tableButton.SetTableInfo(cTable.TABLE_NM
, string.Format("【{0}】", cTable.TABLE_NM)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0137)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0231)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0812));
tableButton.Font = new Font(cTable.FONT_NM, cTable.FONT_SIZE);
tableButton.SetBounds(cTable.X_COORD, cTable.Y_COORD, cTable.WIDTH, cTable.HEIGHT);
tableButton.OccupancyLevel = -1;
tableButton.IsWaited = false;
tableButton.Visible = true;
tableButton.BringToFront();
this.PanelTableAdd(tableButton);
}
}
return 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 false;
}
finally
{
txtFixedX.Value = string.Empty;
txtFixedY.Value = string.Empty;
pnlTable.Focus();
}
}
/// <summary>
/// 테이블 복사 처리
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private bool TableCopyProcess(CsmButton button)
{
try
{
OperationButtonSelect(false);
if (string.IsNullOrWhiteSpace(m_currentTableNo))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0142);
return false;
}
OperationButtonSelect(true, button);
// 원본
string orgkey = string.Format("{0}-{1}", m_currentFloorCd, m_currentTableNo);
Control orgCtrl = pnlTable.Controls.Find(orgkey, false)[0];
if (orgCtrl == null)
{
m_currentTableNo = string.Empty;
m_ctrlDesigner.Detach();
return false;
}
Column.MST_TABLE.TABLE_DATA orgTable = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd && x.TABLE_NO == m_currentTableNo);
if (orgTable == null)
{
m_currentTableNo = string.Empty;
m_ctrlDesigner.Detach();
return false;
}
// 복사
string newCode = GetNewTableNo();
string newKey = string.Format("{0}-{1}", m_currentFloorCd, newCode);
Point newPoint = GetNewTableLoation();
Column.MST_TABLE.TABLE_DATA cTable = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd && x.TABLE_NO == newCode);
if (cTable == null)
{
cTable = new Column.MST_TABLE.TABLE_DATA();
m_tableMst.Add(cTable);
}
cTable.FLOOR_CD = m_currentFloorCd;
cTable.TABLE_NO = newCode;
cTable.TABLE_NM = newCode;
cTable.FONT_NM = orgTable.FONT_NM;
cTable.FONT_SIZE = orgTable.FONT_SIZE;
cTable.X_COORD = newPoint.X;
cTable.Y_COORD = newPoint.Y;
cTable.WIDTH = orgTable.WIDTH;
cTable.HEIGHT = orgTable.HEIGHT;
cTable.STATUS = PosConst.DB_ROW_STATUS.INSERT;
// 테이블 컨트롤 생성
CsmButtonTable tableButton = new CsmButtonTable();
tableButton.Name = newKey;
tableButton.Tag = cTable.TABLE_NO;
tableButton.TableKey = newKey;
tableButton.DefaultColor = this.m_tblDefaultColor;
tableButton.ClickColor = this.m_tblSelectColor;
tableButton.SetTableInfo(cTable.TABLE_NM
, string.Format("【{0}】", cTable.TABLE_NM)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0137)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0231)
, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0812));
tableButton.Font = new Font(cTable.FONT_NM, cTable.FONT_SIZE);
tableButton.SetBounds(cTable.X_COORD, cTable.Y_COORD, cTable.WIDTH, cTable.HEIGHT);
tableButton.OccupancyLevel = -1;
tableButton.IsWaited = false;
tableButton.Visible = true;
tableButton.BringToFront();
this.PanelTableAdd(tableButton);
lblGuideMsg.Text = string.Empty;
m_currentOperation = string.Empty;
this.TableButton_ClickEvent(tableButton, newKey);
return 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 false;
}
finally
{
ShowCurentTableCount();
OperationButtonSelect(false, button);
}
}
/// <summary>
/// 테이블 삭제 처리
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private bool TableDeleteProcess(CsmButton button)
{
try
{
if (string.IsNullOrWhiteSpace(m_currentTableNo))
{
if (m_currentOperation != PosKey.MENU_KEY.TABLE_DELETE)
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
lblGuideMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0142);
m_currentOperation = PosKey.MENU_KEY.TABLE_DELETE;
return true;
}
else
{
OperationButtonSelect(false, button);
lblGuideMsg.Text = string.Empty;
m_currentOperation = string.Empty;
}
return true;
}
string key = string.Format("{0}-{1}", m_currentFloorCd, m_currentTableNo);
Control ctrl = pnlTable.Controls.Find(key, false)[0];
if (ctrl is CsmButtonTable)
{
// 테이블 컨트롤 삭제
// pnlTable.Controls.RemoveByKey(key);
this.PanelTableRemove((CsmButtonTable)ctrl);
// 테이블 객체 상태 업데이트
Column.MST_TABLE.TABLE_DATA cTable = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd
&& x.TABLE_NO == m_currentTableNo);
if (cTable != null)
{
cTable.STATUS = PosConst.DB_ROW_STATUS.DELETE;
}
}
m_currentTableNo = string.Empty;
m_ctrlDesigner.Detach();
//lblGuideMsg.Text = string.Empty;
//m_currentOperation = string.Empty;
//OperationButtonSelect(false, button);
return 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 false;
}
finally
{
ShowCurentTableCount();
}
}
private string GetNewTableNo()
{
try
{
for (var i = 1; i < 1000; i++)
{
string newCode = i.ToString("000");
Column.MST_TABLE.TABLE_DATA temp = m_tableMst.Find(x => x.FLOOR_CD == m_currentFloorCd && x.TABLE_NO == newCode);
if (temp == null) return newCode;
if (temp.STATUS == PosConst.DB_ROW_STATUS.DELETE) return newCode;
}
return string.Empty;
}
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 string.Empty;
}
}
private Point GetNewTableLoation()
{
Point retValue = new Point(50, 50);
try
{
int x1 = 10, y1 = 10;
int x2 = 10, y2 = 10;
Point loc = new Point(x1, y1);
for (var i = 0; i < 100; i++)
{
bool isEquals = false;
loc = new Point(x1, y1);
foreach (Control ctrl in pnlTable.Controls)
{
System.Diagnostics.Debug.Print(ctrl.Location.ToString());
if (loc == ctrl.Location)
{
isEquals = true;
break;
}
}
if (isEquals == false) break;
x1 = x1 + 30;
y1 = y1 + 30;
if (x1 + 187 > pnlTable.Width)
{
x1 = x2;
x2 = x2 + 100;
y1 = y2 + 100;
}
if (y1 + 110 > pnlTable.Height)
{
x1 = x2 + 100;
x2 = x2 + 100;
y1 = y2;
}
}
retValue = loc;
}
catch { }
return retValue;
}
/// <summary>
/// 테이블 초기화
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private bool TableResetProcess(CsmButton button)
{
try
{
m_currentOperation = string.Empty;
OperationButtonSelect(false);
OperationButtonSelect(true, button);
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0497) == false) return false;
foreach (var tmpTable in from x in m_tableMst
where x.FLOOR_CD == m_currentFloorCd
select x)
{
tmpTable.STATUS = PosConst.DB_ROW_STATUS.DELETE;
}
PanelTableClear();
return 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 false;
}
finally
{
OperationButtonSelect(false, button);
}
}
/// <summary>
/// 층/테이블 저장
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private bool TableSaveProcess(CsmButton button)
{
try
{
pnlTable_Click(null, null);
OperationButtonSelect(false);
OperationButtonSelect(true, button);
m_currentOperation = string.Empty;
if (CheckDataChanged() == false) return true;
if (button.Tag.ToString() == PosKey.MENU_KEY.TABLE_SAVE)
{
// 저장버튼
if (m_cTableSvr.GetOrderDataCount() > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0667);
return false;
}
}
else
{
// 종료버튼
if (m_cTableSvr.GetOrderDataCount() > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0667);
return true;
}
}
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0498) == false)
{
return true;
}
var ret = m_cTableSvr.TableMasterSave(this.m_floorMst, this.m_tableMst);
if (ret != UserCom.RST_OK)
{
WinManager.ErrorMessage(ret);
return false;
}
return 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 false;
}
finally
{
OperationButtonSelect(false, button);
}
}
/// <summary>
/// 데이터 변경여부 확인
/// </summary>
/// <returns></returns>
private bool CheckDataChanged()
{
try
{
Column.MST_FLOOR.FLOOR_DATA cFloor = m_floorMst.Find(x => x.STATUS != PosConst.DB_ROW_STATUS.NONE);
if (cFloor != null) return true;
Column.MST_TABLE.TABLE_DATA cTable = m_tableMst.Find(x => x.STATUS != PosConst.DB_ROW_STATUS.NONE);
if (cTable != null) return true;
return false;
}
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 false;
}
}
/// <summary>
/// 현재 테이블 변경정보 메모리 저장 처리 (미사용)
/// </summary>
private void SetChangedTableProperty()
{
//foreach (Control ctrl in pnlTable.Controls)
//{
// try
// {
// if (ctrl is CsmButtonTable)
// {
// string[] name = ctrl.Name.ToString().Split('-');
// string floorCd = name[0];
// string tableNo = name[1];
// var cTable = m_tableMst.Find(x => x.FLOOR_CD == floorCd && x.TABLE_NO == tableNo);
// bool isChanged = false;
// if (cTable.X_COORD != ctrl.Location.X) isChanged = true;
// if (cTable.Y_COORD != ctrl.Location.Y) isChanged = true;
// if (cTable.WIDTH != ctrl.Size.Width) isChanged = true;
// if (cTable.HEIGHT != ctrl.Size.Height) isChanged = true;
// cTable.X_COORD = ctrl.Location.X;
// cTable.Y_COORD = ctrl.Location.Y;
// cTable.WIDTH = ctrl.Size.Width;
// cTable.HEIGHT = ctrl.Size.Height;
// if (isChanged && cTable.STATUS == PosConst.DB_ROW_STATUS.NONE)
// {
// cTable.STATUS = PosConst.DB_ROW_STATUS.UPDATE;
// }
// }
// }
// catch (Exception ex)
// {
// WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
// ex.Message);
// }
//}
}
/// <summary>
/// 테이블 서버백업
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private bool TableBackupProcess(CsmButton button)
{
try
{
pnlTable_Click(null, null);
if (CheckDataChanged() == true)
{
if (m_cTableSvr.GetOrderDataCount() > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0667);
return false;
}
}
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0517) == false) return false;
using (frmWaitMessage frm = new frmWaitMessage())
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
lblGuideMsg.Text = MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0004);
m_currentOperation = string.Empty;
frm.WorkType = PosKey.MENU_KEY.TABLE_BACKUP;
frm.FloorMaster = m_floorMst;
frm.TableMaster = m_tableMst;
frm.ShowDialog();
}
return 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 false;
}
finally
{
lblGuideMsg.Text = string.Empty;
OperationButtonSelect(false, button);
}
}
private bool TableRestoreProcess(CsmButton button)
{
try
{
pnlTable_Click(null, null);
if (m_cTableSvr.GetOrderDataCount() > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0667);
return false;
}
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0518) == false) return false;
using (frmWaitMessage frm = new frmWaitMessage())
{
OperationButtonSelect(false);
OperationButtonSelect(true, button);
m_currentOperation = string.Empty;
lblGuideMsg.Text = MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0005);
frm.WorkType = PosKey.MENU_KEY.TABLE_RESTORE;
frm.FloorMaster = m_floorMst;
frm.TableMaster = m_tableMst;
frm.ShowDialog();
}
string floorCd = string.Empty;
m_currentFloorPage = -1;
m_currentFloorCd = string.Empty;
DisplayFloorButton();
if (m_floorMst.Count > 0) floorCd = m_floorMst[0].FLOOR_CD;
SelectFloorButton(floorCd);
DisplayTableButton(floorCd);
return 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 false;
}
finally
{
lblGuideMsg.Text = string.Empty;
OperationButtonSelect(false, button);
}
}
private void ShowCurentTableCount()
{
try
{
int cnt = 0;
foreach (Control c in this.pnlTable.Controls)
{
if (c is CsmButtonTable) cnt++;
}
this.lblTableCnt.Text = string.Format("Table Count : {0}", cnt);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
this.lblTableCnt.Text = string.Empty;
}
}
}
}