using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Data.SqlClient; using System.Data; using Cosmos.Common; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.CommonManager; using Cosmos.ServiceProvider; using System.Text.RegularExpressions; namespace Cosmos.KPS { public class KPSMain : IKPSMain { /// /// StateServer Object (StateServer 객체) /// private StateServer StateObject = (StateServer)StateServer.GetInstance(); /// /// POS Status Value (POS 상태값) /// private PosStatus m_cPosStatus = null; private TranStatus m_cTrnStatus = null; private DeviceStatus m_cDevStatus = null; /// /// KPS Thread (KPS 스레드) /// private Thread m_tKPSProc = null; /// /// KPS Proc Operation Yes/No (KPS Proc 작동여부) /// private bool m_KPSProcRunning = true; /// /// MSSQL DB 관련 객체 /// private static SqlDB sqlDb = null; // 대기시간 //private int WAIT_TIME = 3000; //private int WAIT_TIME = 2000; private int WAIT_TIME = 1000; private Hashtable m_htFloor; private Hashtable m_htTable; //#20180515 KPS 출력시 라벨프린터 출력 start private LabelPrinter m_cLabelPrtDevice = null; //#20180515 KPS 출력시 라벨프린터 출력 end public KPSMain() { m_cPosStatus = (PosStatus)StateObject.POS; m_cTrnStatus = (TranStatus)StateObject.TRAN; m_cDevStatus = (DeviceStatus)StateObject.DEVICE; m_htFloor = new Hashtable(); m_htTable = new Hashtable(); //#20180515 KPS 출력시 라벨프린터 출력 start m_cLabelPrtDevice = new LabelPrinter(); //#20180515 KPS 출력시 라벨프린터 출력 end } public void StartKPS() { try { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "KPS Start"); // Database Connection sqlDb = new SqlDB(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword); m_tKPSProc = new Thread(new ThreadStart(KPSExecuteProc)); m_KPSProcRunning = true; m_tKPSProc.Start(); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// Get Floor Master /// /// private void SelectFloor() { string sQuery = string.Empty; DataTable dtData = null; try { m_htFloor.Clear(); sQuery = "SELECT FLOOR_CD, FLOOR_NM FROM POSMST..MST_FLOOR WITH(NOLOCK) " + " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' " + " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' " + " ORDER BY FLOOR_CD "; // 조회 if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK) { foreach (DataRow dr in dtData.Rows) { m_htFloor.Add(CmUtil.GetDataRowStr(dr, "FLOOR_CD"), CmUtil.GetDataRowStr(dr, "FLOOR_NM")); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// Get Floor Name /// /// /// private String GetFloorName(string sFloorCd) { string sFloorName = sFloorCd; try { if (m_htFloor.Contains(sFloorCd)) { sFloorName = (string)m_htFloor[sFloorCd]; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sFloorName; } /// /// Get Table Master /// /// private void SelectTable() { string sQuery = string.Empty; DataTable dtData = null; try { m_htTable.Clear(); sQuery = "SELECT FLOOR_CD, TBL_NO, TBL_NM, TBL_DISP_DIV " + " FROM POSMST..MST_TBL WITH(NOLOCK) " + " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' " + " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' " + " AND TRAIN_MODE_YN = '" + ItemConst.TRAINING_FLAG.TRAINING_NO + "' " + " ORDER BY FLOOR_CD, TBL_NO "; // 조회 if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK) { foreach (DataRow dr in dtData.Rows) { TableMaster cTableMaster = new TableMaster(); cTableMaster.sFloorCd = CmUtil.GetDataRowStr(dr, "FLOOR_CD"); cTableMaster.sTableNo = CmUtil.GetDataRowStr(dr, "TBL_NO"); cTableMaster.sTableNm = CmUtil.GetDataRowStr(dr, "TBL_NM"); cTableMaster.sTableDispDiv = CmUtil.GetDataRowStr(dr, "TBL_DISP_DIV"); //if (string.IsNullOrWhiteSpace(cTableMaster.sTableDispDiv)) cTableMaster.sTableDispDiv = PosConst.TABLE_DISP_FLAG.TABLE_NAME; cTableMaster.sTableDispDiv = PosConst.TABLE_DISP_FLAG.TABLE_NAME; if (string.IsNullOrWhiteSpace(cTableMaster.sTableNm)) cTableMaster.sTableNm = cTableMaster.sTableNo; m_htTable.Add(m_htTable.Count, cTableMaster); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// Get Table Name /// /// /// /// private string GetTableName(string sFloorCd, string sTableNo) { string sTableName = sTableNo; try { for (int nLoop = 0; nLoop < m_htTable.Count; nLoop++) { TableMaster cTableMaster = (TableMaster)m_htTable[nLoop]; if (cTableMaster.sFloorCd == sFloorCd && cTableMaster.sTableNo == sTableNo) { //switch(cTableMaster.sTableDispDiv) //{ // case TABLE_DISP_FLAG.TABLE_NO: // sTableName = cTableMaster.sTableNo; // break; // case TABLE_DISP_FLAG.TABLE_NAME: // sTableName = cTableMaster.sTableNm; // break; // case TABLE_DISP_FLAG.TABLE_NO_NAME: // sTableName = cTableMaster.sTableNo + cTableMaster.sTableNm; // break; //} sTableName = cTableMaster.sTableNm; break; } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sTableName; } private string GetCustInfo(string trainMode, string floorCd, string tableNo) { string retValue = string.Empty; try { retValue = MessageManager.GetLabelMessage(POS_MESSAGE.PRINT.MSG_0159); int totCnt = 0; int mCnt = 0; int fCnt = 0; DataTable dtData = null; string sql = "SELECT CUST_CNT, FILLER2 FROM POSMST..MST_TBL WITH(NOLOCK) " + " WHERE TRAIN_MODE_YN = '" + trainMode + "' " + " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' " + " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' " + " AND FLOOR_CD = '" + floorCd + "' " + " AND TBL_NO = '" + tableNo + "' " ; if (sqlDb.DBDataTableSelect(sql, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK) { var temp = string.Empty; temp = CmUtil.GetDataRowStr(dtData.Rows[0], "CUST_CNT"); if (string.IsNullOrWhiteSpace(temp) == false) { totCnt = CmUtil.IntParse(temp); } temp = CmUtil.GetDataRowStr(dtData.Rows[0], "FILLER2"); if (string.IsNullOrWhiteSpace(temp) == false) { totCnt = 0; var custList = temp.Split('|'); for (var i = 0; i < custList.Count(); i++) { int cnt = CmUtil.IntParse(custList[i]); totCnt += cnt; if (i < 6) mCnt += cnt; else fCnt += cnt; } } } if (totCnt > 0 && mCnt + fCnt == 0) { retValue = totCnt.ToString(); } else { retValue = string.Format(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0159), totCnt, mCnt, fCnt); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return retValue; } private string GetAddOrderString(string type) { string retValue = type; try { switch (m_cPosStatus.Base.Country + type) { case "ko-KRNEW": retValue = "신규"; break; case "ko-KRADD": retValue = "추가"; break; case "ko-KRDEL": retValue = "취소"; break; } } catch { } return retValue; } private void KPSExecuteProc() { int nSelectCount = 60; while (m_KPSProcRunning) { try { string ktchErrorCode = string.Empty; Hashtable htKPSSendingItem = new Hashtable(); Hashtable htKtchDeviceStatus = new Hashtable(); // Set Wait Time //Thread.Sleep(WAIT_TIME); //nSelectCount += (WAIT_TIME / 1000); // Get Print Message if (nSelectCount >= 60) { if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { //SelectFloor(); //SelectTable(); } nSelectCount = 0; } // KPS Send Item Make KPSSendItemMake(); // Get item sending to KPS htKPSSendingItem = new Hashtable(); GetKPSSendItem(ref htKPSSendingItem); if (htKPSSendingItem.Count > 0) { // KPS Print htKtchDeviceStatus = new Hashtable(); KPSPrintProc(ref htKPSSendingItem, ref htKtchDeviceStatus, ref ktchErrorCode); // KPS Print Status Update KPSPrintStatusUpdate(htKPSSendingItem, htKtchDeviceStatus); } // Get KPS Order Message htKPSSendingItem = new Hashtable(); GetKPSOrderMessage(ref htKPSSendingItem); if (htKPSSendingItem.Count > 0) { // KPS Order Message Print htKtchDeviceStatus = new Hashtable(); KPSOrderMessagePrintProc(ref htKPSSendingItem, ref htKtchDeviceStatus, ref ktchErrorCode); // KPS Order Message KPSOrderMessagePrintStatusDelete(htKPSSendingItem, htKtchDeviceStatus); } //#20180515 KPS 출력시 라벨프린터 출력 start // Get item sending to Label print if (m_cDevStatus.LabelPrinter.UseYn == true) { htKPSSendingItem = new Hashtable(); GetLBLPRTSendItem(ref htKPSSendingItem); if (htKPSSendingItem.Count > 0) { // Label Print htKtchDeviceStatus = new Hashtable(); LBLPRTPrintProc(ref htKPSSendingItem); // KPS Print Status Update LBLPRTPrintStatusUpdate(htKPSSendingItem, htKtchDeviceStatus); } } //#20180515 KPS 출력시 라벨프린터 출력 end // Add, 2017.02.15, 영수증프린터로 주문서 출력을 위해 장치오류코드 설정 if (string.IsNullOrWhiteSpace(ktchErrorCode) == false) { if (string.IsNullOrWhiteSpace(m_cPosStatus.Sale.KtchPrintErrorCode) || m_cPosStatus.Sale.KtchPrintErrorCode == "XXXX") { m_cPosStatus.Sale.KtchPrintErrorCode = ktchErrorCode; } } int nNowSleepTerm = 0; while (nNowSleepTerm < WAIT_TIME) { if (m_KPSProcRunning == false) break; Thread.Sleep(100); nNowSleepTerm += 100; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } } public void StopKPS() { try { m_KPSProcRunning = false; int count = 0; while (count < 10) { if (m_tKPSProc != null && m_tKPSProc.IsAlive) m_KPSProcRunning = false; else break; count++; Thread.Sleep(100); } if (count == 10) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Force KPS Agent Stop!!!"); m_tKPSProc.Abort(); } // DB Close sqlDb.DBClose(); UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "KPS Stop"); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } private bool KPSSendItemMake() { bool bRet = false; string sQuery = string.Empty; Hashtable htKPSSendingItem = new Hashtable(); try { #region (주석) 수동출력옵션 적용 이전버전 //sQuery = "SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, B.KTCH_SYS_CD, A.SEQ "; //sQuery += " , A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM "; //sQuery += " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV "; //sQuery += " , A.RESEND_YN, C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM "; //sQuery += " , C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT, C.KTCH_PRINTER_BAK1, C.KTCH_PRINTER_BAK2, C.KTCH_PRINTER_BAK3 "; //sQuery += " , C.KTCH_PRINTER_BAK4, C.KTCH_PRINTER_BAK5, C.KTCH_PRINTER_BAK6, C.FILLER1, C.FILLER2 "; //sQuery += " , C.FILLER3, C.FILLER4, C.FILLER5 "; //sQuery += " FROM POSMST..MST_KTCH_ORD_MSG A "; //sQuery += " , POSMST..MST_KTCH_DEVICE_ITEM B "; //sQuery += " , POSMST..MST_KTCH_DEVICE C "; //sQuery += " WHERE A.SEND_YN = '0' "; //sQuery += " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') "; // '0':일반, '1':세트, '2':세트자식, '3':부가상품, '4':세트할인 //sQuery += " AND B.ITEM_CD = A.ITEM_CD "; //sQuery += " AND (B.FLOOR_CD = A.FLOOR_CD OR B.FLOOR_CD = '999') "; //sQuery += " AND B.KTCH_SYS_CD = C.KTCH_SYS_CD "; //sQuery += " AND C.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; //sQuery += " AND C.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; //sQuery += " AND C.KTCH_SYS_DIV = '1' "; // '1':KPS, '2':KVS //sQuery += " AND C.USE_YN = '1' "; #endregion #region (주석) 복합매장 적용 이전 버전 // 주방프린터 자동출력 여부 0:자동 1:수동(프린터선택, 99:전체) 2:수동(상품선택) //if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "1") //{ // 1:수동(프린터선택, 99:전체) // sQuery = "SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, C.KTCH_SYS_CD, A.SEQ \n" // + " , A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV \n" // + " , A.RESEND_YN, C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM \n" // + " , C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT, C.KTCH_PRINTER_BAK1, C.KTCH_PRINTER_BAK2, C.KTCH_PRINTER_BAK3, C.KTCH_PRINTER_BAK4, C.KTCH_PRINTER_BAK5, C.KTCH_PRINTER_BAK6 \n" // //+ " , C.FILLER1, C.FILLER2, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG \n" // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B \n" // + " , POSMST..MST_KTCH_DEVICE C \n" // + " WHERE A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // '0':일반, '1':세트, '2':세트자식, '3':부가상품, '4':세트할인 // + " AND B.ITEM_CD = A.ITEM_CD \n" // + " AND (B.FLOOR_CD = A.FLOOR_CD OR B.FLOOR_CD = '999') \n" // //+ " AND B.KTCH_SYS_CD = A.FILLER1 \n" // //+ " AND CASE WHEN A.FILLER1 = '99' THEN 1 ELSE B.KTCH_SYS_CD END \n" // //+ " = CASE WHEN A.FILLER1 = '99' THEN 1 ELSE C.KTCH_SYS_CD END \n" // + " AND B.SUB_STOR_CD + B.KTCH_SYS_CD = A.FILLER1 \n" // + " AND CASE WHEN A.FILLER1 = '99' THEN 1 ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" // + " = CASE WHEN A.FILLER1 = '99' THEN 1 ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" // + " AND C.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND C.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND C.KTCH_SYS_DIV = '1' \n" // '1':KPS, '2':KVS // + " AND C.USE_YN = '1' \n" // + " AND B.USE_YN = '1' \n" // + " AND C.KTCH_SYS_CD <> '99' \n" // ; //} //else if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "2") //{ // 2:수동(상품선택) // sQuery = "SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, B.KTCH_SYS_CD, A.SEQ \n" // + " , A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV \n" // + " , A.RESEND_YN, C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM \n" // + " , C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT, C.KTCH_PRINTER_BAK1, C.KTCH_PRINTER_BAK2, C.KTCH_PRINTER_BAK3, C.KTCH_PRINTER_BAK4, C.KTCH_PRINTER_BAK5, C.KTCH_PRINTER_BAK6 \n" // //+ " , C.FILLER1, C.FILLER2, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG \n" // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B \n" // + " , POSMST..MST_KTCH_DEVICE C \n" // + " WHERE A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // '0':일반, '1':세트, '2':세트자식, '3':부가상품, '4':세트할인 // + " AND B.ITEM_CD = A.ITEM_CD \n" // + " AND (B.FLOOR_CD = A.FLOOR_CD OR B.FLOOR_CD = '999') \n" // + " AND B.SUB_STOR_CD = C.SUB_STOR_CD \n" // + " AND B.KTCH_SYS_CD = C.KTCH_SYS_CD \n" // + " AND C.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND C.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND C.KTCH_SYS_DIV = '1' \n" // '1':KPS, '2':KVS // + " AND C.USE_YN = '1' \n" // + " AND B.USE_YN = '1' \n" // //+ " AND A.ITEM_CD = A.FILLER1 \n" // 선택한 상품만 출력 // + " AND A.SUB_STOR_CD + A.ITEM_CD = A.FILLER1 \n" // 선택한 상품만 출력 // + " AND B.KTCH_SYS_CD <> '99' \n" // 99번 장치관련 상품은 출력하지 않는다. // + " AND C.KTCH_SYS_CD <> '99' \n" // ; //} //else //{ // 0:자동 // sQuery = "SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, B.KTCH_SYS_CD, A.SEQ \n" // + " , A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV \n" // + " , A.RESEND_YN, C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM \n" // + " , C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT, C.KTCH_PRINTER_BAK1, C.KTCH_PRINTER_BAK2, C.KTCH_PRINTER_BAK3, C.KTCH_PRINTER_BAK4, C.KTCH_PRINTER_BAK5, C.KTCH_PRINTER_BAK6 \n" // //+ " , C.FILLER1, C.FILLER2, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5 \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG \n" // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B \n" // + " , POSMST..MST_KTCH_DEVICE C \n" // + " WHERE A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // '0':일반, '1':세트, '2':세트자식, '3':부가상품, '4':세트할인 // //+ " AND B.ITEM_CD = A.ITEM_CD \n" // + " AND A.SUB_STOR_CD = B.SUB_STOR_CD \n" // + " AND A.ITEM_CD = B.ITEM_CD \n" // + " AND (B.FLOOR_CD = A.FLOOR_CD OR B.FLOOR_CD = '999') \n" // + " AND B.KTCH_SYS_CD = C.KTCH_SYS_CD \n" // + " AND C.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND C.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND C.KTCH_SYS_DIV = '1' \n" // '1':KPS, '2':KVS // + " AND C.USE_YN = '1' \n" // + " AND B.USE_YN = '1' \n" // //+ " AND B.KTCH_SYS_CD <> '99' \n" // 99번 장치관련 상품은 출력하지 않는다. // + " AND C.KTCH_SYS_CD <> '99' \n" // ; //} #endregion #region (주석) 기존 POS 로직 // 주방프린터 자동출력 여부 0:자동 1:수동(프린터선택, 99:전체) 2:수동(상품선택) //if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "1") //{ // // 1:수동(프린터선택, 99:전체) // sQuery = "SELECT DISTINCT \n" // //+ " A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // Add, 2017.03.03, 연습모드 // + " A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV, A.RESEND_YN \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG, A.FILLER3 AS ADD_ORD_FLAG \n" // + " , C.POS_NO \n" // Add, 2017.06.14 POS별 주방프린터 설정 // + " , C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // + " , C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM, C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5, ISNULL(C.PRT_CNT, 1) AS PRT_CNT \n" // + " , A.KTCH_MSG \n" // Add, 2017.03.21 // + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 // + " , A.ORG_QTY \n" // Add, 2017.03.31 // + " , A.ORD_POS_NO \n" // Add, 2017.04.10 // + " , A.FILLER5 AS ORDER_SEQ \n" // Add, 2017.04.11 // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B WITH(NOLOCK) \n" // + " , POSMST..MST_KTCH_DEVICE C WITH(NOLOCK) \n" // + " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD \n" // + " AND (A.FLOOR_CD = B.FLOOR_CD OR '999' = B.FLOOR_CD) \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 start // //기존 // //+ " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD \n" // //변경 // + " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 end // + " AND CASE WHEN B.KTCH_SYS_CD = '99' OR A.FILLER1 = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" // + " = CASE WHEN B.KTCH_SYS_CD = '99' OR A.FILLER1 = '99' THEN '1' ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" // + " AND CASE WHEN A.FILLER1 = '99' THEN '1' ELSE A.FILLER1 END \n" // 선택장치조건 // + " = CASE WHEN A.FILLER1 = '99' THEN '1' ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" // + " AND A.TRAIN_MODE_YN IN ('0', '1') " // Add, 2017.03.03, 연습모드 // + " AND A.ORD_DIV = '0' \n" // + " AND A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // + " AND A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 // + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" // + " AND C.KTCH_SYS_CD <> '99' \n" // + " ORDER BY C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // ; //} //else if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "2") //{ // // 2:수동(상품선택) // sQuery = "SELECT DISTINCT \n" // //+ " A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // Add, 2017.03.03, 연습모드 // + " A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV, A.RESEND_YN \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG, A.FILLER3 AS ADD_ORD_FLAG \n" // + " , C.POS_NO \n" // Add, 2017.06.14 POS별 주방프린터 설정 // + " , C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // + " , C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM, C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5, ISNULL(C.PRT_CNT, 1) AS PRT_CNT \n" // + " , A.KTCH_MSG \n" // Add, 2017.03.21 // + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 // + " , A.ORG_QTY \n" // Add, 2017.03.31 // + " , A.ORD_POS_NO \n" // Add, 2017.04.10 // + " , A.FILLER5 AS ORDER_SEQ \n" // Add, 2017.04.11 // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B WITH(NOLOCK) \n" // + " , POSMST..MST_KTCH_DEVICE C WITH(NOLOCK) \n" // + " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD \n" // + " AND (A.FLOOR_CD = B.FLOOR_CD OR '999' = B.FLOOR_CD) \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 start // //기존 // //+ " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD \n" // //변경 // + " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 end // + " AND CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" // + " = CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" // + " AND A.FILLER1 = 'PRINT' \n" // 선택한 상품만 출력 // + " AND A.TRAIN_MODE_YN IN ('0', '1') " // Add, 2017.03.03, 연습모드 // + " AND A.ORD_DIV = '0' \n" // + " AND A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // + " AND A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 // + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" // + " AND C.KTCH_SYS_CD <> '99' \n" // + " ORDER BY C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // ; //} //else //{ // // 0:자동 // sQuery = "SELECT DISTINCT \n" // //+ " A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // Add, 2017.03.03, 연습모드 // + " A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" // + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV, A.RESEND_YN \n" // + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG, A.FILLER3 AS ADD_ORD_FLAG \n" // + " , C.POS_NO \n" // Add, 2017.06.12, POS별 주방프린터 설정 // + " , C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // + " , C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM, C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT \n" // + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5, ISNULL(C.PRT_CNT, 1) AS PRT_CNT \n" // + " , A.KTCH_MSG \n" // Add, 2017.03.21 // + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 // + " , A.ORG_QTY \n" // Add, 2017.03.31 // + " , A.ORD_POS_NO \n" // Add, 2017.04.10 // + " , A.FILLER5 AS ORDER_SEQ \n" // Add, 2017.04.11 // + " FROM POSMST..MST_KTCH_ORD_MSG A \n" // + " , POSMST..MST_KTCH_DEVICE_ITEM B WITH(NOLOCK) \n" // + " , POSMST..MST_KTCH_DEVICE C WITH(NOLOCK) \n" // + " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD \n" // + " AND (A.FLOOR_CD = B.FLOOR_CD OR '999' = B.FLOOR_CD) \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 start // //기존 // //+ " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD \n" // //변경 // + " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD \n" // //#20180221 복합매장인 경우 주방출력상품을 장치코드 99에 등록하면 여러장 출력되는 증상 수정 end // + " AND CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" // + " = CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" // + " AND A.TRAIN_MODE_YN IN ('0', '1') " // Add, 2017.03.03, 연습모드 // + " AND A.ORD_DIV = '0' \n" // + " AND A.SEND_YN = '0' \n" // + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" // + " AND A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 // + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // + " AND C.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" // + " AND C.KTCH_SYS_CD <> '99' \n" // + " ORDER BY C.SUB_STOR_CD, C.KTCH_SYS_CD \n" // ; //} #endregion #region 해피스테이션 로직 sQuery = "SELECT DISTINCT \n" + " A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.TRADE_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV, A.SUB_MEMO_DIV, A.RESEND_YN \n" + " , A.MSG1, A.MSG2, A.MSG3, A.FILLER2 AS ETC_ORD_FLAG, A.FILLER3 AS ADD_ORD_FLAG \n" + " , C.POS_NO \n" // Add, 2017.06.12, POS별 주방프린터 설정 + " , C.SUB_STOR_CD, C.KTCH_SYS_CD \n" + " , C.KTCH_SYS_USE_DIV, C.KTCH_PRINTER_COMM_PORT, C.KTCH_PRINTER_COMM_SPEED, C.KTCH_PRINTER_OPOS_NM, C.KTCH_PRINTER_IP, C.KTCH_PRINTER_PORT \n" + " , C.FILLER1, C.FILLER3, C.FILLER4, C.FILLER5, ISNULL(C.PRT_CNT, 1) AS PRT_CNT \n" + " , A.KTCH_MSG \n" // Add, 2017.03.21 + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 + " , A.ORG_QTY \n" // Add, 2017.03.31 + " , A.ORD_POS_NO \n" // Add, 2017.04.10 + " , A.FILLER5 AS ORDER_SEQ \n" // Add, 2017.04.11 + " FROM POSMST..MST_KTCH_ORD_MSG A \n" + " , POSMST..MST_KTCH_DEVICE_ITEM B WITH(NOLOCK) \n" + " , POSMST..MST_KTCH_DEVICE C WITH(NOLOCK) \n" + " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD \n" + " AND (A.FLOOR_CD = B.FLOOR_CD OR '999' = B.FLOOR_CD) \n" + " AND B.CMP_CD = C.CMP_CD AND B.STOR_CD = C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD \n" + " AND CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" + " = CASE WHEN B.KTCH_SYS_CD = '99' THEN '1' ELSE C.SUB_STOR_CD + C.KTCH_SYS_CD END \n" + " AND A.TRAIN_MODE_YN IN ('0', '1') " // Add, 2017.03.03, 연습모드 + " AND A.ORD_DIV = '0' \n" + " AND A.SEND_YN = '0' \n" + " AND A.ITEM_DIV IN ('0', '1', '2', '3', '4') \n" + " AND A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" + " AND C.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" + " AND C.KTCH_SYS_CD <> '99' \n" + " ORDER BY C.SUB_STOR_CD, C.KTCH_SYS_CD \n" ; #endregion // 조회 DataTable dtData = null; if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) != UserCom.OK) { return false; } if(dtData == null || dtData.Rows.Count == 0) { return false; } DataRow[] arRows = null; arRows = dtData.Select("POS_NO = '" + m_cPosStatus.Base.PosNo + "'"); if (arRows.Length == 0) arRows = dtData.Select("POS_NO = '00'"); //foreach (DataRow dr in dtData.Rows) foreach (DataRow dr in arRows) { KPSItem cKPSItem = new KPSItem(); cKPSItem.sTrainMode = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN"); // Add, 2017.03.03, 연습모드 cKPSItem.sOrderType = CmUtil.GetDataRowStr(dr, "ORD_DIV"); cKPSItem.sFloorCd = CmUtil.GetDataRowStr(dr, "FLOOR_CD"); cKPSItem.sTableNo = CmUtil.GetDataRowStr(dr, "TBL_NO"); cKPSItem.sSubShopCd = CmUtil.GetDataRowStr(dr, "SUB_STOR_CD"); cKPSItem.sKtchSysCd = CmUtil.GetDataRowStr(dr, "KTCH_SYS_CD"); cKPSItem.nSeq = CmUtil.GetDataRowInt(dr, "SEQ"); cKPSItem.sOrderNo = CmUtil.GetDataRowStr(dr, "TRADE_NO"); if (string.IsNullOrWhiteSpace(CmUtil.GetDataRowStr(dr, "ORDER_SEQ")) == false) // Add, 2017.04.11, 후불테이블 일때 주문번호-주문차수 처리 { cKPSItem.sOrderNo = CmUtil.GetDataRowStr(dr, "TRADE_NO") + "-" + CmUtil.GetDataRowStr(dr, "ORDER_SEQ"); } cKPSItem.sPosType = CmUtil.GetDataRowStr(dr, "POS_TYPE"); cKPSItem.sItemCd = CmUtil.GetDataRowStr(dr, "ITEM_CD"); cKPSItem.sItemDiv = CmUtil.GetDataRowStr(dr, "ITEM_DIV"); cKPSItem.sItemNm = CmUtil.GetDataRowStr(dr, "SHTCUT_ITEMNM"); // Mod, 2017.03.31 //cKPSItem.nQty = CmUtil.GetDataRowInt(dr, "SALE_QTY"); cKPSItem.nQty = CmUtil.GetDataRowInt(dr, "SALE_QTY") - CmUtil.GetDataRowInt(dr, "ORG_QTY"); cKPSItem.sPackDiv = CmUtil.GetDataRowStr(dr, "PACK_DIV"); cKPSItem.sSetMenuCd = CmUtil.GetDataRowStr(dr, "SET_MENU_CD"); cKPSItem.sOrdTime = CmUtil.GetDataRowStr(dr, "ORD_TIME"); cKPSItem.sCancelDiv = CmUtil.GetDataRowStr(dr, "CANCEL_DIV"); cKPSItem.sResendYn = CmUtil.GetDataRowStr(dr, "RESEND_YN"); cKPSItem.sKtchSysUseDiv = CmUtil.GetDataRowStr(dr, "KTCH_SYS_USE_DIV"); cKPSItem.nKpsComPort = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_PORT"); cKPSItem.nKpsComBaudrate = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_SPEED"); cKPSItem.sKpsOposName = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_OPOS_NM"); cKPSItem.sKpsIp = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_IP"); cKPSItem.sKpsPort = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_PORT"); cKPSItem.sFiller1 = CmUtil.GetDataRowStr(dr, "PRT_CNT"); // Add, 2017.01.10, 출력횟수 cKPSItem.sFiller2 = CmUtil.GetDataRowStr(dr, "ETC_ORD_FLAG"); // Add, 2017.01.26, 기타주문구분 1:후불일반판매, 2:해피오더 cKPSItem.sFiller3 = CmUtil.GetDataRowStr(dr, "ADD_ORD_FLAG"); // Add, 2017.02.09, 추가주문구분 (NEW,ADD,DEL) cKPSItem.sFiller4 = CmUtil.GetDataRowStr(dr, "FILLER4"); cKPSItem.sFiller5 = CmUtil.GetDataRowStr(dr, "FILLER5"); // 부가메뉴구분이 속성이면, 수량=0으로변경, 주문서에 수량을 출력 하지 않는다. // Add, 2017.02.09 // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) //if (CmUtil.GetDataRowStr(dr, "SUB_MEMO_DIV") == "1") cKPSItem.nQty = 0; // Mod, 2017.04.13, 속성도 수량출력 :: 커피웍스 #region Mod, 2017.04.25, 주방메모 출력 // Add, 2017.01.23 // 주방프린터 수동출력(상품선택) 옵션처리 //cKPSItem.sKtchMemo = string.Empty; //if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "2") //{ // cKPSItem.sKtchMemo = CmUtil.GetDataRowStr(dr, "KTCH_MSG"); // Mod, 2017.03.21 //} #endregion cKPSItem.sKtchMemo = CmUtil.GetDataRowStr(dr, "KTCH_MSG").Trim(); cKPSItem.sItemMemo = (CmUtil.GetDataRowStr(dr, "MSG1") + " " + CmUtil.GetDataRowStr(dr, "MSG2") + " " + CmUtil.GetDataRowStr(dr, "MSG3")).Trim(); // Add, 2017.03.21 cKPSItem.sOrdPicNm = CmUtil.GetDataRowStr(dr, "ORD_PIC_NM").Trim(); // Add, 2017.03.28, 주문담당자 cKPSItem.sOrdPosNo = CmUtil.GetDataRowStr(dr, "ORD_POS_NO").Trim(); // Add, 2017.04.10 cKPSItem.sSendYn = "0"; cKPSItem.sErrorCd = "0000"; //#20180515 KPS 출력시 라벨프린터 출력 start cKPSItem.sLblSendYn = "0"; //#20180515 KPS 출력시 라벨프린터 출력 end htKPSSendingItem.Add(htKPSSendingItem.Count, cKPSItem); } // 주방인쇄상품 존재시 if (htKPSSendingItem.Count > 0) { sqlDb.DBBeginTransaction(); for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItem[nLoop]; #region (주석) 기존코드 //sQuery = " INSERT INTO POSMST..MST_KPS_ORD_MSG "; //sQuery += " ( ORD_DIV, FLOOR_CD, TBL_NO, KTCH_SYS_CD, SEQ "; //sQuery += " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM "; //sQuery += " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV "; //sQuery += " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED "; //sQuery += " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD, KTCH_PRINTER_BAK1 "; //sQuery += " , KTCH_PRINTER_BAK2, KTCH_PRINTER_BAK3, KTCH_PRINTER_BAK4, KTCH_PRINTER_BAK5, KTCH_PRINTER_BAK6 "; //sQuery += " , FILLER1, FILLER2, FILLER3, FILLER4, FILLER5 "; //sQuery += " , UPD_DT, REG_DT ) "; //sQuery += " VALUES "; //sQuery += " ( '" + cKPSItem.sOrderType +"' "; //sQuery += " , '" + cKPSItem.sFloorCd + "' "; //sQuery += " , '" + cKPSItem.sTableNo + "' "; //sQuery += " , '" + cKPSItem.sKtchSysCd + "' "; //sQuery += " , " + cKPSItem.nSeq + " "; //sQuery += " , '" + cKPSItem.sOrderNo + "' "; //sQuery += " , '" + cKPSItem.sPosType + "' "; //sQuery += " , '" + cKPSItem.sItemCd + "' "; //sQuery += " , '" + cKPSItem.sItemDiv + "' "; //sQuery += " , N'" + cKPSItem.sItemNm + "' "; //sQuery += " , " + cKPSItem.nQty + " "; //sQuery += " , '" + cKPSItem.sPackDiv + "' "; //sQuery += " , '" + cKPSItem.sSetMenuCd + "' "; //sQuery += " , '" + cKPSItem.sOrdTime + "' "; //sQuery += " , '" + cKPSItem.sCancelDiv + "' "; //sQuery += " , '0' "; //sQuery += " , '" + cKPSItem.sResendYn + "' "; //sQuery += " , '" + cKPSItem.sKtchSysUseDiv + "' "; //sQuery += " , " + cKPSItem.nKpsComPort + " "; //sQuery += " , " + cKPSItem.nKpsComBaudrate + " "; //sQuery += " , '" + cKPSItem.sKpsOposName + "' "; //sQuery += " , '" + cKPSItem.sKpsIp + "' "; //sQuery += " , '" + cKPSItem.sKpsPort + "' "; //sQuery += " , '" + cKPSItem.sErrorCd + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup1 + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup2 + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup3 + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup4 + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup5 + "' "; //sQuery += " , '" + cKPSItem.sKpsCdBackup6 + "' "; //sQuery += " , '" + cKPSItem.sFiller1 + "' "; //sQuery += " , '" + cKPSItem.sFiller2 + "' "; //sQuery += " , '" + cKPSItem.sFiller3 + "' "; //sQuery += " , '" + cKPSItem.sFiller4 + "' "; //sQuery += " , '" + cKPSItem.sFiller5 + "' "; //sQuery += " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' "; //sQuery += " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ) "; //if(sqlDb.DBExecuteNonQuery(new string[] {sQuery}, CommandType.Text, (SqlParameter[])null) != UserCom.OK) //{ // sQuery = " UPDATE POSMST..MST_KPS_ORD_MSG "; // sQuery += " SET SEND_YN = '0' "; // sQuery += " , RESEND_YN = '1' "; // sQuery += " , PACK_DIV = '" + cKPSItem.sPackDiv + "' "; // sQuery += " , CANCEL_DIV = '" + cKPSItem.sCancelDiv + "' "; // sQuery += " , KTCH_PRINTER_BAK1 = '" + cKPSItem.sKpsCdBackup1 + "' "; // sQuery += " , KTCH_PRINTER_BAK2 = '" + cKPSItem.sKpsCdBackup2 + "' "; // sQuery += " , KTCH_PRINTER_BAK3 = '" + cKPSItem.sKpsCdBackup3 + "' "; // sQuery += " , KTCH_PRINTER_BAK4 = '" + cKPSItem.sKpsCdBackup4 + "' "; // sQuery += " , KTCH_PRINTER_BAK5 = '" + cKPSItem.sKpsCdBackup5 + "' "; // sQuery += " , KTCH_PRINTER_BAK6 = '" + cKPSItem.sKpsCdBackup6 + "' "; // sQuery += " , FILLER1 = '" + cKPSItem.sFiller1 + "' "; // sQuery += " , FILLER2 = '" + cKPSItem.sFiller2 + "' "; // sQuery += " , FILLER3 = '" + cKPSItem.sFiller3 + "' "; // sQuery += " , FILLER4 = '" + cKPSItem.sFiller4 + "' "; // sQuery += " , FILLER5 = '" + cKPSItem.sFiller5 + "' "; // sQuery += " , UPD_DT = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' "; // sQuery += " WHERE ORD_DIV = '" + cKPSItem.sOrderType + "' "; // sQuery += " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' "; // sQuery += " AND TBL_NO = '" + cKPSItem.sTableNo + "' "; // sQuery += " AND KTCH_SYS_CD = '" + cKPSItem.sKtchSysCd + "' "; // sQuery += " AND SEQ = " + cKPSItem.nSeq + " "; // if(sqlDb.DBExecuteNonQuery(new string[] {sQuery}, CommandType.Text, (SqlParameter[])null) != UserCom.OK) // { // // Rollback // sqlDb.DBTransactionRollback(); // return; // } //} //sQuery = " UPDATE POSMST..MST_KTCH_ORD_MSG "; //sQuery += " SET SEND_YN = '1' "; //sQuery += " WHERE ORD_DIV = '" + cKPSItem.sOrderType + "' "; //sQuery += " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' "; //sQuery += " AND TBL_NO = '" + cKPSItem.sTableNo + "' "; //sQuery += " AND SEQ = " + cKPSItem.nSeq + " "; //if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null) != UserCom.OK) //{ // // Rollback // sqlDb.DBTransactionRollback(); // return; //} #endregion string[] sql = new string[2]; #region (삭제) //sql[0] = "UPDATE POSMST..MST_KPS_ORD_MSG \n" // + " SET SEND_YN = '0' \n" // + " , RESEND_YN = '0' \n" // + " , PACK_DIV = '" + cKPSItem.sPackDiv + "' \n" // + " , CANCEL_DIV = '" + cKPSItem.sCancelDiv + "' \n" // + " , SALE_QTY = " + cKPSItem.nQty + "\n" // Add, 2017.03.29, 이런 !!! // //+ " , KTCH_PRINTER_BAK1 = '" + cKPSItem.sKpsCdBackup1 + "' \n" // Del, 2017.02.09 // //+ " , KTCH_PRINTER_BAK2 = '" + cKPSItem.sKpsCdBackup2 + "' \n" // //+ " , KTCH_PRINTER_BAK3 = '" + cKPSItem.sKpsCdBackup3 + "' \n" // //+ " , KTCH_PRINTER_BAK4 = '" + cKPSItem.sKpsCdBackup4 + "' \n" // //+ " , KTCH_PRINTER_BAK5 = '" + cKPSItem.sKpsCdBackup5 + "' \n" // //+ " , KTCH_PRINTER_BAK6 = '" + cKPSItem.sKpsCdBackup6 + "' \n" // + " , FILLER1 = '" + cKPSItem.sFiller1 + "' \n" // + " , FILLER2 = '" + cKPSItem.sFiller2 + "' \n" // + " , FILLER3 = '" + cKPSItem.sFiller3 + "' \n" // + " , FILLER4 = '" + cKPSItem.sFiller4 + "' \n" // + " , FILLER5 = '" + cKPSItem.sFiller5 + "' \n" // //+ " , MSG = N'" + cKPSItem.sKtchMemo + "' \n" // + " , MSG = N'" + ConvertDBStr(cKPSItem.sItemMemo) + "' \n" // Mod, 2017.03.21 // + " , KTCH_MSG = N'" + ConvertDBStr(cKPSItem.sKtchMemo) + "' \n" // Add, 2017.03.21 // + " , ORD_PIC_NM = N'" + ConvertDBStr(cKPSItem.sOrdPicNm) + "' \n" // Add, 2017.03.27, 주문담당자 // + " , UPD_DT = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' \n" // + " WHERE TRAIN_MODE_YN = '" + cKPSItem.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 // + " AND ORD_DIV = '" + cKPSItem.sOrderType + "' \n" // + " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' \n" // + " AND TBL_NO = '" + cKPSItem.sTableNo + "' \n" // + " AND SUB_STOR_CD = '" + cKPSItem.sSubShopCd + "' \n" // Add, 2017.02.07 // + " AND KTCH_SYS_CD = '" + cKPSItem.sKtchSysCd + "' \n" // + " AND SEQ = " + cKPSItem.nSeq + " \n" // + "IF @@ROWCOUNT = 0 \n" // + " INSERT INTO POSMST..MST_KPS_ORD_MSG ( \n" // //+ " ORD_DIV, FLOOR_CD, TBL_NO, KTCH_SYS_CD, SEQ \n" // //+ " ORD_DIV, FLOOR_CD, TBL_NO, SUB_STOR_CD, KTCH_SYS_CD, SEQ \n" // Add, 2017.02.07 // + " TRAIN_MODE_YN, ORD_DIV, FLOOR_CD, TBL_NO, SUB_STOR_CD, KTCH_SYS_CD, SEQ \n" // Add, 2017.03.03, 연습모드 // + " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM \n" // + " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV \n" // + " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED \n" // //+ " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD, KTCH_PRINTER_BAK1 \n" // //+ " , KTCH_PRINTER_BAK2, KTCH_PRINTER_BAK3, KTCH_PRINTER_BAK4, KTCH_PRINTER_BAK5, KTCH_PRINTER_BAK6 \n" // + " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD \n" // + " , FILLER1, FILLER2, FILLER3, FILLER4, FILLER5 \n" // + " , MSG \n" // + " , KTCH_MSG \n" // Add, 2017.03.21 // + " , ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 // + " , UPD_DT, REG_DT \n" // + " ) VALUES ( \n" // + " '" + cKPSItem.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 // + " , '" + cKPSItem.sOrderType + "' \n" // + " , '" + cKPSItem.sFloorCd + "' \n" // + " , '" + cKPSItem.sTableNo + "' \n" // + " , '" + cKPSItem.sSubShopCd + "' \n" // Add, 2017.02.07 // + " , '" + cKPSItem.sKtchSysCd + "' \n" // + " , " + cKPSItem.nSeq + " \n" // + " , '" + cKPSItem.sOrderNo + "' \n" // + " , '" + cKPSItem.sPosType + "' \n" // + " , '" + cKPSItem.sItemCd + "' \n" // + " , '" + cKPSItem.sItemDiv + "' \n" // + " , N'" + cKPSItem.sItemNm + "' \n" // + " , " + cKPSItem.nQty + " \n" // + " , '" + cKPSItem.sPackDiv + "' \n" // + " , '" + cKPSItem.sSetMenuCd + "' \n" // + " , '" + cKPSItem.sOrdTime + "' \n" // + " , '" + cKPSItem.sCancelDiv + "' \n" // + " , '" + cKPSItem.sSendYn + "' \n" // + " , '" + cKPSItem.sResendYn + "' \n" // + " , '" + cKPSItem.sKtchSysUseDiv + "' \n" // + " , " + cKPSItem.nKpsComPort + " \n" // + " , " + cKPSItem.nKpsComBaudrate + " \n" // + " , '" + cKPSItem.sKpsOposName + "' \n" // + " , '" + cKPSItem.sKpsIp + "' \n" // + " , '" + cKPSItem.sKpsPort + "' \n" // + " , '" + cKPSItem.sErrorCd + "' \n" // + " , '" + cKPSItem.sFiller1 + "' \n" // + " , '" + cKPSItem.sFiller2 + "' \n" // + " , '" + cKPSItem.sFiller3 + "' \n" // + " , '" + cKPSItem.sFiller4 + "' \n" // + " , '" + cKPSItem.sFiller5 + "' \n" // + " , N'" + ConvertDBStr(cKPSItem.sItemMemo) + "' \n" // Add, 2017.03.21 // + " , N'" + ConvertDBStr(cKPSItem.sKtchMemo) + "' \n" // + " , N'" + ConvertDBStr(cKPSItem.sOrdPicNm) + "' \n" // Add, 2017.03.28, 주문담당자 // + " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' \n" // + " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ) " // ; #endregion #region ### POSMST..MST_KPS_ORD_MSG sql[0] = " INSERT INTO POSMST..MST_KPS_ORD_MSG ( \n" + " TRAIN_MODE_YN, ORD_DIV, FLOOR_CD, TBL_NO, SUB_STOR_CD, KTCH_SYS_CD, SEQ \n" // Add, 2017.03.03, 연습모드 + " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM \n" + " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV \n" + " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED \n" + " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD \n" + " , FILLER1, FILLER2, FILLER3, FILLER4, FILLER5 \n" + " , MSG \n" + " , KTCH_MSG \n" // Add, 2017.03.21 + " , ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 + " , ORD_POS_NO \n" // Add, 2017.04.10 + " , UPD_DT, REG_DT \n" //#20180515 KPS 출력시 라벨프린터 출력 start + " , LBLSEND_YN \n" //#20180515 KPS 출력시 라벨프린터 출력 end + " ) SELECT \n" + " '" + cKPSItem.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 + " , '" + cKPSItem.sOrderType + "' \n" + " , '" + cKPSItem.sFloorCd + "' \n" + " , '" + cKPSItem.sTableNo + "' \n" + " , '" + cKPSItem.sSubShopCd + "' \n" // Add, 2017.02.07 + " , '" + cKPSItem.sKtchSysCd + "' \n" //+ " , " + cKPSItem.nSeq + " \n" + " , (SELECT ISNULL(MAX(SEQ), 0) + 1 FROM POSMST..MST_KPS_ORD_MSG \n" + " WHERE TRAIN_MODE_YN = '" + cKPSItem.sTrainMode + "' \n" + " AND ORD_DIV = '" + cKPSItem.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSItem.sTableNo + "' \n" + " AND SUB_STOR_CD = '" + cKPSItem.sSubShopCd + "' \n" + " AND KTCH_SYS_CD = '" + cKPSItem.sKtchSysCd + "') \n" + " , '" + cKPSItem.sOrderNo + "' \n" + " , '" + cKPSItem.sPosType + "' \n" + " , '" + cKPSItem.sItemCd + "' \n" + " , '" + cKPSItem.sItemDiv + "' \n" + " , N'" + cKPSItem.sItemNm + "' \n" + " , " + cKPSItem.nQty + " \n" + " , '" + cKPSItem.sPackDiv + "' \n" + " , '" + cKPSItem.sSetMenuCd + "' \n" + " , '" + cKPSItem.sOrdTime + "' \n" + " , '" + cKPSItem.sCancelDiv + "' \n" + " , '" + cKPSItem.sSendYn + "' \n" + " , '" + cKPSItem.sResendYn + "' \n" + " , '" + cKPSItem.sKtchSysUseDiv + "' \n" + " , " + cKPSItem.nKpsComPort + " \n" + " , " + cKPSItem.nKpsComBaudrate + " \n" + " , '" + cKPSItem.sKpsOposName + "' \n" + " , '" + cKPSItem.sKpsIp + "' \n" + " , '" + cKPSItem.sKpsPort + "' \n" + " , '" + cKPSItem.sErrorCd + "' \n" + " , '" + cKPSItem.sFiller1 + "' \n" + " , '" + cKPSItem.sFiller2 + "' \n" + " , '" + cKPSItem.sFiller3 + "' \n" + " , '" + cKPSItem.sFiller4 + "' \n" + " , '" + cKPSItem.sFiller5 + "' \n" + " , N'" + ConvertDBStr(cKPSItem.sItemMemo) + "' \n" // Add, 2017.03.21 + " , N'" + ConvertDBStr(cKPSItem.sKtchMemo) + "' \n" + " , N'" + ConvertDBStr(cKPSItem.sOrdPicNm) + "' \n" // Add, 2017.03.28, 주문담당자 + " , '" + cKPSItem.sOrdPosNo + "' \n" // Add, 2017.04.10 + " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' \n" + " , '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' \n" //#20180515 KPS 출력시 라벨프린터 출력 start + " , '" + cKPSItem.sLblSendYn + "' \n" //#20180515 KPS 출력시 라벨프린터 출력 end ; #endregion #region ### POSMST..MST_KTCH_ORD_MSG sql[1] = "UPDATE POSMST..MST_KTCH_ORD_MSG \n" + " SET SEND_YN = '1' \n" + " WHERE TRAIN_MODE_YN = '" + cKPSItem.sTrainMode + "' \n" + " AND ORD_DIV = '" + cKPSItem.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSItem.sTableNo + "' \n" + " AND SEQ = " + cKPSItem.nSeq + " \n" ; #endregion if (sqlDb.DBExecuteNonQuery(sql, CommandType.Text, (SqlParameter[])null) != UserCom.OK) { // Rollback sqlDb.DBTransactionRollback(); return false; } } // Commit sqlDb.DBTransactionCommit(); } bRet = true; } 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); } return bRet; } private void GetKPSSendItem(ref Hashtable htKPSSendingItem) { string sQuery = string.Empty; DataTable dtData = null; try { #region (주석) 복합매장 적용 이전 //sQuery = " SELECT ORD_DIV, FLOOR_CD, TBL_NO, KTCH_SYS_CD, SEQ "; //sQuery += " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM "; //sQuery += " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV "; //sQuery += " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED "; //sQuery += " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD, KTCH_PRINTER_BAK1, KTCH_PRINTER_BAK2 "; //sQuery += " , KTCH_PRINTER_BAK3, KTCH_PRINTER_BAK4, KTCH_PRINTER_BAK5, KTCH_PRINTER_BAK6, FILLER1 "; //sQuery += " , FILLER2, FILLER3, FILLER4, FILLER5 "; //sQuery += " , MSG "; //sQuery += " FROM POSMST..MST_KPS_ORD_MSG "; //sQuery += " WHERE SEND_YN = '0' "; //sQuery += " ORDER BY KTCH_SYS_CD, ORD_DIV, FLOOR_CD, TBL_NO, CANCEL_DIV, SEQ "; #endregion #region (주석) 연습모드 적용 이전, 2017.03.03 //sQuery = "SELECT ORD_DIV, FLOOR_CD, TBL_NO, SUB_STOR_CD, KTCH_SYS_CD, SEQ \n" // + " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM \n" // + " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV \n" // + " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED \n" // + " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD \n" // + " , FILLER1, FILLER2, FILLER3, FILLER4, FILLER5, MSG \n" // + " FROM POSMST..MST_KPS_ORD_MSG \n" // + " WHERE SEND_YN = '0' \n" // + " ORDER BY SUB_STOR_CD, KTCH_SYS_CD, ORD_DIV, FLOOR_CD, TBL_NO, SEQ \n" // ; #endregion #region (주석) // Mod, 2017.03.03, 연습모드 //sQuery = "SELECT TRAIN_MODE_YN, ORD_DIV, FLOOR_CD, TBL_NO, SUB_STOR_CD, KTCH_SYS_CD, SEQ \n" // + " , ORDER_NO, POS_TYPE, ITEM_CD, ITEM_DIV, SHTCUT_ITEMNM \n" // + " , SALE_QTY, PACK_DIV, SET_MENU_CD, ORD_TIME, CANCEL_DIV \n" // + " , SEND_YN, RESEND_YN, KTCH_SYS_USE_DIV, KTCH_PRINTER_COMM_PORT, KTCH_PRINTER_COMM_SPEED \n" // + " , KTCH_PRINTER_OPOS_NM, KTCH_PRINTER_IP, KTCH_PRINTER_PORT, ERROR_CD \n" // + " , FILLER1, FILLER2, FILLER3, FILLER4, FILLER5, MSG, KTCH_MSG \n" // + " , ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 // + " FROM POSMST..MST_KPS_ORD_MSG \n" // + " WHERE SEND_YN = '0' \n" // + " ORDER BY TRAIN_MODE_YN, SUB_STOR_CD, KTCH_SYS_CD, ORD_DIV, FLOOR_CD, TBL_NO, SEQ \n" // ; #endregion #region (주석) 이전코드 2017.09.06 /* sQuery = "SELECT A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SUB_STOR_CD, A.KTCH_SYS_CD, A.SEQ \n" + " , A.ORDER_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV \n" + " , A.SEND_YN, A.RESEND_YN, A.KTCH_SYS_USE_DIV, A.KTCH_PRINTER_COMM_PORT, A.KTCH_PRINTER_COMM_SPEED \n" + " , A.KTCH_PRINTER_OPOS_NM, A.KTCH_PRINTER_IP, A.KTCH_PRINTER_PORT, A.ERROR_CD \n" + " , A.FILLER1, A.FILLER2, A.FILLER3, A.FILLER4, A.FILLER5, A.MSG \n" + " , B.POS_NO \n" // Add, 2017.06.13, POS별 주방프린터 설정 + " , A.KTCH_MSG \n" + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 + " , B.KTCH_SYS_NM \n" // Add, 2017.04.07 + " , A.ORD_POS_NO \n" // Add, 2017.04.10 + " FROM POSMST..MST_KPS_ORD_MSG A \n" + " LEFT JOIN POSMST..MST_KTCH_DEVICE B WITH(NOLOCK) \n" + " ON A.SUB_STOR_CD = B.SUB_STOR_CD \n" + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // Add, 2017.06.12 POS별 주방프린터 설정 + " WHERE A.SEND_YN = '0' \n" + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 + " ORDER BY A.TRAIN_MODE_YN, A.SUB_STOR_CD, A.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ \n" ; */ #endregion sQuery = "SELECT A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SUB_STOR_CD, A.KTCH_SYS_CD, A.SEQ \n" + " , A.ORDER_NO, A.POS_TYPE, A.ITEM_CD, A.ITEM_DIV, A.SHTCUT_ITEMNM \n" + " , A.SALE_QTY, A.PACK_DIV, A.SET_MENU_CD, A.ORD_TIME, A.CANCEL_DIV \n" + " , A.SEND_YN, A.RESEND_YN, A.KTCH_SYS_USE_DIV, A.KTCH_PRINTER_COMM_PORT, A.KTCH_PRINTER_COMM_SPEED \n" + " , A.KTCH_PRINTER_OPOS_NM, A.KTCH_PRINTER_IP, A.KTCH_PRINTER_PORT, A.ERROR_CD \n" + " , A.FILLER1, A.FILLER2, A.FILLER3, A.FILLER4, A.FILLER5, A.MSG \n" + " , B.POS_NO \n" // Add, 2017.06.13, POS별 주방프린터 설정 + " , A.KTCH_MSG \n" + " , A.ORD_PIC_NM \n" // Add, 2017.03.28, 주문담당자 + " , B.KTCH_SYS_NM \n" // Add, 2017.04.07 + " , A.ORD_POS_NO \n" // Add, 2017.04.10 + " , C.ITEM_INFO \n" // Add, 2017.09.06 레시피 추가 + " FROM POSMST..MST_KPS_ORD_MSG A \n" + " LEFT JOIN POSMST..MST_KTCH_DEVICE B WITH(NOLOCK) \n" + " ON A.SUB_STOR_CD = B.SUB_STOR_CD \n" + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // Add, 2017.06.12 POS별 주방프린터 설정 + " LEFT JOIN POSMST..MST_KTCH_ITEM_INFO C WITH(NOLOCK) \n" + " ON A.ITEM_CD = C.ITEM_CD \n" + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" + " WHERE A.SEND_YN = '0' \n" + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" // Add, 2017.04.10 //#20171102 start //#20171103 주방영수증 출력시 부가메뉴가 위로 출력되는 증상 start //기존 //+ " ORDER BY A.TRAIN_MODE_YN, A.SUB_STOR_CD, A.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ DESC \n"; //변경 + " ORDER BY A.TRAIN_MODE_YN, A.SUB_STOR_CD, A.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ \n"; //#20171103 주방영수증 출력시 부가메뉴가 위로 출력되는 증상 end if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) != UserCom.OK) { return; } string itemKey = string.Empty; Hashtable htKPSSendingItemTemp = new Hashtable(); DataRow[] arRows = null; arRows = dtData.Select("POS_NO = '" + m_cPosStatus.Base.PosNo + "'"); if (arRows.Length == 0) arRows = dtData.Select("POS_NO = '00'"); //foreach (DataRow dr in dtData.Rows) foreach (DataRow dr in arRows) { KPSItem cKPSItem = new KPSItem(); cKPSItem.sTrainMode = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN"); // Add, 2017.03.03, 연습모드 cKPSItem.sOrderType = CmUtil.GetDataRowStr(dr, "ORD_DIV"); cKPSItem.sFloorCd = CmUtil.GetDataRowStr(dr, "FLOOR_CD"); cKPSItem.sTableNo = CmUtil.GetDataRowStr(dr, "TBL_NO"); cKPSItem.sSubShopCd = CmUtil.GetDataRowStr(dr, "SUB_STOR_CD"); // Add, 2017.02.07 cKPSItem.sKtchSysCd = CmUtil.GetDataRowStr(dr, "KTCH_SYS_CD"); cKPSItem.sKtchSysNm = CmUtil.GetDataRowStr(dr, "KTCH_SYS_NM"); // Add, 2017.04.07 cKPSItem.nSeq = CmUtil.GetDataRowInt(dr, "SEQ"); cKPSItem.sOrderNo = CmUtil.GetDataRowStr(dr, "ORDER_NO"); cKPSItem.sPosType = CmUtil.GetDataRowStr(dr, "POS_TYPE"); cKPSItem.sItemCd = CmUtil.GetDataRowStr(dr, "ITEM_CD"); cKPSItem.sItemDiv = CmUtil.GetDataRowStr(dr, "ITEM_DIV"); cKPSItem.sItemNm = CmUtil.GetDataRowStr(dr, "SHTCUT_ITEMNM"); cKPSItem.nQty = CmUtil.GetDataRowInt(dr, "SALE_QTY"); cKPSItem.sPackDiv = CmUtil.GetDataRowStr(dr, "PACK_DIV"); cKPSItem.sSetMenuCd = CmUtil.GetDataRowStr(dr, "SET_MENU_CD"); cKPSItem.sOrdTime = CmUtil.GetDataRowStr(dr, "ORD_TIME"); cKPSItem.sCancelDiv = CmUtil.GetDataRowStr(dr, "CANCEL_DIV"); cKPSItem.sResendYn = CmUtil.GetDataRowStr(dr, "RESEND_YN"); cKPSItem.sKtchSysUseDiv = CmUtil.GetDataRowStr(dr, "KTCH_SYS_USE_DIV"); cKPSItem.nKpsComPort = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_PORT"); cKPSItem.nKpsComBaudrate = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_SPEED"); cKPSItem.sKpsOposName = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_OPOS_NM"); cKPSItem.sKpsIp = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_IP"); cKPSItem.sKpsPort = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_PORT"); cKPSItem.sErrorCd = CmUtil.GetDataRowStr(dr, "ERROR_CD"); cKPSItem.sFiller1 = CmUtil.GetDataRowStr(dr, "FILLER1"); cKPSItem.sFiller2 = CmUtil.GetDataRowStr(dr, "FILLER2"); cKPSItem.sFiller3 = CmUtil.GetDataRowStr(dr, "FILLER3"); cKPSItem.sFiller4 = CmUtil.GetDataRowStr(dr, "FILLER4"); cKPSItem.sFiller5 = CmUtil.GetDataRowStr(dr, "FILLER5"); //cKPSItem.sKtchMemo = CmUtil.GetDataRowStr(dr, "MSG"); cKPSItem.sItemMemo = CmUtil.GetDataRowStr(dr, "MSG"); // Mod, 2017.03.21 cKPSItem.sKtchMemo = CmUtil.GetDataRowStr(dr, "KTCH_MSG"); // Add, 2017.03.21 cKPSItem.sOrdPicNm = CmUtil.GetDataRowStr(dr, "ORD_PIC_NM"); // Add, 2017.03.27, 주문담당자 cKPSItem.sOrdPosNo = CmUtil.GetDataRowStr(dr, "ORD_POS_NO"); // Add, 2017.04.10 //2017.09.06 레시피 추가. cKPSItem.sRecipe = CmUtil.GetDataRowStr(dr, "ITEM_INFO"); // Add, 2017.09.06 cKPSItem.sSendYn = "0"; // Mod, 2017.03.03, 연습모드 //string checkKey = cKPSItem.sSubShopCd + cKPSItem.sKtchSysCd + cKPSItem.sFloorCd + cKPSItem.sTableNo; string checkKey = cKPSItem.sTrainMode + cKPSItem.sSubShopCd + cKPSItem.sKtchSysCd + cKPSItem.sFloorCd + cKPSItem.sTableNo; if (itemKey != checkKey) { if (htKPSSendingItemTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htKPSSendingItemTemp); } itemKey = checkKey; htKPSSendingItemTemp = new Hashtable(); } htKPSSendingItemTemp.Add(htKPSSendingItemTemp.Count, cKPSItem); } if (htKPSSendingItemTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htKPSSendingItemTemp); } } 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); } } /// /// 주방 주문서 출력 /// /// /// /// private void KPSPrintProc(ref Hashtable htKPSSendingItem, ref Hashtable htKtchDeviceStatus ,ref string ktchErrorCode) { try { var nReturn = 0; var nPrintOkIndex = 0; var bKtchDeviceStatusSerchFlag = false; //string sCancelFlag = string.Empty; //string sResendFlag = string.Empty; for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { Hashtable htKPSSendingItemTemp = (Hashtable)htKPSSendingItem[nLoop]; if (htKPSSendingItemTemp.Count == 0) { continue; } KPSItem cKPSItem = (KPSItem)htKPSSendingItemTemp[0]; var sTrainMode = cKPSItem.sTrainMode; // Add, 2017.03.03, 연습모드 var sSubShopCd = cKPSItem.sSubShopCd; var sKtchSysCd = cKPSItem.sKtchSysCd; var sKtchUseDiv = cKPSItem.sKtchSysUseDiv; var nKpsComPort = cKPSItem.nKpsComPort; var nKpsComBaudrate = cKPSItem.nKpsComBaudrate; var sKpsIp = cKPSItem.sKpsIp; var sKpsPort = cKPSItem.sKpsPort; var sResendFlag = "0"; // Add, 2017.02.14, 주방프린트와 영수증프린트(시리얼)가 동일장비 인경우 if (m_cDevStatus.Printer.UseYn == true) { bool isEquals = true; if (m_cPosStatus.Base.OlePosPrinterController != PosConst.POS_DEVICE_CONTROLLER.RS232) isEquals = false; if (cKPSItem.sKtchSysUseDiv != PosConst.KTCH_SYS_USE_DIV.RS232) isEquals = false; if (m_cPosStatus.Base.OlePosPrinterSerialPortNumber.ToUpper().Trim() != "COM" + cKPSItem.nKpsComPort.ToString()) isEquals = false; if (isEquals) { for (var i = 0; i < htKPSSendingItemTemp.Count; i ++) { ((KPSItem)htKPSSendingItemTemp[i]).sSendYn = "7"; } if (string.IsNullOrWhiteSpace(ktchErrorCode)) ktchErrorCode = "XXXX"; continue; } } // 지정취소 var sCancelFlag = cKPSItem.sCancelDiv; // Add, 2017.02.10, 반복출력횟수 var prtCnt = CmUtil.IntParse(cKPSItem.sFiller1); if (prtCnt == 0) prtCnt = 1; nPrintOkIndex = -1; if (sKtchUseDiv == PosConst.KTCH_SYS_USE_DIV.RS232) // Serial { nReturn = KPSSerialPrintProc(sCancelFlag, sResendFlag, nKpsComPort, nKpsComBaudrate, prtCnt, ref nPrintOkIndex, ref htKPSSendingItemTemp); } else if (sKtchUseDiv == PosConst.KTCH_SYS_USE_DIV.SOCK) // LAN { nReturn = KPSLanPrintProc(sCancelFlag, sResendFlag, sKpsIp, sKpsPort, prtCnt, ref nPrintOkIndex, ref htKPSSendingItemTemp); } bKtchDeviceStatusSerchFlag = false; for (int i = 0; i < htKtchDeviceStatus.Count; i++) { KTCH_SYS_STATUS cKtchSysStatus = (KTCH_SYS_STATUS)htKtchDeviceStatus[i]; //if(cKtchSysStatus.sKtchSysCd == sKtchSysCd) if (cKtchSysStatus.sSubShopCd == sSubShopCd || cKtchSysStatus.sKtchSysCd == sKtchSysCd) { cKtchSysStatus.nErrorCd = nReturn; htKtchDeviceStatus[i] = cKtchSysStatus; bKtchDeviceStatusSerchFlag = true; break; } } if (bKtchDeviceStatusSerchFlag == false) { KTCH_SYS_STATUS cKtchSysStatus = new KTCH_SYS_STATUS(); cKtchSysStatus.sSubShopCd = sSubShopCd; cKtchSysStatus.sKtchSysCd = sKtchSysCd; cKtchSysStatus.nErrorCd = nReturn; htKtchDeviceStatus.Add(htKtchDeviceStatus.Count, cKtchSysStatus); } if (nReturn != 0 && nPrintOkIndex >= 0) { for (int i = 0; i <= nPrintOkIndex; i++) { if (htKPSSendingItemTemp.Contains(i) == true) { KPSItem cKPSTemp = (KPSItem)htKPSSendingItemTemp[i]; cKPSTemp.sSendYn = "1"; cKPSTemp.sErrorCd = "0000"; htKPSSendingItemTemp[i] = cKPSTemp; } } } if (nReturn == 0) // 정상 { for (int i = 0; i < htKPSSendingItemTemp.Count; i++) { if (htKPSSendingItemTemp.Contains(i) == true) { KPSItem cKPSTemp = (KPSItem)htKPSSendingItemTemp[i]; cKPSTemp.sSendYn = "1"; cKPSTemp.sErrorCd = "0000"; htKPSSendingItemTemp[i] = cKPSTemp; } } } else // 에러 { for (int i = nPrintOkIndex + 1; i < htKPSSendingItemTemp.Count; i++) { KPSItem cKPSTemp = (KPSItem)htKPSSendingItemTemp[i]; // Mod, 2017.02.14 //cKPSTemp.sSendYn = "0"; cKPSTemp.sSendYn = (cKPSTemp.sSendYn == "0") ? "8" : cKPSTemp.sSendYn; if (string.IsNullOrWhiteSpace(cKPSTemp.sErrorCd) || cKPSTemp.sErrorCd == "0000") { switch (nReturn) { case -1: cKPSTemp.sErrorCd = "0001"; break; // Print Open Error case -2: cKPSTemp.sErrorCd = "0002"; break; // Print Claim Error case -3: cKPSTemp.sErrorCd = "0003"; break; // Print Power Off Error case -4: cKPSTemp.sErrorCd = "0004"; break; // Cover Open Error case -5: cKPSTemp.sErrorCd = "0005"; break; // No Paper Error default: cKPSTemp.sErrorCd = "9999"; break; // Etc Error } } // Add, 2017.02.15 //ktchErrorCode = cKPSTemp.sErrorCd; ktchErrorCode = string.Format("{0}|{1}|{2}", cKPSTemp.sErrorCd, cKPSTemp.sKtchSysCd, cKPSTemp.sKtchSysNm); htKPSSendingItemTemp[i] = cKPSTemp; } } htKPSSendingItem[nLoop] = htKPSSendingItemTemp; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 주방 메시지 출력 /// /// /// /// private void KPSOrderMessagePrintProc(ref Hashtable htKPSSendingItem, ref Hashtable htKtchDeviceStatus, ref string ktchErrorCode) { try { var nPrintOkIndex = 0; var nReturn = 0; var bKtchDeviceStatusSearchFlag = false; htKtchDeviceStatus = new Hashtable(); for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { Hashtable htKPSSendingITemp = (Hashtable)htKPSSendingItem[nLoop]; if (htKPSSendingITemp.Count == 0) continue; KPSOrderMessage cKPSOrderMessage = (KPSOrderMessage)htKPSSendingITemp[0]; var sSubShopCd = cKPSOrderMessage.sSubShopCd; // Add, 2017.02.07 var sKtchSysCd = cKPSOrderMessage.sKtchSysCd; var sKtchSysUseDiv = cKPSOrderMessage.sKtchSysUseDiv; var sKpsIp = cKPSOrderMessage.sKpsIp; var sKpsPort = cKPSOrderMessage.sKpsPort; var nKpsComPort = cKPSOrderMessage.nKpsComPort; var nKpsComBaudrate = cKPSOrderMessage.nKpsComBaudrate; var sResendFlag = "0"; // Add, 2017.02.14, 주방프린트와 영수증프린트(시리얼)가 동일장비 인경우 if (m_cDevStatus.Printer.UseYn == true) { bool isEquals = true; if (m_cPosStatus.Base.OlePosPrinterController != PosConst.POS_DEVICE_CONTROLLER.RS232) isEquals = false; if (cKPSOrderMessage.sKtchSysUseDiv != PosConst.KTCH_SYS_USE_DIV.RS232) isEquals = false; if (m_cPosStatus.Base.OlePosPrinterSerialPortNumber.ToUpper().Trim() != "COM" + cKPSOrderMessage.nKpsComPort.ToString()) isEquals = false; if (isEquals) { for (var i = 0; i < htKPSSendingITemp.Count; i++) { ((KPSOrderMessage)htKPSSendingITemp[i]).sSendYn = "7"; } if (string.IsNullOrWhiteSpace(ktchErrorCode)) ktchErrorCode = "XXXX"; continue; } } nPrintOkIndex = -1; if (sKtchSysUseDiv == PosConst.KTCH_SYS_USE_DIV.RS232) // Serial { nReturn = KPSOrderMessageSerialPrintProc(sResendFlag, nKpsComPort, nKpsComBaudrate, cKPSOrderMessage.printCount, ref nPrintOkIndex, ref htKPSSendingITemp); } else if (sKtchSysUseDiv == PosConst.KTCH_SYS_USE_DIV.SOCK) // LAN { nReturn = KPSOrderMessageLanPrintProc(sResendFlag, sKpsIp, sKpsPort, cKPSOrderMessage.printCount, ref nPrintOkIndex, ref htKPSSendingITemp); } bKtchDeviceStatusSearchFlag = false; for (int i = 0; i < htKtchDeviceStatus.Count; i++) { KTCH_SYS_STATUS cKtchSysStatus = (KTCH_SYS_STATUS)htKtchDeviceStatus[i]; //if (cKtchSysStatus.sKtchSysCd == sKtchSysCd) if (cKtchSysStatus.sSubShopCd != sSubShopCd || cKtchSysStatus.sKtchSysCd != sKtchSysCd) // Add, 2017.02.07 { cKtchSysStatus.nErrorCd = nReturn; htKtchDeviceStatus[i] = cKtchSysStatus; bKtchDeviceStatusSearchFlag = true; break; } } if (bKtchDeviceStatusSearchFlag == false) { KTCH_SYS_STATUS cKtchSysStatus = new KTCH_SYS_STATUS(); cKtchSysStatus.sSubShopCd = sSubShopCd; cKtchSysStatus.sKtchSysCd = sKtchSysCd; cKtchSysStatus.nErrorCd = nReturn; htKtchDeviceStatus.Add(htKtchDeviceStatus.Count, cKtchSysStatus); } if (nReturn != 0 && nPrintOkIndex >= 0) { for (var i = 0; i <= nPrintOkIndex; i++) { if (htKPSSendingITemp.Contains(i)) { KPSOrderMessage cTemp = (KPSOrderMessage)htKPSSendingITemp[i]; cTemp.sSendYn = "1"; cTemp.sErrorCd = "0000"; htKPSSendingITemp[i] = cTemp; } } } if (nReturn == 0) // 정상 { for (var i = 0; i < htKPSSendingITemp.Count; i++) { if (htKPSSendingITemp.Contains(i)) { KPSOrderMessage cTemp = (KPSOrderMessage)htKPSSendingITemp[i]; cTemp.sSendYn = "1"; cTemp.sErrorCd = "0000"; htKPSSendingITemp[i] = cTemp; } } } else { for (var i = nPrintOkIndex + 1; i < htKPSSendingITemp.Count; i++) { KPSOrderMessage cTemp = (KPSOrderMessage)htKPSSendingITemp[i]; // Mod, 2017.02.14 //cTemp.sSendYn = "0"; cTemp.sSendYn = (cTemp.sSendYn == "0") ? "8" : cTemp.sSendYn; if (string.IsNullOrWhiteSpace(cTemp.sErrorCd) || cTemp.sErrorCd == "0000") { switch (nReturn) { case -1: cTemp.sErrorCd = "0001"; break; // Print Open Error case -2: cTemp.sErrorCd = "0002"; break; // Print Claim Error case -3: cTemp.sErrorCd = "0003"; break; // Print Power Off Error case -4: cTemp.sErrorCd = "0004"; break; // Cover Open Error case -5: cTemp.sErrorCd = "0005"; break; // No Paper Error default: cTemp.sErrorCd = "9999"; break; // Etc Error } } // Add, 2017.02.15 //ktchErrorCode = cTemp.sErrorCd; ktchErrorCode = string.Format("{0}|{1}|{2}", cTemp.sErrorCd, cTemp.sKtchSysCd, cTemp.sKtchSysNm); htKPSSendingITemp[i] = cTemp; } } htKPSSendingItem[nLoop] = htKPSSendingITemp; if (nReturn != 0) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", string.Format("Print Error = [{0}][{1}]", cKPSOrderMessage.sKtchSysUseDiv, nReturn)); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// KPS Status Update /// /// /// private void KPSPrintStatusUpdate(Hashtable htKPSSendingItem, Hashtable htKtchDeviceStatus) { try { // KPS 인쇄 데이터 전송상태 갱신 for(int nLoop = 0;nLoop < htKPSSendingItem.Count;nLoop++) { Hashtable htKPSSendingItemTemp = (Hashtable)htKPSSendingItem[nLoop]; for(int nLoop2 = 0;nLoop2 < htKPSSendingItemTemp.Count;nLoop2++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItemTemp[nLoop2]; string sQuery = "UPDATE POSMST..MST_KPS_ORD_MSG \n" + " SET SEND_YN = '" + cKPSItem.sSendYn + "' \n" + " , RESEND_YN = '" + cKPSItem.sResendYn + "' \n" + " , ERROR_CD = '" + cKPSItem.sErrorCd + "' \n" + " WHERE TRAIN_MODE_YN = '" + cKPSItem.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 + " AND ORD_DIV = '" + cKPSItem.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSItem.sTableNo + "' \n" + " AND SUB_STOR_CD = '" + cKPSItem.sSubShopCd + "' \n" // Add, 2017.02.07 + " AND KTCH_SYS_CD = '" + cKPSItem.sKtchSysCd + "' \n" + " AND SEQ = " + cKPSItem.nSeq.ToString() + "\n" ; if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sQuery); } } } for(int nLoop = 0;nLoop < htKtchDeviceStatus.Count;nLoop++) { KTCH_SYS_STATUS cKtchSysStatus = (KTCH_SYS_STATUS)htKtchDeviceStatus[nLoop]; string sErrorCd = "0000"; if(cKtchSysStatus.nErrorCd != 0) { switch(cKtchSysStatus.nErrorCd) { case -1: sErrorCd = "0001"; break; // Print Open Error case -2: sErrorCd = "0002"; break; // Print Claim Error case -3: sErrorCd = "0003"; break; // Print Power Off Error case -4: sErrorCd = "0004"; break; // Cover Open Error case -5: sErrorCd = "0005"; break; // No Paper Error default: sErrorCd = "9999"; break; // Etc Error } } string sQuery = "UPDATE POSMST..MST_KTCH_DEVICE \n" + " SET FILLER1 = '" + sErrorCd + "' \n" + " WHERE KTCH_SYS_CD = '" + cKtchSysStatus.sKtchSysCd + "' \n" + " AND SUB_STOR_CD = '" + cKtchSysStatus.sSubShopCd + "' \n" // Add, 2017.02.07 ; if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sQuery); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } private void KPSOrderMessagePrintStatusDelete(Hashtable htKPSSendingItem, Hashtable htKtchDeviceStatus) { try { for(var i = 0; i < htKPSSendingItem.Count;i++) { Hashtable htTemp = (Hashtable)htKPSSendingItem[i]; for (var j= 0; j < htTemp.Count; j++) { string sql = string.Empty; KPSOrderMessage cKPSOrderMessage = (KPSOrderMessage)htTemp[j]; if (cKPSOrderMessage.sSendYn != "1") { sql = "UPDATE POSMST..MST_KTCH_ORD_MSG_ADD \n" + " SET SEND_YN = '" + cKPSOrderMessage.sSendYn + "' \n" + " WHERE TRAIN_MODE_YN = '" + cKPSOrderMessage.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 + " AND ORD_DIV = '" + cKPSOrderMessage.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSOrderMessage.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSOrderMessage.sTableNo + "' \n" + " AND SEQ = " + cKPSOrderMessage.nSeq + " \n" ; } else { sql = "DELETE FROM POSMST..MST_KTCH_ORD_MSG_ADD \n" + " WHERE TRAIN_MODE_YN = '" + cKPSOrderMessage.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 + " AND ORD_DIV = '" + cKPSOrderMessage.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSOrderMessage.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSOrderMessage.sTableNo + "' \n" + " AND SEQ = " + cKPSOrderMessage.nSeq + " \n" ; } if(sqlDb.DBExecuteNonQuery(new string[] {sql}, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sql); } } } for(int nLoop = 0;nLoop < htKtchDeviceStatus.Count;nLoop++) { KTCH_SYS_STATUS cKtchSysStatus = (KTCH_SYS_STATUS)htKtchDeviceStatus[nLoop]; string sErrorCode = "0000"; if(cKtchSysStatus.nErrorCd != 0) { switch(cKtchSysStatus.nErrorCd) { case -1: sErrorCode = "0001"; break; // Print Open Error case -2: sErrorCode = "0002"; break; // Print Claim Error case -3: sErrorCode = "0003"; break; // Print Power Off Error case -4: sErrorCode = "0004"; break; // Cover Open Error case -5: sErrorCode = "0005"; break; // No Paper Error default: sErrorCode = "9999"; break; // Etc Error } } string sQuery = " UPDATE POSMST..MST_KTCH_DEVICE \n" + " SET FILLER1 = '" + sErrorCode + "' \n" + " WHERE KTCH_SYS_CD = '" + cKtchSysStatus.sKtchSysCd + "' \n" + " AND SUB_STOR_CD = '" + cKtchSysStatus.sSubShopCd + "' \n" // Add, 2017.02.07 ; if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sQuery); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// Get KPS Order Message /// /// private void GetKPSOrderMessage(ref Hashtable htKPSSendingItem) { string sQuery = string.Empty; DataTable dtData = null; try { #region (주석) 복합매장 적용 이전 버전 //sQuery = " SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.KTCH_SYS_CD "; //sQuery += " , A.ITEM_CD, A.SHTCUT_ITEMNM, A.MSG_DIV, A.MSG1, A.MSG2 "; //sQuery += " , A.MSG3, A.MSG_REG_TIME, B.KTCH_SYS_USE_DIV, B.KTCH_PRINTER_COMM_PORT, B.KTCH_PRINTER_COMM_SPEED "; //sQuery += " , B.KTCH_PRINTER_OPOS_NM, B.KTCH_PRINTER_IP, B.KTCH_PRINTER_PORT, B.KTCH_PRINTER_BAK1, B.KTCH_PRINTER_BAK2 "; //sQuery += " , B.KTCH_PRINTER_BAK3, B.KTCH_PRINTER_BAK4, B.KTCH_PRINTER_BAK5, B.KTCH_PRINTER_BAK6 "; //sQuery += " FROM POSMST..MST_KTCH_ORD_MSG_ADD A "; //sQuery += " , POSMST..MST_KTCH_DEVICE B "; //sQuery += " WHERE A.SEND_YN = '0' "; //sQuery += " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD "; //sQuery += " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; //sQuery += " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; //sQuery += " AND B.KTCH_SYS_DIV = '1' "; //sQuery += " ORDER BY B.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ "; #endregion #region (주석) 연습모드 적용 이전 버전, 2017.03.03 //sQuery = " SELECT A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.SUB_STOR_CD, A.KTCH_SYS_CD \n" // + " , A.ITEM_CD, A.SHTCUT_ITEMNM, A.MSG_DIV, A.MSG1, A.MSG2 \n" // + " , A.MSG3, A.MSG_REG_TIME, B.KTCH_SYS_USE_DIV, B.KTCH_PRINTER_COMM_PORT, B.KTCH_PRINTER_COMM_SPEED \n" // + " , B.KTCH_PRINTER_OPOS_NM, B.KTCH_PRINTER_IP, B.KTCH_PRINTER_PORT, ISNULL(B.PRT_CNT, 1) PRT_CNT, A.REG_DT \n" // + " FROM POSMST..MST_KTCH_ORD_MSG_ADD A \n" // + " , POSMST..MST_KTCH_DEVICE B \n" // + " WHERE A.SEND_YN = '0' \n" // + " AND A.SUB_STOR_CD = B.SUB_STOR_CD \n" // Add, 2017.02.06 // + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" // + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND B.KTCH_SYS_DIV = '1' \n" // + " AND B.KTCH_SYS_CD <> '99' \n" // + " ORDER BY A.SUB_STOR_CD, B.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ \n" // ; #endregion #region (주석) // Mod, 2017.03.03, 연습모드 //sQuery = " SELECT A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.SUB_STOR_CD, A.KTCH_SYS_CD \n" // + " , A.ITEM_CD, A.SHTCUT_ITEMNM, A.MSG_DIV, A.MSG1, A.MSG2 \n" // + " , A.MSG3, A.MSG_REG_TIME, B.KTCH_SYS_USE_DIV, B.KTCH_PRINTER_COMM_PORT, B.KTCH_PRINTER_COMM_SPEED \n" // + " , B.KTCH_PRINTER_OPOS_NM, B.KTCH_PRINTER_IP, B.KTCH_PRINTER_PORT, ISNULL(B.PRT_CNT, 1) PRT_CNT, A.REG_DT \n" // + " FROM POSMST..MST_KTCH_ORD_MSG_ADD A \n" // + " , POSMST..MST_KTCH_DEVICE B WITH(NOLOCK) \n" // + " WHERE A.SEND_YN = '0' \n" // + " AND A.SUB_STOR_CD = B.SUB_STOR_CD \n" // + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" // + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" // + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" // + " AND B.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" // + " AND B.KTCH_SYS_CD <> '99' \n" // + " ORDER BY A.TRAIN_MODE_YN, A.SUB_STOR_CD, B.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ \n" // ; #endregion sQuery = " SELECT A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ, A.SUB_STOR_CD, A.KTCH_SYS_CD \n" + " , A.ITEM_CD, A.SHTCUT_ITEMNM, A.MSG_DIV, A.MSG1, A.MSG2 \n" + " , A.MSG3, A.MSG_REG_TIME, B.KTCH_SYS_USE_DIV, B.KTCH_PRINTER_COMM_PORT, B.KTCH_PRINTER_COMM_SPEED \n" + " , B.KTCH_PRINTER_OPOS_NM, B.KTCH_PRINTER_IP, B.KTCH_PRINTER_PORT, ISNULL(B.PRT_CNT, 1) PRT_CNT, A.REG_DT \n" + " , B.KTCH_SYS_NM \n" + " , A.ORD_POS_NO \n" + " FROM POSMST..MST_KTCH_ORD_MSG_ADD A \n" + " , POSMST..MST_KTCH_DEVICE B WITH(NOLOCK) \n" + " WHERE A.SEND_YN = '0' \n" + " AND A.SUB_STOR_CD = B.SUB_STOR_CD \n" + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" // Add, 20170612 POS별 주방프린터 설정 + " AND B.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" + " AND B.KTCH_SYS_CD <> '99' \n" + " ORDER BY A.TRAIN_MODE_YN, A.SUB_STOR_CD, B.KTCH_SYS_CD, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SEQ \n" ; if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) != UserCom.OK) { return; } var itemKey = string.Empty; Hashtable htTemp = new Hashtable(); foreach (DataRow dr in dtData.Rows) { KPSOrderMessage cKPSOrderMsg = new KPSOrderMessage(); cKPSOrderMsg.sTrainMode = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN"); // Add, 2017.03.03, 연습모드 cKPSOrderMsg.sOrderType = CmUtil.GetDataRowStr(dr, "ORD_DIV"); cKPSOrderMsg.sFloorCd = CmUtil.GetDataRowStr(dr, "FLOOR_CD"); cKPSOrderMsg.sTableNo = CmUtil.GetDataRowStr(dr, "TBL_NO"); cKPSOrderMsg.nSeq = CmUtil.GetDataRowInt(dr, "SEQ"); cKPSOrderMsg.sSubShopCd = CmUtil.GetDataRowStr(dr, "SUB_STOR_CD"); // Add, 2017.02.06 cKPSOrderMsg.sKtchSysCd = CmUtil.GetDataRowStr(dr, "KTCH_SYS_CD"); cKPSOrderMsg.sKtchSysNm = CmUtil.GetDataRowStr(dr, "KTCH_SYS_NM"); // Add, 2017.04.07 cKPSOrderMsg.sItemCd = CmUtil.GetDataRowStr(dr, "ITEM_CD"); cKPSOrderMsg.sItemNm = CmUtil.GetDataRowStr(dr, "SHTCUT_ITEMNM"); cKPSOrderMsg.sMsgId = CmUtil.GetDataRowStr(dr, "MSG_DIV"); cKPSOrderMsg.sMsg1 = CmUtil.GetDataRowStr(dr, "MSG1"); cKPSOrderMsg.sMsg2 = CmUtil.GetDataRowStr(dr, "MSG2"); cKPSOrderMsg.sMsg3 = CmUtil.GetDataRowStr(dr, "MSG3"); cKPSOrderMsg.sMsgRegTime = CmUtil.GetDataRowStr(dr, "MSG_REG_TIME"); cKPSOrderMsg.sKtchSysUseDiv = CmUtil.GetDataRowStr(dr, "KTCH_SYS_USE_DIV"); cKPSOrderMsg.nKpsComPort = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_PORT"); cKPSOrderMsg.nKpsComBaudrate = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_SPEED"); cKPSOrderMsg.sKpsOposName = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_OPOS_NM"); cKPSOrderMsg.sKpsIp = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_IP"); cKPSOrderMsg.sKpsPort = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_PORT"); cKPSOrderMsg.sSendYn = "0"; // Add, 2017.02.14, 반복출력횟수 cKPSOrderMsg.printCount = CmUtil.GetDataRowInt(dr, "PRT_CNT"); if (cKPSOrderMsg.printCount == 0) cKPSOrderMsg.printCount = 1; //cKPSOrderMsg.sKpsCdBackup1 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK1"); //cKPSOrderMsg.sKpsCdBackup2 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK2"); //cKPSOrderMsg.sKpsCdBackup3 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK3"); //cKPSOrderMsg.sKpsCdBackup4 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK4"); //cKPSOrderMsg.sKpsCdBackup5 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK5"); //cKPSOrderMsg.sKpsCdBackup6 = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_BAK6"); // Add, 2017.02.14 var temp = CmUtil.GetDataRowStr(dr, "REG_DT").Trim(); cKPSOrderMsg.sRegDate = temp.Length > 8 ? temp.Substring(0, 8) : m_cPosStatus.Base.SaleDate; // Mod, 2017.02.10 //htKPSSendingItem.Add(htKPSSendingItem.Count, cKPSOrderMsg); //var checkKey = cKPSOrderMsg.sSubShopCd + cKPSOrderMsg.sKtchSysCd + cKPSOrderMsg.sFloorCd + cKPSOrderMsg.sTableNo + cKPSOrderMsg.sMsgId; //var checkKey = cKPSOrderMsg.sTrainMode + cKPSOrderMsg.sSubShopCd + cKPSOrderMsg.sKtchSysCd + cKPSOrderMsg.sFloorCd + cKPSOrderMsg.sTableNo + cKPSOrderMsg.sMsgId; var checkKey = string.Empty; switch (cKPSOrderMsg.sMsgId) { case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: //case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: checkKey = cKPSOrderMsg.sTrainMode + cKPSOrderMsg.sSubShopCd + cKPSOrderMsg.sKtchSysCd + cKPSOrderMsg.sFloorCd + cKPSOrderMsg.sTableNo + cKPSOrderMsg.sMsgId + cKPSOrderMsg.sItemCd; break; case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: default: checkKey = cKPSOrderMsg.sTrainMode + cKPSOrderMsg.sSubShopCd + cKPSOrderMsg.sKtchSysCd + cKPSOrderMsg.sFloorCd + cKPSOrderMsg.sTableNo + cKPSOrderMsg.sMsgId; break; } if (itemKey != checkKey) { if (htTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htTemp); } itemKey = checkKey; htTemp = new Hashtable(); } htTemp.Add(htTemp.Count, cKPSOrderMsg); } if (htTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htTemp); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// Get KPS Send Ok Count (미사용) /// /// /// /// /// /// private int GetKpsSendOkCount(string sOrderType, string sFloorCd, string sTableNo) { int nKpsSendCount = 0; string sDbSource = string.Empty; string sDbCatalog = string.Empty; string sDbUserId = string.Empty; string sDbPassword = string.Empty; DataTable dtData = null; try { string sQuery = string.Empty; sQuery = " SELECT COUNT(1) AS COUNT"; sQuery += " FROM POSMST..MST_KTCH_ORD_MSG "; sQuery += " WHERE ORD_DIV = '" + sOrderType + "' "; sQuery += " AND FLOOR_CD = '" + sFloorCd + "' "; sQuery += " AND TBL_NO = '" + sTableNo + "' "; sQuery += " AND SEND_YN = '1' "; // 조회 if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK) { nKpsSendCount = CmUtil.GetDataRowInt(dtData.Rows[0], "COUNT"); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return nKpsSendCount; } private int KPSSerialPrintProc(string sCancelFlag, string sResendFlag, int iKpsComPort, int iKpsComBaudrate, int prtCount, ref int nPrintOkIndex, ref Hashtable htKPSSendingItem) { var iRet = -99; var sPrtBar1 = new string('-', 42); var sPrtBar2 = new string('=', 42); var sPrtDat1 = string.Empty; var sPrtDat2 = string.Empty; SerialPrint cPrint = new SerialPrint(); try { nPrintOkIndex = -1; cPrint.DeviceOpen("COM" + iKpsComPort.ToString(), iKpsComBaudrate); if (cPrint.IsPortOpened == false) { cPrint.DeviceClose(); return -9; } // Cover Check iRet = cPrint.PrinterStatusCheckBySerial("CHK1"); if (iRet != UserCom.OK) { cPrint.DeviceClose(); return -4; } // Paper Check iRet = cPrint.PrinterStatusCheckBySerial("CHK2"); if (iRet != UserCom.OK) { cPrint.DeviceClose(); return -5; } for (var cnt = 0; cnt < prtCount; cnt++) { var itemKey = string.Empty; var ktchMemo = string.Empty; var orderNo1 = string.Empty; var orderNo2 = string.Empty; // 주문상품 인쇄 for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItem[nLoop]; // 이미 전송 완료 건 제외 if (cKPSItem.sSendYn == "1") { continue; } // Add, 2017.03.03, 연습모드 //var checkKey = cKPSItem.sOrderType + cKPSItem.sFloorCd + cKPSItem.sTableNo; var checkKey = cKPSItem.sTrainMode + cKPSItem.sOrderType + cKPSItem.sFloorCd + cKPSItem.sTableNo; if (itemKey != checkKey) { //if (sOrgOrderType != "") if (string.IsNullOrWhiteSpace(itemKey) == false) { cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(4); // 인쇄 완료 인덱스 nPrintOkIndex = nLoop - 1; } // 원정보 설정 itemKey = checkKey; // 제목 sPrtDat1 = string.Format("<< {0} >>", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0154)); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_2, true); // 연습모드 // Add, 2017.03.03, if (cKPSItem.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtDat1 = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } // 복합매장-서브매장명 if (string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNm) == false) { sPrtDat1 = m_cPosStatus.Base.SubShopNm; cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 반복횟수 var prtCnt = prtCount > 1 ? string.Format(" ({0}/{1})", cnt + 1, prtCount) : string.Empty; // 주문시간 sPrtDat1 = string.Format("{0} : {1} {2} {3}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0155) , m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate) , CmUtil.StrToTime(cKPSItem.sOrdTime) , prtCnt); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 주문번호 if (cKPSItem.sFiller2 == "2") { // 해피오더 sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0158), cKPSItem.sOrderNo); } //else if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) //{ // // 후불 // sPrtDat1 = string.Format("{0} : {1}-{2}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0156), cKPSItem.sFloorCd, cKPSItem.sTableNo); //} else { sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0156), cKPSItem.sOrderNo); } cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 주문담당자 if (string.IsNullOrWhiteSpace(cKPSItem.sOrdPicNm) == false) { sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0189), cKPSItem.sOrdPicNm.Trim()); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } // 인원 if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { sPrtDat1 = GetCustInfo(cKPSItem.sTrainMode, cKPSItem.sFloorCd, cKPSItem.sTableNo); if (string.IsNullOrWhiteSpace(sPrtDat1) == false) { sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0157), sPrtDat1); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // 주문번호/테이블 // Mod, 2017.05.08, 주분번호 후불=상단, 선불=하단 출력 sPrtDat1 = string.Empty; sPrtDat2 = string.Empty; orderNo1 = string.Empty; orderNo2 = string.Empty; if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { #region (주문번호 상단 출력) if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && string.IsNullOrWhiteSpace(cKPSItem.sFiller2)) { sPrtDat1 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0148)); sPrtDat2 = string.Format("{0}-{1}", GetFloorName(cKPSItem.sFloorCd), GetTableName(cKPSItem.sFloorCd, cKPSItem.sTableNo)); } else if (string.IsNullOrWhiteSpace(cKPSItem.sOrderNo) == false) { sPrtDat1 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097)); sPrtDat2 = string.Format("{0}", cKPSItem.sOrderNo); } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(sPrtDat2, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_2 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion } else { #region (주문번호 하단 출력) if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && string.IsNullOrWhiteSpace(cKPSItem.sFiller2)) { orderNo1 = string.Format("{0}-{1}", GetFloorName(cKPSItem.sFloorCd), GetTableName(cKPSItem.sFloorCd, cKPSItem.sTableNo)); orderNo2 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0148)); } else if (string.IsNullOrWhiteSpace(cKPSItem.sOrderNo) == false) { orderNo1 = string.Format("{0}", cKPSItem.sOrderNo); orderNo2 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097)); } cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion } } // 상품/수량 var sign = cKPSItem.sCancelDiv == "1" ? -1 : 1; var type = GetAddOrderString(cKPSItem.sFiller3); var qty = cKPSItem.nQty == 0 ? string.Empty : (sign * cKPSItem.nQty).ToString(); sPrtDat1 = CmUtil.RPadH(cKPSItem.sItemNm, 30) + CmUtil.RPadH(type, 5) + CmUtil.LPadH(qty, 6); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); //2017.09.07 레시피 출력 if(cKPSItem.sRecipe.ToString().Trim().Length > 0) { string Recipe = cKPSItem.sRecipe.Replace("@", "\r").Replace("$","\n").ToString(); string[] RecipeData = Recipe.Split(new string[] { "\r\n", "\n", "\r" }, StringSplitOptions.None); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); foreach(var dt in RecipeData) { cPrint.TextPrint(dt.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.03.21, 상품메모 if (string.IsNullOrWhiteSpace(cKPSItem.sItemMemo) == false) { var lst = this.GetParserMemo(cKPSItem.sItemMemo); foreach (var msg in lst) { cPrint.TextPrint(" " + msg.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.04.10, 상품구분라인 var nextIdx = nLoop + 1; if (nextIdx < htKPSSendingItem.Count) { var NextItemDiv = ((KPSItem)htKPSSendingItem[nextIdx]).sItemDiv; switch (NextItemDiv) { case ItemConst.PLU_ITEM_DIV.NORMAL: case ItemConst.PLU_ITEM_DIV.SET_MAIN: case ItemConst.PLU_ITEM_DIV.SET_DIS: cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } } #region Mod, 2017.04.25, 주방메모 출력 // Add, 2017.01.23 // 주방프린터 수동출력(상품선택) 옵션시 주방메모 //if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "2") //{ // ktchMemo = cKPSItem.sKtchMemo; //} #endregion ktchMemo = cKPSItem.sKtchMemo; } // Add, 2017.01.23, 수동출력옵션 시 주방메모 출력 if (string.IsNullOrWhiteSpace(ktchMemo) == false) { cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("Memo: ", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); var lst = this.GetParserMemo(ktchMemo); foreach (var msg in lst) { cPrint.TextPrint(" " + msg.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.04.07 if (string.IsNullOrWhiteSpace(orderNo1) == false) { cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(orderNo1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_2 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(orderNo2, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } // Cutting cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(4); } // 인쇄 완료 인덱스 설정 nPrintOkIndex = htKPSSendingItem.Count - 1; // Port Close cPrint.DeviceClose(); } catch (Exception ex) { cPrint.DeviceClose(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return -99; } return 0; } private int KPSOrderMessageSerialPrintProc(string sResendFlag, int iKpsComPort, int iKpsComBaudrate, int prtCount, ref int nPrintOkIndex, ref Hashtable htKPSOrderMessage) { var iRet = UserCom.NG; var sPrtBar1 = new string('-', 42); var sPrtData = string.Empty; SerialPrint cPrint = new SerialPrint(); try { nPrintOkIndex = -1; iRet = cPrint.DeviceOpen("COM" + iKpsComPort.ToString(), iKpsComBaudrate); if (iRet != UserCom.OK) { cPrint.DeviceClose(); return -9; } // Cover Check iRet = cPrint.PrinterStatusCheckBySerial("CHK1"); if (iRet != UserCom.OK) { cPrint.DeviceClose(); return -4; } // Paper Check iRet = cPrint.PrinterStatusCheckBySerial("CHK2"); if (iRet != UserCom.OK) { cPrint.DeviceClose(); return -5; } for (var cnt = 0; cnt < prtCount; cnt++) { var itemKey = string.Empty; for (int nLoop = 0; nLoop < htKPSOrderMessage.Count; nLoop++) { KPSOrderMessage cKPSMessage = (KPSOrderMessage)htKPSOrderMessage[nLoop]; if (cKPSMessage.sSendYn == "1") { continue; } var checkKey = cKPSMessage.sTrainMode + cKPSMessage.sOrderType + cKPSMessage.sFloorCd + cKPSMessage.sTableNo + cKPSMessage.sMsgId; if (itemKey != checkKey) { if (itemKey != "") { cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(4); // 인쇄 완료 인덱스 nPrintOkIndex = nLoop - 1; } itemKey = checkKey; #region ### 헤더 출력 string sPrintTitle = this.GetOrderMessageTitle(cKPSMessage.sMsgId); switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.TABLE_COMBINE: case PosConst.KPS_ORD_MSG_ID.TABLE_MOVE: case PosConst.KPS_ORD_MSG_ID.MENU_MOVE: sPrtData = string.Format("[{0}{1}]", sPrintTitle, (sResendFlag == "1") ? " (R)" : ""); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); // 연습모드 // Add, 2017.03.03, if (cKPSMessage.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtData = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); sPrtData = sPrintTitle + " : " + GetFloorName(cKPSMessage.sFloorCd) + "-" + GetTableName(cKPSMessage.sFloorCd, cKPSMessage.sTableNo) + " -> " + GetFloorName(cKPSMessage.sMsg1) + "-" + GetTableName(cKPSMessage.sMsg1, cKPSMessage.sMsg2); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; default: sPrtData = string.Format("[{0}{1}]", sPrintTitle, (sResendFlag == "1") ? " (R)" : ""); if (cKPSMessage.sMsgId == PosConst.KPS_ORD_MSG_ID.FIRE_KEY) { cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.ReverseMode, true); } else { cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } // 연습모드 // Add, 2017.03.03, if (cKPSMessage.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtData = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); sPrtData = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0176) + " : " + GetFloorName(cKPSMessage.sFloorCd) + "-" + GetTableName(cKPSMessage.sFloorCd, cKPSMessage.sTableNo); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 상품정보 출력 switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: //case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: cPrint.TextPrint(cKPSMessage.sItemNm.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: // Add, 2017.03.22 for (var i = nLoop; i < htKPSOrderMessage.Count; i++) { KPSOrderMessage cKPSOrderSubMsg = (KPSOrderMessage)htKPSOrderMessage[i]; sPrtData = string.Format("{0}{1}", CmUtil.RPadH(cKPSOrderSubMsg.sItemNm, 37), CmUtil.LPadH(cKPSOrderSubMsg.sMsg1, 5)); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); // Main Index 동기화 nLoop = i; } break; case PosConst.KPS_ORD_MSG_ID.MENU_MOVE: for (var i = nLoop; i < htKPSOrderMessage.Count; i++) { KPSOrderMessage cKPSOrderSubMsg = (KPSOrderMessage)htKPSOrderMessage[i]; if (cKPSOrderSubMsg.sSendYn == "1") break; ; if (cKPSMessage.sMsgId != cKPSOrderSubMsg.sMsgId) break; if (cKPSMessage.sFloorCd != cKPSOrderSubMsg.sFloorCd) break; if (cKPSMessage.sTableNo != cKPSOrderSubMsg.sTableNo) break; if (cKPSMessage.sOrderType != cKPSOrderSubMsg.sOrderType) break; if (cKPSMessage.sKtchSysCd != cKPSOrderSubMsg.sKtchSysCd) break; if (cKPSMessage.sMsg1.Trim() != cKPSOrderSubMsg.sMsg1.Trim()) break; if (cKPSMessage.sMsg2.Trim() != cKPSOrderSubMsg.sMsg2.Trim()) break; // 메뉴이동 상품정보 출력 sPrtData = string.Format("{0}{1}", CmUtil.RPadH(cKPSOrderSubMsg.sItemNm, 37), CmUtil.LPadH(cKPSOrderSubMsg.sMsg3, 5)); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); //// 전송완료설정 //cKPSOrderSubMsg.sSendYn = "1"; // Main Index 동기화 nLoop = i; } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 메시지 출력 switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: //case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: // Del, 2017.03.22 case PosConst.KPS_ORD_MSG_ID.SEAT_MEMO: if (cKPSMessage.sMsg1.Trim() != "") { cPrint.TextPrint(" " + cKPSMessage.sMsg1.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } if (cKPSMessage.sMsg2.Trim() != "") { cPrint.TextPrint(" " + cKPSMessage.sMsg2.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } if (cKPSMessage.sMsg3.Trim() != "") { cPrint.TextPrint(" " + cKPSMessage.sMsg3.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 꼬리 출력 // 반복횟수 var prtCnt = prtCount > 1 ? string.Format(" ({0}/{1})", cnt + 1, prtCount) : string.Empty; // 주문시간 sPrtData = string.Format("{0} : {1} {2} {3}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0085) , m_cPosStatus.Global.DateToCulture(cKPSMessage.sRegDate) , CmUtil.StrToTime(cKPSMessage.sMsgRegTime) , prtCnt); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion // Cutting cPrint.CutPaper(4); } //// 전송완료설정 //cKPSMessage.sSendYn = "1"; } } // 인쇄 완료 인덱스 nPrintOkIndex = htKPSOrderMessage.Count - 1; // Port Close Thread.Sleep(200); cPrint.DeviceClose(); } catch (Exception ex) { cPrint.DeviceClose(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return -99; } return 0; } private int KPSLanPrintProc(string sCancelFlag, string sResendFlag, string sKpsIp, string sKpsPort, int prtCount, ref int nPrintOkIndex, ref Hashtable htKPSSendingItem) { var iRet = UserCom.NG; var sPrtBar1 = new string('-', 42); var sPrtBar2 = new string('=', 42); var sPrtDat1 = string.Empty; var sPrtDat2 = string.Empty; LANPrint cPrint = new LANPrint(); try { iRet = cPrint.OpenDevice(sKpsIp, int.Parse(sKpsPort)); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -9; } // Cover Check iRet = cPrint.PrinterStatusCheckByLan("CHK1"); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -4; } // Paper Check iRet = cPrint.PrinterStatusCheckByLan("CHK2"); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -5; } for (var cnt = 0; cnt < prtCount; cnt++) { var ktchMemo = string.Empty; var itemKey = string.Empty; var orderNo1 = string.Empty; var orderNo2 = string.Empty; // 주문상품 인쇄(주방장치코드가 같은 상품들) for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItem[nLoop]; // 이미 전송 완료 건 제외 if (cKPSItem.sSendYn == "1") { continue; } // Add, 2017.03.03, 연습모드 //var checkKey = cKPSItem.sOrderType + cKPSItem.sFloorCd + cKPSItem.sTableNo; var checkKey = cKPSItem.sTrainMode + cKPSItem.sOrderType + cKPSItem.sFloorCd + cKPSItem.sTableNo; if (itemKey != checkKey) { //if (sOrgOrderType != "") if (string.IsNullOrWhiteSpace(itemKey) == false) { cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(4); // 인쇄 완료 인덱스 nPrintOkIndex = nLoop - 1; } // 원정보 설정 itemKey = checkKey; // 제목 sPrtDat1 = string.Format("<< {0} >>", "주 문 서"); //MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0154)); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_2, true); cPrint.TextPrint(cKPSItem.sOrderNo, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_3, PrinterCommand.CharactersizeH.H_3 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); // 연습모드 Add, 2017.03.03, if (cKPSItem.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtDat1 = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } // 복합매장-서브매장명 if (string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNm) == false) { sPrtDat1 = m_cPosStatus.Base.SubShopNm; cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 반복횟수 var prtCnt = prtCount > 1 ? string.Format(" ({0}/{1})", cnt + 1, prtCount) : string.Empty; // 주문시간 sPrtDat1 = string.Format("{0} : {1} {2} {3}", "주문시간" //MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0155) , m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate) , CmUtil.StrToTime(cKPSItem.sOrdTime) , prtCnt); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 주문번호 if (cKPSItem.sFiller2 == "2") { // 해피오더 sPrtDat1 = string.Format("{0} : {1}", "주문번호" //MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0158) , cKPSItem.sOrderNo); } //else if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) //{ // // 후불 // sPrtDat1 = string.Format("{0} : {1}-{2}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0156), cKPSItem.sFloorCd, cKPSItem.sTableNo); //} else { sPrtDat1 = string.Format("{0} : {1}", "주문번호"// MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0156) , cKPSItem.sOrderNo); } cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); // 주문담당자 if (string.IsNullOrWhiteSpace(cKPSItem.sOrdPicNm) == false) { sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0189), cKPSItem.sOrdPicNm.Trim()); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } // 인원 if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { sPrtDat1 = GetCustInfo(cKPSItem.sTrainMode, cKPSItem.sFloorCd, cKPSItem.sTableNo); if (string.IsNullOrWhiteSpace(sPrtDat1) == false) { sPrtDat1 = string.Format("{0} : {1}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0157), sPrtDat1); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // 주문번호/테이블 // Mod, 2017.05.08, 주분번호 후불=상단, 선불=하단 출력 sPrtDat1 = string.Empty; sPrtDat2 = string.Empty; orderNo1 = string.Empty; orderNo2 = string.Empty; if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { #region (주문번호 상단 출력) if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && string.IsNullOrWhiteSpace(cKPSItem.sFiller2)) { sPrtDat1 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0148)); sPrtDat2 = string.Format("{0}-{1}", GetFloorName(cKPSItem.sFloorCd), GetTableName(cKPSItem.sFloorCd, cKPSItem.sTableNo)); } else if (string.IsNullOrWhiteSpace(cKPSItem.sOrderNo) == false) { sPrtDat1 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097)); sPrtDat2 = string.Format("{0}", cKPSItem.sOrderNo); } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(sPrtDat2, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_2 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion } else { #region (주문번호 하단 출력) if (cKPSItem.sPosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && string.IsNullOrWhiteSpace(cKPSItem.sFiller2)) { orderNo1 = string.Format("{0}-{1}", GetFloorName(cKPSItem.sFloorCd), GetTableName(cKPSItem.sFloorCd, cKPSItem.sTableNo)); orderNo2 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0148)); } else if (string.IsNullOrWhiteSpace(cKPSItem.sOrderNo) == false) { orderNo1 = string.Format("{0}", cKPSItem.sOrderNo); orderNo2 = string.Format("[ {0} ]", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097)); } cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion } } // 상품/수량 var sign = cKPSItem.sCancelDiv == "1" ? -1 : 1; var type = GetAddOrderString(cKPSItem.sFiller3); var qty = cKPSItem.nQty == 0 ? string.Empty : (sign * cKPSItem.nQty).ToString(); sPrtDat1 = CmUtil.RPadH(cKPSItem.sItemNm, 30) + CmUtil.RPadH(type, 5) + CmUtil.LPadH(qty, 6); cPrint.TextPrint(sPrtDat1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); //2017.09.07 레시피 출력 if (cKPSItem.sRecipe.ToString().Trim().Length > 0) { string Recipe = cKPSItem.sRecipe.Replace("@", "\r").Replace("$", "\n").ToString(); string[] RecipeData = Recipe.Split(new string[] { "\r\n", "\n", "\r" }, StringSplitOptions.None); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); foreach (var dt in RecipeData) { cPrint.TextPrint(dt.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.03.21, 상품메모 if (string.IsNullOrWhiteSpace(cKPSItem.sItemMemo) == false) { var lst = this.GetParserMemo(cKPSItem.sItemMemo); foreach (var msg in lst) { cPrint.TextPrint(" " + msg.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.04.10, 상품구분라인 var nextIdx = nLoop + 1; if (nextIdx < htKPSSendingItem.Count) { var NextItemDiv = ((KPSItem)htKPSSendingItem[nextIdx]).sItemDiv; switch (NextItemDiv) { case ItemConst.PLU_ITEM_DIV.NORMAL: case ItemConst.PLU_ITEM_DIV.SET_MAIN: case ItemConst.PLU_ITEM_DIV.SET_DIS: cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } } #region Mod, 2017.04.25, 주방메모 출력 // Add, 2017.01.23 // 주방프린터 수동출력(상품선택) 옵션시 주방메모 //if (PosMstManager.GetPosOption(POS_OPTION.OPT425) == "2") //{ // ktchMemo = cKPSItem.sKtchMemo; //} #endregion ktchMemo = cKPSItem.sKtchMemo; } // Add, 2017.01.23, 수동출력옵션 시 주방메모 출력 if (string.IsNullOrWhiteSpace(ktchMemo) == false) { cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("Memo: ", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); var lst = this.GetParserMemo(ktchMemo); foreach (string msg in lst) { cPrint.TextPrint(" " + msg.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } } // Add, 2017.04.07 if (string.IsNullOrWhiteSpace(orderNo1) == false) { cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(orderNo1, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_3, PrinterCommand.CharactersizeH.H_3 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); cPrint.TextPrint(orderNo2, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } // Cutting cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint("", PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(12); } // 인쇄 완료 인덱스 설정 nPrintOkIndex = htKPSSendingItem.Count - 1; // Port Close cPrint.CloseDevice(); } catch (Exception ex) { cPrint.CloseDevice(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return -99; } return 0; } private int KPSOrderMessageLanPrintProc(string sResendFlag, string sKpsIp, string sKpsPort, int prtCount, ref int nPrintOkIndex, ref Hashtable htKPSOrderMessage) { var iRet = UserCom.NG; var sPrtBar1 = new string('-', 42); var sPrtBar2 = new string('=', 42); var sPrtData = string.Empty; LANPrint cPrint = new LANPrint(); try { nPrintOkIndex = -1; iRet = cPrint.OpenDevice(sKpsIp, int.Parse(sKpsPort)); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -9; } // Cover Check iRet = cPrint.PrinterStatusCheckByLan("CHK1"); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -4; } // Paper Check iRet = cPrint.PrinterStatusCheckByLan("CHK2"); if (iRet != UserCom.OK) { cPrint.CloseDevice(); return -5; } for (var cnt = 0; cnt < prtCount; cnt++) { var itemKey = string.Empty; for (int nLoop = 0; nLoop < htKPSOrderMessage.Count; nLoop++) { KPSOrderMessage cKPSMessage = (KPSOrderMessage)htKPSOrderMessage[nLoop]; if (cKPSMessage.sSendYn == "1") { continue; } var checkKey = cKPSMessage.sTrainMode + cKPSMessage.sOrderType + cKPSMessage.sFloorCd + cKPSMessage.sTableNo + cKPSMessage.sMsgId; if (itemKey != checkKey) { if (itemKey != "") { cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.CutPaper(4); // 인쇄 완료 인덱스 nPrintOkIndex = nLoop - 1; } itemKey = checkKey; #region ### 헤더 출력 string sPrintTitle = this.GetOrderMessageTitle(cKPSMessage.sMsgId); switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.TABLE_COMBINE: case PosConst.KPS_ORD_MSG_ID.TABLE_MOVE: case PosConst.KPS_ORD_MSG_ID.MENU_MOVE: sPrtData = string.Format("[{0}{1}]", sPrintTitle, (sResendFlag == "1") ? " (R)" : ""); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); // 연습모드 Add, 2017.03.03, if (cKPSMessage.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtData = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); sPrtData = sPrintTitle + " : " + GetFloorName(cKPSMessage.sFloorCd) + "-" + GetTableName(cKPSMessage.sFloorCd, cKPSMessage.sTableNo) + " -> " + GetFloorName(cKPSMessage.sMsg1) + "-" + GetTableName(cKPSMessage.sMsg1, cKPSMessage.sMsg2); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; default: sPrtData = string.Format("[{0}{1}]", sPrintTitle, (sResendFlag == "1") ? " (R)" : ""); if (cKPSMessage.sMsgId == PosConst.KPS_ORD_MSG_ID.FIRE_KEY) { cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Nomal, PrinterCommand.TextUnderLine.Nomal, PrinterCommand.TextReverseMode.ReverseMode, true); } else { cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } // 연습모드 Add, 2017.03.03, if (cKPSMessage.sTrainMode == ItemConst.TRAINING_FLAG.TRAINING_YES) { sPrtData = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1 , PrinterCommand.TextBold.Bold, PrinterCommand.TextUnderLine.Nomal, true); } cPrint.TextPrint("", PrinterCommand.Alignment.Center, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); sPrtData = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0176) + " : " + GetFloorName(cKPSMessage.sFloorCd) + "-" + GetTableName(cKPSMessage.sFloorCd, cKPSMessage.sTableNo); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar2, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 상품정보 출력 switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: //case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: cPrint.TextPrint(cKPSMessage.sItemNm.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: // Add, 2017.03.22 for (var i = nLoop; i < htKPSOrderMessage.Count; i++) { KPSOrderMessage cKPSOrderSubMsg = (KPSOrderMessage)htKPSOrderMessage[i]; sPrtData = string.Format("{0}{1}", CmUtil.RPadH(cKPSOrderSubMsg.sItemNm, 37), CmUtil.LPadH(cKPSOrderSubMsg.sMsg1, 5)); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); // Main Index 동기화 nLoop = i; } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; case PosConst.KPS_ORD_MSG_ID.MENU_MOVE: for (var i = nLoop; i < htKPSOrderMessage.Count; i++) { KPSOrderMessage cKPSOrderSubMsg = (KPSOrderMessage)htKPSOrderMessage[i]; if (cKPSOrderSubMsg.sSendYn == "1") break; ; if (cKPSMessage.sMsgId != cKPSOrderSubMsg.sMsgId) break; if (cKPSMessage.sFloorCd != cKPSOrderSubMsg.sFloorCd) break; if (cKPSMessage.sTableNo != cKPSOrderSubMsg.sTableNo) break; if (cKPSMessage.sOrderType != cKPSOrderSubMsg.sOrderType) break; if (cKPSMessage.sKtchSysCd != cKPSOrderSubMsg.sKtchSysCd) break; if (cKPSMessage.sMsg1.Trim() != cKPSOrderSubMsg.sMsg1.Trim()) break; if (cKPSMessage.sMsg2.Trim() != cKPSOrderSubMsg.sMsg2.Trim()) break; // 메뉴이동 상품정보 출력 sPrtData = string.Format("{0}{1}", CmUtil.RPadH(cKPSOrderSubMsg.sItemNm, 37), CmUtil.LPadH(cKPSOrderSubMsg.sMsg3, 5)); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); //// 전송완료설정 //cKPSOrderSubMsg.sSendYn = "1"; // Main Index 동기화 nLoop = i; } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 메시지 출력 switch (cKPSMessage.sMsgId) { case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: //case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: // Del, 2017.03.22 case PosConst.KPS_ORD_MSG_ID.SEAT_MEMO: var memo = (string.IsNullOrWhiteSpace(cKPSMessage.sMsg1) ? "" : cKPSMessage.sMsg1.Trim() + Environment.NewLine) + (string.IsNullOrWhiteSpace(cKPSMessage.sMsg2) ? "" : cKPSMessage.sMsg2.Trim() + Environment.NewLine) + (string.IsNullOrWhiteSpace(cKPSMessage.sMsg3) ? "" : cKPSMessage.sMsg3.Trim()); if (string.IsNullOrWhiteSpace(memo) == false) { var lst = GetParserMemo(memo.Trim()); foreach (var msg in lst) { cPrint.TextPrint(" " + msg.Trim(), PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_2, PrinterCommand.CharactersizeH.H_1, true); } } cPrint.TextPrint(sPrtBar1, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); break; } #endregion #region ### 꼬리 출력 // 반복횟수 var prtCnt = prtCount > 1 ? string.Format(" ({0}/{1})", cnt + 1, prtCount) : string.Empty; // 주문시간 sPrtData = string.Format("{0} : {1} {2} {3}", MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0085) , m_cPosStatus.Global.DateToCulture(cKPSMessage.sRegDate) , CmUtil.StrToTime(cKPSMessage.sMsgRegTime) , prtCnt); cPrint.TextPrint(sPrtData, PrinterCommand.Alignment.Left, PrinterCommand.CharactersizeV.V_1, PrinterCommand.CharactersizeH.H_1, true); #endregion // Cutting cPrint.CutPaper(4); } //// 전송완료설정 //cKPSMessage.sSendYn = "1"; } } // 인쇄 완료 인덱스 nPrintOkIndex = htKPSOrderMessage.Count - 1; // Port Close Thread.Sleep(200); cPrint.CloseDevice(); } catch (Exception ex) { cPrint.CloseDevice(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return -99; } return 0; } private int PrinterStatusCheckByLan(TcpSocket socket, string sType) { int iRet = 0; string sRet = string.Empty; byte[] recvData = null; try { #region Printer CHK1 if (sType == "CHK1") { iRet = socket.SendReceiveFoodPrintData(PosConst.ESCP_COMMAND.TRANSMIT_OFFLINE_STATUS, ref recvData, 5000); if (recvData != null) { if (recvData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0]) { iRet = UserCom.OK; } else { 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 (함수명)) "COVER Opened"); } } return iRet; } #endregion #region Printer CHK2 if (sType == "CHK2") { iRet = socket.SendReceiveFoodPrintData(PosConst.ESCP_COMMAND.TRANSMIT_CONTINUOUS_PAPER_DETECTOR_STATUS, ref recvData, 5000); if (recvData != null) { if (recvData[0] == PosConst.ESCP_COMMAND.STATUS_OK[0]) { iRet = UserCom.OK; } else { string sRecvData = Encoding.Default.GetString(recvData); string NEAR_END = Encoding.Default.GetString(new byte[] { 0x1E }); string NOT_PRESENT = Encoding.Default.GetString(new byte[] { 0x72 }); string sErrMsg = string.Empty; if (sRecvData == NEAR_END) sErrMsg = "PAPER_NEAR_END"; else if (sRecvData == NOT_PRESENT) sErrMsg = "PAPER_NOT_PRESENT"; else sErrMsg = "ETC_ERROR"; 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 (함수명)) sErrMsg); } } return iRet; } #endregion } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "StatusCheck 실패"); } return iRet; } public bool KPSLanStatusCheck(string sKpsIp, string sKpsPort) { int iRet = UserCom.NG; // 용지 센서 상태 송신 명령어 byte[] ESC_REQ_SUATUS_PAPER_SENSOR = { 0x1D, 0x72, 0x01 }; byte[] reqByte = new byte[2049]; TcpSocket socket = null; try { socket = new TcpSocket(sKpsIp, CmUtil.IntParse(sKpsPort)); if (socket == null) { return false; } // 주방프린터 접속 3회 시도 //for (int nLoop = 0; nLoop < 3; nLoop++) for (int nLoop = 0; nLoop < 1; nLoop++) { try { iRet = socket.Connect(5000); } catch (Exception ex) { socket.Close(); continue; } // 접속 실패 if (iRet != UserCom.OK) { socket.Close(); continue; } break; } if (iRet != UserCom.OK) return false; // 성공하면 주방프린터 상태 체크함 iRet = socket.SendReceiveFoodPrintData(ESC_REQ_SUATUS_PAPER_SENSOR, ref reqByte, 10); return iRet == UserCom.OK ? true : false; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } finally { if (socket != null) socket.Close(); } } private string GetOrderMessageTitle(string msgId) { string retValue = string.Empty; try { switch (msgId) { //case PosConst.KPS_ORD_MSG_ID.TRADE_STOP: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0232); break; case PosConst.KPS_ORD_MSG_ID.ITEM_MEMO: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0233); break; case PosConst.KPS_ORD_MSG_ID.SEAT_MEMO: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0234); break; case PosConst.KPS_ORD_MSG_ID.TABLE_COMBINE: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0235); break; case PosConst.KPS_ORD_MSG_ID.TABLE_MOVE: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0236); break; case PosConst.KPS_ORD_MSG_ID.MENU_MOVE: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0124); break; case PosConst.KPS_ORD_MSG_ID.FIRE_KEY: retValue = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0628); break; } } catch { } return retValue; } private List GetParserMemo(string memo, string headChar = "") { List retValue = new List(); try { const int COL_LEN = 40; var tmp = memo; var lines = tmp.Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); for (var i = 0; i < lines.Length; i++) { var line = lines[i].Trim(); while (string.IsNullOrWhiteSpace(line) == false) { var msg = CmUtil.LeftH(line, COL_LEN).Trim(); if (string.IsNullOrWhiteSpace(msg) == false) retValue.Add(msg); var start = CmUtil.LenH(msg); var length = CmUtil.LenH(line) - CmUtil.LenH(msg); line = CmUtil.MidH(line, start, length); } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return retValue; } private string ConvertDBStr(string str) { return str.Replace("'", "''"); } //#20180515 KPS 출력시 라벨프린터 출력 start private void GetLBLPRTSendItem(ref Hashtable htKPSSendingItem) { string sQuery = string.Empty; DataTable dtData = null; try { sQuery = "WITH LBLTEMP AS \n" + "( \n" + "SELECT A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SUB_STOR_CD \n" + " , MAX(A.ORDER_NO) AS ORDER_NO, MAX(A.ITEM_CD) AS ITEM_CD, MAX(A.SHTCUT_ITEMNM) AS SHTCUT_ITEMNM \n" + " , MAX(A.SET_MENU_CD) AS SET_MENU_CD, MAX(A.FILLER2) AS FILLER2 \n" + " , MAX(A.SALE_QTY) AS SALE_QTY, MAX(A.SEQ) AS SEQ, MAX(A.ITEM_DIV) AS ITEM_DIV, MAX(C.ITEM_INFO) AS ITEM_INFO \n" + " , MAX(C.LBL_QRCODE_URL) AS LBL_QRCODE_URL, MAX(C.LBL_QRCODE_MSG) AS LBL_QRCODE_MSG \n" + " , MAX(C.LBL_TOP_MSG) AS LBL_TOP_MSG, MAX(C.LBL_BTM_MSG) AS LBL_BTM_MSG \n" + " FROM POSMST..MST_KPS_ORD_MSG A \n" + " LEFT JOIN POSMST..MST_KTCH_DEVICE B WITH(NOLOCK) \n" + " ON A.SUB_STOR_CD = B.SUB_STOR_CD \n" + " AND A.KTCH_SYS_CD = B.KTCH_SYS_CD \n" + " AND B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" + " LEFT JOIN POSMST..MST_KTCH_ITEM_INFO C WITH(NOLOCK) \n" + " ON A.ITEM_CD = C.ITEM_CD \n" + " AND C.USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n" + " WHERE A.LBLSEND_YN IN ('0','9') \n" + " AND A.CANCEL_DIV = '0' \n" + " AND A.ORD_POS_NO = '" + m_cPosStatus.Base.PosNo + "' \n" + " GROUP BY A.TRAIN_MODE_YN, A.ORD_DIV, A.FLOOR_CD, A.TBL_NO, A.SUB_STOR_CD, A.SEQ \n" + ") \n" + "SELECT E.TRAIN_MODE_YN, E.ORD_DIV, E.FLOOR_CD, E.TBL_NO, E.SUB_STOR_CD \n" + " , E.ORDER_NO, E.ITEM_CD, E.SHTCUT_ITEMNM, E.SALE_QTY, E.SEQ \n" + " , E.LBL_QRCODE_URL, E.LBL_QRCODE_MSG, E.LBL_TOP_MSG, E.LBL_BTM_MSG \n" + " , E.ITEM_INFO, E.ITEM_DIV, E.FILLER2 \n" + " , (CASE WHEN E.SET_MENU_CD = '' THEN E.ITEM_CD ELSE E.SET_MENU_CD END) AS SET_MENU_CD \n" + " , (SELECT ISNULL(SUM(SALE_QTY),0) FROM LBLTEMP \n" + " WHERE TRAIN_MODE_YN = E.TRAIN_MODE_YN \n" + " AND ORD_DIV = E.ORD_DIV \n" + " AND FLOOR_CD = E.FLOOR_CD \n" + " AND TBL_NO = E.TBL_NO \n" + " AND SUB_STOR_CD = E.SUB_STOR_CD \n" + " AND ITEM_DIV = '0') AS TOTCNT \n" + " FROM LBLTEMP E \n" + " ORDER BY E.TRAIN_MODE_YN, E.ORD_DIV, E.FLOOR_CD, E.TBL_NO, E.SUB_STOR_CD, E.SEQ \n"; if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) != UserCom.OK) { return; } string itemKey = string.Empty; Hashtable htKPSSendingItemTemp = new Hashtable(); //if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtData) == UserCom.OK) //{ // foreach (DataRow dr in dtData.Rows) // { //DataRow[] arRows = null; //arRows = dtData.Select(); //arRows = dtData.Select("POS_NO = '" + m_cPosStatus.Base.PosNo + "'"); //if (arRows.Length == 0) // arRows = dtData.Select("POS_NO = '00'"); //foreach (DataRow dr in dtData.Rows) foreach (DataRow dr in dtData.Rows) { KPSItem cKPSItem = new KPSItem(); cKPSItem.sTrainMode = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN"); cKPSItem.sOrderType = CmUtil.GetDataRowStr(dr, "ORD_DIV"); cKPSItem.sFloorCd = CmUtil.GetDataRowStr(dr, "FLOOR_CD"); cKPSItem.sTableNo = CmUtil.GetDataRowStr(dr, "TBL_NO"); cKPSItem.sSubShopCd = CmUtil.GetDataRowStr(dr, "SUB_STOR_CD"); //cKPSItem.sKtchSysCd = CmUtil.GetDataRowStr(dr, "KTCH_SYS_CD"); //cKPSItem.sKtchSysNm = CmUtil.GetDataRowStr(dr, "KTCH_SYS_NM"); cKPSItem.nSeq = CmUtil.GetDataRowInt(dr, "SEQ"); cKPSItem.sOrderNo = CmUtil.GetDataRowStr(dr, "ORDER_NO"); //cKPSItem.sPosType = CmUtil.GetDataRowStr(dr, "POS_TYPE"); cKPSItem.sItemCd = CmUtil.GetDataRowStr(dr, "ITEM_CD"); cKPSItem.sItemDiv = CmUtil.GetDataRowStr(dr, "ITEM_DIV"); cKPSItem.sItemNm = CmUtil.GetDataRowStr(dr, "SHTCUT_ITEMNM"); cKPSItem.nQty = CmUtil.GetDataRowInt(dr, "SALE_QTY"); //cKPSItem.sPackDiv = CmUtil.GetDataRowStr(dr, "PACK_DIV"); cKPSItem.sSetMenuCd = CmUtil.GetDataRowStr(dr, "SET_MENU_CD"); //cKPSItem.sOrdTime = CmUtil.GetDataRowStr(dr, "ORD_TIME"); //cKPSItem.sCancelDiv = CmUtil.GetDataRowStr(dr, "CANCEL_DIV"); //cKPSItem.sResendYn = CmUtil.GetDataRowStr(dr, "RESEND_YN"); //cKPSItem.sKtchSysUseDiv = CmUtil.GetDataRowStr(dr, "KTCH_SYS_USE_DIV"); //cKPSItem.nKpsComPort = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_PORT"); //cKPSItem.nKpsComBaudrate = CmUtil.GetDataRowInt(dr, "KTCH_PRINTER_COMM_SPEED"); //cKPSItem.sKpsOposName = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_OPOS_NM"); //cKPSItem.sKpsIp = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_IP"); //cKPSItem.sKpsPort = CmUtil.GetDataRowStr(dr, "KTCH_PRINTER_PORT"); //cKPSItem.sErrorCd = CmUtil.GetDataRowStr(dr, "ERROR_CD"); //cKPSItem.sFiller1 = CmUtil.GetDataRowStr(dr, "FILLER1"); //cKPSItem.sFiller2 = CmUtil.GetDataRowStr(dr, "FILLER2"); //cKPSItem.sFiller3 = CmUtil.GetDataRowStr(dr, "FILLER3"); //cKPSItem.sFiller4 = CmUtil.GetDataRowStr(dr, "FILLER4"); //cKPSItem.sFiller5 = CmUtil.GetDataRowStr(dr, "FILLER5"); //cKPSItem.sItemMemo = CmUtil.GetDataRowStr(dr, "MSG"); //cKPSItem.sKtchMemo = CmUtil.GetDataRowStr(dr, "KTCH_MSG"); //cKPSItem.sOrdPicNm = CmUtil.GetDataRowStr(dr, "ORD_PIC_NM"); //cKPSItem.sOrdPosNo = CmUtil.GetDataRowStr(dr, "ORD_POS_NO"); cKPSItem.sRecipe = CmUtil.GetDataRowStr(dr, "ITEM_INFO"); //cKPSItem.sSendYn = "0"; cKPSItem.sLblSendYn = CmUtil.GetDataRowStr(dr, "LBLSEND_YN"); //라벨프린터 출력여부(0:미전송, 1:전송) cKPSItem.iTOTCNT = CmUtil.GetDataRowInt(dr, "TOTCNT"); //라벨프린터 총출력 해야 할 건수 cKPSItem.sQrcodeUrl = CmUtil.GetDataRowStr(dr, "LBL_QRCODE_URL"); //라벨프린터 QRCODE URL cKPSItem.sQrcodeMsg = CmUtil.GetDataRowStr(dr, "LBL_QRCODE_MSG"); //라벨프린터 QRCODE MSG cKPSItem.sTopMsg = CmUtil.GetDataRowStr(dr, "LBL_TOP_MSG"); //라벨프린터 TOP MSG cKPSItem.sBtmMsg = CmUtil.GetDataRowStr(dr, "LBL_BTM_MSG"); //라벨프린터 BTM MSG string checkKey = cKPSItem.sTrainMode + cKPSItem.sOrderType + cKPSItem.sFloorCd + cKPSItem.sTableNo + cKPSItem.sSubShopCd + cKPSItem.sSetMenuCd; if (itemKey != checkKey) { if (htKPSSendingItemTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htKPSSendingItemTemp); } itemKey = checkKey; htKPSSendingItemTemp = new Hashtable(); } htKPSSendingItemTemp.Add(htKPSSendingItemTemp.Count, cKPSItem); } if (htKPSSendingItemTemp.Count != 0) { htKPSSendingItem.Add(htKPSSendingItem.Count, htKPSSendingItemTemp); } } 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); } } //#20180515 KPS 출력시 라벨프린터 출력 end //#20180515 KPS 출력시 라벨프린터 출력 start /// /// KPS Status Update /// /// /// private void LBLPRTPrintStatusUpdate(Hashtable htKPSSendingItem, Hashtable htKtchDeviceStatus) { try { // Label Print 인쇄 데이터 전송상태 갱신 for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { Hashtable htKPSSendingItemTemp = (Hashtable)htKPSSendingItem[nLoop]; for (int nLoop2 = 0; nLoop2 < htKPSSendingItemTemp.Count; nLoop2++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItemTemp[nLoop2]; string sQuery = "UPDATE POSMST..MST_KPS_ORD_MSG \n" + " SET LBLSEND_YN = '" + cKPSItem.sLblSendYn + "' \n" + " , RESEND_YN = '" + cKPSItem.sResendYn + "' \n" + " , ERROR_CD = '" + cKPSItem.sErrorCd + "' \n" + " WHERE TRAIN_MODE_YN = '" + cKPSItem.sTrainMode + "' \n" // Add, 2017.03.03, 연습모드 + " AND ORD_DIV = '" + cKPSItem.sOrderType + "' \n" + " AND FLOOR_CD = '" + cKPSItem.sFloorCd + "' \n" + " AND TBL_NO = '" + cKPSItem.sTableNo + "' \n" + " AND SUB_STOR_CD = '" + cKPSItem.sSubShopCd + "' \n" // Add, 2017.02.07 //+ " AND KTCH_SYS_CD = '" + cKPSItem.sKtchSysCd + "' \n" + " AND SEQ = " + cKPSItem.nSeq.ToString() + "\n" ; if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sQuery); } } } /* for (int nLoop = 0; nLoop < htKtchDeviceStatus.Count; nLoop++) { KTCH_SYS_STATUS cKtchSysStatus = (KTCH_SYS_STATUS)htKtchDeviceStatus[nLoop]; string sErrorCd = "0000"; if (cKtchSysStatus.nErrorCd != 0) { switch (cKtchSysStatus.nErrorCd) { case -1: sErrorCd = "0001"; break; // Print Open Error case -2: sErrorCd = "0002"; break; // Print Claim Error case -3: sErrorCd = "0003"; break; // Print Power Off Error case -4: sErrorCd = "0004"; break; // Cover Open Error case -5: sErrorCd = "0005"; break; // No Paper Error default: sErrorCd = "9999"; break; // Etc Error } } string sQuery = "UPDATE POSMST..MST_KTCH_DEVICE \n" + " SET FILLER1 = '" + sErrorCd + "' \n" + " WHERE KTCH_SYS_CD = '" + cKtchSysStatus.sKtchSysCd + "' \n" + " AND SUB_STOR_CD = '" + cKtchSysStatus.sSubShopCd + "' \n" // Add, 2017.02.07 ; if (sqlDb.DBExecuteNonQuery(new string[] { sQuery }, CommandType.Text, (SqlParameter[])null, true) != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Query=" + sQuery); } } */ } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180515 KPS 출력시 라벨프린터 출력 end //#20180515 KPS 출력시 라벨프린터 출력 start /// /// 라벨프린터 출력 /// /// private void LBLPRTPrintProc(ref Hashtable htKPSSendingItem) { try { bool nReturn = false; int LblPrtCnt = 0; for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { Hashtable htKPSSendingItemTemp = (Hashtable)htKPSSendingItem[nLoop]; if (htKPSSendingItemTemp.Count == 0) { continue; } // 수량 만큼 출력 하기 위해 KPSItem cKPSTemp = (KPSItem)htKPSSendingItemTemp[0]; for (int i = 1; i <= cKPSTemp.nQty; i++) { LblPrtCnt = LblPrtCnt + 1; nReturn = LBLPRTSerialPrintProc(htKPSSendingItemTemp, LblPrtCnt); if (nReturn == true) { cKPSTemp.sLblSendYn = "1"; htKPSSendingItemTemp[0] = cKPSTemp; } else { cKPSTemp.sLblSendYn = "9"; htKPSSendingItemTemp[0] = cKPSTemp; } htKPSSendingItem[nLoop] = htKPSSendingItemTemp; } } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180515 KPS 출력시 라벨프린터 출력 end //#20180515 KPS 출력시 라벨프린터 출력 start #region 라벨프린터 출력 함수 public bool LBLPRTSerialPrintProc(Hashtable htKPSSendingItem, int LblPrtCnt) { bool bRet = false; string sPrtData = ""; string sEnter = "\r\n"; string sOrdGB = ""; string sCntOfTotCnt = ""; string sWaitNo = ""; string sItemNm = ""; string[] sItemNmA = new string[2]; string[] sSubItemNmA = new string[3]; string sQRcode = ""; string sQRcodeMsg = ""; string sTopMsgTemp = ""; string[] sTopMsg = new string[2]; string[] sTopMsgA = new string[2]; string sBtmMsg = ""; string sOptionTemp = ""; string[] sOption = new string[8]; string[] sOptionA = new string[8]; string sPrtTime = ""; int iSubCnt = 0; try { // 라벨프린터 Open bRet = m_cLabelPrtDevice.OpenLabelPrinter(m_cPosStatus.Base.OlePosLabelPrinterSerialPortNumber, m_cPosStatus.Base.OlePosLabelPrinterSerialBaudRate); if (bRet == false) { return bRet; } // 주문상품 인쇄 for (int nLoop = 0; nLoop < htKPSSendingItem.Count; nLoop++) { KPSItem cKPSItem = (KPSItem)htKPSSendingItem[nLoop]; //메인 상품 if (cKPSItem.sItemDiv == "0") { sOrdGB = (cKPSItem.sFiller2 == "2") ? "> H <" : "> P <"; sCntOfTotCnt = LblPrtCnt.ToString() + " of " + cKPSItem.iTOTCNT.ToString(); sWaitNo = cKPSItem.sOrderNo; // 상품명 sItemNm = cKPSItem.sItemNm; if (sItemNm.Length > 12) { sItemNmA[0] = sItemNm.Substring(0, 12); sItemNmA[1] = sItemNm.Substring(12, sItemNm.Length - sItemNmA[0].Length); } else { sItemNmA[0] = sItemNm.Substring(0, sItemNm.Length); sItemNmA[1] = ""; } // qr코드 sQRcode = cKPSItem.sQrcodeUrl; // qr코드 하단 메세지 /* if (cKPSItem.sQrcodeMsg.Length > 12) { sQRcodeMsg = cKPSItem.sQrcodeMsg.Substring(0, 12); } */ sQRcodeMsg = cKPSItem.sQrcodeMsg; // 주방상품정보 //sOptionTemp = cKPSItem.sRecipe.Replace("@$", "|"); //sOption = sOptionTemp.Split('|'); sOptionTemp = cKPSItem.sRecipe.Replace("@", "\r").Replace("$", "\n").ToString(); sOption = sOptionTemp.Split(new string[] { "\r\n", "\n", "\r" }, StringSplitOptions.None); // 상단메세지 //sTopMsgTemp = cKPSItem.sTopMsg.Replace("@$", "|"); //sTopMsg = sTopMsgTemp.Split('|'); sTopMsgTemp = cKPSItem.sTopMsg.Replace("@", "\r").Replace("$", "\n").ToString(); sTopMsg = sTopMsgTemp.Split(new string[] { "\r\n", "\n", "\r" }, StringSplitOptions.None); //하단 메세지 /* if (cKPSItem.sBtmMsg.Length > 12) { sBtmMsg = cKPSItem.sBtmMsg.Substring(0, 12); } */ sBtmMsg = cKPSItem.sBtmMsg; // 출력시간 sPrtTime = DateTime.Now.ToString("HH:mm:ss tt"); } //부가 상품 if (cKPSItem.sItemDiv == "3") { /* if (cKPSItem.sItemNm.Length > 11) { sSubItemNmA[iSubCnt] = cKPSItem.sItemNm.Substring(0, 11); } */ sSubItemNmA[iSubCnt] = cKPSItem.sItemNm; iSubCnt = iSubCnt + 1; } } for (int i = sItemNmA.Length; i < 2; i++) { sItemNmA[i] = ""; } for (int i = sSubItemNmA.Length; i < 3; i++) { sSubItemNmA[i] = ""; } for (int i = 0; i < 2; i++) { sTopMsgA[i] = ""; } for (int i = 0; i < sTopMsg.Length; i++) { sTopMsgA[i] = sTopMsg[i]; } for (int i = 0; i < 8; i++) { sOptionA[i] = ""; } for (int i = 0; i < sOption.Length; i++) { sOptionA[i] = sOption[i]; } sPrtData = "CLL"; sPrtData += sEnter + "NEW"; sPrtData += sEnter + "SETUP \"MEDIA,MEDIA SIZE,WIDTH,300\""; sPrtData += sEnter + "SETUP \"MEDIA,MEDIA SIZE,LENGTH,1200\""; sPrtData += sEnter + "SETUP \"MEDIA,MEDIA SIZE,XSTART,0\""; sPrtData += sEnter + "CLIP ON"; sPrtData += sEnter + "NASC 949"; sPrtData += sEnter + "FONT \"HYGothic-Medium\",9"; sPrtData += sEnter + "PP 5, 360:PT \"" + sWaitNo + "\""; sPrtData += sEnter + "PP 225, 360:PT \"" + sCntOfTotCnt + "\""; sPrtData += sEnter + "PP 5, 350:DIR 1:PL 300,1"; sPrtData += sEnter + "PP 0, 315:PT \"" + sItemNmA[0] + "\""; sPrtData += sEnter + "PP 0, 285:PT \"" + sItemNmA[1] + "\""; sPrtData += sEnter + "PP 5, 275:DIR 1:PL 300,1"; sPrtData += sEnter + "FONT \"HYGothic-Medium\",8"; sPrtData += sEnter + "PP 5, 240:PT \"" + sSubItemNmA[0] + "\""; sPrtData += sEnter + "PP 5, 210:PT \"" + sSubItemNmA[1] + "\""; sPrtData += sEnter + "PP 5, 180:PT \"" + sSubItemNmA[2] + "\""; if (sQRcode != "") { sPrtData += sEnter + "BF OFF"; sPrtData += sEnter + "PP 5,70"; sPrtData += sEnter + "BARSET \"QRCODE\",1,1,4,2,2"; sPrtData += sEnter + "PB \"" + sQRcode + "\""; sPrtData += sEnter + "FONT \"HYGothic-Medium\",7"; sPrtData += sEnter + "PP 5, 40:PT \"" + sQRcodeMsg + "\""; } else { sPrtData += sEnter + "FONT \"HYGothic-Medium\",10"; sPrtData += sEnter + "PP 5,100:PT \"" + sTopMsgA[0] + "\""; sPrtData += sEnter + "PP 5, 70:PT \"" + sTopMsgA[1] + "\""; sPrtData += sEnter + "FONT \"HYGothic-Medium\",7"; sPrtData += sEnter + "PP 5, 40:PT \"" + sBtmMsg + "\""; } sPrtData += sEnter + "PP 5, 40:DIR 1:PL 300,1"; sPrtData += sEnter + "FONT \"HYGothic-Medium\",9"; sPrtData += sEnter + "PP 5,5:PT \"" + sPrtTime + "\""; sPrtData += sEnter + "PP 240,5:PT \"" + sOrdGB + "\""; sPrtData += sEnter + "PP 260,240:PT \"" + sOptionA[0] + "\""; sPrtData += sEnter + "PP 260,212:PT \"" + sOptionA[1] + "\""; sPrtData += sEnter + "PP 260,184:PT \"" + sOptionA[2] + "\""; sPrtData += sEnter + "PP 260,156:PT \"" + sOptionA[3] + "\""; sPrtData += sEnter + "PP 260,128:PT \"" + sOptionA[4] + "\""; sPrtData += sEnter + "PP 260,100:PT \"" + sOptionA[5] + "\""; sPrtData += sEnter + "PP 260,72:PT \"" + sOptionA[6] + "\""; sPrtData += sEnter + "PP 260,44:PT \"" + sOptionA[7] + "\""; sPrtData += sEnter + "PF"; sPrtData += sEnter; UserLog.WriteLogFile(UserCom.LOG_OP, 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 (함수명)) "▶▶ LabelPrt: [" + sPrtData + "]"); m_cLabelPrtDevice.PrintLabelInfo(sPrtData); UserLog.WriteLogFile(UserCom.LOG_OP, 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 (함수명)) "▶▶ [CLOSE]"); // 라벨프린터 Close bRet = m_cLabelPrtDevice.CloseLabelPrinter(); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_OP, 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); } return bRet; } #endregion //#20180515 KPS 출력시 라벨프린터 출력 end } }